Skip to main content
PUT
/
invoices
/
{invoice}
Update invoice
curl --request PUT \
  --url https://app.fintoro.sk/api/public/v1/invoices/{invoice} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "clientId": 101,
  "items": [
    {
      "quantity": 2,
      "priceListItemId": 501,
      "name": "Consulting",
      "description": "Monthly consulting package",
      "unitPrice": 100,
      "unitId": 1,
      "vatRate": 20,
      "discountType": "percentage",
      "discountValue": 10,
      "discountName": "Loyalty discount",
      "warehouseAllocations": [
        {
          "warehouseId": 1,
          "quantity": 2
        }
      ],
      "uuid": "6b1b8c9e-66e6-4fb5-b2db-6d7c7f0f8f19"
    }
  ],
  "number": "20260001",
  "proformaId": 401,
  "orderId": 501,
  "quotationId": 601,
  "client": {
    "name": "Acme s.r.o.",
    "type": "company",
    "subjectId": "12345678",
    "taxId": "2020123456",
    "vatId": "SK2020123456",
    "isVatPayer": true,
    "email": "billing@acme.test",
    "street": "Main Street 1",
    "city": "Bratislava",
    "zip": "81101",
    "countryId": 703,
    "hasDeliveryAddress": true,
    "deliveryStreet": "Warehouse Street 5",
    "deliveryCity": "Trnava",
    "deliveryZip": "91701",
    "deliveryCountryId": 703
  },
  "businessCaseId": 701,
  "numericalSeriesId": 12,
  "bankAccountId": 201,
  "issueDate": "2026-03-03",
  "dueDateDays": 14,
  "deliveryDate": "2026-03-03",
  "variableSymbol": 20260001,
  "constantSymbol": 308,
  "specificSymbol": 55,
  "discountType": "percentage",
  "discountValue": 10,
  "transferTaxLiability": false,
  "deliveryMethodId": 1,
  "paymentMethodId": 1,
  "currencyId": 1,
  "currencyRate": 1,
  "languageId": 1,
  "qrTypeId": 1,
  "note": "Thank you for your order.",
  "textAboveItems": "Thank you for working with us."
}
'
{
  "id": 301,
  "uuid": "6b1b8c9e-66e6-4fb5-b2db-6d7c7f0f8f19",
  "type": "invoice",
  "number": "20260001",
  "webDokladUrl": "https://app.fintoro.sk/web-doklad/fa/4f3f8a95-5c4a-4c8b-9e6c-8a0c1a5df3a1",
  "pdfDownloadUrl": "https://app.fintoro.sk/api/public/v1/invoices/123/pdf",
  "company": {
    "name": "Fintoro s.r.o.",
    "subjectId": "12345678",
    "legalForm": "Limited liability company",
    "taxId": "2020123456",
    "vatId": "SK2020123456",
    "vatPayerTypeId": 4,
    "country": "Slovakia",
    "city": "Bratislava",
    "street": "Main Street 1",
    "zip": "81101",
    "logo": "https://cdn.fintoro.sk/company/logo.svg",
    "signature": "https://cdn.fintoro.sk/company/signature.png",
    "registrationCourt": "City Court Bratislava III",
    "registrationNumber": "12345/B",
    "email": "support@fintoro.sk",
    "phone": "+421900000000",
    "web": "https://fintoro.sk"
  },
  "clientId": 101,
  "client": {
    "name": "Acme s.r.o.",
    "type": "company",
    "subjectId": "12345678",
    "taxId": "2020123456",
    "vatId": "SK2020123456",
    "isVatPayer": true,
    "email": "billing@acme.test",
    "street": "Main Street 1",
    "city": "Bratislava",
    "zip": "81101",
    "countryId": 703,
    "country": {
      "id": 703,
      "name": "Slovakia",
      "code": "SK",
      "eu": true
    },
    "hasDeliveryAddress": true,
    "deliveryStreet": "Warehouse 9",
    "deliveryCity": "Kosice",
    "deliveryZip": "04001",
    "deliveryCountryId": 703,
    "deliveryCountry": {
      "id": 703,
      "name": "Slovakia",
      "code": "SK",
      "eu": true
    }
  },
  "bankAccount": {
    "id": 201,
    "bankId": 1,
    "bank": {
      "id": 23,
      "name": "Tatra Banka",
      "swift": "TATRSKBX"
    },
    "name": "Main account",
    "iban": "SK3111000000001234567890",
    "swift": "TATRSKBX",
    "isPrimary": true,
    "autoPaymentMatching": true
  },
  "payments": [
    {
      "id": 801,
      "documentType": "invoice",
      "documentId": 301,
      "paymentMethod": {
        "id": 1,
        "name": "Bank transfer"
      },
      "currency": {
        "id": 1,
        "symbol": "EUR",
        "name": "Euro",
        "mark": "€"
      },
      "paymentDate": "2026-03-07",
      "amount": 15.5,
      "currencyRate": 1,
      "receiptInvoice": {
        "id": 301,
        "uuid": "6b1b8c9e-66e6-4fb5-b2db-6d7c7f0f8f19",
        "type": "invoice",
        "number": "20260001",
        "clientId": 101,
        "client": {
          "name": "Acme s.r.o.",
          "type": "company",
          "subjectId": "12345678",
          "taxId": "2020123456",
          "vatId": "SK2020123456",
          "isVatPayer": true,
          "email": "billing@acme.test",
          "street": "Main Street 1",
          "city": "Bratislava",
          "zip": "81101",
          "countryId": 703,
          "country": {
            "id": 703,
            "name": "Slovakia",
            "code": "SK",
            "eu": true
          },
          "hasDeliveryAddress": true,
          "deliveryStreet": "Warehouse 9",
          "deliveryCity": "Kosice",
          "deliveryZip": "04001",
          "deliveryCountryId": 703,
          "deliveryCountry": {
            "id": 703,
            "name": "Slovakia",
            "code": "SK",
            "eu": true
          }
        },
        "issueDate": "2026-03-03",
        "dueDate": "2026-03-17",
        "deliveryDate": "2026-03-03",
        "currency": {
          "id": 1,
          "symbol": "EUR",
          "name": "Euro",
          "mark": "€"
        },
        "total": 200,
        "totalWithVat": 240,
        "toBePaid": 240,
        "status": "unpaid",
        "hasVat": true
      }
    }
  ],
  "variableSymbol": 20260001,
  "constantSymbol": 308,
  "specificSymbol": 55,
  "issueDate": "2026-03-03",
  "dueDate": "2026-03-17",
  "deliveryDate": "2026-03-03",
  "businessCaseId": 701,
  "discountType": "percentage",
  "discountValue": 10,
  "transferTaxLiability": false,
  "numericalSeriesId": 12,
  "deliveryMethodId": 1,
  "paymentMethodId": 1,
  "currencyId": 1,
  "currencyRate": 1,
  "languageId": 1,
  "qrTypeId": 1,
  "note": "Thank you for your order.",
  "textAboveItems": "Thank you for working with us.",
  "itemsTotal": 200,
  "itemsTotalWithVat": 240,
  "total": 200,
  "totalWithVat": 240,
  "toBePaid": 240,
  "status": "unpaid",
  "hasVat": true,
  "creditNotesSumTotalWithVat": 0,
  "items": [
    {
      "id": 1,
      "uuid": "6b1b8c9e-66e6-4fb5-b2db-6d7c7f0f8f19",
      "name": "Consulting",
      "description": "Monthly consulting package",
      "unitPrice": 100,
      "unitId": 1,
      "quantity": 2,
      "vatRate": 20,
      "discountName": "Loyalty discount",
      "discountType": "percentage",
      "discountValue": 10,
      "priceListItemId": 501,
      "total": 200,
      "totalWithVat": 240
    }
  ]
}

