Pristupne podatke (SOFTWARE-API-TOKEN) za slanje e-dokumenata iz vašeg sustava zatražite putem maila rh/ukod//ofni.
Adrese testnog, odnosno produkcijskog API-a su: https://api-test.doku.hr i https://api.doku.hr.
Adrese testnog, odnosno produkcijskog PORTAL-a su: https://portal-test.doku.hr i https://portal.doku.hr.
Provjera dostupnosti API-a
Ping
|
| GET / |
| Primjer odgovora 200 OK |
{
"message": "Hello TEST @ 28.11.2025. 19:15:22"
}
|
1. Zahtjev (HTTP request)
Svi zahtjevi u zaglavlju moraju imati:
| Zaglavlje |
Vrijednost/Primjer |
Opis |
| Content-Type |
application/json |
- |
| Authorization |
API-TOKEN 6020b357-6a6d-491c-bcda-ef0d5ade6c55 |
API token korisnika u čije ime se obavljaju API operacije
|
| SOFTWARE-API-TOKEN |
191dc405-a779-4535-99df-94aa763369a3 |
Jedinstveni identifikator vašeg sustava |
*API token - Token kojeg korisnik postavlja u vaš sustav kako bi mogao slati e-dokumente, a dostupan mu je u portalu po registraciji i verifikaciji pretinca.
2. Odgovor (HTTP response)
Navedeni su primjeri uspješnog odgovra, te neki od općenitih neuspješnih odgovora.
U zaglavlju (HTTP response header) svakog odgovora nalazi se Doku-Request-Id, jedinstveni identifikator zahtjeva/poziva prema API-u. Generiran je od strane sustava pri svakom zapirmanju zahtjeva, odnosno slanju odgovora.
| HTTP STATUS CODE |
Opis |
| 200 OK |
Uspješan odgovor u JSON formatu. Polje "data" je opcionalno i ne mora biti prisutno u odgovoru. |
{
"message": "Opis rezultata akcije",
"data": {}
}
|
| 400 BAD REQUEST |
Klijentska greška pri slanju zahtjeva. Odgovor u JSON formatu. Polje "details" je opcionalno i ne mora biti prisutno u odgovoru. |
{
"code": "ERROR",
"message": "Opis greške.",
"details": []
}
{
"code": "MODEL_VALIDATION_FAILED",
"message": "Prisutne su validacijske greške (1)",
"data": [
{
"property": "name",
"message": "Property 'name' must not be null",
"attemptedValue": ""
}
]
}
{
"code": "XSD_VALIDATION_FAILED",
"message": "XSD validacija neuspješna (1)",
"data": [
{
"severity": "Error",
"message": "XML is invalid line 14, column 17 cvc-complex-type.2.4.a:
Invalid content was found starting with element '{"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":IssueTime}'...
}
]
}
{
"code": "XSL_VALIDATION_FAILED",
"message": "XSL validacija neuspješna (1)",
"data": [
{
"severity": "Warning",
"message": "[UBL-CR-681]-A UBL invoice should not include the PaymentMeans InstructionNote]"
}
]
}
|
| 401 UNAUTHORIZED |
Greška u autentikaciji. Opis u odgovoru. |
{
"code": "HTTP_401_001",
"message": "Invalid Authorization HTTP header."
}
|
| 404 NOT FOUND |
Traženi resurs nije pronađen. Provjeriti ID resursa. |
| 500 INTERNAL SERVER ERROR |
Iznimna i rijetka greška u obradi zahtjeva. Po pojavljivanju smo obavješteni o istoj i radimo na rješavanju problema. |
3. Računi
Operacije nad ulaznim i izlaznim računima
3.1. Izlazni računi
Definirane su sljedeće operacije: uvoz izlaznog računa, lista izlaznih računa, detalji pojedinačnog izlaznog računa, preuzimanje izlaznog računa, fiskalizacija izlaznog računa, evidencija naplate izlaznog računa.
3.1.1. Upload izlaznog računa
|
| POST /documents/invoices/upload |
| Parametar |
Pozicija |
Opis |
| xml |
body |
Base64 string XML dokumenta |
| Primjer zahtjeva |
{
"xml": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEludm9pY2UgeG1sbnM..."
}
|
| Primjer odgovora 200 OK |
{
"id": int,
"message": "string"
}
|
3.1.2. Lista izlaznih računa
|
| GET /documents/invoices/outgoing |
| Parametar |
Tip podatka |
Pozicija |
Opis |
| page |
int |
QUERY STRING |
broj stranice |
| importedFrom |
datetime |
QUERY STRING |
od datuma importa, uključivo taj datum i vrijeme (npr: 2025-10-09T02:08:10). ISO 8601 |
| importedTo |
datetime |
QUERY STRING |
do datuma importa, uključivo taj datum i vrijeme (npr: 2025-10-09T02:08:10). ISO 8601 |
| issueDateFrom |
date |
QUERY STRING |
od datuma izdavanja, uključivo taj datum. ISO 8601 |
| issueDateTo |
date |
QUERY STRING |
do datuma izdavanja, uključivo taj datum. ISO 8601 |
| dueDateFrom |
date |
QUERY STRING |
od datuma dospijeća, uključivo taj datum. ISO 8601 |
| dueDateTo |
date |
QUERY STRING |
do datuma dospijeća, uključivo taj datum. ISO 8601 |
| Primjer odgovora 200 OK |
{
"data": {
"page": 1,
"pageSize": 100,
"pagesTotal": 1,
"recordsFrom": 1,
"recordsTo": 1,
"recordsTotal": 1,
"records": [
{
"id": 1,
"status": "FISCALIZED",
"name": "1/1/1",
"receiver": {
"name": "Tvrtka d.o.o.",
"oib": "10472637205"
},
"issueDate": "2025-10-21",
"dueDate": "2025-11-04",
"payableAmount": 1238.5,
"currency": "EUR"
}
]
}
}
|
3.1.3. Detalji izlaznog računa
|
| GET /documents/invoices/outgoing/{id} |
| Parametar |
Tip podatka |
Pozicija |
Opis |
| id |
int |
PATH |
ID dokumenta |
| Primjer odgovora 200 OK |
{
"data": {
"id": 1,
"name": "1/1/1",
"status": "FISCALIZED",
"receiver": {
"name": "Tvrtka d.o.o.",
"oib": "10472637205"
},
"issueDate": "2025-10-21",
"dueDate": "2025-11-04",
"payableAmount": 1238.5,
"currency": "EUR",
"history": [
{
"status": "IMPORTED",
"timestamp": "2025-11-08T12:50:25.36"
},
{
"status": "FISCALIZED",
"timestamp": "2025-11-08T12:54:50.86"
},
{
"status": "SENT",
"timestamp": "2025-11-08T12:55:44.58"
},
{
"status": "DELIVERED",
"timestamp": "2025-11-08T12:55:44.58"
},
{
"status": "MARKED_PAID",
"timestamp": "2025-11-09T108:55:44.58"
}
]
}
}
|
3.1.4. Preuzimanje izlaznog računa
|
| GET /documents/invoices/outgoing/{id}/export |
| Parametar |
Tip podatka |
Pozicija |
Opis |
| id |
int |
PATH |
ID dokumenta |
| Primjer odgovora 200 OK |
{
"data": {
"xml": "BASE 64 UBL Invoice xml"
}
}
|
3.1.5. Fiskalizacija izlaznog računa
|
| POST /documents/invoices/outgoing/{id}/fiscalize |
| Parametar |
Tip podatka |
Pozicija |
Opis |
| id |
int |
PATH |
ID dokumenta |
| 200 OK |
{
"message": "Izlazni račun '1/1/1' je fiskaliziran."
}
|
| 400 BAD REQUEST |
{
"code": "OUT_INV_FISC_001",
"message": "Izlazni račun '1/1/1' je u nedozvoljenom statusu - 'FISCALIZED'. Fiskalizacija nije moguća."
}
{
"code": "OUT_INV_FISC_002",
"message": "Izlazni račun '1/1/1' nije fiskaliziran. Molimo pokušajte kasnije."
}
{
"code": "OUT_INV_FISC_003",
"message": "Ulazni račun '1/1/1' nije fiskaliziran. (greška od servisa za fiskalizaciju)"
}
|
3.1.6. Slanje izlaznog računa
|
| POST /documents/invoices/outgoing/{id}/send |
| Parametar |
Tip podatka |
Pozicija |
Opis |
| id |
int |
PATH |
ID dokumenta |
| 200 OK |
{
"message": "Izlazni račun '1/1/1' je predan na slanje."
}
|
| 400 BAD REQUEST |
{
"code": "SEND_ERROR",
"message": "Opis greške"
}
|
3.1.7. Evidencija naplate izlaznog računa
|
| POST /documents/invoices/outgoing/{id}/mark-paid |
| Parametar |
Tip podatka |
Pozicija |
Opis |
| id |
int |
PATH |
ID dokumenta |
| datumNaplate |
date |
BODY |
ISO 8601 date |
| naplaceniIznos |
decimal |
BODY |
|
| nacinPlacanja |
enum |
BODY |
Moguće vrijednosti: T (transakcijski račun), O (obračunsko plaćanje), Z (ostalo) |
| Primjer zahtjeva |
{
"datumNaplate": "2025-10-28",
"naplaceniIznos": 808.00,
"nacinPlacanja": "T"
}
|
| 200 OK |
{
"message": "Izlazni račun '1/1/1' je označen plaćen."
}
|
| 400 BAD REQUEST |
{
"code": "OUT_INV_MARK_PAID_001",
"message": "Izlazni račun '1/1/1' je u nedozvoljenom statusu - 'IMPORTED'. Označavanje naplate računa nije moguće."
}
{
"code": "OUT_INV_MARK_PAID_002",
"message": "Izlazni račun '1/1/1' nije označen plaćen. Molimo pokušajte kasnije."
}
{
"code": "OUT_INV_MARK_PAID_003",
"message": "Izlazni račun '1/1/1' nije označen plaćen. (greška od servisa za fiskalizaciju)"
}
|
3.2. Ulazni računi
Definirane su sljedeće operacije: lista ulaznih računa, detalji pojedinačnog ulaznog računa, preuzimanje ulaznog računa, fiskalizacija ulaznog računa, te odbijanje ulaznog računa.
3.2.1. Lista ulaznih računa
|
| GET /documents/invoices/incoming |
| Parametar |
Tip podatka |
Pozicija |
Opis |
| page |
int |
QUERY STRING |
broj stranice |
| importedFrom |
datetime |
QUERY STRING |
od datuma importa, uključivo taj datum i vrijeme (npr: 2025-10-09T02:08:10). ISO 8601 |
| importedTo |
datetime |
QUERY STRING |
do datuma importa, uključivo taj datum i vrijeme (npr: 2025-10-09T02:08:10). ISO 8601 |
| issueDateFrom |
date |
QUERY STRING |
od datuma izdavanja, uključivo taj datum. ISO 8601 |
| issueDateTo |
date |
QUERY STRING |
do datuma izdavanja, uključivo taj datum. ISO 8601 |
| dueDateFrom |
date |
QUERY STRING |
od datuma dospijeća, uključivo taj datum. ISO 8601 |
| dueDateTo |
date |
QUERY STRING |
do datuma dospijeća, uključivo taj datum. ISO 8601 |
| Primjer odgovora 200 OK |
{
"data": {
"page": 1,
"pageSize": 100,
"pagesTotal": 1,
"recordsFrom": 1,
"recordsTo": 1,
"recordsTotal": 1,
"records": [
{
"id": 1,
"status": "FISCALIZED",
"name": "1/1/1",
"sender": {
"name": "Tvrtka d.o.o.",
"oib": "10472637205"
},
"issueDate": "2025-10-21",
"dueDate": "2025-11-04",
"payableAmount": 1238.5,
"currency": "EUR"
}
]
}
}
|
3.2.2. Detalji ulaznog računa
|
| GET /documents/invoices/incoming/{id} |
| Parametar |
Tip podatka |
Pozicija |
Opis |
| id |
int |
PATH |
ID dokumenta |
| Primjer odgovora 200 OK |
{
"data": {
"id": 1,
"name": "1/1/1",
"status": "FISCALIZED",
"sender": {
"name": "Tvrtka d.o.o.",
"oib": "10472637205"
},
"issueDate": "2025-10-21",
"dueDate": "2025-11-04",
"payableAmount": 1238.5,
"currency": "EUR",
"history": [
{
"status": "IMPORTED",
"timestamp": "2025-11-24T09:18:25.36"
},
{
"status": "RECEIVED",
"timestamp": "2025-11-24T09:18:50.85"
},
{
"status": "FISCALIZED",
"timestamp": "2025-11-24T09:18:44.12"
},
{
"status": "REJECTED",
"timestamp": "2025-11-24T09:19:11.78"
}
]
}
}
|
3.3.3. Preuzimanje ulaznog računa
|
| GET /documents/invoices/incoming/{id}/export |
| Parametar |
Tip podatka |
Pozicija |
Opis |
| id |
int |
PATH |
ID dokumenta |
| Primjer odgovora 200 OK |
{
"data": {
"xml": "BASE 64 UBL Invoice xml"
}
}
|
3.2.4. Fiskalizacija ulaznog računa
|
| POST /documents/invoices/incoming/{id}/fiscalize |
| Parametar |
Tip podatka |
Pozicija |
Opis |
| id |
int |
PATH |
ID dokumenta |
| 200 OK |
{
"message": "Ulazni račun '1/1/1' je fiskaliziran."
}
|
| 400 BAD REQUEST |
{
"code": "IN_INV_FISC_001",
"message": "Ulazni račun '1/1/1' je u nedozvoljenom statusu - 'FISCALIZED'. Fiskalizacija nije moguća."
}
{
"code": "IN_INV_FISC_002",
"message": "Ulazni račun '1/1/1' nije fiskaliziran. Molimo pokušajte kasnije."
}
{
"code": "IN_INV_FISC_003",
"message": "Ulazni račun '1/1/1' nije fiskaliziran. (greška od servisa za fiskalizaciju)"
}
|
3.2.5. Odbijanje ulaznog računa
|
| POST /documents/invoices/incoming/{id}/reject |
| Parametar |
Tip podatka |
Pozicija |
Opis |
| id |
int |
PATH |
ID dokumenta |
| datumOdbijanja |
date |
BODY |
ISO 8601 date |
| vrstaRazlogaOdbijanja |
enum |
BODY |
Moguće vrijednosti: N (neusklađenost podataka koji ne utječu na obračun poreza), U (neusklađenost podataka koji utječu na obračun poreza), O (ostalo) |
| razlogOdbijanja |
string |
BODY |
Razlog zbog kojeg se eRačun odbija. (1 - 1000 znakova) |
| Primjer zahtjeva |
{
"datumOdbijanja": "2025-10-28",
"vrstaRazlogaOdbijanja": "N",
"razlogOdbijanja": "Krivi primatelj eRačuna"
}
|
| 200 OK |
{
"message": "Ulazni račun '1/1/1' je označen odbijen."
}
|
| 400 BAD REQUEST |
{
"code": "IN_INV_REJECT_001",
"message": "Ulazni račun '1/1/1' je u nedozvoljenom statusu - 'REJECTED'. Odbijanje nije moguće."
}
{
"code": "IN_INV_REJECT_002",
"message": "Ulazni račun '1/1/1' nije odbijen. Molimo pokušajte kasnije."
}
{
"code": "IN_INV_REJECT_003",
"message": "Ulazni račun '1/1/1' nije odbijen. (greška od servisa za fiskalizaciju)"
}
|
4. Izvještavanje
Koristi se samo jedna metoda za evidenciju isporuke za koju nije moguće izdati eRačun
4.1. Evidencija isporuke za koju nije moguće izdati eRačun
|
| POST /report/non-einvoice-delivery |
| Parametar |
Pozicija |
Opis |
| xml |
BODY |
Base64 string XML dokumenta |
| Primjer zahtjeva |
{
"xml": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEludm9pY2UgeG1sbnM..."
}
|
| Primjer odgovora 200 OK |
{
"message": "Evidencija isporuke/računa '1/1/1' za koju nije izdan eRačun je uspješna."
}
|
5. KPD
Pretraga KPD-a po kodu ili nazivu.
5.1. Pretraga
|
| POST /kpd/search |
| Parametar |
Pozicija |
Opis |
| type |
BODY |
"CODE" ili "NAME" |
| Primjer zahtjeva |
{
"type": "NAME",
"value": "papir"
}
|
| Primjer odgovora 200 OK |
{
"data": [
{
"code": "13.10.72",
"name": "Pređa od jute ili ostalih tekstilnih likovih vlakana; pređa od ostalih biljnih tekstilnih vlakana; papirna pređa"
},
{
"code": "13.20.15",
"name": "Tkanine od ostalih biljnih tekstilnih vlakana; tkanine od papirne pređe"
}
]
}
|
6. Korisnički pretinac/račun
Upravljanje podatcima korisničkog pretinca
6.1. Registracija novog korisničkog računa/pretinca
|
| POST /accounts |
| Primjer zahtjeva |
{
"company": {
"name": "Tvrtka d.o.o.",
"oib": "01234567890",
"mb": null,
"street": "Ulica 5",
"postCode": "21403",
"city": "Sutivan",
"country": "HRV",
"email": "mailtvrtke@example.com",
"phoneNumber": "+385777000"
},
"user": {
"firstName": "Ime",
"lastName": "Prezime",
"email": "mailkorisnika@example.com"
}
}
|
| Primjer odgovora 200 OK |
{
"message": "Registracija pretinca '01234567890' je uspješna"
"data":
{
"activationNotificationEmail": "mailtvrtke@example.com",
"password": "11223344",
"apiToken": "23199e53-acb0-4ea4-a39a-00c765101f22"
}
}
|