Fakturko API

REST API za kreiranje i dohvat računa, ponuda te pomoćnih šifarnika (poslovne jedinice, naplatni uređaji, IBAN-i).

Verzija 2.0 · Revoloop d.o.o. · Zadnje ažuriranje: 31.07.2026.

Brzi kontakt Pitanja: fakturko.hr · podrska@fakturko.hr · chat unutar Fakturko aplikacije.

Kako početi

1
Račun i pristup

Kreirajte korisnika na fakturko.hr i zatražite API username/password od podrške.

2
Token

Pozovite get_auth_token i koristite token u svim daljnjim pozivima.

3
Šifarnici

Dohvatite poslovne jedinice, naplatne uređaje i po potrebi IBAN-e.

4
Dokument

Kreirajte račun putem insert_invoice ili ponudu putem insert_quote.


Endpointi

Test i produkcija koriste različite URL-ove i različite API korisničke podatke.

Test https://testapi.fakturko.hr
Produkcija https://api.fakturko.hr

Sigurnost

Svaki poziv (osim autentifikacije) mora sadržavati aktivni auth_token. Novi token deaktivira prethodne tokene istog korisnika.

Rate limit

API ograničava broj zahtjeva po IP adresi kako bi spriječio zloupotrebu:

Endpoint Limit
get_auth_token max 5 zahtjeva / 10 sekundi
Ostali endpointi (insert_invoice, insert_quote, get_invoices, …) max 20 zahtjeva / 10 sekundi (po endpointu)

Pri prekoračenju API vraća HTTP 429 i poruku: Previše zahtjeva. Pokušajte ponovno za nekoliko sekundi.


Važna napomena

Iznosi se ne preračunavaju na API-ju
  • Vi ste odgovorni za točnost stavki, PDV-a i ukupnih iznosa koje šaljete.
  • Kod fiskalnih računa iznose ne validira ni Porezna uprava na način koji bi ispravio pogreške u payloadu.

Autentifikacija

get_auth_token()

Dohvaća autentifikacijski token za korisnika na temelju poslanih podataka za autentifikaciju.

POST /api/get_auth_token
Rate limit Max 5 zahtjeva u 10 sekundi po IP adresi. Prekoračenje → HTTP 429.

Uvjeti

  • Potrebno je registrirati korisnički račun na fakturko.hr
  • Potrebno je kontaktirati korisničku podršku te dobiti podatke za korisničko ime i lozinku
  • Podaci za autentifikaciju trebaju biti poslani kao JSON objekt.

Parametri zahtjeva

Parametar Tip Obavezan Opis
auth Objekt Da Podaci za autentifikaciju korisnika.
username String Da Korisničko ime korisnika.
password String Da Lozinka korisnika.

Primjer zahtjeva

{
    "auth": {
        "username": "xxxxx",
        "password": "xxxxxxxxxxxxxxx"
    }
}

Mogući odgovori

Status Povratne vrijednosti Opis
true
{
    "status": true,
    "token": "2f6e11e78b8f09c1"
}
Uspješno generiran autentifikacijski token.
false
{
    "status": 0,
    "message": "Pogre\u0161ka prilikom generiranja tokena"
}
Pogreška
Moguće poruke:

Nedostaju obavezni parametri: auth

Svi parametri nisu poslani!

Neautorizirani ili neaktivni korisnik

Pogreška prilikom generiranja tokena

Previše zahtjeva. Pokušajte ponovno za nekoliko sekundi. (HTTP 429)


Poslovni prostori / naplatni uređaji

ID-eve iz ovih metoda šaljete u insert_invoice kao posl_jedinice_id i napl_uredaj_id.

get_poslovne_jedinice()

Ova API funkcija omogućuje dohvat poslovnih prostora iz baze podataka.

POST /api/get_poslovne_jedinice

Uvjeti

  • Podaci za autentifikaciju trebaju biti poslani kao JSON objekt.

Parametri zahtjeva

Parametar Traženo Opis
invoice_type Da fiskalisation → vraća jedinice s is_for_fiskalisation=1. Bilo koja druga vrijednost (npr. plain) → jedinice s is_for_transaction=1.
auth_token Da Autentifikacijski token

Primjer zahtjeva

{
    "auth_token": {
        "token": "xxxxxxxxxxxx"
    },
    "invoice_type": "fiskalisation"
}

Mogući odgovori