Authorizations

Authorization
string
header
required

Bearer token created for a specific company in Integrations → API.

Path Parameters

invoice
integer
required

Invoice ID.

Example:

301

Body

application/json

Payload used to update an invoice. Update uses the same fields, validation rules, and defaults as the create flow. You must send either clientId or the client object. Omitted fields are not copied from the current invoice; the backend resolves them exactly like in the create flow. The only difference compared to create is that line items may additionally carry the original uuid values of existing invoice rows; the create flow ignores them.

clientId
integer | null
required

Existing client ID. This is the recommended way to create an invoice. If you also send the client object, it is applied as a sparse snapshot override for this specific document.

Example:

101

items
object[]
required

Invoice line items. This field stays required on update. If you send the original uuid of an existing line item from the invoice detail response, the backend can preserve warehouse outbound receipt links and synchronize changed allocations on that same logical row.

Required array length: 1 - 100 elements

Payload for a single invoice line item during update. The validation rules are the same as in create, but you may additionally send the original uuid of an existing invoice row. You can obtain that UUID from the invoice detail response. The backend uses it during warehouse allocation and outbound receipt synchronization so it can match the edited line with the original stored line. In the create flow, item uuid is not part of the request contract; if you send it, the backend ignores it.

number
string | null

Manual invoice number. If omitted, the backend generates it from the numbering series. If you send number, do not send numericalSeriesId in the same payload.

