eRAČUNI · INTEGRACIJE

Upute za integraciju · od početka

Od registracije do
prvog testnog eRačuna.

Povežite svoju blagajnu ili poslovni program s KontAI-jem. Krenite korak po korak, provjerite dostavu i pripremite produkcijski pristup.

Verzija 1.0 · Ažurirano 24. listopada 2026. · Javno dostupno, bez prijave

01 / OSNOVE

Jedno povezivanje, zaseban ključ za svaku firmu.

Proizvođač blagajne jednom ugradi podršku za KontAI API. Svaka firma koja koristi tu blagajnu otvara svoj račun i izdaje vlastiti ključ. API iz ključa prepoznaje firmu, povezani program i dopuštene radnje.

Vaša blagajnapriprema UBL XMLKontAI demoprovjerava zahtjevTestni primateljinterna dostava
PodatakČemu služi
Adresa API-jaOdređuje okolinu na koju se program povezuje.
API ključTajni podatak za pristup jednoj firmi i odabranim radnjama.
Software IDAutomatska oznaka integracije za evidenciju i podršku. Već je vezana uz ključ; ne šaljete je posebno u API zahtjevu.

Ako vaša blagajna još nema opciju „KontAI”: pošaljite proizvođaču poveznicu na ove upute. Sam unos ključa ne dodaje podršku programu koji još nema implementiranu integraciju.

Što demo radi danas

Provjerava XML i dostavlja ga interno vlastitoj organizaciji ili KontAI testnom primatelju. Nema stvarne AS4/PTS dostave, fiskalizacije, eIzvještavanja ni slanja Poreznoj upravi. Produkcijsko slanje za vanjske integratore još nije aktivno.

02 / REGISTRACIJA

Otvorite zaseban demo račun.

  1. Otvorite registraciju u demo portalu.
  2. Unesite naziv tvrtke ili obrta, svoj OIB, e-mail adresu i lozinku od najmanje 12 znakova.
  3. Potvrdite da u testnim dokumentima koristite samo testne podatke i kliknite Otvori sandbox račun.
  4. Otvorit će se Pregled integracija. Provjerite OIB prikazan uz vašu organizaciju. Taj OIB mora biti i OIB izdavatelja u XML-u.

Demo i produkcija imaju zasebne registracije, prijave, ključeve i dokumente. Postojeća produkcijska prijava ne otvara demo račun. Ako je demo račun već registriran, koristite Prijavi se.

OkolinaAdresaTrenutačno dostupno
Demodemo-eracuni.kontai.hrRegistracija, ključevi, provjera XML-a i interna testna dostava.
Produkcijaeracuni.kontai.hr/integracijePriprema pristupa, ključevi, provjera XML-a i čitanje postojećih produkcijskih dokumenata svoje firme. Slanje čeka aktivaciju.
03 / PRISTUP

Dodajte program i izdajte API ključ.

  1. U izborniku otvorite Integracije → Nova integracija. Unesite prepoznatljiv naziv, primjerice „Moja blagajna – razvoj”, i kliknite Kreiraj integraciju.
  2. Uz integraciju kliknite Izdaj API ključ. Odaberite integraciju, naziv ključa i rok valjanosti.
  3. Odaberite dopuštenja iz tablice. Za sve primjere u ovom vodiču trebaju vam svih pet demo dopuštenja; u stvarnoj integraciji dodijelite samo ona koja koristite.
  4. Kliknite Izdaj API ključ i odmah spremite tajni ključ. Počinje s kt_test_ i prikazuje se samo jednom.
DopuštenjeRadnja
validation:writeProvjera XML-a prije slanja.
invoices:writeSlanje testnog dokumenta.
invoices:readPopis poslanih dokumenata, status i izvorni XML.
inbox:readPopis dokumenata poslanih vlastitom OIB-u.
recipients:readProvjera dopuštenog testnog primatelja.

Ključ spremite na poslužitelju koji povezuje blagajnu s KontAI-jem. Ne ugrađujte ga u javni web-kod, zajedničku instalaciju aplikacije ili repozitorij. Lozinka za portal ne šalje se uz API pozive.

Ako ključ izgubite, izdajte novi. Ako je otkriven, odmah kliknite Opozovi. Radnja Zamijeni izdaje novi ključ i odmah opoziva stari; novi ključ zatim postavite u svom programu.

04 / PRVI RAČUN