Status Povratne vrijednosti Opis
true
{
    "status": 1,
    "poslovne_jedinice": {
        "id": "73",
        "company_id": "1",
        "fiskalisation_oznaka_poslovne_jedinice": "POSL1",
        "is_for_fiskalisation": "1",
        "is_for_transaction": "0"
    }
}
Uspješno dohvaćene poslovne jedinice, prema željenom tipu (fiskalne fakture ili plain/transakcijske)
false
{
    "status": 0,
    "message": "Pravni subjekt nema unesene poslovne jedinice"
}
Pogreška
Moguće poruke:

Nedostaju obavezni parametri: invoice_type, auth_token

Pravni subjekt nema unesene poslovne jedinice

Pravni subjekt nije u kompleksnom načinu generiranja brojeva računa

Nepostojeći company id

Nepostojeći token

get_naplatni_uredaj()

Ova API funkcija omogućuje dohvat naplatnih uređaja iz baze podataka.

POST /api/get_naplatni_uredaj

Uvjeti

  • Podaci za autentifikaciju trebaju biti poslani kao JSON objekt.

Parametri zahtjeva

Parametar Traženo Opis
poslovna_jedinica_id Da ID poslovne jedinice iz get_poslovne_jedinice() metode
auth_token Da Autentifikacijski token

Primjer zahtjeva

{
    "auth_token": {
        "token": "xxxxxxxxxxxx"
    },
    "poslovna_jedinica_id": 73
}

Mogući odgovori

Status Povratne vrijednosti Opis
true
{
    "status": 1,
    "naplatni_uredaji": {
        "id": "81",
        "company_id": "1",
        "poslovna_jedinica_id": "73",
        "fiskalisation_oznaka_naplatnog_uredaja": "01",
        "is_for_fiskalisation": "1",
        "is_for_transaction": "0"
    }
}
Uspješno dohvaćeni naplatni uređaji, prema željenom tipu (fiskalne fakture ili plain/transakcijske) i prema poslanom ID-u poslovne jedinice
false
{
    "status": 0,
    "message": "Pravni subjekt nije u kompleksnom na\u010dinu generiranja brojeva ra\u010duna"
}
Pogreška
Moguće poruke:

Nedostaju obavezni parametri: invoice_type, auth_token

Pravni subjekt nema unesene naplatne uređaje!

Pravni subjekt nije u kompleksnom načinu generiranja brojeva računa

Nepostojeći company id

Nepostojeći token


IBAN-i / računi

get_ibans()

Ova API funkcija omogućuje dohvat aktivnih računa / IBAN-a pravnog subjekta. Koristite ju prije insert_invoice() ili insert_quote() kada želite odabrati točan account_id za barkod/QR i prikaz podataka za plaćanje na dokumentu.

POST /api/get_ibans

Uvjeti

  • Podaci za autentifikaciju trebaju biti poslani kao JSON objekt.

Parametri zahtjeva

Parametar Tip Obavezan Opis
auth_token Objekt Da Autorizacijski token.
token String Da Token dobiven iz metode get_auth_token().

Primjer zahtjeva

{
    "auth_token": {
        "token": "xxxxxxxxxxxx"
    }
}

Mogući odgovori

Status Povratne vrijednosti Opis
true
{
    "status": 1,
    "message": "IBAN-i dohva\u0107eni",
    "ibans": [
        {
            "account_id": 1,
            "iban": "HR1210010051863000160",
            "swift": "PBZGHR2X",
            "currency_id": 6,
            "bankname": "Privredna banka Zagreb",
            "currency_symbol": "EUR",
            "currency": "Euro"
        },
        {
            "account_id": 2,
            "iban": "HR1723400091110000005",
            "swift": "PBZGHR2X",
            "currency_id": 6,
            "bankname": "Privredna banka Zagreb",
            "currency_symbol": "EUR",
            "currency": "Euro"
        }
    ]
}
Vraća popis aktivnih računa / IBAN-a koje je moguće koristiti za account_id kod generiranja barkoda/QR-a.
false
{
    "status": 0,
    "message": "Pravni subjekt nema aktivne ra\u010dune \/ IBAN-e"
}
Pogreška
Moguće poruke:

Nedostaju obavezni parametri: auth_token

Pravni subjekt nema aktivne račune / IBAN-e

Nepostojeći company id

Nepostojeći token


Fakture

Kreiranje, dohvat i storno računa.

insert_invoice()

