Izdavanje faktura preko API-ja

POST /invoices s Idempotency-Key, PDV u postocima, uz popis, storno i oznaku plaćeno.

POST /invoices s Idempotency-Key, PDV u postocima, uz popis, storno i oznaku plaćeno.

← Natrag na API dokumentaciju

Prva faktura u 6 koraka

  1. Pošaljite POST /v1/invoices s objektom buyer i barem jednom stavkom u lines.
  2. Dodajte zaglavlje Idempotency-Key — obavezno je, jedan ključ po logičkoj operaciji.
  3. vat_rate pošaljite kao postotak (21), a unit_price kao NETO jediničnu cijenu.
  4. Odgovor 201 sadrži id, number, series, iznose net/vat/gross i metadata koje ste poslali.
  5. Dokument preuzmite s GET /v1/invoices/{id}/pdf, a UBL XML s GET /v1/invoices/{id}/xml.

Svi endpointi

MetodaEndpointScopeIdempotency-KeyZahtjeva / minutu
POST/invoices
Izdavanje fakture ili predračuna
invoices:writeobavezno30
GET/invoices
Popis faktura (paginacija kursorom)
invoices:read—120
POST/invoices/preview-totals
Izračun ukupnih iznosa bez stvaranja ičega
invoices:read—120
GET/invoices/{invoice_id}
Dohvat jedne fakture
invoices:read—120
GET/invoices/{invoice_id}/pdf
Preuzimanje PDF-a fakture
invoices:read—120
POST/invoices/{invoice_id}/storno
Izdavanje kreditne bilješke kojom se poništava ova faktura
invoices:writeobavezno30
POST/invoices/{invoice_id}/payments
Označi fakturu kao plaćenu
invoices:write—30
DELETE/invoices/{invoice_id}/payments
Označi fakturu kao neplaćenu
invoices:write—30

Što je 4invoices API

bash
curl -sS -X POST https://api.4invoices.net/v1/invoices \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: order-10457-invoice' \
  -d '{
    "buyer": {
      "name": "Exemplu Comert SRL",
      "tax_id": "RO12345678",
      "address": "Str. Fabricii 12",
      "city": "Cluj-Napoca",
      "county": "Cluj",
      "country": "RO",
      "email": "[email protected]"
    },
    "lines": [
      { "description": "Abonament SaaS, iulie", "quantity": 1, "unit_price": 400, "vat_rate": 21, "unit": "buc" },
      { "description": "Implementare", "quantity": 6, "unit_price": 250, "vat_rate": 21, "unit": "ora" }
    ],
    "currency": "RON",
    "document_kind": "factura",
    "due_date": "2026-08-15",
    "metadata": { "order_id": "10457" }
  }'
bash
# Paginacija kursorom: slijedite next_cursor dok has_more ne postane false.
curl -sS "https://api.4invoices.net/v1/invoices?limit=50&status=issued&issued_from=2026-07-01" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

# → {"object":"list","data":[...],"has_more":true,"next_cursor":"inv_01J..."}

curl -sS "https://api.4invoices.net/v1/invoices?limit=50&cursor=inv_01J..." \
  -H "Authorization: Bearer $ACCESS_TOKEN"
bash
curl -sS -X POST https://api.4invoices.net/v1/invoices/inv_01J7ABC/storno \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H 'Idempotency-Key: storno-inv_01J7ABC-1'

# Kreditna bilješka dobiva VLASTITI fiskalni broj; broj izvornika se nikad ne upotrebljava ponovno.
bash
# Označi kao plaćeno
curl -sS -X POST https://api.4invoices.net/v1/invoices/inv_01J7ABC/payments \
  -H "Authorization: Bearer $ACCESS_TOKEN"

# Poništi
curl -sS -X DELETE https://api.4invoices.net/v1/invoices/inv_01J7ABC/payments \
  -H "Authorization: Bearer $ACCESS_TOKEN"

https://api.4invoices.net/v1 · https://api.4invoices.net/v1/openapi.json

Pogreške

StatusTipKod
422invalid_request_errorissuer_profile_incomplete
422invalid_request_errorcannot_storno_draft
422invalid_request_errornothing_to_storno

Česte pogreške

  • Popis se straniči kursorom: slijedite next_cursor dok has_more ne postane false. Filtri uključuju status, document_kind, buyer_tax_id, issued_from, issued_to i q.
  • Storno je POST /v1/invoices/{id}/storno i dobiva vlastiti fiskalni broj — izvorni broj nikad se ne koristi ponovno.
  • Predračun (document_kind proforma) ne troši fiskalni broj i ne može se predati u nacionalni sustav e-računa.
  • metadata se vraća pri čitanju: upišite ondje ID svoje narudžbe i više vam ne treba zasebna tablica mapiranja.
  • POST /v1/invoices/preview-totals provodi isti izračun bez nuspojava — zgodno za prikaz iznosa u vlastitoj košarici.

Pitanja i odgovori za razvijatelje

Koliko stavki može imati jedna faktura?

Između 1 i 400. description je ograničen na 1024 znaka, a quantity mora biti strogo pozitivan.

Što se događa ako isti zahtjev pošaljem ponovno nakon isteka vremena?

S istim Idempotency-Key dobivate izvornu fakturu i zaglavlje Idempotency-Replayed: true. Drugi dokument se ne izdaje.

Kako označiti fakturu kao plaćenu?

POST /v1/invoices/{id}/payments označava je plaćenom, a DELETE na istoj putanji to poništava. Oba zahtijevaju scope invoices:write.