Najprije isprobajte slanje u portalu.

  1. Otvorite Testno slanje i odaberite svoju integraciju.
  2. Kliknite Učitaj ogledni XML. Portal priprema testni račun s vašim OIB-om izdavatelja i KontAI OIB-om primatelja 99062919827.
  3. Kliknite Provjeri XML. Ako postoje pogreške, ispravite ih prema prikazanoj poruci.
  4. Potvrdite da račun sadrži samo testne podatke i kliknite Pošalji u sandbox.
  5. Otvorite Poslani dokumenti i provjerite status. Interno dostavljeno potvrđuje dostavu unutar demoa.

Kako poslati samome sebi?

U svom XML-u postavite vlastiti OIB kao primatelja. U odjeljku AccountingCustomerParty uskladite EndpointID sa shemom 9934, identifikatore primatelja i ostale podatke o primatelju. Ako je naveden PDV identifikator, njegov format u oglednom dokumentu je HR + OIB. Takav račun vidjet ćete i u Ulaznim dokumentima.

Račun poslan KontAI testnom primatelju ostaje u vašem pregledu poslanih dokumenata; ne pojavljuje se u vašoj ulaznoj pošti. Slanje bilo kojem drugom OIB-u odbija se porukom RECIPIENT_NOT_ALLOWED.

Preuzmite XML za testiranje iz svog programa

U API dokumentaciji, dok ste prijavljeni, kliknite Preuzmi ogledni XML. Spremite ga kao racun.xml. Ogledni račun koristi vaš OIB i testne podatke. Za svaki novi testni račun koristite novi broj dokumenta.

05 / ZA PROGRAMERE

Prvi pozivi iz vašeg programa.

Osnovna demo API adresa je https://demo-eracuni.kontai.hr/api/v1. Pozive šalje vaš poslužitelj. Registracija i upravljanje ključevima rade se u portalu; za poslovne pozive koristite samo rute /api/v1/.

Zaglavlja API zahtjeva
Authorization: Bearer VAS_DEMO_API_KLJUC
Content-Type: application/json

Ne šaljite dodatna polja username, password, software_id, environment ili adresu primateljevog servisa. Ključ određuje firmu i integraciju, a adresa API-ja okolinu.

A. Preuzmite gotov primjer za prvi test

Primjer radi uz Node.js 18 ili noviji i ne treba dodatne pakete. Radi na Windowsu, macOS-u i Linuxu. Koristi isključivo demo adresu i odbija produkcijski ključ.

Spremite kontai-demo.mjs i svoj racun.xml u istu mapu. Otvorite terminal u toj mapi. Naredbom node --version provjerite da je Node.js dostupan. Primjer je pomoć za testiranje; u vlastitom sustavu obradite statuse, ponavljanja i pohranu dokumenata.

B. Postavite ključ u trenutačnoj sesiji terminala

Odaberite primjer za svoj terminal. Ključ se pri unosu ne ispisuje na ekran i ne upisujete ga u datoteku programa.

macOS / Linux — Bash ili Zsh
Postavljanje demo ključa
printf 'Zalijepite demo API ključ: '
read -r -s KONTAI_DEMO_API_KEY
printf '\n'
export KONTAI_DEMO_API_KEY
Windows — PowerShell
Postavljanje demo ključa
$kontaiSecret = Read-Host 'Zalijepite demo API ključ' -AsSecureString
$env:KONTAI_DEMO_API_KEY = [System.Net.NetworkCredential]::new('', $kontaiSecret).Password
Remove-Variable kontaiSecret

C. Provjerite vezu i primatelja

Naredbe za sve sustave
node kontai-demo.mjs info
node kontai-demo.mjs recipient 99062919827

Prvi poziv mora vratiti environment: "sandbox" i organization_oib vaše firme. Provjera primatelja mora potvrditi internu testnu dostavu. Za provjeru vlastitog primatelja zamijenite broj svojim OIB-om.

D. Provjerite XML pa pošaljite račun

Provjera dokumenta
node kontai-demo.mjs validate racun.xml

Nastavite kada odgovor ima valid: true. Provjera obuhvaća UBL XSD, HR pravila i EN16931. Kod pogreške pogledajte issues i ispravite XML.

Slanje testnog dokumenta
node kontai-demo.mjs send racun.xml demo-proba-0001

demo-proba-0001 je vaš ključ zahtjeva, odnosno Idempotency-Key. Zapišite ga uz dokument prije prvog slanja. Za svaki novi dokument odaberite novi ključ; kod ponavljanja koristite isti ključ i potpuno isti XML.

Primjer šalje POST /invoices sa sljedećim tijelom. Vrijednost XML-a u stvarnom zahtjevu mora biti JSON string s pravilno kodiranim navodnicima i prijelomima redaka; koristite JSON serializer svojeg jezika.

