openapi: 3.1.0
info:
  title: Fintoro Public API v1
  version: 1.0.0
  description: >-
    Stabilné API pre integrácie tretích strán napojené na konkrétnu firmu vo
    Fintoro. Nájdete tu aj read-only lookup endpointy pre číselníky a banky,
    plus referenčné tabuľky pre rýchle overenie stabilných ID hodnôt.
servers:
  - url: https://app.fintoro.sk/api/public/v1
    description: Produkčné Public API.
  - url: /api/public/v1
    description: Relatívny prefix pre preview prostredie.
security:
  - bearerAuth: []
tags:
  - name: Lookupy
    description: >-
      Read-only lookup endpointy pre integračné dáta. Tieto endpointy vracajú
      číselníky so stabilnými ID, ktoré môžete bezpečne cachovať na svojej
      strane. Banky sa priebežne synchronizujú z open banking zdroja a zvyčajne
      sa len dopĺňajú o nové záznamy; existujúce ID ostávajú zachované kvôli
      kompatibilite. V praxi odporúčame banky synchronizovať približne raz
      týždenne.
  - name: Subjekty
    description: Vyhľadanie a overenie údajov o subjekte ešte pred vytvorením klienta.
  - name: Klienti
    description: >-
      Správa klientov aktuálnej firmy. Táto sekcia pokrýva zoznam, detail,
      vytvorenie, úpravu aj zmazanie klienta vrátane fakturačnej adresy, dodacej
      adresy a klientských predvolených hodnôt použiteľných pri skladaní
      payloadov nových dokladov.
  - name: Bankové účty
    description: >-
      Správa bankových účtov aktuálnej firmy. Táto sekcia pokrýva zoznam,
      detail, vytvorenie, úpravu aj zmazanie účtu vrátane údajov o banke,
      primárnom účte a stave open banking napojenia.
  - name: Faktúry
    description: CRUD operácie nad faktúrami aktuálnej firmy.