Required string length: 1 - 20
Example:

"20260001"

proformaId
integer | null

Optional ID of the proforma invoice that should define the final invoice state. On update, this ID may either still be unassigned or already linked to the invoice being updated.

Example:

401

orderId
integer | null

Optional ID of the order that should define the final invoice state. On update, this ID may either still be unassigned or already linked to the invoice being updated.

Example:

501

quotationId
integer | null

Optional ID of the quotation that should define the final invoice state. On update, this ID may either still be unassigned or already linked to the invoice being updated.

Example:

601

client
object

Sparse client payload. When clientId is sent, it overrides the client snapshot for this document only. When clientId is omitted, the backend uses it to match or create the client.

businessCaseId
integer | null

Optional business case ID. When sent, it must be available in the token scope and to the client resolved as the final clientId.

Example:

701

numericalSeriesId
integer | null

Numbering series ID. If omitted together with number, the primary invoice series is used. If you send numericalSeriesId, do not send manual number in the same payload.

Example:

12

bankAccountId
integer

Bank account ID to use on the invoice. It must be available in the token scope. If omitted, the primary company bank account is used. If the company has no primary bank account configured, the endpoint returns a 422 validation error on bankAccountId.

Example:

201

issueDate
string<date>

Issue date in Y-m-d format. It must be after 2009-01-01 and before a date one year in the future. If omitted, today's date is used.

Example:

"2026-03-03"

dueDateDays
integer

Number of due days. Precedence is payload → client default → company document settings.

Required range: 0 <= x <= 1000
Example:

14

deliveryDate
string<date>

Delivery date in Y-m-d format. If sent, it must be less than or equal to issueDate. If omitted, issueDate is used.

Example:

"2026-03-03"

variableSymbol
integer

Variable symbol. Allowed values have 1 to 10 digits. If omitted, the backend derives it from the final invoice number.

Required range: 0 <= x <= 9999999999
Example:

20260001

constantSymbol
integer | null

Constant symbol. Allowed values have 1 to 4 digits. Precedence is payload → client default → null.

Required range: 0 <= x <= 9999
Example:

308

specificSymbol
integer | null

Specific symbol. Allowed values have 1 to 10 digits. Precedence is payload → client default → null.

Required range: 0 <= x <= 9999999999
Example:

55

discountType
enum<string> | null

Document-level discount type.

Available options:
percentage,
fixed
Example:

"percentage"

discountValue
number<float> | null