Struktura JSON zahtjeva · skraćeni primjer
{
  "xml": "CIJELI_UBL_XML_KAO_STRING",
  "synthetic_data": true
}

E. Provjerite status i preuzmite dokumente

Iz odgovora slanja spremite id. U sljedećoj naredbi zamijenite ID_DOKUMENTA tim identifikatorom.

Status, izlazni i ulazni dokumenti
node kontai-demo.mjs status ID_DOKUMENTA
node kontai-demo.mjs outbox
node kontai-demo.mjs inbox

Detalj računa sadrži i xml. Ako je status još accepted, provjerite ga ponovno nakon kratke stanke, primjerice dvije sekunde. Nemojte zbog čekanja ponovno kreirati račun. Testni XML čuva se 30 dana; nakon isteka expired je true, a sadržaj XML-a više nije dostupan.

Pregled API poziva

Metoda i putanjaTijelo / rezultatDopuštenje
GET /infoFirma, okolina i ovlasti ključa.Važeći ključ
GET /recipients/{oib}Dostupnost testnog primatelja.recipients:read
POST /validate{"xml":"…"}; provjerite valid.validation:write
POST /invoicesXML + synthetic_data:true; obvezan Idempotency-Key.invoices:write
GET /invoices/{id}Status, podaci i izvorni XML.invoices:read
GET /invoicesVlastiti poslani dokumenti.invoices:read
GET /inboxInterno dostavljeni dokumenti poslani vlastitom OIB-u.inbox:read

Putanje u tablici dodaju se na osnovnu adresu /api/v1. Trenutačno nema webhook obavijesti ni filtriranja popisa upitnim parametrima; status dohvaćate GET pozivom. Potpuni ugovor API-ja nalazi se u OpenAPI specifikaciji.

06 / ODGOVORI

Razlikujte primitak zahtjeva od dostave.

OdgovorZnačenje i sljedeći korak
HTTP 202 · acceptedDokument je zaprimljen u demo. Spremite ID i dohvatite status.
internal_deliveredUspješna interna testna dostava. fiscalized:false i institutional_delivery:false ostaju nepromijenjeni.
HTTP 200 · duplicate:trueDokument već postoji. Koristite vraćeni ID; nije izrađen drugi račun.
HTTP 200 · valid:falseZahtjev za provjeru obrađen je, ali XML ne prolazi pravila. Sama oznaka HTTP 200 ne znači ispravan račun.

Najčešće pogreške

HTTP / kodŠto napraviti
401 · INVALID_API_KEYProvjerite cijeli Bearer ključ, okolinu, rok valjanosti i je li ključ opozvan.
403 · INSUFFICIENT_SCOPEIzdajte ključ s dopuštenjem potrebnim za taj poziv.
403 · ISSUER_MISMATCHOIB izdavatelja u XML-u mora odgovarati firmi kojoj ključ pripada.
403 · RECIPIENT_NOT_ALLOWEDKoristite vlastiti OIB ili 99062919827. Poruka navodi primljeni i dopuštene OIB-e. Kod provjere GET /recipients/{oib} ista zabrana vraća HTTP 404.
400 · IDEMPOTENCY_KEY_REQUIREDDodajte zaglavlje Idempotency-Key: 8–100 znakova, slova, brojevi, točka, podvlaka, dvotočka ili crtica.
409 · IDEMPOTENCY_CONFLICTIsti ključ zahtjeva upotrijebljen je za drugi sadržaj. Usporedite izvorni zahtjev; ne zaobilazite pogrešku nasumičnim novim ključem.
409 · INVOICE_CONFLICTDokument istog izdavatelja, vrste, broja i godine već postoji s drugim sadržajem. Provjerite postojeći račun prije ponovnog slanja.
422 · XML_VALIDATION_FAILEDPročitajte validation.issues; ispravite prijavljena XSD, HR ili EN16931 pravila.
422 · SYNTHETIC_DATA_REQUIREDU demo zahtjevu za slanje mora biti synthetic_data:true, a sadržaj mora biti testni.
429 · RATE_LIMITED / kvotaSmanjite učestalost. Demo dopušta 100 novih računa u prethodna 24 sata i do 500 računa sa sačuvanim sadržajem. Kod kvote nemojte slati stalne ponovne pokušaje.
503 · VALIDATOR_BUSYPričekajte prema Retry-After zaglavlju. Ponovite neizmijenjen zahtjev i isti ključ slanja.
Veza se prekinula, a ne znate je li račun zaprimljen?

Provjerite pregled dokumenata. Za ponovni pokušaj koristite potpuno isti XML i isti Idempotency-Key. Ako već imate ID dokumenta, provjerite njegov status. Automatsko stvaranje novog računa može uzrokovati pogrešnu evidenciju u vašem programu.