Unos novog računa (transakcijskog ili fiskalnog, ovisno o client_type).

POST /api/insert_invoice
Prije poziva
Ključna pravila
  • Za kompleksnu numeraciju obavezni su posl_jedinice_id i napl_uredaj_id.
  • Fiskalizacija: client_type=privatna. Transakcijski / eRačun: client_type=pravna (+ firma u PDV-u, client.is_ino=0).
  • is_paid=1 samo postavlja is_override_paid — ne puni automatski date_paid ni paid_*.
  • Nakon fiskalizacije, za payment_type K/G račun se automatski označi kao plaćen. Za T ne.
  • Polje date API uvijek postavlja na trenutni datum/vrijeme.

Parametri zahtjeva

Jedna referenca vrijedi za sve tipove računa. Root objekti: auth_token, client, invoice, invoice_services.

Parametar Tip Obavezan Opis
auth_token Objekt Da Autorizacijski token.
token String Da Token dobiven iz get_auth_token() metode.
client Objekt Da Podaci o klijentu kojem se izdaje faktura.
is_ino Bool 0 | 1 Ne Oznaka inozemnog klijenta (sprema se na klijenta). Za pravnu osobu u PDV-u, is_ino=1 sprječava slanje eRačuna. Nije isto što invoice.is_ino.
client_oib String Uvjetno OIB klijenta. Obavezan za client_type=pravna.
client_name String Da Ime klijenta ili naziv tvrtke/obrta.
client_surname String Ne Prezime klijenta.
client_type String Da privatna | pravna. Za privatna API pokreće fiskalizaciju; za pravna transakcijski niz (i eRačun ako je firma u PDV-u te client.is_ino=0).
client_country String Da Država klijenta
client_city String Ne Grad klijenta
client_address String Ne Adresa klijenta
client_zip String Ne Poštanski broj klijenta
client_phone String Ne Telefonski broj klijenta
client_email String Ne E-mail klijenta
invoice Objekt Da Osnovni podaci o računu.
invoice_type String Ne U slučaju avansnog računa, poslati "advance"
payment_type String K | G | T Da Tip plaćanja: K kartica, G gotovina, T transakcija. Nakon uspješne fiskalizacije, za K/G API automatski označi račun kao plaćen i popuni date_paid te paid_*.
is_paid Bool 0 | 1 Ne Default 0. Ako je 1, postavlja is_override_paid=1 (račun se tretira kao plaćen). Ne postavlja automatski date_paid ni paid_*. Kod fiskalizacije s K/G plaćeno se postavlja automatski i bez ovog parametra.
total_without_vat Decimal Da Ukupan iznos fakture bez poreza.
total_with_vat Decimal Da Ukupan iznos fakture sa porezom.
total_rabat_amount Decimal Ne Ukupan iznos rabata, ako postoji.
is_rabat Bool 0 | 1 Da Ako je na fakturi iskazan rabat.
paid_without_vat Decimal Ne Uplaćeni iznos bez PDV-a (default 0). Kod fiskalizacije s K/G overwritea se na total_without_vat.
paid_with_vat Decimal Ne Uplaćeni iznos s PDV-om (default 0). Kod fiskalizacije s K/G overwritea se na total_with_vat.
date_paid Date (YYYY-mm-dd) Ne Datum uplate. Sprema se ako je poslan. Kod fiskalizacije s K/G postavlja se automatski.
is_hourly_billable Bool 1 Da API trenutno podržava samo količinske stavke; obavezno postaviti u 1.
date Date (YYYY-mm-dd H:i:s) Ne API postavlja automatski (trenutni datum/vrijeme) i trenutno ignorira vrijednost iz zahtjeva (koristi se samo za validaciju u odnosu na due_date).
due_date Date (YYYY-mm-dd) Da Dospijeće plaćanja fakture
delivery_date Date (YYYY-mm-dd) Ne Datum isporuke / realizacije. Mapira se u polje date_realisation.
note String Ne U slučaju tekstualne napomene na računu. Npr. plaćeno po ponudi #5.
is_ino Bool 0 | 1 Ne Oznaka inozemnog / reverse charge računa (na dokumentu). Default 0. Nije isto što client.is_ino.
lang String english | german Ne Dodatni jezik na fakturi
is_fixed_rabat Bool 0 | 1 Ne Fiksni popust na razini računa.
fixed_rabat Decimal Ne Iznos fiksnog popusta (obavezno ako je is_fixed_rabat=1).
ext_ref String Ne Vanjska referenca (npr. Order ID / ERP ID).
is_barcode Bool 0 | 1 Ne Generiranje 2D barkoda/QR u PDF-u. Radi backward kompatibilnosti prihvaćen je i alias is_barcoede.
account_id Integer Ne ID računa / IBAN-a iz get_ibans(). Ako je poslan, veže se na dokument. Uz is_barcode=1 koristi se i za barkod/QR. Alias: qr_account.
placanje_model String Ne Model plaćanja za barkod/QR (npr. 00). Ako nije poslan, koristi se 00. Podržan je i alias qr_model.
placanje_poziv String Ne Poziv na broj za barkod/QR. Ako nije poslan, koristi se broj dokumenta. Podržan je i alias qr_poziv.
posl_jedinice_id Int Da* ID poslovne jedinice iz get_poslovne_jedinice(). Obavezan za kompleksnu numeraciju.
napl_uredaj_id Int Da* ID naplatnog uređaja iz get_naplatni_uredaj(). Obavezan za kompleksnu numeraciju.
invoice_services Objekt Da Podaci o stavkama računa.
name String Da Naziv stavke (usluge/proizvoda)
description String Ne Opis stavke (usluge/proizvoda)
is_per_hour Bool 1 Ne API ga postavlja automatski na 1 (količinske stavke).
quantity_text String Ne Mjerna jedinica (default: kom).
quantity_code String Ne UN/ECE kod mjerne jedinice (default: H87).
kpd_code String Da KPD kod. Ključ je obavezan (smije biti prazan string); preporučeno za eRačun.
hours Decimal Da Količina
price_without_vat_per_hour Decimal Da Iznos stavke, bez poreza, po jediničnoj količini
price_without_vat Decimal Da Ukupan iznos stavke bez PDV-a (hours × price_without_vat_per_hour, umanjeno za rabat ako postoji).
vat_percentage Decimal Da Stopa PDV-a za stavku (0–100).
price_with_vat Decimal Da Ukupan iznos stavke s PDV-om.
rabat Decimal Ne U slučaju da stavka ima definiran rabat. Šalje se postotak rabata.