Document-level discount value.

Required range: x >= 0
Example:

10

transferTaxLiability
boolean

Reverse-charge tax liability flag. If omitted, false is used.

Example:

false

deliveryMethodId
integer

Delivery method ID from the delivery method reference table. Precedence is payload → client default → company document settings.

Example:

1

paymentMethodId
integer

Payment method ID from the payment method reference table. Precedence is payload → client default → company document settings.

Example:

1

currencyId
integer

Currency ID from the currency reference table. Precedence is payload → client default → company document settings.

Example:

1

currencyRate
number<float>

Currency exchange rate against EUR. If omitted, the backend resolves it server-side from currencyId and deliveryDate. If the final document currency is EUR, the backend always stores and returns 1.0.

Required range: 0.00001 <= x <= 10000000
Example:

1

languageId
integer

Language ID from the language reference table. Precedence is payload → client default → company document settings.

Example:

1

qrTypeId
integer

QR type ID from the QR type reference table. If omitted, the company document settings value is used.

Example:

1

note
string | null

Note shown on the document. Precedence is payload → client default → company document settings.

Maximum string length: 3000
Example:

"Thank you for your order."

textAboveItems
string | null

Text shown above the line items. Precedence is payload → client default → company document settings.

Maximum string length: 3000
Example:

"Thank you for working with us."

Response

Invoice updated.

Invoice.

id
integer
Example:

301

uuid
string
Example:

"6b1b8c9e-66e6-4fb5-b2db-6d7c7f0f8f19"

type
string
Example:

"invoice"

number
string
Example:

"20260001"

webDokladUrl
string<uri>

Absolute URL of the public web document for this invoice.

Example:

"https://app.fintoro.sk/web-doklad/fa/4f3f8a95-5c4a-4c8b-9e6c-8a0c1a5df3a1"

pdfDownloadUrl
string<uri>

Absolute URL of the Fintoro API endpoint that downloads this invoice PDF as an attachment.

Example:

"https://app.fintoro.sk/api/public/v1/invoices/123/pdf"

company
object

Supplier snapshot stored directly on this document.

clientId
integer

Live ID of the client linked to the invoice.

Example:

101

client
object

Historical client snapshot stored directly on this document.

bankAccount
object

Bank account linked to the invoice as a live relation loaded through soft delete.

payments
object[]

Payments linked to this invoice ordered from newest to oldest.

variableSymbol
integer
Example:

20260001

constantSymbol
integer | null
Example:

308

specificSymbol
integer | null
Example:

55

issueDate
string<date>
Example:

"2026-03-03"

dueDate
string<date>
Example:

"2026-03-17"

deliveryDate
string<date>
Example:

"2026-03-03"

businessCaseId
integer | null

Optional business case ID. When sent, it must belong to the client selected on the document.

Example:

701

discountType
string | null
Example:

"percentage"

discountValue
number<float> | null
Example:

10

transferTaxLiability
boolean
Example:

false

numericalSeriesId
integer | null
Example:

12

deliveryMethodId
integer

Delivery method ID from the delivery method reference table.

Example:

1

paymentMethodId
integer

Payment method ID from the payment method reference table.

Example:

1

currencyId
integer

Currency ID from the currency reference table.

Example:

1

currencyRate
number<float>
Example:

1

languageId
integer

Language ID from the language reference table.

Example:

1

qrTypeId
integer

QR type ID from the QR type reference table.

Example:

1

note
string | null
Example:

"Thank you for your order."

textAboveItems
string | null
Example:

"Thank you for working with us."

itemsTotal
number<float>
Example:

200

itemsTotalWithVat
number<float>
Example:

240

total
number<float>
Example:

200

totalWithVat
number<float>
Example:

240

toBePaid
number<float>
Example:

240

status
string
Example:

"unpaid"

hasVat
boolean
Example:

true

creditNotesSumTotalWithVat
number<float>
Example:

0

items
object[]