Za podršku sačuvajte vrijeme, putanju poziva, HTTP status, error.code i request_id odnosno zaglavlje X-Request-ID. API ključ i lozinku nemojte slati.

07 / ZAVRŠNA PROVJERA DEMOA

Provjerite cijeli tijek.

  • Identitet: GET /info prikazuje očekivani OIB i sandbox okolinu.
  • Ispravan račun: XML prolazi validaciju i dobiva ID.
  • KontAI primatelj: račun završava kao internal_delivered.
  • Vlastiti primatelj: račun se vidi i u ulaznim dokumentima.
  • Zabranjeni primatelj: drugi OIB dobiva RECIPIENT_NOT_ALLOWED, bez slanja.
  • Neispravan XML ili iznos: pogreška je vidljiva korisniku, a slanje se zaustavlja.
  • Ponovljeni zahtjev: isti ključ i sadržaj vraćaju isti ID bez drugog računa.
  • Izmijenjeni zahtjev: isti ključ s drugim XML-om vraća 409.
  • Opozvani ključ: novi zahtjev vraća 401.
  • Odvojene firme: korisnik druge firme ne vidi vaše račune.

U svom programu vodite zasebno status slanja, dostave i, kada bude podržano u produkciji, fiskalizacije i eIzvještavanja. Demo uspjeh potvrđuje samo opisani testni tijek.

08 / PRODUKCIJSKI PRISTUP

Produkciju pripremite zasebno.

Trenutačno stanje: slanje za vanjske integratore još nije otvoreno.

Produkcijski API omogućuje provjeru XML-a i čitanje postojećih produkcijskih dokumenata vlastite firme. POST /api/v1/invoices vraća 409 PRODUCTION_NOT_ACTIVE. Račun se tim pozivom ne sprema niti šalje.

  1. Otvorite Produkcijske integracije i registrirajte zaseban račun ili se prijavite postojećim produkcijskim računom.
  2. Potvrdite e-mail, provjerite OIB i podatke firme te dovršite prihvat ugovora u portalu.
  3. Dodajte program i izdajte zaseban produkcijski ključ kt_live_. Trenutačno dostupne ovlasti su validation:write, invoices:read i inbox:read.
  4. Kad portal ispuni preduvjete, kliknite Zatraži produkcijsku aktivaciju. Zahtjev odlazi KontAI timu.
  5. Potvrda adrese zaprimanja i ovlaštenja u FiskAplikaciji, provjera firme te otvaranje produkcijske razmjene dovršavaju se zasebno. Sam zahtjev KontAI timu ne šalje ovlaštenje Poreznoj i ne uključuje slanje.

Produkcijska osnovna adresa je https://eracuni.kontai.hr/api/v1. Vaš program mora imati jasno odvojenu konfiguraciju, ključeve i evidenciju za svaku okolinu. Ogledni klijent iz ovog vodiča namjerno radi samo na demo adresi.

09 / ČESTA PITANJA

Kratki odgovori prije povezivanja.

Moram li upisati i Software ID i API ključ?

U API zahtjevu koristite ključ. Software ID i firma već su povezani s njim; ne šaljete ih kao zasebne podatke za prijavu.

Imamo jednu blagajnu i 100 klijenata. Treba li 100 integracija?

Programsku podršku za KontAI razvijate jednom. Svaka firma zatim u svom računu dodaje integraciju i izdaje vlastiti ključ. Trenutačni portal ne koristi jedan zajednički ključ za sve firme. Na svom poslužitelju ključ odabirete prema firmi koja izdaje račun.

Smijem li slati na bilo koji OIB u demou?

Demo dopušta samo vaš OIB i KontAI testni OIB 99062919827. Provjera je na poslužitelju; promjena XML-a ili API parametara ne može uključiti drugog primatelja ili produkcijsku okolinu.

Je li testni račun fiskaliziran ili poslan na MPS?

Ovaj demo koristi internu dostavu. Ne poziva MPS, AMS, AS4/PTS ni Poreznu upravu. „Interno dostavljeno” ne predstavlja potvrdu fiskalizacije.

Zašto u ulaznim dokumentima nema računa poslanog KontAI-ju?

Ulazni pregled prikazuje testove poslane vlastitom OIB-u. Račun za KontAI testnog primatelja pratite među poslanim dokumentima.

Kako dobiti pomoć za konkretnu grešku?

Pošaljite podrska@kontai.hr opis koraka, okruženje, vrijeme, HTTP status i identifikator zahtjeva. Priložite samo testne podatke potrebne za provjeru; uklonite ključ i lozinku.