paths:
  /banks:
    get:
      tags:
        - Lookupy
      summary: Zoznam bánk
      operationId: listBanks
      description: >-
        Vráti aktuálny zoznam bánk, ktoré môžete použiť pri vytváraní alebo
        aktualizácii bankového účtu. Endpoint nepodporuje filtrovanie ani
        stránkovanie a vracia celý aktuálny dataset. Zoznam bánk sa priebežne
        synchronizuje z open banking zdroja, ale existujúce ID ostávajú
        zachované kvôli kompatibilite s uloženými bankovými účtami. V praxi
        odporúčame banky synchronizovať približne raz týždenne.
      responses:
        '200':
          description: Zoznam bánk.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    description: Celý aktuálny zoznam bánk dostupných pre bankové účty.
                    type: array
                    items:
                      $ref: '#/components/schemas/Bank'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /countries:
    get:
      tags:
        - Lookupy
      summary: Zoznam krajín
      operationId: listCountries
      description: >-
        Vráti fixný číselník krajín používaný naprieč public API. Endpoint
        nepodporuje filtrovanie ani stránkovanie a vracia celý dataset. ID
        krajín sú stabilné v rámci tejto verzie API a rovnaké hodnoty nájdete aj
        v [referenčnej tabuľke krajín](./reference-tables.md#krajiny).
      responses:
        '200':
          description: Zoznam krajín.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    description: Celý zoznam krajín dostupných v tejto verzii API.
                    type: array
                    items:
                      $ref: '#/components/schemas/Country'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /languages:
    get:
      tags:
        - Lookupy
      summary: Zoznam jazykov
      operationId: listLanguages
      description: >-
        Vráti fixný číselník jazykov používaný naprieč public API. Endpoint
        nepodporuje filtrovanie ani stránkovanie a vracia celý dataset. ID
        jazykov sú stabilné v rámci tejto verzie API a rovnaké hodnoty nájdete
        aj v [referenčnej tabuľke jazykov](./reference-tables.md#jazyky).
      responses:
        '200':
          description: Zoznam jazykov.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    description: Celý zoznam jazykov dostupných v tejto verzii API.
                    type: array
                    items:
                      $ref: '#/components/schemas/Language'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /currencies:
    get:
      tags:
        - Lookupy
      summary: Zoznam mien
      operationId: listCurrencies
      description: >-
        Vráti fixný číselník mien používaný naprieč public API. Endpoint
        nepodporuje filtrovanie ani stránkovanie a vracia celý dataset. ID mien
        sú stabilné v rámci tejto verzie API a rovnaké hodnoty nájdete aj v
        [referenčnej tabuľke mien](./reference-tables.md#meny).
      responses:
        '200':
          description: Zoznam mien.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    description: Celý zoznam mien dostupných v tejto verzii API.
                    type: array
                    items:
                      $ref: '#/components/schemas/Currency'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /delivery-methods:
    get:
      tags:
        - Lookupy
      summary: Zoznam spôsobov dodania
      operationId: listDeliveryMethods
      description: >-
        Vráti fixný číselník spôsobov dodania používaný naprieč public API.
        Endpoint nepodporuje filtrovanie ani stránkovanie a vracia celý dataset.
        ID spôsobov dodania sú stabilné v rámci tejto verzie API a rovnaké
        hodnoty nájdete aj v [referenčnej tabuľke spôsobov
        dodania](./reference-tables.md#sposoby-dodania).
      responses:
        '200':
          description: Zoznam spôsobov dodania.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    description: >-
                      Celý zoznam spôsobov dodania dostupných v tejto verzii
                      API.
                    type: array
                    items:
                      $ref: '#/components/schemas/DeliveryMethod'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /payment-methods:
    get:
      tags:
        - Lookupy
      summary: Zoznam spôsobov úhrady
      operationId: listPaymentMethods
      description: >-
        Vráti fixný číselník spôsobov úhrady používaný naprieč public API.
        Endpoint nepodporuje filtrovanie ani stránkovanie a vracia celý dataset.
        ID spôsobov úhrady sú stabilné v rámci tejto verzie API a rovnaké
        hodnoty nájdete aj v [referenčnej tabuľke spôsobov
        úhrady](./reference-tables.md#sposoby-uhrady).
      responses:
        '200':
          description: Zoznam spôsobov úhrady.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    description: Celý zoznam spôsobov úhrady dostupných v tejto verzii API.
                    type: array
                    items:
                      $ref: '#/components/schemas/PaymentMethod'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /qr-types:
    get:
      tags:
        - Lookupy
      summary: Zoznam QR typov
      operationId: listQrTypes
      description: >-
        Vráti fixný číselník QR typov používaný naprieč public API. Endpoint
        nepodporuje filtrovanie ani stránkovanie a vracia celý dataset. ID QR
        typov sú stabilné v rámci tejto verzie API a rovnaké hodnoty nájdete aj
        v [referenčnej tabuľke QR typov](./reference-tables.md#qr-typy).
      responses:
        '200':
          description: Zoznam QR typov.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    description: Celý zoznam QR typov dostupných v tejto verzii API.
                    type: array
                    items:
                      $ref: '#/components/schemas/QrType'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /units:
    get:
      tags:
        - Lookupy
      summary: Zoznam jednotiek
      operationId: listUnits
      description: >-
        Vráti fixný číselník jednotiek používaný naprieč public API. Endpoint
        nepodporuje filtrovanie ani stránkovanie a vracia celý dataset. ID
        jednotiek sú stabilné v rámci tejto verzie API a rovnaké hodnoty nájdete
        aj v [referenčnej tabuľke jednotiek](./reference-tables.md#jednotky).
      responses:
        '200':
          description: Zoznam jednotiek.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    description: Celý zoznam jednotiek dostupných v tejto verzii API.
                    type: array
                    items:
                      $ref: '#/components/schemas/Unit'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /subjects:
    get:
      tags:
        - Subjekty
      summary: Vyhľadávanie subjektov
      operationId: searchSubjects
      description: >-
        Tento endpoint použite, keď potrebujete dohľadať údaje o firme alebo
        živnostníkovi podľa názvu či IČO.
      parameters:
        - name: searchQuery
          in: query
          required: true
          description: >-
            Hľadaný reťazec. Môže to byť názov subjektu alebo IČO. Minimum sú 3
            znaky.
          schema:
            type: string
            minLength: 3
            example: acme
        - name: legalForm
          in: query
          required: false
          description: >-
            Voliteľný filter podľa právnej formy, ak chcete výsledky zúžiť len
            na firmy alebo živnostníkov.
          schema:
            type: string
            enum:
              - freelancer
              - company
            example: company
        - name: limit
          in: query
          required: false
          description: Maximálny počet výsledkov, ktoré endpoint vráti.
          schema:
            type: integer
            minimum: 1
            maximum: 20
            example: 5
      responses:
        '200':
          description: Vracia zodpovedajúce subjekty z referenčného registra.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    description: Zoznam nájdených subjektov.
                    type: array
                    items:
                      $ref: '#/components/schemas/Subject'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /subjects/{subject}:
    parameters:
      - $ref: '#/components/parameters/SubjectId'
    get:
      tags:
        - Subjekty
      summary: Detail subjektu
      operationId: showSubject
      description: Vráti jeden konkrétny subjekt z referenčného registra podľa jeho ID.
      responses:
        '200':
          description: Vracia detail požadovaného subjektu.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subject'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /clients:
    get:
      tags:
        - Klienti
      summary: Zoznam klientov
      operationId: listClients
      description: >-
        Vráti klientov patriacich aktuálnej firme. Endpoint je vhodný na
        synchronizáciu klientov do externého systému alebo vlastného frontendu a
        podporuje základné fulltextové vyhľadávanie, filtrovanie a triedenie.
      parameters:
        - name: search
          in: query
          required: false
          description: Fulltextové vyhľadávanie podľa názvu, mesta, PSČ alebo krajiny.
          schema:
            type: string
            example: bratislava
        - name: sortBy
          in: query
          required: false
          description: Pole, podľa ktorého sa majú klienti zoradiť.
          schema:
            type: string
            enum:
              - name
              - city
              - zip
              - countryId
              - createdAt
              - updatedAt
            example: name
            default: name
        - name: sortDirection
          in: query
          required: false
          description: Smer zoradenia.
          schema:
            type: string
            enum:
              - asc
              - desc
            example: desc
            default: asc
        - name: type
          in: query
          required: false
          description: Filter podľa typu klienta.
          schema:
            type: string
            enum:
              - person
              - company
            example: company
        - name: subjectId
          in: query
          required: false
          description: Filter podľa IČO klienta alebo firmy.
          schema:
            type: string
            example: '12345678'
        - name: taxId
          in: query
          required: false
          description: Filter podľa DIČ klienta alebo firmy.
          schema:
            type: string
            example: '2020123456'
        - name: vatId
          in: query
          required: false
          description: Filter podľa IČ DPH klienta alebo firmy.
          schema:
            type: string
            example: SK2020123456
        - name: countryId
          in: query
          required: false
          description: >-
            Filter podľa fakturačnej krajiny klienta z [referenčnej tabuľky
            krajín](./reference-tables.md#krajiny).
          schema:
            type: integer
            example: 703
      responses:
        '200':
          description: Zoznam klientov.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    description: Zoznam klientov patriacich aktuálnej firme.
                    type: array
                    items:
                      $ref: '#/components/schemas/Client'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
    post:
      tags:
        - Klienti
      summary: Vytvoriť klienta
      operationId: createClient
      description: >-
        Vytvorí nového klienta pre aktuálnu firmu. V requeste posielate business
        dáta klienta a voliteľné klientské predvolené hodnoty, ktoré sa ukladajú
        pri klientovi a pri tvorbe nových dokladov sa používajú ako fallback
        defaulty, ak explicitnú hodnotu nepošlete v payloade. Ak pošlete
        `Idempotency-Key`, rovnaký key s rovnakým payloadom vráti pôvodnú
        odpoveď bez druhého vytvorenia klienta.
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientInput'
      responses:
        '201':
          description: Klient bol vytvorený.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
            Idempotency-Key:
              description: Pôvodný idempotency key, ak bol poslaný v requeste.
              schema:
                type: string
            Idempotency-Status:
              description: >-
                `Original` pri prvom spracovaní alebo `Repeated` pri vrátení
                pôvodnej odpovede.
              schema:
                type: string
                enum:
                  - Original
                  - Repeated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Client'
        '422':
          description: Idempotency key bol znovu použitý s iným payloadom.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Idempotency-Key reused with different request payload
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /clients/{client}:
    parameters:
      - $ref: '#/components/parameters/ClientId'
    get:
      tags:
        - Klienti
      summary: Detail klienta
      operationId: showClient
      description: >-
        Vráti detail jedného klienta aktuálnej firmy vrátane vnorených krajín a
        klientských predvolených hodnôt, ktoré môžete použiť pri tvorbe nových
        dokladov.
      responses:
        '200':
          description: Detail klienta.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Client'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
    put:
      tags:
        - Klienti
      summary: Upraviť klienta
      operationId: updateClient
      description: >-
        Aktualizuje klienta aktuálnej firmy. Pošlite len polia, ktoré chcete
        zmeniť. Pri dodacej adrese a inferred poliach platí rovnaké správanie
        ako pri vytvorení klienta.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientInput'
      responses:
        '200':
          description: Klient bol aktualizovaný.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Client'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
    delete:
      tags:
        - Klienti
      summary: Zmazať klienta
      operationId: deleteClient
      description: >-
        Zmaže klienta aktuálnej firmy. Po úspešnom spracovaní endpoint nevracia
        response body.
      responses:
        '204':
          description: Klient bol zmazaný.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /bank-accounts:
    get:
      tags:
        - Bankové účty
      summary: Zoznam bankových účtov
      operationId: listBankAccounts
      description: >-
        Vráti všetky bankové účty aktuálnej firmy v jednom zozname. Endpoint
        nepodporuje filtrovanie ani stránkovanie, preto je vhodný najmä na
        synchronizáciu účtov do externého systému alebo vlastného frontendu.
      responses:
        '200':
          description: Zoznam bankových účtov.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    description: >-
                      Zoznam všetkých bankových účtov patriacich aktuálnej
                      firme.
                    type: array
                    items:
                      $ref: '#/components/schemas/BankAccount'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
    post:
      tags:
        - Bankové účty
      summary: Vytvoriť bankový účet
      operationId: createBankAccount
      description: >-
        Vytvorí nový bankový účet aktuálnej firmy. V requeste posielate len
        business dáta účtu. Response vráti výsledný uložený objekt vrátane
        informácie, či je účet aktuálne vedený ako primárny a či je napojený na
        open banking.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankAccountCreateInput'
      responses:
        '201':
          description: Bankový účet bol vytvorený.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccount'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /bank-accounts/{bankAccount}:
    parameters:
      - $ref: '#/components/parameters/BankAccountId'
    get:
      tags:
        - Bankové účty
      summary: Detail bankového účtu
      operationId: showBankAccount
      description: >-
        Vráti detail jedného bankového účtu aktuálnej firmy. Okrem samotných
        údajov o účte vracia aj vnorený objekt banky, stav primárneho účtu a
        open banking metadata, ak sú dostupné.
      responses:
        '200':
          description: Detail bankového účtu.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccount'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
    put:
      tags:
        - Bankové účty
      summary: Upraviť bankový účet
      operationId: updateBankAccount
      description: >
        Aktualizuje bankový účet aktuálnej firmy. Pošlite len polia, ktoré
        chcete zmeniť.

        Ak pošlete `isPrimary: true`, účet sa nastaví ako primárny účet firmy.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankAccountUpdateInput'
      responses:
        '200':
          description: Bankový účet bol aktualizovaný.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccount'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
    delete:
      tags:
        - Bankové účty
      summary: Zmazať bankový účet
      operationId: deleteBankAccount
      description: >-
        Zmaže bankový účet aktuálnej firmy. Po úspešnom spracovaní endpoint
        nevracia response body.
      responses:
        '204':
          description: Bankový účet bol zmazaný.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /invoices:
    get:
      tags:
        - Faktúry
      summary: Zoznam faktúr
      operationId: listInvoices
      description: >-
        Vráti paginovaný zoznam faktúr aktuálnej firmy v zjednodušenom preview
        tvare. Tento endpoint je určený na listy, synchronizáciu a rýchly
        prehľad nad dokladmi. Na detail jedného dokladu použite detail endpoint
        faktúry.
      parameters:
        - in: query
          name: number
          required: false
          description: Filter podľa čísla dokladu.
          schema:
            type: string
          example: 2026
        - in: query
          name: clientId
          required: false
          description: Filter podľa klienta.
          schema:
            type: integer
          example: 101
        - in: query
          name: paymentStatus
          required: false
          description: Filter podľa stavu úhrady.
          schema:
            type: string
            enum:
              - paid
              - unpaid
              - partially_paid
              - overdue
              - will_not_be_paid
          example: overdue
        - in: query
          name: issueDateFrom
          required: false
          description: Dátum vystavenia od.
          schema:
            type: string
            format: date
          example: '2026-02-01'
        - in: query
          name: issueDateTo
          required: false
          description: Dátum vystavenia do.
          schema:
            type: string
            format: date
          example: '2026-02-28'
        - in: query
          name: dueDateFrom
          required: false
          description: Dátum splatnosti od.
          schema:
            type: string
            format: date
          example: '2026-03-01'
        - in: query
          name: dueDateTo
          required: false
          description: Dátum splatnosti do.
          schema:
            type: string
            format: date
          example: '2026-03-31'
        - in: query
          name: totalFrom
          required: false
          description: Minimálna celková suma s DPH v mene firmy.
          schema:
            type: number
            format: float
          example: 100
        - in: query
          name: totalTo
          required: false
          description: Maximálna celková suma s DPH v mene firmy.
          schema:
            type: number
            format: float
          example: 1000
        - in: query
          name: sortBy
          required: false
          description: >-
            Pole pre triedenie. Podporované sú len hodnoty, ktoré podporuje
            interný list filter faktúr.
          schema:
            type: string
            enum:
              - number
              - issueDate
              - dueDate
              - deliveryDate
              - totalWithVatEur
            default: issueDate
          example: issueDate
        - in: query
          name: sortDirection
          required: false
          description: Smer triedenia.
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
          example: desc
        - in: query
          name: perPage
          required: false
          description: Počet výsledkov na stránku.
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 10
          example: 10
        - in: query
          name: page
          required: false
          description: Číslo stránky.
          schema:
            type: integer
            minimum: 1
            default: 1
          example: 2
      responses:
        '200':
          description: Paginovaný zoznam faktúr v preview tvare.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    description: Zoznam preview objektov faktúr pre aktuálnu stránku.
                    type: array
                    items:
                      $ref: '#/components/schemas/InvoicePreview'
                  paginator:
                    description: Informácie o stránkovaní aktuálneho výsledku.
                    $ref: '#/components/schemas/Paginator'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
    post:
      tags:
        - Faktúry
      summary: Vytvoriť faktúru
      operationId: createInvoice
      description: >
        Vytvorí novú faktúru aktuálnej firmy.


        ### Odporúčaný flow


        Odporúčaný happy path je poslať `clientId` a `items`. To je
        najjednoduchší spôsob, ak klient už vo Fintoro existuje.


        Ak klienta ešte vo Fintoro nemáte alebo nechcete robiť samostatný krok
        na jeho vytvorenie, pošlite objekt `client` bez `clientId`. Backend sa
        pokúsi klienta dopárovať k existujúcemu záznamu a ak nič nenájde,
        vytvorí nového klienta.


        Ak pošlete `clientId` aj objekt `client`, objekt `client` sa správa ako
        sparse override snapshotu klienta pre tento konkrétny doklad. Môžete tak
        upraviť napríklad adresu dodania alebo kontaktné údaje len na tejto
        faktúre bez zmeny klienta v databáze.


        ### Ako fungujú defaulty


        Väčšina dokladových polí je voliteľná. Backend ich vyhodnocuje v tomto
        poradí:


        1. explicitná hodnota z payloadu,

        2. klientské predvolené hodnoty,

        3. firemné document settings,

        4. systémový resolver.


        V praxi to znamená napríklad:


        - `deliveryMethodId`, `paymentMethodId`, `currencyId` a `languageId` sa
        môžu dopočítať z klienta alebo z firemných nastavení,

        - `number` a `numericalSeriesId` sa doplnia z primárneho číselného radu,
        ak ich nepošlete,

        - `variableSymbol` sa bez explicitnej hodnoty odvodí z finálneho čísla
        dokladu,

        - `bankAccountId` sa bez explicitnej hodnoty vezme z primárneho
        bankového účtu firmy,

        - `currencyRate` sa dopočíta podľa meny a dátumu dodania,

        - `issueDate` a `deliveryDate` defaultujú na dnešný deň.


        ### Ako funguje client resolution


        Ak `clientId` nepošlete, objekt `client` sa používa na dopárovanie alebo
        vytvorenie klienta. Matching prebieha deterministicky v tomto poradí:


        - pri firmách: `vatId`, potom `countryId + subjectId`, potom `name +
        email`, potom `name + street`,

        - pri fyzických osobách: `name + email`, potom `name + street`.


        Ak matching nič nenájde, vytvorí sa nový klient. Ak matching nájde viac
        klientov, backend použije prvý záznam v stabilnom poradí.


        Ak pošlete explicitné `clientId` alebo `bankAccountId` a taký záznam
        neexistuje alebo nepatrí aktuálnej firme, endpoint vráti `404`.


        Ak `bankAccountId` nepošlete a firma nemá nastavený žiadny primárny
        bankový účet, endpoint vráti `422`.


        ### Ako fungujú položky


        Položka môže byť vytvorená tromi spôsobmi:


        1. ako manuálna položka s vlastným názvom, jednotkou, cenou a DPH,

        2. cez `priceListItemId` a `quantity`,

        3. cez `priceListItemId` a sparse override vybraných polí, napríklad
        ceny alebo názvu.


        Ak pošlete zľavu bez `discountName`, backend doplní lokalizovaný názov
        zľavy podľa jazyka dokladu.


        ### Príklady requestov


        Existujúci klient a manuálna položka:


        ```json

        {
          "clientId": 101,
          "issueDate": "2026-03-04",
          "items": [
            {
              "name": "Mesačný paušál",
              "quantity": 1,
              "unitId": 1,
              "unitPrice": 120.0,
              "vatRate": 23
            }
          ]
        }

        ```


        Inline klient bez `clientId`:


        ```json

        {
          "client": {
            "type": "company",
            "name": "Acme s.r.o.",
            "email": "faktury@acme.test",
            "countryId": 703,
            "subjectId": "12345678",
            "street": "Hlavná 1",
            "city": "Bratislava",
            "zip": "81101"
          },
          "items": [
            {
              "name": "Implementácia API",
              "quantity": 10,
              "unitId": 7,
              "unitPrice": 80.0,
              "vatRate": 23
            }
          ]
        }

        ```


        Cenníková položka s minimálnym payloadom:


        ```json

        {
          "clientId": 101,
          "items": [
            {
              "priceListItemId": 501,
              "quantity": 2
            }
          ]
        }

        ```


        Ak pošlete `Idempotency-Key`, rovnaký key s rovnakým payloadom vráti
        pôvodnú odpoveď bez druhého vytvorenia faktúry.
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvoiceInput'
      responses:
        '201':
          description: Faktúra bola vytvorená.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
            Idempotency-Key:
              description: Pôvodný idempotency key, ak bol poslaný v requeste.
              schema:
                type: string
            Idempotency-Status:
              description: >-
                `Original` pri prvom spracovaní alebo `Repeated` pri vrátení
                pôvodnej odpovede.
              schema:
                type: string
                enum:
                  - Original
                  - Repeated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: >-
            Request je syntakticky validný, ale nedá sa spracovať kvôli business
            pravidlu alebo konfliktu idempotency key.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              examples:
                missingPrimaryBankAccount:
                  summary: Chýba primárny bankový účet firmy
                  value:
                    message: The given data was invalid.
                    errors:
                      bankAccountId:
                        - Company has no primary bank account configured.
                idempotencyConflict:
                  summary: Idempotency key použitý s iným payloadom
                  value:
                    error: Idempotency-Key reused with different request payload
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: The given data was invalid.
                  error:
                    type:
                      - string
                      - 'null'
                    example: Idempotency-Key reused with different request payload
                  errors:
                    type:
                      - object
                      - 'null'
                    additionalProperties:
                      type: array
                      items:
                        type: string
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /invoices/{invoice}:
    parameters:
      - $ref: '#/components/parameters/InvoiceId'
    get:
      tags:
        - Faktúry
      summary: Detail faktúry
      operationId: showInvoice
      description: >-
        Vráti detail jednej faktúry aktuálnej firmy. Response obsahuje snapshot
        dodávateľa, historický snapshot klienta uložený priamo na doklade a
        naviazaný bankový účet použitý na faktúre. Snapshoty firmy a klienta
        reprezentujú stav údajov v čase práce s faktúrou kvôli auditovateľnosti
        a historickej perzistencii, bankový účet je live väzba načítaná aj cez
        soft delete.
      responses:
        '200':
          description: Detail faktúry.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
    put:
      tags:
        - Faktúry
      summary: Upraviť faktúru
      operationId: updateInvoice
      description: >-
        Aktualizuje existujúcu faktúru aktuálnej firmy.


        ### Ako funguje update


        - `items` sú povinné vždy.

        - Ak pole nepošlete, zachová sa existujúca hodnota na faktúre.

        - Ak nepošlete `clientId` ani objekt `client`, zachová sa aktuálny
        klient aj jeho snapshot na doklade.

        - Ak pošlete `clientId` a/alebo objekt `client`, klient a snapshot sa
        prepočítajú rovnako ako pri create flowe.


        ### Chybové stavy


        - `404`, ak explicitne pošlete `clientId` alebo `bankAccountId`, ktoré
        neexistuje alebo nepatrí firme.

        - `422`, ak payload neprejde business validáciou, napríklad pri
        nevalidných položkách faktúry.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvoiceUpdateInput'
      responses:
        '200':
          description: Faktúra bola aktualizovaná.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: Request payload neprešiel validačnými pravidlami.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: The given data was invalid.
                  errors:
                    type: object
                    additionalProperties:
                      type: array
                      items:
                        type: string
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
    delete:
      tags:
        - Faktúry
      summary: Zmazať faktúru
      operationId: deleteInvoice
      description: Zmaže faktúru aktuálnej firmy.
      responses:
        '204':
          description: Faktúra bola zmazaná.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Token
      description: Bearer token vytvorený pre konkrétnu firmu v Integrácie → API.
  parameters:
    ClientId:
      name: client
      in: path
      required: true
      description: ID klienta.
      schema:
        type: integer
        example: 101
    BankAccountId:
      name: bankAccount
      in: path
      required: true
      description: ID bankového účtu.
      schema:
        type: integer
        example: 201
    InvoiceId:
      name: invoice
      in: path
      required: true
      description: ID faktúry.
      schema:
        type: integer
        example: 301
    SubjectId:
      name: subject
      in: path
      required: true
      description: ID subjektu z referenčného registra.
      schema:
        type: integer
        example: 12345678
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      description: >-
        Voliteľný identifikátor requestu pre bezpečné retry. Použite unikátnu
        hodnotu pre každé create volanie, ktoré chcete vedieť bezpečne
        zopakovať.
      schema:
        type: string
        example: invoice-create-2026-03-03-001
  headers:
    XRequestId:
      description: >-
        Unikátny identifikátor requestu pre traceovanie, audit a support
        diagnostiku.
      schema:
        type: string
        example: req_public_api_01
  responses:
    NotFound:
      description: Požadovaný zdroj sa nenašiel.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: No query results for model.
    Forbidden:
      description: Prístup k zdroju nie je povolený pre aktuálnu firmu alebo scope.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: This action is unauthorized.
    InternalServerError:
      description: >-
        Nastala neočakávaná interná chyba. Tento stav by sa nemal vyskytovať pri
        bežnej prevádzke a automaticky ho reportujeme.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Server Error
    ServiceUnavailable:
      description: >-
        API je dočasne nedostupné počas riadenej údržby. Plánovaný výpadok
        oznamujeme minimálne 24 hodín vopred.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Service Unavailable
  schemas:
    Country:
      description: >-
        Krajina dostupná v lookup endpointoch public API a vo vnorených
        objektoch, kde sa krajina vracia priamo v response.
      type: object
      properties:
        id:
          description: Stabilné ID krajiny používané v API.
          type: integer
          example: 703
        name:
          description: Názov krajiny.
          type: string
          example: Slovensko
        code:
          description: Dvojpísmenový ISO kód krajiny.
          type: string
          example: SK
        eu:
          description: Informácia, či krajina patrí do Európskej únie.
          type: boolean
          example: true
        flag:
          description: URL adresa ikony vlajky.
          type: string
          example: https://flagcdn.com/80x60/sk.png
    Language:
      description: Jazyk dostupný v lookup endpointoch public API.
      type: object
      properties:
        id:
          description: Stabilné ID jazyka používané v API.
          type: integer
          example: 1
        name:
          description: Názov jazyka.
          type: string
          example: Slovenčina
        code:
          description: Krátky jazykový kód.
          type: string
          example: sk
        flag:
          description: URL adresa ikony vlajky priradenej k jazyku.
          type: string
          example: https://flagcdn.com/80x60/sk.png
    Currency:
      description: Mena dostupná v lookup endpointoch public API.
      type: object
      properties:
        id:
          description: Stabilné ID meny používané v API.
          type: integer
          example: 1
        symbol:
          description: ISO alebo interný symbol meny.
          type: string
          example: EUR
        name:
          description: Názov meny.
          type: string
          example: Euro
        mark:
          description: Skrátená značka meny zobrazovaná vo Fintoro.
          type: string
          example: €
        image:
          description: URL adresa ikonky meny, ak je dostupná.
          type: string
          example: https://example.test/images/currencies/eur.svg
    DeliveryMethod:
      description: Spôsob dodania dostupný v lookup endpointoch public API.
      type: object
      properties:
        id:
          description: Stabilné ID spôsobu dodania používané v API.
          type: integer
          example: 1
        name:
          description: Názov spôsobu dodania.
          type: string
          example: Nezadaný
    PaymentMethod:
      description: Spôsob úhrady dostupný v lookup endpointoch public API.
      type: object
      properties:
        id:
          description: Stabilné ID spôsobu úhrady používané v API.
          type: integer
          example: 1
        name:
          description: Názov spôsobu úhrady.
          type: string
          example: Platba prevodom
    QrType:
      description: QR typ dostupný v lookup endpointoch public API.
      type: object
      properties:
        id:
          description: Stabilné ID QR typu používané v API.
          type: integer
          example: 1
        name:
          description: Názov QR typu.
          type: string
          example: Negenerovať
    Unit:
      description: Jednotka dostupná v lookup endpointoch public API.
      type: object
      properties:
        id:
          description: Stabilné ID jednotky používané v API.
          type: integer
          example: 1
        name:
          description: Názov jednotky.
          type: string
          example: ks
    Subject:
      description: >-
        Subjekt z referenčného registra. Typicky ho použijete ako podklad pri
        vytváraní klienta.
      type: object
      properties:
        id:
          description: >-
            IČO klienta alebo firmy. Pre slovenské subjekty túto hodnotu
            zvyčajne viete nájsť aj cez referenčný register subjektov.
          type: integer
          example: 12345678
        name:
          description: Obchodné meno alebo názov subjektu.
          type: string
          example: Acme s.r.o.
        taxId:
          description: DIČ subjektu, ak je dostupné.
          type:
            - string
            - 'null'
          example: '2020123456'
        vatId:
          description: IČ DPH subjektu, ak je dostupné.
          type:
            - string
            - 'null'
          example: SK2020123456
        legalForm:
          description: Právna forma subjektu.
          type: string
          enum:
            - freelancer
            - company
          example: company
        city:
          description: Mesto sídla alebo miesta podnikania.
          type:
            - string
            - 'null'
          example: Bratislava
        street:
          description: Ulica a číslo sídla alebo miesta podnikania.
          type:
            - string
            - 'null'
          example: Hlavná 1
        zip:
          description: PSČ sídla alebo miesta podnikania.
          type:
            - string
            - 'null'
          example: '81101'
    Client:
      description: >-
        Klient aktuálnej firmy vrátane klientských predvolených hodnôt. Tieto
        hodnoty neaplikuje API automaticky, ale môžete ich použiť ako odporúčaný
        default pri skladaní payloadov nových dokladov.
      type: object
      properties:
        id:
          description: Interné ID klienta vo Fintoro.
          type: integer
          example: 101
        name:
          description: Meno osoby alebo obchodné meno klienta.
          type: string
          example: Acme s.r.o.
        type:
          description: >-
            Typ klienta. Hodnota `person` reprezentuje fyzickú osobu, hodnota
            `company` firmu alebo živnostníka evidovaného ako podnikateľský
            subjekt.
          type: string
          enum:
            - person
            - company
          example: company
        subjectId:
          type:
            - string
            - 'null'
          description: >-
            IČO klienta alebo firmy. Pre slovenské subjekty túto hodnotu viete
            typicky dohľadať aj cez [referenčný register
            subjektov](#operation/searchSubjects).
          example: '12345678'
        taxId:
          description: DIČ klienta, ak je dostupné.
          type:
            - string
            - 'null'
          example: '2020123456'
        vatId:
          description: IČ DPH klienta, ak je dostupné.
          type:
            - string
            - 'null'
          example: SK2020123456
        isVatPayer:
          description: Informácia, či je klient aktuálne evidovaný ako platca DPH.
          type: boolean
          example: true
        email:
          description: Kontaktný e-mail klienta.
          type:
            - string
            - 'null'
          example: billing@acme.test
        street:
          description: Ulica a číslo fakturačnej adresy.
          type:
            - string
            - 'null'
          example: Hlavná 1
        city:
          description: Mesto fakturačnej adresy.
          type:
            - string
            - 'null'
          example: Bratislava
        zip:
          description: PSČ fakturačnej adresy.
          type:
            - string
            - 'null'
          example: '81101'
        country:
          description: Fakturačná krajina klienta ako vnorený objekt.
          anyOf:
            - $ref: '#/components/schemas/Country'
            - type: 'null'
        hasDeliveryAddress:
          description: >-
            Informácia, či má klient uloženú samostatnú dodaciu adresu odlišnú
            od fakturačnej adresy.
          type: boolean
          example: true
        deliveryStreet:
          description: Ulica a číslo dodacej adresy.
          type:
            - string
            - 'null'
          example: Skladová 9
        deliveryCity:
          description: Mesto dodacej adresy.
          type:
            - string
            - 'null'
          example: Košice
        deliveryZip:
          description: PSČ dodacej adresy.
          type:
            - string
            - 'null'
          example: '04001'
        deliveryCountry:
          description: Dodacia krajina klienta ako vnorený objekt.
          anyOf:
            - $ref: '#/components/schemas/Country'
            - type: 'null'
        createdAt:
          description: Dátum a čas vytvorenia klienta.
          type:
            - string
            - 'null'
          format: date-time
          example: '2026-03-03T12:00:00+01:00'
        updatedAt:
          description: Dátum a čas poslednej úpravy klienta.
          type:
            - string
            - 'null'
          format: date-time
          example: '2026-03-03T15:45:00+01:00'
        preferredDeliveryMethodId:
          type:
            - integer
            - 'null'
          description: >-
            Predvolená hodnota spôsobu dodania pre klienta. Ukladá sa pri
            klientovi a používa sa ako fallback default pri tvorbe nových
            dokladov pre tohto klienta, ak explicitnú hodnotu nepošlete v
            payloade. Hodnota pochádza z [referenčnej tabuľky spôsobov
            dodania](./reference-tables.md#sposoby-dodania).
          example: 1
        preferredPaymentMethodId:
          type:
            - integer
            - 'null'
          description: >-
            Predvolená hodnota spôsobu úhrady pre klienta. Ukladá sa pri
            klientovi a používa sa ako fallback default pri tvorbe nových
            dokladov pre tohto klienta, ak explicitnú hodnotu nepošlete v
            payloade. Hodnota pochádza z [referenčnej tabuľky spôsobov
            úhrady](./reference-tables.md#sposoby-uhrady).
          example: 1
        preferredCurrencyId:
          type:
            - integer
            - 'null'
          description: >-
            Predvolená hodnota meny pre klienta. Ukladá sa pri klientovi a
            používa sa ako fallback default pri tvorbe nových dokladov pre tohto
            klienta, ak explicitnú hodnotu nepošlete v payloade. Hodnota
            pochádza z [referenčnej tabuľky mien](./reference-tables.md#meny).
          example: 1
        preferredLanguageId:
          type:
            - integer
            - 'null'
          description: >-
            Predvolená hodnota jazyka pre klienta. Ukladá sa pri klientovi a
            používa sa ako fallback default pri tvorbe nových dokladov pre tohto
            klienta, ak explicitnú hodnotu nepošlete v payloade. Hodnota
            pochádza z [referenčnej tabuľky
            jazykov](./reference-tables.md#jazyky).
          example: 1
        preferredDueDays:
          description: >-
            Predvolený počet dní splatnosti. Ukladá sa pri klientovi a používa
            sa ako fallback default pri tvorbe nových dokladov pre tohto
            klienta, ak explicitnú hodnotu nepošlete v payloade.
          type:
            - integer
            - 'null'
          example: 14
        preferredNote:
          description: >-
            Predvolená poznámka. Ukladá sa pri klientovi a používa sa ako
            fallback default pri tvorbe nových dokladov pre tohto klienta, ak
            explicitnú hodnotu nepošlete v payloade.
          type:
            - string
            - 'null'
          example: Splatnosť 14 dní.
        preferredVariableSymbol:
          description: >-
            Predvolený variabilný symbol. Ukladá sa pri klientovi a používa sa
            ako fallback default pri tvorbe nových dokladov pre tohto klienta,
            ak explicitnú hodnotu nepošlete v payloade.
          type:
            - integer
            - 'null'
          example: 2026001
        preferredConstantSymbol:
          description: >-
            Predvolený konštantný symbol. Ukladá sa pri klientovi a používa sa
            ako fallback default pri tvorbe nových dokladov pre tohto klienta,
            ak explicitnú hodnotu nepošlete v payloade.
          type:
            - integer
            - 'null'
          example: 308
        preferredSpecificSymbol:
          description: >-
            Predvolený špecifický symbol. Ukladá sa pri klientovi a používa sa
            ako fallback default pri tvorbe nových dokladov pre tohto klienta,
            ak explicitnú hodnotu nepošlete v payloade.
          type:
            - integer
            - 'null'
          example: 55
        preferredTextAboveItems:
          description: >-
            Predvolený text nad položkami. Ukladá sa pri klientovi a používa sa
            ako fallback default pri tvorbe nových dokladov pre tohto klienta,
            ak explicitnú hodnotu nepošlete v payloade.
          type:
            - string
            - 'null'
          example: Dakujeme za spoluprácu.
    ClientInput:
      description: >-
        Payload pre vytvorenie alebo aktualizáciu klienta. Pošlite len business
        dáta klienta a voliteľné klientské predvolené hodnoty, ktoré si chcete
        pri klientovi uložiť ako fallback defaulty pre tvorbu nových dokladov.
      type: object
      properties:
        name:
          description: Meno osoby alebo obchodné meno klienta.
          type: string
          example: Acme s.r.o.
        type:
          description: >-
            Voliteľný typ klienta. Povolené hodnoty sú `person` a `company`. Ak
            ho nepošlete, použije sa `person`, prípadne `company`, ak pošlete
            `subjectId`, `taxId` alebo `vatId`.
          type: string
          enum:
            - person
            - company
          example: company
          default: person
        subjectId:
          type:
            - string
            - 'null'
          description: >-
            IČO klienta alebo firmy. Pre slovenské subjekty túto hodnotu viete
            typicky dohľadať aj cez [referenčný register
            subjektov](#operation/searchSubjects).
          example: '12345678'
        taxId:
          type:
            - string
            - 'null'
          description: DIČ klienta.
          example: '2020123456'
        vatId:
          type:
            - string
            - 'null'
          description: IČ DPH klienta.
          example: SK2020123456
        isVatPayer:
          description: >-
            Voliteľná informácia, či je klient platca DPH. Ak ju nepošlete a
            vyplníte `vatId`, nastaví sa automaticky na `true`.
          type: boolean
          example: true
        email:
          description: Kontaktný e-mail klienta.
          type:
            - string
            - 'null'
          example: billing@acme.test
        street:
          description: Ulica a číslo fakturačnej adresy.
          type:
            - string
            - 'null'
          example: Hlavná 1
        city:
          description: Mesto fakturačnej adresy.
          type:
            - string
            - 'null'
          example: Bratislava
        zip:
          description: PSČ fakturačnej adresy.
          type:
            - string
            - 'null'
          example: '81101'
        countryId:
          type:
            - integer
            - 'null'
          description: >-
            ID fakturačnej krajiny z [referenčnej tabuľky
            krajín](./reference-tables.md#krajiny).
          example: 703
        deliveryStreet:
          description: >-
            Ulica a číslo dodacej adresy. Ak pošlete ktorúkoľvek hodnotu z
            dodacej adresy, `hasDeliveryAddress` sa nastaví automaticky.
          type:
            - string
            - 'null'
          example: Skladová 9
        deliveryCity:
          description: >-
            Mesto dodacej adresy. Ak pošlete ktorúkoľvek hodnotu z dodacej
            adresy, `hasDeliveryAddress` sa nastaví automaticky.
          type:
            - string
            - 'null'
          example: Košice
        deliveryZip:
          description: >-
            PSČ dodacej adresy. Ak pošlete ktorúkoľvek hodnotu z dodacej adresy,
            `hasDeliveryAddress` sa nastaví automaticky.
          type:
            - string
            - 'null'
          example: '04001'
        deliveryCountryId:
          type:
            - integer
            - 'null'
          description: >-
            ID krajiny dodacej adresy z [referenčnej tabuľky
            krajín](./reference-tables.md#krajiny). Ak pošlete ktorúkoľvek
            hodnotu z dodacej adresy, `hasDeliveryAddress` sa nastaví
            automaticky.
          example: 703
        preferredDeliveryMethodId:
          type:
            - integer
            - 'null'
          description: >-
            Predvolená hodnota spôsobu dodania pre klienta. Ukladá sa pri
            klientovi a pri tvorbe nových dokladov pre tohto klienta sa používa
            ako fallback default, ak explicitnú hodnotu nepošlete v payloade.
            Hodnota pochádza z [referenčnej tabuľky spôsobov
            dodania](./reference-tables.md#sposoby-dodania).
          example: 1
        preferredPaymentMethodId:
          type:
            - integer
            - 'null'
          description: >-
            Predvolená hodnota spôsobu úhrady pre klienta. Ukladá sa pri
            klientovi a pri tvorbe nových dokladov pre tohto klienta sa používa
            ako fallback default, ak explicitnú hodnotu nepošlete v payloade.
            Hodnota pochádza z [referenčnej tabuľky spôsobov
            úhrady](./reference-tables.md#sposoby-uhrady).
          example: 1
        preferredCurrencyId:
          type:
            - integer
            - 'null'
          description: >-
            Predvolená hodnota meny pre klienta. Ukladá sa pri klientovi a pri
            tvorbe nových dokladov pre tohto klienta sa používa ako fallback
            default, ak explicitnú hodnotu nepošlete v payloade. Hodnota
            pochádza z [referenčnej tabuľky mien](./reference-tables.md#meny).
          example: 1
        preferredLanguageId:
          type:
            - integer
            - 'null'
          description: >-
            Predvolená hodnota jazyka pre klienta. Ukladá sa pri klientovi a pri
            tvorbe nových dokladov pre tohto klienta sa používa ako fallback
            default, ak explicitnú hodnotu nepošlete v payloade. Hodnota
            pochádza z [referenčnej tabuľky
            jazykov](./reference-tables.md#jazyky).
          example: 1
        preferredDueDays:
          description: >-
            Predvolený počet dní splatnosti. Ukladá sa pri klientovi a pri
            tvorbe nových dokladov pre tohto klienta sa používa ako fallback
            default, ak explicitnú hodnotu nepošlete v payloade.
          type:
            - integer
            - 'null'
          example: 14
        preferredNote:
          description: >-
            Predvolená poznámka. Ukladá sa pri klientovi a pri tvorbe nových
            dokladov pre tohto klienta sa používa ako fallback default, ak
            explicitnú hodnotu nepošlete v payloade.
          type:
            - string
            - 'null'
          example: Splatnosť 14 dní.
        stripeCustomerId:
          description: Externé ID zákazníka v Stripe, ak si ho pri klientovi evidujete.
          type:
            - string
            - 'null'
          example: cus_public_api_123
        systemeioContactId:
          description: Externé ID kontaktu v Systeme.io, ak si ho pri klientovi evidujete.
          type:
            - integer
            - 'null'
          example: 123456
        preferredVariableSymbol:
          description: >-
            Predvolený variabilný symbol. Ukladá sa pri klientovi a pri tvorbe
            nových dokladov pre tohto klienta sa používa ako fallback default,
            ak explicitnú hodnotu nepošlete v payloade.
          type:
            - integer
            - 'null'
          example: 2026001
        preferredConstantSymbol:
          description: >-
            Predvolený konštantný symbol. Ukladá sa pri klientovi a pri tvorbe
            nových dokladov pre tohto klienta sa používa ako fallback default,
            ak explicitnú hodnotu nepošlete v payloade.
          type:
            - integer
            - 'null'
          example: 308
        preferredSpecificSymbol:
          description: >-
            Predvolený špecifický symbol. Ukladá sa pri klientovi a pri tvorbe
            nových dokladov pre tohto klienta sa používa ako fallback default,
            ak explicitnú hodnotu nepošlete v payloade.
          type:
            - integer
            - 'null'
          example: 55
        preferredTextAboveItems:
          description: >-
            Predvolený text nad položkami. Ukladá sa pri klientovi a pri tvorbe
            nových dokladov pre tohto klienta sa používa ako fallback default,
            ak explicitnú hodnotu nepošlete v payloade.
          type:
            - string
            - 'null'
          example: Dakujeme za spoluprácu.
    BankAccount:
      description: >-
        Bankový účet patriaci aktuálnej firme. Objekt spája business údaje účtu,
        informáciu o banke a stav napojenia na open banking.
      type: object
      properties:
        id:
          description: Interné ID bankového účtu vo Fintoro.
          type: integer
          example: 201
        bankId:
          description: >-
            ID banky z [lookup endpointu bánk](#operation/listBanks). Ak je
            `null`, účet nie je naviazaný na konkrétnu banku z lookupu.
          type:
            - integer
            - 'null'
          example: 1
        bank:
          description: >-
            Vnorený objekt banky zodpovedajúci `bankId`, ak je banka známa a
            stále dostupná v lookup datasete.
          anyOf:
            - $ref: '#/components/schemas/Bank'
            - type: 'null'
        isPrimary:
          description: >-
            Označuje, či je tento účet aktuálne vedený ako primárny bankový účet
            firmy.
          type: boolean
          example: true
        autoPaymentMatching:
          description: >-
            Označuje, či je účet aktuálne napojený na automatické párovanie
            platieb cez open banking. Hodnota je odvodená od existencie open
            banking napojenia, neposiela sa v requeste.
          type: boolean
          example: true
        name:
          description: Používateľský názov bankového účtu zobrazený vo Fintoro.
          type: string
          example: Hlavný účet
        iban:
          description: IBAN bankového účtu.
          type: string
          example: SK3111000000001234567890
        swift:
          description: SWIFT alebo BIC kód bankového účtu.
          type: string
          example: TATRSKBX
        autoPairingStrategy:
          description: Stratégia automatického párovania platieb pre tento účet.
          type: string
          enum:
            - none
            - by_variable_symbol
            - by_price
            - by_variable_symbol_and_price
            - by_all_symbols
            - by_all_symbols_and_price
          example: by_variable_symbol
        balance:
          description: >-
            Posledný známy zostatok účtu, ak je dostupný z open banking
            napojenia.
          type:
            - number
            - 'null'
          format: float
          example: 1234.56
        lastSyncedAt:
          description: >-
            Dátum a čas poslednej úspešnej synchronizácie účtu cez open banking,
            ak je dostupný.
          type:
            - string
            - 'null'
          example: '2026-03-01 10:15:16'
        openBankingValidUntil:
          description: >-
            Dátum, do ktorého je platný aktuálny open banking súhlas, ak
            existuje.
          type:
            - string
            - 'null'
          format: date
          example: '2026-04-30'
        createdAt:
          description: Dátum a čas vytvorenia bankového účtu.
          type:
            - string
            - 'null'
          example: '2026-03-03 12:00:00'
        updatedAt:
          description: Dátum a čas poslednej zmeny bankového účtu.
          type:
            - string
            - 'null'
          example: '2026-03-03 15:45:00'
    Bank:
      description: >-
        Banka dostupná v lookup endpointoch public API. Zoznam sa priebežne
        synchronizuje z open banking zdroja, no existujúce ID bánk ostávajú
        zachované kvôli kompatibilite s uloženými bankovými účtami.
      type: object
      properties:
        id:
          description: >-
            Stabilné ID banky používané vo Fintoro. Po doplnení nových bánk sa
            existujúce ID nemenia ani neprepisujú.
          type: integer
          example: 1
        name:
          description: Názov banky.
          type: string
          example: Tatra banka
        logo:
          description: URL adresa loga banky, ak je dostupná.
          type: string
          example: https://example.test/tatra-banka.svg
        swift:
          description: SWIFT kód banky, ak je dostupný.
          type: string
          example: TATRSKBX
    BankAccountCreateInput:
      description: >-
        Payload pre vytvorenie bankového účtu. Posielate iba business dáta účtu.
        Polia, ktoré nepošlete a majú backendový default, sa dopočítajú na
        strane servera.
      type: object
      properties:
        bankId:
          description: >-
            Voliteľné ID banky z [lookup endpointu bánk](#operation/listBanks).
            Použite ho, ak chcete účet naviazať na konkrétnu banku z verejného
            lookupu.
          type:
            - integer
            - 'null'
          example: 1
        name:
          description: Názov bankového účtu, pod ktorým ho budete identifikovať vo Fintoro.
          type: string
          example: Hlavný účet
        iban:
          description: >-
            IBAN bankového účtu. Musí byť validný a unikátny v rámci aktuálnej
            firmy.
          type: string
          example: SK3111000000001234567890
        swift:
          description: SWIFT alebo BIC kód bankového účtu.
          type: string
          example: TATRSKBX
        autoPairingStrategy:
          description: >-
            Stratégia automatického párovania platieb pre tento účet. Ak pole
            nepošlete, použije sa predvolená hodnota `by_variable_symbol`.
          type: string
          enum:
            - none
            - by_variable_symbol
            - by_price
            - by_variable_symbol_and_price
            - by_all_symbols
            - by_all_symbols_and_price
          default: by_variable_symbol
          example: by_variable_symbol
        isPrimary:
          description: >-
            Označuje, či má byť účet vedený ako primárny účet firmy. Aktuálna
            implementácia novovytvorený účet nastaví ako primárny účet firmy aj
            pri vynechaní tohto poľa alebo pri odoslaní `false`, preto toto pole
            zatiaľ nefunguje ako tvrdý prepínač.
          type: boolean
          default: true
          example: true
    BankAccountUpdateInput:
      description: >-
        Payload pre aktualizáciu bankového účtu. Pošlite len polia, ktoré chcete
        zmeniť. Polia, ktoré vynecháte, zostanú bez zmeny.
      type: object
      properties:
        bankId:
          description: >-
            Voliteľné ID banky z [lookup endpointu bánk](#operation/listBanks).
            Pošlite `null`, ak chcete väzbu na banku odstrániť.
          type:
            - integer
            - 'null'
          example: 1
        name:
          description: Nový názov bankového účtu.
          type: string
          example: Hlavný účet
        iban:
          description: >-
            Nový IBAN bankového účtu. Musí zostať validný a unikátny v rámci
            aktuálnej firmy.
          type: string
          example: SK3111000000001234567890
        swift:
          description: Nový SWIFT alebo BIC kód bankového účtu.
          type: string
          example: TATRSKBX
        autoPairingStrategy:
          description: >-
            Nová stratégia automatického párovania platieb pre tento účet. Ak
            pole vynecháte, zostane zachovaná existujúca hodnota.
          type: string
          enum:
            - none
            - by_variable_symbol
            - by_price
            - by_variable_symbol_and_price
            - by_all_symbols
            - by_all_symbols_and_price
          example: by_price
        isPrimary:
          description: >-
            Pošlite `true`, ak chcete účet nastaviť ako primárny účet firmy. Ak
            pole vynecháte alebo pošlete `false`, aktuálne priradenie primárneho
            účtu zostane bez zmeny a účet sa touto operáciou neprepne na
            neprimárny.
          type: boolean
          example: true
    InvoiceItem:
      description: Jedna položka faktúry.
      type: object
      properties:
        id:
          type: integer
          example: 1
        name:
          type: string
          example: Konzultácia
        description:
          type:
            - string
            - 'null'
          example: Mesačný balík konzultácií
        unitPrice:
          type: number
          format: float
          example: 100
        unitId:
          type: integer
          description: >-
            ID jednotky z [referenčnej tabuľky
            jednotiek](./reference-tables.md#jednotky).
          example: 1
        quantity:
          type: number
          format: float
          example: 2
        vatRate:
          type: number
          format: float
          example: 20
        discountName:
          type:
            - string
            - 'null'
          example: Vernostná zľava
        discountType:
          type:
            - string
            - 'null'
          example: percentage
        discountValue:
          type:
            - number
            - 'null'
          format: float
          example: 10
        priceListItemId:
          type:
            - integer
            - 'null'
          example: 501
        total:
          type: number
          format: float
          example: 200
        totalWithVat:
          type: number
          format: float
          example: 240
    InvoiceWarehouseAllocation:
      type: object
      properties:
        warehouseId:
          type: integer
          example: 1
        quantity:
          type: number
          format: float
          example: 2
    InvoiceItemInput:
      description: >-
        Payload jednej položky faktúry. Podporované sú tri režimy: manuálna
        položka, `priceListItemId + quantity`, alebo `priceListItemId` s
        čiastočnými override poľami. Povinné je vždy `quantity`. Ak nepošlete
        `priceListItemId`, musíte poslať aj `name`, `unitId`, `unitPrice` a
        `vatRate`. Ak `priceListItemId` pošlete, backend si z cenníkovej položky
        vie dopočítať názov, jednotku, cenu a sadzbu DPH; payload potom slúži
        len ako sparse override.
      type: object
      required:
        - quantity
      anyOf:
        - required:
            - priceListItemId
        - required:
            - name
            - unitId
            - unitPrice
            - vatRate
      properties:
        name:
          description: >-
            Názov položky. Pri manuálnej položke je povinný. Pri použití
            `priceListItemId` môže slúžiť ako override názvu z cenníka.
          type: string
          example: Konzultácia
        description:
          description: >-
            Voliteľný popis položky. Pri `priceListItemId` môže prepísať alebo
            doplniť popis z cenníkovej položky.
          type:
            - string
            - 'null'
          example: Mesačný balík konzultácií
        unitPrice:
          description: >-
            Jednotková cena bez DPH. Pri manuálnej položke je povinná. Pri
            `priceListItemId` môže prepísať cenu načítanú z cenníka.
          type: number
          format: float
          example: 100
        unitId:
          description: >-
            ID jednotky z [referenčnej tabuľky
            jednotiek](./reference-tables.md#jednotky). Pri manuálnej položke je
            povinné. Pri `priceListItemId` môže prepísať jednotku z cenníkovej
            položky.
          type: integer
          example: 1
        quantity:
          description: >-
            Množstvo položky. Toto pole je povinné vždy, bez ohľadu na to, či
            ide o manuálnu položku alebo o položku z cenníka.
          type: number
          format: float
          example: 2
        vatRate:
          description: >-
            Sadzba DPH v percentách. Pri manuálnej položke je povinná. Pri
            `priceListItemId` môže prepísať sadzbu z cenníkovej položky.
          type: number
          format: float
          example: 20
        discountType:
          description: >-
            Typ zľavy na úrovni položky. Povolené hodnoty sú `percentage` a
            `fixed`.
          type:
            - string
            - 'null'
          example: percentage
        discountValue:
          description: >-
            Hodnota zľavy na úrovni položky. Ak pošlete `discountType`, musíte
            poslať aj toto pole.
          type:
            - number
            - 'null'
          format: float
          example: 10
        discountName:
          description: >-
            Názov zľavy na úrovni položky. Ak ho pri `discountType` a
            `discountValue` nepošlete, backend doplní lokalizované `Zľava` podľa
            jazyka dokladu.
          type:
            - string
            - 'null'
          example: Vernostná zľava
        uuid:
          description: >-
            Voliteľný UUID identifikátor položky používaný pri interných sync
            scenároch. Pri bežnom public create ho neposielate.
          type:
            - string
            - 'null'
          example: 6b1b8c9e-66e6-4fb5-b2db-6d7c7f0f8f19
        priceListItemId:
          description: >-
            ID cenníkovej položky. Ak ho pošlete, backend vie z tejto položky
            hydratovať názov, jednotku, cenu a sadzbu DPH a payload môže slúžiť
            len ako sparse override.
          type:
            - integer
            - 'null'
          example: 501
        warehouseAllocations:
          description: >-
            Voliteľné rozpisy množstiev po skladoch. Používajte ich len pri
            položkách, ktoré majú väzbu na skladové karty a potrebujete
            explicitne určiť pohyby po skladoch.
          type: array
          items:
            $ref: '#/components/schemas/InvoiceWarehouseAllocation'
    CompanySnapshot:
      description: >-
        Snapshot dodávateľa uložený priamo na doklade. Tento objekt reprezentuje
        firemné údaje v čase vystavenia alebo posledného preuloženia dokladu,
        aby zostal na doklade zachovaný pôvodný názov, identifikačné údaje a
        adresa.
      type: object
      properties:
        name:
          description: Obchodné meno dodávateľa uložené na faktúre.
          type: string
          example: Fintoro s.r.o.
        subjectId:
          description: IČO dodávateľa uložené na faktúre.
          type: string
          example: '12345678'
        legalForm:
          description: Právna forma dodávateľa uložená na faktúre.
          type: string
          example: Spoločnosť s ručením obmedzeným
        taxId:
          description: DIČ dodávateľa uložené na faktúre, ak bolo k dispozícii.
          type:
            - string
            - 'null'
          example: '2020123456'
        vatId:
          description: IČ DPH dodávateľa uložené na faktúre, ak bolo k dispozícii.
          type:
            - string
            - 'null'
          example: SK2020123456
        vatPayerTypeId:
          description: Typ platcu DPH dodávateľa uložený na faktúre.
          type: integer
          example: 4
        country:
          description: Krajina dodávateľa uložená na faktúre ako textová hodnota.
          type: string
          example: Slovensko
        city:
          description: Mesto dodávateľa uložené na faktúre.
          type: string
          example: Bratislava
        street:
          description: Ulica a číslo dodávateľa uložené na faktúre.
          type: string
          example: Hlavná 1
        zip:
          description: PSČ dodávateľa uložené na faktúre.
          type:
            - string
            - 'null'
          example: '81101'
        logo:
          description: URL alebo cesta k logu uloženému v snapshot-e, ak bolo k dispozícii.
          type:
            - string
            - 'null'
          example: https://app.fintoro.sk/storage/company/logo.svg
        signature:
          description: >-
            URL alebo cesta k podpisu uloženému v snapshot-e, ak bol k
            dispozícii.
          type:
            - string
            - 'null'
          example: https://app.fintoro.sk/storage/company/signature.png
        registrationCourt:
          description: Registrový súd dodávateľa uložený na faktúre, ak bol k dispozícii.
          type:
            - string
            - 'null'
          example: Mestský súd Bratislava III
        registrationNumber:
          description: >-
            Registračné číslo dodávateľa uložené na faktúre, ak bolo k
            dispozícii.
          type:
            - string
            - 'null'
          example: 12345/B
        email:
          description: Kontaktný e-mail dodávateľa uložený na faktúre.
          type:
            - string
            - 'null'
          example: support@fintoro.sk
        phone:
          description: Kontaktný telefón dodávateľa uložený na faktúre.
          type:
            - string
            - 'null'
          example: '+421900000000'
        web:
          description: Web dodávateľa uložený na faktúre.
          type:
            - string
            - 'null'
          example: https://fintoro.sk
    ClientSnapshot:
      description: >-
        Historický snapshot klienta uložený priamo na doklade. Tento objekt
        reprezentuje stav klientskych údajov v čase vystavenia alebo posledného
        preuloženia dokladu. Ak si klient neskôr zmení názov alebo adresu,
        doklad si ponechá túto historickú hodnotu kvôli auditovateľnosti a
        perzistencii dát. Príklad: doklad vystavený na adresu `Hlavná 1,
        Bratislava` zostane historicky správny aj vtedy, keď má klient dnes v
        profile už inú adresu.
      type: object
      properties:
        id:
          description: Interné ID snapshotu klienta uloženého na doklade.
          type: integer
          example: 101
        name:
          description: >-
            Meno osoby alebo obchodné meno klienta uložené na faktúre v danom
            čase.
          type: string
          example: Acme s.r.o.
        type:
          description: Typ klienta uložený na faktúre.
          type: string
          example: company
        subjectId:
          type:
            - string
            - 'null'
          description: >-
            IČO klienta alebo firmy. Pre slovenské subjekty túto hodnotu viete
            typicky dohľadať aj cez [referenčný register
            subjektov](#operation/searchSubjects).
          example: '12345678'
        taxId:
          description: DIČ klienta uložené na faktúre, ak bolo k dispozícii.
          type:
            - string
            - 'null'
          example: '2020123456'
        vatId:
          description: IČ DPH klienta uložené na faktúre, ak bolo k dispozícii.
          type:
            - string
            - 'null'
          example: SK2020123456
        isVatPayer:
          description: >-
            Informácia, či bol klient v čase uloženia snapshotu vedený ako
            platca DPH.
          type: boolean
          example: true
        email:
          description: Kontaktný e-mail klienta uložený na faktúre.
          type:
            - string
            - 'null'
          example: billing@acme.test
        street:
          description: Ulica a číslo fakturačnej adresy uložené na faktúre.
          type:
            - string
            - 'null'
          example: Hlavná 1
        city:
          description: Mesto fakturačnej adresy uložené na faktúre.
          type:
            - string
            - 'null'
          example: Bratislava
        zip:
          description: PSČ fakturačnej adresy uložené na faktúre.
          type:
            - string
            - 'null'
          example: '81101'
        countryId:
          type:
            - integer
            - 'null'
          description: >-
            ID krajiny z [referenčnej tabuľky
            krajín](./reference-tables.md#krajiny).
          example: 703
        country:
          description: Fakturačná krajina uložená na faktúre ako vnorený objekt.
          anyOf:
            - $ref: '#/components/schemas/Country'
            - type: 'null'
        hasDeliveryAddress:
          description: Informácia, či snapshot obsahuje samostatnú dodaciu adresu.
          type: boolean
          example: true
        deliveryStreet:
          description: Ulica a číslo dodacej adresy uložené na faktúre.
          type:
            - string
            - 'null'
          example: Skladová 9
        deliveryCity:
          description: Mesto dodacej adresy uložené na faktúre.
          type:
            - string
            - 'null'
          example: Košice
        deliveryZip:
          description: PSČ dodacej adresy uložené na faktúre.
          type:
            - string
            - 'null'
          example: '04001'
        deliveryCountryId:
          type:
            - integer
            - 'null'
          description: >-
            ID krajiny z [referenčnej tabuľky
            krajín](./reference-tables.md#krajiny).
          example: 703
        deliveryCountry:
          description: Dodacia krajina uložená na faktúre ako vnorený objekt.
          anyOf:
            - $ref: '#/components/schemas/Country'
            - type: 'null'
    InvoiceBankAccountReference:
      description: >-
        Bankový účet naviazaný na faktúru ako live väzba. Faktúra tento účet
        načítava aj cez soft delete, takže detail zostane dostupný aj po jeho
        zmazaní z aktívneho zoznamu účtov.
      type: object
      properties:
        id:
          description: Interné ID bankového účtu vo Fintoro.
          type: integer
          example: 201
        bankId:
          description: >-
            ID banky z [lookup endpointu bánk](#operation/listBanks), ak je účet
            naviazaný na známu banku.
          type:
            - integer
            - 'null'
          example: 1
        bank:
          description: Vnorený objekt banky priradenej k účtu, ak je známa.
          anyOf:
            - $ref: '#/components/schemas/Bank'
            - type: 'null'
        name:
          description: Názov bankového účtu v aktuálnom stave databázy.
          type: string
          example: Hlavný účet
        iban:
          description: IBAN naviazaného bankového účtu.
          type: string
          example: SK3111000000001234567890
        swift:
          description: SWIFT alebo BIC kód naviazaného bankového účtu.
          type: string
          example: TATRSKBX
        isPrimary:
          description: Informácia, či je účet aktuálne vedený ako primárny účet firmy.
          type: boolean
          example: true
        autoPaymentMatching:
          description: >-
            Informácia, či je účet aktuálne napojený na automatické párovanie
            platieb cez open banking.
          type: boolean
          example: true
    InvoicePreviewClient:
      description: Zjednodušený klient uložený v preview response faktúry.
      type: object
      properties:
        id:
          description: Interné ID klienta vo Fintoro.
          type: integer
          example: 101
        name:
          description: Meno osoby alebo obchodné meno klienta.
          type: string
          example: Acme s.r.o.
    PaginatorLink:
      description: Jeden link v paginatori.
      type: object
      properties:
        url:
          description: URL cieľovej stránky alebo `null`, ak daný link nie je dostupný.
          type:
            - string
            - 'null'
          example: https://app.fintoro.sk/api/public/v1/invoices?page=2
        label:
          description: Textový label linku.
          type: string
          example: '2'
        active:
          description: Označuje, či ide o aktuálne aktívnu stránku.
          type: boolean
          example: false
    Paginator:
      description: Metadáta stránkovania vracané pri paginovaných list endpointoch.
      type: object
      properties:
        currentPage:
          description: Aktuálna stránka výsledku.
          type: integer
          example: 2
        perPage:
          description: Počet výsledkov na jednej stránke.
          type: integer
          example: 10
        totalPages:
          description: Celkový počet stránok.
          type: integer
          example: 5
        totalResults:
          description: Celkový počet záznamov naprieč všetkými stránkami.
          type: integer
          example: 42
        currentFrom:
          description: Poradové číslo prvého záznamu na aktuálnej stránke.
          type: integer
          example: 11
        currentTo:
          description: Poradové číslo posledného záznamu na aktuálnej stránke.
          type: integer
          example: 20
        firstPageUrl:
          description: URL prvej stránky.
          type: string
          example: https://app.fintoro.sk/api/public/v1/invoices?page=1
        lastPageUrl:
          description: URL poslednej stránky.
          type: string
          example: https://app.fintoro.sk/api/public/v1/invoices?page=5
        nextPageUrl:
          description: URL ďalšej stránky alebo `null`, ak ďalšia stránka neexistuje.
          type:
            - string
            - 'null'
          example: https://app.fintoro.sk/api/public/v1/invoices?page=3
        previousPageUrl:
          description: >-
            URL predchádzajúcej stránky alebo `null`, ak predchádzajúca stránka
            neexistuje.
          type:
            - string
            - 'null'
          example: https://app.fintoro.sk/api/public/v1/invoices?page=1
        links:
          description: >-
            Kompletný zoznam stránkovacích linkov v poradí, v akom ich vracia
            backend.
          type: array
          items:
            $ref: '#/components/schemas/PaginatorLink'
    InvoicePreview:
      description: >-
        Zjednodušený preview objekt faktúry určený pre list endpoint. Neobsahuje
        položky ani plný snapshot klienta a bankového účtu; na detail použite
        detail endpoint faktúry.
      type: object
      properties:
        id:
          description: Interné ID faktúry vo Fintoro.
          type: integer
          example: 301
        uuid:
          description: Stabilný UUID identifikátor faktúry.
          type: string
          example: 6b1b8c9e-66e6-4fb5-b2db-6d7c7f0f8f19
        type:
          description: Typ dokladu.
          type: string
          example: invoice
        number:
          description: Číslo faktúry.
          type: string
          example: '20260001'
        client:
          description: Zjednodušený klient patriaci k faktúre.
          $ref: '#/components/schemas/InvoicePreviewClient'
        issueDate:
          description: Dátum vystavenia faktúry.
          type: string
          format: date
          example: '2026-03-03'
        dueDate:
          description: Dátum splatnosti faktúry.
          type: string
          format: date
          example: '2026-03-17'
        deliveryDate:
          description: Dátum dodania.
          type: string
          format: date
          example: '2026-03-03'
        currency:
          description: Mena faktúry ako vnorený objekt.
          $ref: '#/components/schemas/Currency'
        total:
          description: Celková suma bez DPH.
          type: number
          format: float
          example: 200
        totalWithVat:
          description: Celková suma s DPH.
          type: number
          format: float
          example: 240
        toBePaid:
          description: Zostávajúca suma na úhradu.
          type: number
          format: float
          example: 240
        status:
          description: Aktuálny stav úhrady faktúry.
          type: string
          enum:
            - paid
            - unpaid
            - partially_paid
            - overdue
            - will_not_be_paid
          example: unpaid
        hasVat:
          description: Informácia, či faktúra obsahuje položky s DPH.
          type: boolean
          example: true
    Invoice:
      description: Faktúra patriaca aktuálnej firme.
      type: object
      properties:
        id:
          type: integer
          example: 301
        uuid:
          type: string
          example: 6b1b8c9e-66e6-4fb5-b2db-6d7c7f0f8f19
        type:
          type: string
          example: invoice
        number:
          type: string
          example: '20260001'
        company:
          description: Snapshot dodávateľa uložený priamo na tomto doklade.
          $ref: '#/components/schemas/CompanySnapshot'
        client:
          description: Historický snapshot klienta uložený priamo na tomto doklade.
          $ref: '#/components/schemas/ClientSnapshot'
        bankAccount:
          description: >-
            Bankový účet naviazaný na faktúru ako live väzba načítaná aj cez
            soft delete.
          $ref: '#/components/schemas/InvoiceBankAccountReference'
        variableSymbol:
          type: integer
          example: 20260001
        constantSymbol:
          type:
            - integer
            - 'null'
          example: 308
        specificSymbol:
          type:
            - integer
            - 'null'
          example: 55
        issueDate:
          type: string
          format: date
          example: '2026-03-03'
        dueDate:
          type: string
          format: date
          example: '2026-03-17'
        deliveryDate:
          type: string
          format: date
          example: '2026-03-03'
        discountType:
          type:
            - string
            - 'null'
          example: percentage
        discountValue:
          type:
            - number
            - 'null'
          format: float
          example: 10
        transferTaxLiability:
          type: boolean
          example: false
        numericalSeriesId:
          type:
            - integer
            - 'null'
          example: 12
        deliveryMethodId:
          type: integer
          description: >-
            ID spôsobu dodania z [referenčnej tabuľky spôsobov
            dodania](./reference-tables.md#sposoby-dodania).
          example: 1
        paymentMethodId:
          type: integer
          description: >-
            ID spôsobu úhrady z [referenčnej tabuľky spôsobov
            úhrady](./reference-tables.md#sposoby-uhrady).
          example: 1
        currencyId:
          type: integer
          description: ID meny z [referenčnej tabuľky mien](./reference-tables.md#meny).
          example: 1
        currencyRate:
          type: number
          format: float
          example: 1
        languageId:
          type: integer
          description: >-
            ID jazyka z [referenčnej tabuľky
            jazykov](./reference-tables.md#jazyky).
          example: 1
        qrTypeId:
          type: integer
          description: >-
            ID QR typu z [referenčnej tabuľky QR
            typov](./reference-tables.md#qr-typy).
          example: 1
        note:
          type:
            - string
            - 'null'
          example: Ďakujeme za objednávku.
        textAboveItems:
          type:
            - string
            - 'null'
          example: Dakujeme za spoluprácu.
        itemsTotal:
          type: number
          format: float
          example: 200
        itemsTotalWithVat:
          type: number
          format: float
          example: 240
        total:
          type: number
          format: float
          example: 200
        totalWithVat:
          type: number
          format: float
          example: 240
        toBePaid:
          type: number
          format: float
          example: 240
        status:
          type: string
          example: unpaid
        hasVat:
          type: boolean
          example: true
        creditNotesSumTotalWithVat:
          type: number
          format: float
          example: 0
        items:
          type: array
          items:
            $ref: '#/components/schemas/InvoiceItem'
    InvoiceClientInput:
      description: >-
        Sparse klientský payload používaný pri tvorbe alebo úprave faktúry. Ak
        pošlete `clientId`, tento objekt slúži ako voliteľný override snapshotu
        klienta iba pre konkrétny doklad. Ak `clientId` nepošlete, backend sa
        podľa tohto objektu pokúsi nájsť existujúceho klienta alebo vytvoriť
        nového.
      type: object
      properties:
        name:
          description: >-
            Názov firmy alebo meno osoby. Ak `clientId` neposielate, toto pole
            je povinné.
          type: string
          example: Acme s.r.o.
        type:
          description: >-
            Typ klienta. Povolené hodnoty sú `person` a `company`. Ak ho
            nepošlete, backend ho dopočíta z identifikačných údajov.
          type: string
          enum:
            - person
            - company
          example: company
        subjectId:
          description: >-
            IČO klienta alebo firmy. Pri slovenských firmách sa používa aj na
            párovanie existujúceho klienta.
          type:
            - string
            - 'null'
          example: '12345678'
        taxId:
          description: DIČ klienta alebo firmy.
          type:
            - string
            - 'null'
          example: '2020123456'
        vatId:
          description: >-
            IČ DPH klienta alebo firmy. Pri firmách ide o primárny matching
            údaj, ak je k dispozícii.
          type:
            - string
            - 'null'
          example: SK2020123456
        isVatPayer:
          description: >-
            Voliteľná informácia, či je klient platca DPH. Ak ju nepošlete a
            vyplníte `vatId`, backend ju dopočíta automaticky.
          type: boolean
          example: true
        email:
          description: >-
            Kontaktný e-mail klienta. Môže sa použiť aj na dopárovanie
            existujúceho klienta.
          type:
            - string
            - 'null'
          format: email
          example: billing@acme.test
        street:
          description: >-
            Fakturačná ulica klienta. Pri sparse override mení len snapshot na
            tomto doklade.
          type:
            - string
            - 'null'
          example: Hlavná 1
        city:
          description: Fakturačné mesto klienta.
          type:
            - string
            - 'null'
          example: Bratislava
        zip:
          description: Fakturačné PSČ klienta.
          type:
            - string
            - 'null'
          example: '81101'
        countryId:
          type:
            - integer
            - 'null'
          description: >-
            ID krajiny z [referenčnej tabuľky
            krajín](./reference-tables.md#krajiny). Pri firmách sa spolu so
            `subjectId` používa aj na dopárovanie existujúceho klienta.
          example: 703
        hasDeliveryAddress:
          description: >-
            Voliteľný príznak dodacej adresy. Ak ho nepošlete, backend ho vie
            odvodiť z dodacích polí.
          type: boolean
          example: true
        deliveryStreet:
          description: Dodacia ulica klienta pre snapshot na tomto doklade.
          type:
            - string
            - 'null'
          example: Skladová 5
        deliveryCity:
          description: Dodacie mesto klienta pre snapshot na tomto doklade.
          type:
            - string
            - 'null'
          example: Trnava
        deliveryZip:
          description: Dodacie PSČ klienta pre snapshot na tomto doklade.
          type:
            - string
            - 'null'
          example: '91701'
        deliveryCountryId:
          type:
            - integer
            - 'null'
          description: >-
            ID krajiny dodacej adresy z [referenčnej tabuľky
            krajín](./reference-tables.md#krajiny).
          example: 703
    InvoiceInput:
      description: >-
        Payload pre vytvorenie faktúry. V bežnom prípade stačí poslať `clientId`
        a `items`; ostatné polia môže backend dopočítať. Musíte poslať buď
        `clientId`, alebo objekt `client`.
      type: object
      required:
        - items
      anyOf:
        - required:
            - clientId
        - required:
            - client
      properties:
        number:
          description: >-
            Manuálne číslo faktúry. Ak ho nepošlete, backend ho vygeneruje z
            číselného radu. Ak ho pošlete bez `numericalSeriesId`, faktúra môže
            zostať mimo číselného radu.
          type:
            - string
            - 'null'
          example: '20260001'
        proformaId:
          description: Voliteľné ID zálohovej faktúry, z ktorej sa faktúra vytvára.
          type:
            - integer
            - 'null'
          example: 401
        orderId:
          description: Voliteľné ID objednávky, z ktorej sa faktúra vytvára.
          type:
            - integer
            - 'null'
          example: 501
        quotationId:
          description: Voliteľné ID cenovej ponuky, z ktorej sa faktúra vytvára.
          type:
            - integer
            - 'null'
          example: 601
        clientId:
          description: >-
            ID existujúceho klienta. Toto je odporúčaný spôsob tvorby faktúry.
            Ak zároveň pošlete objekt `client`, použije sa ako sparse override
            snapshotu klienta pre tento konkrétny doklad.
          type:
            - integer
            - 'null'
          example: 101
        client:
          description: >-
            Sparse klientský payload. Ak pošlete `clientId`, slúži ako override
            snapshotu pre tento doklad. Ak `clientId` nepošlete, backend podľa
            týchto údajov klienta dopáruje alebo vytvorí.
          allOf:
            - $ref: '#/components/schemas/InvoiceClientInput'
        numericalSeriesId:
          description: >-
            ID číselného radu. Ak ho nepošlete a nepošlete ani `number`, použije
            sa primárny číselný rad pre faktúry. Ak pošlete manuálne `number`
            bez tohto poľa, `numericalSeriesId` zostane `null`.
          type:
            - integer
            - 'null'
          example: 12
        bankAccountId:
          description: >-
            ID bankového účtu, ktorý sa má použiť na faktúre. Ak ho nepošlete,
            použije sa primárny bankový účet firmy. Ak firma nemá nastavený
            žiadny primárny bankový účet, endpoint vráti `422` validation error
            s chybou pri `bankAccountId`.
          type:
            - integer
            - 'null'
          example: 201
        issueDate:
          description: Dátum vystavenia. Ak ho nepošlete, použije sa dnešný dátum.
          type:
            - string
            - 'null'
          format: date
          example: '2026-03-03'
        dueDateDays:
          description: >-
            Počet dní splatnosti. Priorita je payload → klientská predvolená
            hodnota → document settings firmy.
          type:
            - integer
            - 'null'
          example: 14
        deliveryDate:
          description: Dátum dodania. Ak ho nepošlete, použije sa `issueDate`.
          type:
            - string
            - 'null'
          format: date
          example: '2026-03-03'
        variableSymbol:
          description: >-
            Variabilný symbol. Ak ho nepošlete, backend ho odvodí z finálneho
            čísla faktúry.
          type:
            - integer
            - 'null'
          example: 20260001
        constantSymbol:
          description: >-
            Konštantný symbol. Priorita je payload → klientská predvolená
            hodnota → `null`.
          type:
            - integer
            - 'null'
          example: 308
        specificSymbol:
          description: >-
            Špecifický symbol. Priorita je payload → klientská predvolená
            hodnota → `null`.
          type:
            - integer
            - 'null'
          example: 55
        discountType:
          description: Typ zľavy na úrovni celého dokladu.
          type:
            - string
            - 'null'
          example: percentage
        discountValue:
          description: Hodnota zľavy na úrovni celého dokladu.
          type:
            - number
            - 'null'
          format: float
          example: 10
        transferTaxLiability:
          description: >-
            Príznak prenesenej daňovej povinnosti. Ak ho nepošlete, použije sa
            `false`.
          type: boolean
          example: false
        deliveryMethodId:
          type:
            - integer
            - 'null'
          description: >-
            ID spôsobu dodania z [referenčnej tabuľky spôsobov
            dodania](./reference-tables.md#sposoby-dodania). Priorita je payload
            → klientská predvolená hodnota → document settings firmy.
          example: 1
        paymentMethodId:
          type:
            - integer
            - 'null'
          description: >-
            ID spôsobu úhrady z [referenčnej tabuľky spôsobov
            úhrady](./reference-tables.md#sposoby-uhrady). Priorita je payload →
            klientská predvolená hodnota → document settings firmy.
          example: 1
        currencyId:
          type:
            - integer
            - 'null'
          description: >-
            ID meny z [referenčnej tabuľky mien](./reference-tables.md#meny).
            Priorita je payload → klientská predvolená hodnota → document
            settings firmy.
          example: 1
        currencyRate:
          description: >-
            Kurz meny k EUR. Ak ho nepošlete, backend ho vyrieši server-side
            podľa `currencyId` a `deliveryDate`.
          type:
            - number
            - 'null'
          format: float
          example: 1
        languageId:
          type:
            - integer
            - 'null'
          description: >-
            ID jazyka z [referenčnej tabuľky
            jazykov](./reference-tables.md#jazyky). Priorita je payload →
            klientská predvolená hodnota → document settings firmy.
          example: 1
        qrTypeId:
          type:
            - integer
            - 'null'
          description: >-
            ID QR typu z [referenčnej tabuľky QR
            typov](./reference-tables.md#qr-typy). Ak ho nepošlete, použije sa
            document settings firmy.
          example: 1
        note:
          description: >-
            Poznámka na doklade. Priorita je payload → klientská predvolená
            hodnota → document settings firmy.
          type:
            - string
            - 'null'
          example: Ďakujeme za objednávku.
        textAboveItems:
          description: >-
            Text nad položkami. Priorita je payload → klientská predvolená
            hodnota → document settings firmy.
          type:
            - string
            - 'null'
          example: Dakujeme za spoluprácu.
        items:
          description: >-
            Položky faktúry. Toto pole je povinné aj vtedy, keď väčšinu
            ostatných hodnôt necháte dopočítať backendom.
          type: array
          items:
            $ref: '#/components/schemas/InvoiceItemInput'
    InvoiceUpdateInput:
      description: >-
        Payload pre aktualizáciu faktúry. `items` sú povinné vždy. Ostatné polia
        sú voliteľné; ak ich nepošlete, zachová sa existujúca hodnota na
        faktúre. `clientId` ani `client` posielať nemusíte.
      type: object
      required:
        - items
      properties:
        number:
          description: >-
            Manuálne číslo faktúry. Ak ho nepošlete, zachová sa existujúce číslo
            faktúry. Ak pošlete nové číslo bez `variableSymbol`, backend z neho
            odvodí nový variabilný symbol.
          type:
            - string
            - 'null'
          example: '20260001'
        proformaId:
          description: >-
            Voliteľné ID zálohovej faktúry naviazanej na faktúru. Ak pole
            nepošlete, zachová sa aktuálna väzba. Pošlite `null`, ak chcete
            väzbu odstrániť.
          type:
            - integer
            - 'null'
          example: 401
        orderId:
          description: >-
            Voliteľné ID objednávky naviazanej na faktúru. Ak pole nepošlete,
            zachová sa aktuálna väzba. Pošlite `null`, ak chcete väzbu
            odstrániť.
          type:
            - integer
            - 'null'
          example: 501
        quotationId:
          description: >-
            Voliteľné ID cenovej ponuky naviazanej na faktúru. Ak pole
            nepošlete, zachová sa aktuálna väzba. Pošlite `null`, ak chcete
            väzbu odstrániť.
          type:
            - integer
            - 'null'
          example: 601
        clientId:
          description: >-
            ID existujúceho klienta. Ak ho pošlete, faktúra sa priradí k tomuto
            klientovi. Ak zároveň pošlete objekt `client`, použije sa ako sparse
            override snapshotu klienta pre tento konkrétny doklad. Ak `clientId`
            ani `client` nepošlete, zachová sa aktuálny klient aj snapshot na
            doklade.
          type:
            - integer
            - 'null'
          example: 101
        client:
          description: >-
            Sparse klientský payload. Ak pošlete `clientId`, slúži ako override
            snapshotu pre tento doklad. Ak pošlete len `client` bez `clientId`,
            backend podľa týchto údajov klienta dopáruje alebo vytvorí. Ak
            objekt `client` nepošlete, snapshot klienta zostane bez zmeny.
          allOf:
            - $ref: '#/components/schemas/InvoiceClientInput'
        numericalSeriesId:
          description: >-
            ID číselného radu. Ak ho nepošlete, zachová sa existujúci číselný
            rad. Pošlite `null`, ak chcete väzbu na číselný rad odstrániť pri
            manuálnom číslovaní.
          type:
            - integer
            - 'null'
          example: 12
        bankAccountId:
          description: >-
            ID bankového účtu, ktorý sa má použiť na faktúre. Ak ho nepošlete,
            zachová sa aktuálny bankový účet faktúry.
          type:
            - integer
            - 'null'
          example: 201
        issueDate:
          description: >-
            Dátum vystavenia. Ak ho nepošlete, zachová sa aktuálny dátum
            vystavenia.
          type:
            - string
            - 'null'
          format: date
          example: '2026-03-03'
        dueDateDays:
          description: >-
            Počet dní splatnosti. Ak ho nepošlete a nemeníte `issueDate`,
            zachová sa aktuálna splatnosť. Ak zmeníte `issueDate` bez tohto
            poľa, backend zachová pôvodný počet dní medzi vystavením a
            splatnosťou.
          type:
            - integer
            - 'null'
          example: 14
        deliveryDate:
          description: >-
            Dátum dodania. Ak ho nepošlete a nemeníte `issueDate`, zachová sa
            aktuálny dátum dodania. Ak zmeníte `issueDate` bez tohto poľa,
            použije sa nový `issueDate`.
          type:
            - string
            - 'null'
          format: date
          example: '2026-03-03'
        variableSymbol:
          description: >-
            Variabilný symbol. Ak ho nepošlete a nemeníte `number`, zachová sa
            aktuálny variabilný symbol. Ak zmeníte `number` bez tohto poľa,
            backend ho odvodí z nového čísla faktúry.
          type:
            - integer
            - 'null'
          example: 20260001
        constantSymbol:
          description: >-
            Konštantný symbol. Ak ho nepošlete, zachová sa aktuálna hodnota.
            Pošlite `null`, ak ho chcete vymazať.
          type:
            - integer
            - 'null'
          example: 308
        specificSymbol:
          description: >-
            Špecifický symbol. Ak ho nepošlete, zachová sa aktuálna hodnota.
            Pošlite `null`, ak ho chcete vymazať.
          type:
            - integer
            - 'null'
          example: 55
        discountType:
          description: Typ zľavy na úrovni celého dokladu.
          type:
            - string
            - 'null'
          example: percentage
        discountValue:
          description: Hodnota zľavy na úrovni celého dokladu.
          type:
            - number
            - 'null'
          format: float
          example: 10
        transferTaxLiability:
          description: >-
            Príznak prenesenej daňovej povinnosti. Ak ho nepošlete, zachová sa
            aktuálna hodnota na faktúre.
          type: boolean
          example: false
        deliveryMethodId:
          type:
            - integer
            - 'null'
          description: >-
            ID spôsobu dodania z [referenčnej tabuľky spôsobov
            dodania](./reference-tables.md#sposoby-dodania). Ak ho nepošlete,
            zachová sa aktuálna hodnota na faktúre.
          example: 1
        paymentMethodId:
          type:
            - integer
            - 'null'
          description: >-
            ID spôsobu úhrady z [referenčnej tabuľky spôsobov
            úhrady](./reference-tables.md#sposoby-uhrady). Ak ho nepošlete,
            zachová sa aktuálna hodnota na faktúre.
          example: 1
        currencyId:
          type:
            - integer
            - 'null'
          description: >-
            ID meny z [referenčnej tabuľky mien](./reference-tables.md#meny). Ak
            ho nepošlete, zachová sa aktuálna mena faktúry.
          example: 1
        currencyRate:
          description: >-
            Kurz meny k EUR. Ak ho nepošlete a nemeníte `currencyId` ani dátum
            dodania, zachová sa aktuálny kurz. Ak zmeníte menu alebo dátum
            dodania bez tohto poľa, backend vyrieši nový kurz server-side.
          type:
            - number
            - 'null'
          format: float
          example: 1
        languageId:
          type:
            - integer
            - 'null'
          description: >-
            ID jazyka z [referenčnej tabuľky
            jazykov](./reference-tables.md#jazyky). Ak ho nepošlete, zachová sa
            aktuálny jazyk faktúry.
          example: 1
        qrTypeId:
          type:
            - integer
            - 'null'
          description: >-
            ID QR typu z [referenčnej tabuľky QR
            typov](./reference-tables.md#qr-typy). Ak ho nepošlete, zachová sa
            aktuálna hodnota na faktúre.
          example: 1
        note:
          description: >-
            Poznámka na doklade. Ak ju nepošlete, zachová sa aktuálna poznámka.
            Pošlite `null`, ak ju chcete vymazať.
          type:
            - string
            - 'null'
          example: Ďakujeme za objednávku.
        textAboveItems:
          description: >-
            Text nad položkami. Ak ho nepošlete, zachová sa aktuálna hodnota.
            Pošlite `null`, ak ho chcete vymazať.
          type:
            - string
            - 'null'
          example: Dakujeme za spoluprácu.
        items:
          description: Položky faktúry. Toto pole je pri update povinné vždy.
          type: array
          items:
            $ref: '#/components/schemas/InvoiceItemInput'