Primjeri zahtjeva

Osnovni payload s quantity_text/quantity_code, barkodom i poslovnom jedinicom.

{
    "auth_token": {
        "token": "xxxxxxxxxxxx"
    },
    "client": {
        "client_oib": "85883135279",
        "client_name": "Revoloop d.o.o.",
        "client_type": "pravna",
        "client_country": "Hrvatska",
        "client_city": "Zagreb",
        "client_address": "Ostrogovi\u0107eva 3",
        "client_zip": "10000",
        "client_phone": "+385997315718",
        "client_email": "podrska@fakturko.hr"
    },
    "invoice": {
        "lang": "english",
        "invoice_type": "",
        "payment_type": "T",
        "is_paid": 1,
        "is_ino": 0,
        "total_without_vat": 45,
        "total_with_vat": 56.25,
        "total_rabat_amount": 0,
        "paid_without_vat": 45,
        "paid_with_vat": 56.25,
        "is_hourly_billable": 1,
        "is_rabat": 0,
        "is_fixed_rabat": 0,
        "fixed_rabat": 0,
        "ext_ref": "",
        "date": "2026-01-04 10:00:00",
        "date_paid": "2026-01-05",
        "due_date": "2026-01-18",
        "note": "Napomena na ra\u010dunu",
        "is_barcode": 1,
        "account_id": 1,
        "placanje_model": "00",
        "placanje_poziv": "2026-000124",
        "posl_jedinice_id": 1,
        "napl_uredaj_id": 1
    },
    "invoice_services": [
        {
            "name": "testna usluga",
            "description": "opis testne usluge",
            "rabat": 0,
            "kpd_code": "01.11.11",
            "hours": 5,
            "quantity_text": "kom",
            "quantity_code": "H87",
            "price_without_vat": 50,
            "price_without_vat_per_hour": 10,
            "vat_percentage": 25,
            "price_with_vat": 56.25
        }
    ]
}

Postavite is_rabat=1 i pošaljite postotak rabata po stavci. price_without_vat je cijena nakon popusta.

{
    "auth_token": {
        "token": "xxxxxxxxxxxx"
    },
    "client": {
        "client_oib": "85883135279",
        "client_name": "Revoloop d.o.o.",
        "client_type": "pravna",
        "client_country": "Hrvatska",
        "client_city": "Zagreb",
        "client_address": "Ostrogovi\u0107eva 3",
        "client_zip": "10000",
        "client_phone": "+385997315718",
        "client_email": "podrska@fakturko.hr"
    },
    "invoice": {
        "lang": "english",
        "total_without_vat": 269.08,
        "total_with_vat": 299.25,
        "total_rabat_amount": -15.75,
        "paid_without_vat": 269.08,
        "paid_with_vat": 299.25,
        "is_ino": 0,
        "is_hourly_billable": 1,
        "is_rabat": 1,
        "is_fixed_rabat": 0,
        "fixed_rabat": 0,
        "ext_ref": "",
        "date": "2026-01-04 10:00:00",
        "due_date": "2026-01-18",
        "is_barcode": 0,
        "payment_type": "T",
        "note": "Order ID: #18155",
        "invoice_type": "advance",
        "is_paid": 1
    },
    "invoice_services": [
        {
            "name": "Naziv usluge 1",
            "description": "Opis usluge 1",
            "rabat": 5,
            "kpd_code": "01.11.11",
            "hours": 1,
            "price_without_vat": 185.48,
            "price_without_vat_netto": 195.24,
            "price_without_vat_per_hour": 195.24,
            "vat_percentage": 5,
            "price_with_vat": 194.75
        },
        {
            "name": "Naziv usluge 2",
            "description": "Opis usluge 2",
            "rabat": 5,
            "kpd_code": "01.11.11",
            "hours": 1,
            "price_without_vat": 83.6,
            "price_without_vat_netto": 88,
            "price_without_vat_per_hour": 88,
            "vat_percentage": 25,
            "price_with_vat": 104.5
        }
    ]
}

client_type=pravna + posl_jedinice_id/napl_uredaj_id za transakcijski niz. Može pokrenuti eRačun.

{
    "auth_token": {
        "token": "xxxxxxxxxxxx"
    },
    "client": {
        "client_oib": "85883135279",
        "client_name": "Revoloop d.o.o.",
        "client_type": "pravna",
        "client_country": "Hrvatska",
        "client_city": "Zagreb",
        "client_address": "Ostrogovi\u0107eva 3",
        "client_zip": "10000",
        "client_phone": "+385997315718",
        "client_email": "podrska@fakturko.hr"
    },
    "invoice": {
        "lang": "english",
        "invoice_type": "",
        "payment_type": "T",
        "is_paid": 1,
        "is_ino": 0,
        "is_hourly_billable": 1,
        "is_rabat": 0,
        "is_fixed_rabat": 0,
        "fixed_rabat": 0,
        "ext_ref": "",
        "total_without_vat": 20,
        "total_with_vat": 25,
        "total_rabat_amount": 0,
        "paid_without_vat": 20,
        "paid_with_vat": 25,
        "date": "2026-01-04 10:00:00",
        "date_paid": "2026-01-05",
        "due_date": "2026-01-18",
        "note": "Napomena na ra\u010dunu",
        "is_barcode": 1,
        "account_id": 1,
        "placanje_model": "00",
        "placanje_poziv": "2026-000123",
        "posl_jedinice_id": 1,
        "napl_uredaj_id": 1
    },
    "invoice_services": [
        {
            "name": "testna usluga",
            "description": "opis testne usluge",
            "rabat": 0,
            "kpd_code": "01.11.11",
            "hours": 1,
            "price_without_vat_per_hour": 10,
            "price_without_vat": 10,
            "vat_percentage": 25,
            "price_with_vat": 12.5
        },
        {
            "name": "testna usluga",
            "description": "opis testne usluge",
            "rabat": 0,
            "kpd_code": "01.11.11",
            "hours": 1,
            "price_without_vat_per_hour": 10,
            "price_without_vat": 10,
            "vat_percentage": 25,
            "price_with_vat": 12.5
        }
    ]
}

client_type=privatna pokreće fiskalizaciju. Za payment_type K/G račun se nakon uspjeha automatski označi kao plaćen.

{
    "auth_token": {
        "token": "xxxxxxxxxxxx"
    },
    "client": {
        "client_oib": "",
        "client_name": "Revoloop d.o.o.",
        "client_type": "privatna",
        "client_country": "Hrvatska",
        "client_city": "Zagreb",
        "client_address": "Ostrogovi\u0107eva 3",
        "client_zip": "10000",
        "client_phone": "+385997315718",
        "client_email": "podrska@fakturko.hr"
    },
    "invoice": {
        "lang": "english",
        "total_without_vat": 269.08,
        "total_with_vat": 299.25,
        "total_rabat_amount": -15.75,
        "paid_without_vat": 0,
        "paid_with_vat": 0,
        "is_ino": 0,
        "is_hourly_billable": 1,
        "is_rabat": 1,
        "is_fixed_rabat": 0,
        "fixed_rabat": 0,
        "ext_ref": "",
        "date": "2026-01-04 10:00:00",
        "due_date": "2026-01-18",
        "is_barcode": 0,
        "payment_type": "K",
        "note": "Order ID: #18155",
        "invoice_type": "advance",
        "posl_jedinice_id": "2",
        "napl_uredaj_id": "2",
        "is_paid": 0
    },
    "invoice_services": [
        {
            "name": "Naziv usluge 1",
            "description": "Opis usluge 1",
            "rabat": 5,
            "kpd_code": "01.11.11",
            "hours": 1,
            "price_without_vat": 185.48,
            "price_without_vat_netto": 195.24,
            "price_without_vat_per_hour": 195.24,
            "vat_percentage": 5,
            "price_with_vat": 194.75
        },
        {
            "name": "Naziv usluge 2",
            "description": "Opis usluge 2",
            "rabat": 5,
            "kpd_code": "01.11.11",
            "hours": 1,
            "price_without_vat": 83.6,
            "price_without_vat_netto": 88,
            "price_without_vat_per_hour": 88,
            "vat_percentage": 25,
            "price_with_vat": 104.5
        }
    ]
}

Primjer odgovora

{
    "status": 1,
    "message": "Racun je uspjesno dodan",
    "pdf_link": "link to pdf file",
    "thermal_data_link": "link to thermal print data",
    "invoice_id": 72484
}

Primjer greške

{
    "status": 0,
    "message": "Nedostaju obavezni parametri: client, invoice, invoice_services"
}

get_invoices()

Dohvaća listu faktura ili detalj jedne fakture (po ID-u).

POST /api/get_invoices

Uvjeti

  • Podaci za autentifikaciju trebaju biti poslani kao JSON objekt.
  • Potrebno je poslati auth_token dobiven iz metode get_auth_token().
  • Ako je poslan invoice_id, vraća se detalj jedne fakture (puni invoice_data + stavke). Inače se vraća lista prema filterima.
Parametar Traženo Opis
auth_token Da Autentifikacijski token
invoice_id Ne ID fakture. Ako je poslan, endpoint vraća detalj jedne fakture.
ext_ref Ne Vanjska referenca (filtriranje liste po točnoj vrijednosti).
date_from Ne Datum od (format: YYYY-MM-DD ili YYYY-MM-DD HH:MM:SS).
date_to Ne Datum do (format: YYYY-MM-DD ili YYYY-MM-DD HH:MM:SS).
limit Ne Broj zapisa (default 50, max 200).
offset Ne Pomak (default 0).
only_api Ne U slučaju 1, vraća samo fakture kreirane preko API-ja.
include_drafts Ne U slučaju 1, uključuje i draft fakture.

Primjer zahtjeva (lista)

{
    "auth_token": {
        "token": "xxxxxxxxxxxx"
    },
    "limit": 50,
    "offset": 0,
    "date_from": "2026-01-01",
    "date_to": "2026-01-31",
    "only_api": 1,
    "include_drafts": 0
}

Primjer zahtjeva (detalj)

{
    "auth_token": {
        "token": "xxxxxxxxxxxx"
    },
    "invoice_id": 123
}

Primjer odgovora (lista)

{
    "status": 1,
    "message": "Fakture dohva\u0107ene",
    "limit": 50,
    "offset": 0,
    "invoices": [
        {
            "invoice_id": 123,
            "hash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            "number": "1\/2026",
            "date": "2026-01-04 10:00:00",
            "due_date": "2026-01-18",
            "date_paid": null,
            "invoice_type": 1,
            "is_draft": 0,
            "is_api_invoice": 1,
            "is_fiskalized": 0,
            "is_e_racun": 0,
            "jir": null,
            "zki": null,
            "ext_ref": null,
            "total_without_vat": 20,
            "total_with_vat": 25,
            "currency_id": 6,
            "client_id": 10,
            "client_name": "Revoloop d.o.o.",
            "client_oib": "85883135279",
            "pdf_link": "link to pdf file",
            "thermal_data_link": "link to thermal print data"
        }
    ]
}

Primjer odgovora (detalj)

{
    "status": 1,
    "message": "Faktura dohva\u0107ena",
    "pdf_link": "link to pdf file",
    "thermal_data_link": "link to thermal print data",
    "invoice": {
        "invoice_data": {
            "id": 123,
            "hash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            "number": "1\/2026",
            "date": "2026-01-04 10:00:00",
            "due_date": "2026-01-18",
            "date_paid": null,
            "is_override_paid": null,
            "payment_type": 3,
            "total_without_vat": 20,
            "total_with_vat": 25,
            "paid_without_vat": 0,
            "paid_with_vat": 0,
            "ext_ref": null,
            "is_fiskalized": 0,
            "is_e_racun": 0
        },
        "invoice_services": []
    }
}

Primjer pogreške

{
    "status": 0,
    "message": "Nedostaju obavezni parametri: auth_token"
}


storno_invoice()

Storniranje postojećeg računa (po potrebi i fiskalizacija storna).

POST /api/storno_invoice

Uvjeti

  • Podaci za autentifikaciju trebaju biti poslani kao JSON objekt.
  • potrebno je API-ju poslati ID računa koji se želi stornirati
  • potrebno je već imati kreiran račun koji se stornira
  • poslani posl_jedinice_id i napl_uredaj_id moraju odgovarati originalnom računu (API to provjerava)
  • u slučaju fiskaliziranog originalnog računa, u invoice objektu se šalju i total_without_vat/total_with_vat (negativne vrijednosti)
Parametar Traženo Opis
auth_token Da Autentifikacijski token
invoice Da Objekt s podacima o stornu
invoice_id Da ID originalnog računa koji se stornira
posl_jedinice_id Da Mora odgovarati originalnom računu
napl_uredaj_id Da Mora odgovarati originalnom računu
total_without_vat Uvjetno Negativni iznos (koristi se pri fiskalizaciji storna)
total_with_vat Uvjetno Negativni iznos (koristi se pri fiskalizaciji storna)

Primjer zahtjeva

{
    "auth_token": {
        "token": "xxxxxxxxxxxx"
    },
    "invoice": {
        "invoice_id": 72566,
        "napl_uredaj_id": 1,
        "posl_jedinice_id": 1,
        "total_without_vat": -20,
        "total_with_vat": -25
    }
}

Primjer odgovora

{
    "status": 1,
    "message": "Racun je uspjesno dodan",
    "pdf_link": "link to pdf file",
    "thermal_data_link": "link to thermal print data",
    "invoice_id": 72484
}


Ponude

insert_quote()

Ova API funkcija omogućuje unos ponude u bazu podataka.

POST /api/insert_quote

Uvjeti

  • Podaci za autentifikaciju trebaju biti poslani kao JSON objekt.
Parametar Traženo Opis
auth_token Da Autentifikacijski token
client Da Podaci o klijentu
quote Da Podaci o ponudi
quote_services Da Popis usluga na ponudi

Parametri zahtjeva

Parametar Tip Obavezan Opis
auth_token Objekt Da Autorizacijski token.
token String Da Token dobiven iz get_auth_token() metode.
client Objekt Da Podaci o klijentu kojem se izdaje ponuda.
is_ino Bool 0 | 1 Ne Trenutno se u insert_quote ne koristi (za razliku od insert_invoice).
client_oib String Ne OIB klijenta (u slučaju pravne osobe).
client_name String Da Ime klijenta ili naziv tvrtke/obrta.
client_surname String Ne Prezime klijenta.
client_type String Da privatna | pravna
client_country String Da Država klijenta
client_city String Ne Grad klijenta
client_address String Ne Adresa klijenta
client_zip String Ne Poštanski broj klijenta
client_phone String Ne Telefonski broj klijenta
client_email String Ne E-mail klijenta
quote Objekt Da Osnovni podaci o ponudi.
total_without_vat Decimal Da Ukupan iznos ponude bez poreza.
total_with_vat Decimal Da Ukupan iznos ponude s porezom.
total_rabat_amount Decimal Ne Ukupan iznos rabata, ako postoji.
is_rabat Bool 0 | 1 Da Ako je na ponudi iskazan rabat.
paid_without_vat Decimal Ne Ukupan uplaćeni iznos, bez poreza.
paid_with_vat Decimal Ne Ukupan uplaćeni iznos, sa porezom.
is_hourly_billable Bool 0 | 1 Da U slučaju da su na ponudi iskazane stavke s količinama (sat, dan, komad, itd.).
date Date (YYYY-mm-dd H:i:s) Ne Datum ponude s vremenom. Ako nije poslan, koristi se trenutni datum i vrijeme.
due_date Date (YYYY-mm-dd) Ne Dospijeće plaćanja ponude. Ako nije poslano, koristi se datum tri dana nakon kreiranja.
delivery_date Date (YYYY-mm-dd) Ne Trenutno se ne mapira na dokument (nije implementirano za ponude).
note String Ne U slučaju tekstualne napomene na ponudi. Npr. vrijedi 7 dana.
is_ino Bool 0 | 1 Ne Oznaka reverse charge na ponudi (default 0).
lang String english | german Ne Dodatni jezik na ponudi
is_barcode Bool 0 | 1 Ne Generiranje 2D barkoda/QR u PDF-u. Radi backward kompatibilnosti prihvaćen je i alias is_barcoede.
account_id Integer Ne ID računa / IBAN-a iz get_ibans(). Ako je poslan, veže se na dokument. Uz is_barcode=1 koristi se i za barkod/QR. Alias: qr_account.
placanje_model String Ne Model plaćanja za barkod/QR (npr. 00). Ako nije poslan, koristi se 00. Podržan je i alias qr_model.
placanje_poziv String Ne Poziv na broj za barkod/QR. Ako nije poslan, koristi se broj dokumenta. Podržan je i alias qr_poziv.
quote_services Objekt Da Podaci o stavkama ponude.
name String Da Naziv stavke (usluge/proizvoda)
description String Ne Opis stavke (usluge/proizvoda)
is_per_hour Bool 0 | 1 Da U slučaju da je stavka količinska (ima mjernu jedinicu: kom, h, m2...)
rabat Decimal Ne U slučaju da stavka ima definiran rabat. Šalje se postotak rabata.

Primjer zahtjeva

{
    "auth_token": {
        "token": "xxxxxxxxxxxx"
    },
    "client": {
        "client_oib": "85883135279",
        "client_name": "Revoloop d.o.o.",
        "client_type": "pravna",
        "client_country": "Hrvatska",
        "client_city": "Zagreb",
        "client_address": "Ostrogovi\u0107eva 3",
        "client_zip": "10000",
        "client_phone": "+385997315718",
        "client_email": "dejan@revoloop.hr"
    },
    "quote": {
        "total_without_vat": 8,
        "total_with_vat": 10,
        "total_rabat_amount": 0,
        "paid_without_vat": 8,
        "paid_with_vat": 10,
        "is_hourly_billable": false,
        "is_rabat": true,
        "date": "2023-03-21 14:01:19",
        "due_date": "2023-03-28",
        "note": "Napomena na ra\u010dunu",
        "is_barcode": true,
        "account_id": 1,
        "placanje_model": "00",
        "placanje_poziv": "PON-2026-0001"
    },
    "quote_services": [
        {
            "name": "testna usluga",
            "description": "opis testne usluge",
            "is_per_hour": false,
            "price_without_vat": 9.9,
            "price_without_vat_netto": 11,
            "vat_percentage": 25,
            "price_with_vat": 12.38,
            "rabat": 10
        },
        {
            "name": "testna usluga",
            "description": "opis testne usluge",
            "is_per_hour": false,
            "price_without_vat": 9.9,
            "price_without_vat_netto": 11,
            "vat_percentage": 25,
            "price_with_vat": 12.38,
            "rabat": 10
        }
    ]
}

Mogući odgovori

Status Povratne vrijednosti Opis
true
{
    "status": 1,
    "message": "Ponuda je uspjesno dodana",
    "quote_number": "1234567890",
    "quote_id": 22211,
    "pdf_link": "link to pdf file"
}
Uspješno generirana ponuda; vraća se ID ponude, broj ponude i link za PDF datoteku.
false
{
    "status": 0,
    "message": "Nedostaju obavezni parametri: client, quote, quote_services"
}
Pogreška
Moguće poruke:

Nedostaju obavezni parametri: client, quote, quote_services

Pogreška kod unosa klijenta

Pogreška pri dodavanju ponude

Nepostojeći company id

Nepostojeći token