Zadnja izmjena: 31.01.2026 00:07:16

Fiskalizacija 2.0 - Vodić za programere

DOKUMENAT JE U IZRADI

Osnovni proces razmjene računa , F20 i eIzvještavanja koristeči api DOKU.HR (bivši iEračuni)

⚠️ TESTNI API na internetu je u funkciji od 02.12.2025 i stalno se dograđuje !
Za korištenje opcije potrebno je skinuti plugin DOKU iz web setupa HrF i podesiti podatke u postavkama plugina.

Zadnja verzija uploadana: 31.01.2026 02:46:29 !


*Kod načina rada izmjenom datoteka u prvom redu treba provjeriti dali možda uz http treba poslati NOENCODEPOST kako bi se podaci slali u izvornom obliku bez kodiranja. (Na mjestima gdje je to navedeno treba sigurno.).Uglavnom kod POST opcija koje šalju podatke u 3 redu.
Koristeči ovaj plugin s HrFiskalizatorom možete :
*Poslati sve dokumente vezane uz Fiskalizaciju 2.0. i u JSON i XML Formatu.
*JSON je opcionalan , podatke možete kreirati direktno u XML formatu.
*ℹ️ Apsolutno najlakši i najsigurniji način je kreiranje XML korištenjem TXT2INV TXT2INV plugina.
*Podatke možete razmjenjivati datotekama ili HTTP pozivom, prema primjerima u nastavku.

Izlazni računi

Hodogram slanja računa.
graph TD A[1. Kreiranje JSON ili XML predloška] --> B[2. Popunjavanje predloška
vlastitim podacima] B --> C[3. Kontrola ispravnosti
JSON/XML opcionalno] C --> D[4. Slanje dokumenta HrFiskalizatoru] D --> E1[HTTP POST prema
HrFiskalizatoru] D --> E2[Razmjena datoteka sa
HrFiskalizatorom] E1 --> F[5. Preuzimanje i obrada
potvrde receipt] E2 --> F style A fill:#e1f5ff style B fill:#e1f5ff style C fill:#fff4e1 style D fill:#e1f5ff style E1 fill:#e1ffe1 style E2 fill:#e1ffe1 style F fill:#ffe1f5
📄HrFlab za Fiskalizaciju 2.0
U web interfejsu HrFiskalizatora možete pronači sve potrebne primjere i alate za rad s Fiskalizacijom 2.0. HrFlab za Fiskalizaciju 2.0
💰TXT2INV plugin
Za izradu XMLa iz jednostavne TXT (INI) datoteke možete koristiti plugin TXT2INV. Plugin TXT2INV za Fiskalizaciju 2.0
Više o pluginu TXT2INV
📄Ping PLUGINA DOKU GET

AJAX zahtjev

$.ajax({
    url: '/plugin/doku/ping',
    method: 'get'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http
plugin/doku/ping

text/html

primjer odgovora na upit :

{
  "message": "Doku plugin OK"
}
📄Ping DOKU servera GET

AJAX zahtjev

$.ajax({
    url: '/doku',
    method: 'get'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http
/doku

text/html

primjer odgovora na upit :

{
  "message": "Hello TEST @ 03.12.2025. 19:25:56"
}
⚙️Dohvat DOKU moda rada GET

AJAX zahtjev

$.ajax({
    url: '/doku/getmode',
    method: 'get'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http
/doku/getmode

text/plain

Primjer odgovora na upit:

{
  "mode": "PRODUCTION"
}
ℹ️ Mogući modovi rada:
  • PRODUCTION - produkcijski mod (pravi API)
  • TEST - test mod (sandbox API)
📄Primjer JSONa za račun JSON

Kreiranje JSON računa

Kreiranje JSONa sa računom u JSON formatu za Fiskalizaciju 2.0.
Koristeći predložak iz primjera. Veći dio predloška je statičan, jedino se neki podaci moraju dinamički generirati u petlji, recimo invoicelines ili taxtotal ako je više različitih stopa pdv-a.
ℹ️ JSON nažalost nije pogodan ako dokumente planirate generirati mjenjači string, jer je potrebno paziti na ispravnu sintaksu (zareze, navodnike, zagrade).
U tom slučaju generirajte direktno XML račun koristeći XML predložak.
 
{
    "Invoice": {
        "profileid": "P1",
        "id": "04/1/2025",
        "issuedate": "2025-11-13",
        "issuetime": "14:30:00",
        "duedate": "2025-11-13",
        "currencyid": "EUR",
        "invoicetypecode": "380",
        "note": "Račun s porezom na potrošnju 3% obračunatim kao trošak na razini dokumenta",
        "accountingsupplierparty": {
            "party": {
                "endpointid": {
                    "schemeid": "9934",
                    "value": "78158722615"
                },
                "partyidentification": {
                    "id": "78158722615"
                },
                "partyname": {
                    "name": "Caffe Bar Adriatic d.o.o."
                },
                "postaladdress": {
                    "streetname": "Obala kralja Tomislava 15",
                    "cityname": "Split",
                    "postalzone": "21000",
                    "country": {
                        "identificationcode": "HR"
                    }
                },
                "partytaxscheme": {
                    "companyid": "78158722615",
                    "taxscheme": {
                        "id": "VAT"
                    }
                },
                "partylegalentity": {
                    "registrationname": "Caffe Bar Adriatic d.o.o.",
                    "companyid": "78158722615",
                    "companylegalform": "Caffe Bar Adriatic d.o.o. upisana u sudski registar trgovačkog suda u Splitu, temeljni kapital 20.000,00 EUR"
                },
                "contact": {
                    "electronicmail": "racuni@caffe-adriatic.hr"
                }
            },
            "sellercontact": {
                "id": "14285729085",
                "name": "Operater Marko"
            }
        },
        "accountingcustomerparty": {
            "party": {
                "endpointid": {
                    "schemeid": "9934",
                    "value": "32234297847"
                },
                "partyidentification": {
                    "id": "32234297847"
                },
                "partyname": {
                    "name": "Hotel Marina d.o.o."
                },
                "postaladdress": {
                    "streetname": "Šetalište Ivana Meštrovića 48",
                    "cityname": "Split",
                    "postalzone": "21000",
                    "country": {
                        "identificationcode": "HR"
                    }
                },
                "partytaxscheme": {
                    "companyid": "32234297847",
                    "taxscheme": {
                        "id": "VAT"
                    }
                },
                "partylegalentity": {
                    "registrationname": "Hotel Marina d.o.o.",
                    "companyid": "32234297847"
                },
                "contact": {
                    "electronicmail": "nabava@hotel-marina.hr"
                }
            }
        },
        "allowancecharges": [
            {
                "chargeindicator": true,
                "allowancechargereason": "#HR:PP#",
                "multiplierfactornumeric": 3,
                "amount": 6.00,
                "baseamount": 200.00,
                "taxcategory": {
                    "id": "E",
                    "name": "HR:E",
                    "percent": 0,
                    "taxexemptionreason": "#HR:PP#",
                    "taxscheme": {
                        "id": "VAT"
                    }
                }
            }
        ],
        "invoicelines": [
            {
                "id": "1",
                "invoicedquantity": 50,
                "lineextensionamount": 250.00,
                "item": {
                    "name": "Kava Espresso",
                    "description": "Kava espresso - ugostiteljska usluga",
                    "commodityclassification": {
                        "commoditycode": "26.11.11",
                        "itemclassificationcode": {
                            "value": "26.11.11",
                            "listid": "CG"
                        }
                    },
                    "classifiedtaxcategory": {
                        "id": "S",
                        "percent": 25,
                        "taxscheme": {
                            "id": "VAT"
                        }
                    }
                },
                "price": {
                    "priceamount": 5.00,
                    "basequantity": 1,
                    "unitcode": "EA"
                }
            },
            {
                "id": "2",
                "invoicedquantity": 30,
                "lineextensionamount": 120.00,
                "item": {
                    "name": "Coca Cola 0.33l",
                    "description": "Bezalkoholno piće - podliježe porezu na potrošnju 3%",
                    "commodityclassification": {
                        "commoditycode": "26.11.11",
                        "itemclassificationcode": {
                            "value": "26.11.11",
                            "listid": "CG"
                        }
                    },
                    "classifiedtaxcategory": {
                        "id": "S",
                        "percent": 25,
                        "taxscheme": {
                            "id": "VAT"
                        }
                    },
                    "additionalitemproperty": [
                        {
                            "name": "Osn. PNP",
                            "value": "120.00"
                        },
                        {
                            "name": "PNP 3%",
                            "value": "3.60"
                        }
                    ]
                },
                "price": {
                    "priceamount": 4.00,
                    "basequantity": 1,
                    "unitcode": "EA"
                }
            },
            {
                "id": "3",
                "invoicedquantity": 20,
                "lineextensionamount": 80.00,
                "item": {
                    "name": "Fanta Narančada 0.33l",
                    "description": "Bezalkoholno piće - podliježe porezu na potrošnju 3%",
                    "commodityclassification": {
                        "commoditycode": "26.11.11",
                        "itemclassificationcode": {
                            "value": "26.11.11",
                            "listid": "CG"
                        }
                    },
                    "classifiedtaxcategory": {
                        "id": "S",
                        "percent": 25,
                        "taxscheme": {
                            "id": "VAT"
                        }
                    },
                    "additionalitemproperty": [
                        {
                            "name": "Osn. PNP",
                            "value": "80.00"
                        },
                        {
                            "name": "PNP 3%",
                            "value": "2.40"
                        }
                    ]
                },
                "price": {
                    "priceamount": 4.00,
                    "basequantity": 1,
                    "unitcode": "EA"
                }
            }
        ],
        "taxtotal": {
            "taxamount": 112.50,
            "taxsubtotals": [
                {
                    "taxableamount": 450.00,
                    "taxamount": 112.50,
                    "taxcategory": {
                        "id": "S",
                        "percent": 25,
                        "taxscheme": {
                            "id": "VAT"
                        }
                    }
                },
                {
                    "taxableamount": 6.00,
                    "taxamount": 0.00,
                    "taxcategory": {
                        "id": "E",
                        "percent": 0,
                        "taxexemptionreason": "#HR:PP#",
                        "taxscheme": {
                            "id": "VAT"
                        }
                    }
                }
            ]
        },
        "legalmonetarytotal": {
            "lineextensionamount": 450.00,
            "allowancetotalamount": 0.00,
            "chargetotalamount": 6.00,
            "taxexclusiveamount": 456.00,
            "taxinclusiveamount": 568.50,
            "payableamount": 568.50
        },
        "hrfisk20data": {
            "hrobracunpdvponaplati": "false",
            "hrtaxtotal": {
                "taxamount": "112.50",
                "hrtaxsubtotals": [
                    {
                        "taxableamount": "450.00",
                        "taxamount": "112.50",
                        "hrtaxcategory": {
                            "id": "S",
                            "name": "HR:PDV25",
                            "percent": "25.0",
                            "hrtaxscheme": {
                                "id": "VAT"
                            }
                        }
                    },
                    {
                        "_comment": "O/HR:PP/LOC - Stvarni iznos PNP poreza 3% (6.00 EUR od osnovice 200.00 EUR). Kategorija O (not subject to VAT) jer je PNP lokalni porez izvan PDV sustava.",
                        "taxableamount": "200.00",
                        "taxamount": "6.00",
                        "hrtaxcategory": {
                            "id": "O",
                            "name": "HR:PP",
                            "percent": "0",
                            "hrtaxscheme": {
                                "id": "LOC"
                            }
                        }
                    },
                    {
                        "_comment": "E/HR:E/VAT - Razčlamba oslobođenja za HR-BR-26 pravilo. Osnovica 6.00 EUR (iznos PNP naknade) je izvan PDV sustava (taxamount=0.00). Bez ove stavke validacija ne prolazi.",
                        "taxableamount": "6.00",
                        "taxamount": "0.00",
                        "hrtaxcategory": {
                            "id": "E",
                            "name": "HR:E",
                            "percent": "0",
                            "taxexemptionreason": "#HR:PP#",
                            "hrtaxscheme": {
                                "id": "VAT"
                            }
                        }
                    }
                ]
            },
            "hrlegalmonetarytotal": {
                "taxexclusiveamount": "256.00",
                "outofscopeofvatamount": "200.00"
            }
        }
    }
}
}
📄Isti primjer u XML formatu XML

Kreiranje XML računa

Kreiranje XML-a sa računom u XML formatu za Fiskalizaciju 2.0.
Koristeći predložak iz primjera. Veći dio predloška je statičan, jedino se neki podaci moraju dinamički generirati u petlji, recimo invoicelines ili taxtotal ako je više različitih stopa pdv-a. XML je autogeneriran iz gornjeg JSON primjera koristeći HrFiskalizator.
 
    <?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
         xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
         xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
         xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
         xmlns:hr="urn:mfin.gov.hr:schema:xsd:HRExtensionAggregateComponents-1"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:hrextac="urn:mfin.gov.hr:schema:xsd:HRExtensionAggregateComponents-1"
         xsi:schemaLocation="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 http://docs.oasis-open.org/ubl/os-UBL-2.1/xsd/maindoc/UBL-Invoice-2.1.xsd">
    <ext:UBLExtensions>
        <ext:UBLExtension>
            <ext:ExtensionContent>
                <hr:HRFISK20Data>
                    <hr:HRObracunPDVPoNaplati>false</hr:HRObracunPDVPoNaplati>
                    <hr:HRTaxTotal>
                        <cbc:TaxAmount currencyID="EUR">51.00</cbc:TaxAmount>
                        <hr:HRTaxSubtotal>
                            <cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
                            <cbc:TaxAmount currencyID="EUR">25.00</cbc:TaxAmount>
                            <hr:HRTaxCategory>
                                <cbc:ID>S</cbc:ID>
                                <cbc:Percent>25.0</cbc:Percent>
                                <hr:HRTaxScheme>
                                    <cbc:ID>VAT</cbc:ID>
                                </hr:HRTaxScheme>
                            </hr:HRTaxCategory>
                        </hr:HRTaxSubtotal>
                        <hr:HRTaxSubtotal>
                            <cbc:TaxableAmount currencyID="EUR">200.00</cbc:TaxableAmount>
                            <cbc:TaxAmount currencyID="EUR">26.00</cbc:TaxAmount>
                            <hr:HRTaxCategory>
                                <cbc:ID>S</cbc:ID>
                                <cbc:Percent>13.0</cbc:Percent>
                                <hr:HRTaxScheme>
                                    <cbc:ID>VAT</cbc:ID>
                                </hr:HRTaxScheme>
                            </hr:HRTaxCategory>
                        </hr:HRTaxSubtotal>
                    </hr:HRTaxTotal>
                    <hr:HRLegalMonetaryTotal>
                        <cbc:TaxExclusiveAmount currencyID="EUR">300.00</cbc:TaxExclusiveAmount>
                        <hr:OutOfScopeOfVATAmount currencyID="EUR">0.00</hr:OutOfScopeOfVATAmount>
                    </hr:HRLegalMonetaryTotal>
                </hr:HRFISK20Data>
            </ext:ExtensionContent>
        </ext:UBLExtension>
    </ext:UBLExtensions>
    <cbc:UBLVersionID>2.1</cbc:UBLVersionID>
    <cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:mfin.gov.hr:cius-2025:1.0#conformant#urn:mfin.gov.hr:ext-2025:1.0</cbc:CustomizationID>
    <cbc:ProfileID>P1</cbc:ProfileID>
    <cbc:ID>13/1/2025</cbc:ID>
    <cbc:IssueDate>2025-11-15</cbc:IssueDate>
    <cbc:IssueTime>12:00:00</cbc:IssueTime>
    <cbc:DueDate>2025-11-15</cbc:DueDate>
    <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
    <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
    <cac:AccountingSupplierParty>
        <cac:Party>
            <cbc:EndpointID schemeID="9934">14285729085</cbc:EndpointID>
            <cac:PartyIdentification>
                <cbc:ID>9934:14285729085</cbc:ID>
            </cac:PartyIdentification>
            <cac:PartyName>
                <cbc:Name>VLADO</cbc:Name>
            </cac:PartyName>
            <cac:PostalAddress>
                <cbc:StreetName>Testna ulica 1</cbc:StreetName>
                <cbc:CityName>Zagreb</cbc:CityName>
                <cbc:PostalZone>10000</cbc:PostalZone>
                <cac:Country>
                    <cbc:IdentificationCode>HR</cbc:IdentificationCode>
                </cac:Country>
            </cac:PostalAddress>
            <cac:PartyTaxScheme>
                <cbc:CompanyID>HR14285729085</cbc:CompanyID>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:PartyTaxScheme>
            <cac:PartyLegalEntity>
                <cbc:RegistrationName>VLADO</cbc:RegistrationName>
                <cbc:CompanyID>HR14285729085</cbc:CompanyID>
            </cac:PartyLegalEntity>
            <cac:Contact>
                <cbc:ElectronicMail>test@example.com</cbc:ElectronicMail>
            </cac:Contact>
        </cac:Party>
        <cac:SellerContact>
            <cbc:ID>14285729085</cbc:ID>
            <cbc:Name>Prodajni kontakt - Beverage Dept</cbc:Name>
        </cac:SellerContact>
    </cac:AccountingSupplierParty>
    <cac:AccountingCustomerParty>
        <cac:Party>
            <cbc:EndpointID schemeID="9934">32234297847</cbc:EndpointID>
            <cac:PartyIdentification>
                <cbc:ID>9934:32234297847</cbc:ID>
            </cac:PartyIdentification>
            <cac:PartyName>
                <cbc:Name>Monoform d.o.o.</cbc:Name>
            </cac:PartyName>
            <cac:PostalAddress>
                <cbc:StreetName>ULICA 1</cbc:StreetName>
                <cbc:CityName>ZAGREB</cbc:CityName>
                <cbc:PostalZone>10000</cbc:PostalZone>
                <cac:Country>
                    <cbc:IdentificationCode>HR</cbc:IdentificationCode>
                </cac:Country>
            </cac:PostalAddress>
            <cac:PartyTaxScheme>
                <cbc:CompanyID>HR32234297847</cbc:CompanyID>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:PartyTaxScheme>
            <cac:PartyLegalEntity>
                <cbc:RegistrationName>Monoform d.o.o.</cbc:RegistrationName>
                <cbc:CompanyID>HR32234297847</cbc:CompanyID>
            </cac:PartyLegalEntity>
            <cac:Contact>
                <cbc:ElectronicMail>kupac@example.com</cbc:ElectronicMail>
            </cac:Contact>
        </cac:Party>
    </cac:AccountingCustomerParty>
    <cac:PaymentMeans>
        <cbc:PaymentMeansCode>42</cbc:PaymentMeansCode>
        <cbc:PaymentID>HR00 1229465-2-1849</cbc:PaymentID>
        <cac:PayeeFinancialAccount>
            <cbc:ID>HR9023600001101555388</cbc:ID>
        </cac:PayeeFinancialAccount>
    </cac:PaymentMeans>
    <cac:TaxTotal>
        <cbc:TaxAmount currencyID="EUR">51</cbc:TaxAmount>
        <cac:TaxSubtotal>
            <cbc:TaxableAmount currencyID="EUR">100</cbc:TaxableAmount>
            <cbc:TaxAmount currencyID="EUR">25</cbc:TaxAmount>
            <cac:TaxCategory>
                <cbc:ID>S</cbc:ID>
                <cbc:Percent>25</cbc:Percent>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:TaxCategory>
        </cac:TaxSubtotal>
        <cac:TaxSubtotal>
            <cbc:TaxableAmount currencyID="EUR">200</cbc:TaxableAmount>
            <cbc:TaxAmount currencyID="EUR">26</cbc:TaxAmount>
            <cac:TaxCategory>
                <cbc:ID>S</cbc:ID>
                <cbc:Percent>13</cbc:Percent>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:TaxCategory>
        </cac:TaxSubtotal>
    </cac:TaxTotal>
    <cac:LegalMonetaryTotal>
        <cbc:LineExtensionAmount currencyID="EUR">300</cbc:LineExtensionAmount>
        <cbc:TaxExclusiveAmount currencyID="EUR">300</cbc:TaxExclusiveAmount>
        <cbc:TaxInclusiveAmount currencyID="EUR">351</cbc:TaxInclusiveAmount>
        <cbc:PayableAmount currencyID="EUR">351</cbc:PayableAmount>
    </cac:LegalMonetaryTotal>
    <cac:InvoiceLine>
        <cbc:ID>1</cbc:ID>
        <cbc:InvoicedQuantity unitCode="EA">1</cbc:InvoicedQuantity>
        <cbc:LineExtensionAmount currencyID="EUR">100</cbc:LineExtensionAmount>
        <cac:Item>
            <cbc:Name>Test Artikal</cbc:Name>
            <cac:CommodityClassification>
                <cbc:ItemClassificationCode listID="CG">26.11.11</cbc:ItemClassificationCode>
            </cac:CommodityClassification>
            <cac:ClassifiedTaxCategory>
                <cbc:ID>S</cbc:ID>
                <cbc:Percent>25</cbc:Percent>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:ClassifiedTaxCategory>
        </cac:Item>
        <cac:Price>
            <cbc:PriceAmount currencyID="EUR">100</cbc:PriceAmount>
            <cbc:BaseQuantity unitCode="EA">1</cbc:BaseQuantity>
        </cac:Price>
    </cac:InvoiceLine>
    <cac:InvoiceLine>
        <cbc:ID>2</cbc:ID>
        <cbc:InvoicedQuantity unitCode="KGM">2</cbc:InvoicedQuantity>
        <cbc:LineExtensionAmount currencyID="EUR">200</cbc:LineExtensionAmount>
        <cac:Item>
            <cbc:Name>Test Artikal 2</cbc:Name>
            <cac:CommodityClassification>
                <cbc:ItemClassificationCode listID="CG">09.10.01</cbc:ItemClassificationCode>
            </cac:CommodityClassification>
            <cac:ClassifiedTaxCategory>
                <cbc:ID>S</cbc:ID>
                <cbc:Percent>13</cbc:Percent>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:ClassifiedTaxCategory>
        </cac:Item>
        <cac:Price>
            <cbc:PriceAmount currencyID="EUR">100</cbc:PriceAmount>
            <cbc:BaseQuantity unitCode="KGM">1</cbc:BaseQuantity>
        </cac:Price>
    </cac:InvoiceLine>
</Invoice>
📄Upload računa na DOKU server ⚠️ IZMJENJENO POST

AJAX zahtjev - slanje XMLA


⚠️ PROMJENA OD 28.12.2025 ⚠️

ℹ️ Do sada se SLANJEM RAČUNA, račun nije fiskalizirao niti slao kupcu

ℹ️Ako želite samo poslati račun bez fiskalizacije i slanja kupcu, dodajte na kraj URL-a ?auto=false,
ℹ️Ako želite poslati račun, fiskalizirati ga i poslati kupcu, dodajte na kraj URL-a ?auto=true.

⚠️ PROMJENA OD 30.12.2025 ⚠️

ℹ️Ako je parametar izostavljen primjenjuje se postavka odabrana na WEB interfejsu.

ZA naknadnu fiskalizaciju ili slanje :
Pogledajte tab "Fiskalizacija računa" niže u dokumentu.
Pogledajte tab "Slanje računa kupcu" niže u dokumentu.

ℹ️xml je BASE64 encodiran XML račun u UBL 2.1 formatu
$.ajax({
    url: '/doku/doku/documents/invoices/upload?auto=true',
    method: 'post',
    data:  { "xml": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEludm9pY2UgeG1sbnM..."}
}).done(function (response) {
    console.log(response);
})
ILI
$.ajax({
    url: 'doku/sendxmlinvoice?auto=true',
    method: 'post',
    data:  encodeURIComponent(xml)}
}).done(function (response) {
    console.log(response);
})


Razmjena datoteka

http:NOENCODEPOST
doku/sendxmlinvoice?auto=true
file=Racun.XML
text/html;charset=UTF-8 
sequenceDiagram participant App as Vaša app participant HRF as HrFiskalizator participant IER as iEračuni API participant PT2 as Pristupna točka kupca App->>HRF: POST eizvjestavanje/json?action=SEND&soapaction=Invoice&servis=ieapi activate HRF HRF->>HRF: Kreiranje UBL 2.1 XML HRF->>IER: Slanje dokumenta IER->>IER: Dodavanje Soap omotnice i potpisivanje. IER->>PT2: Slanje računa drugoj PT PT2-->>IER: Prihvat SOAP odgovora IER-->>HRF: JSON response sa ID HRF-->>App: { "id": 13065, "message": "Uspješno kreiran zahtjev za obradu dokumenta." } deactivate HRF Note over App,PT2: Račun je sada isporučen

Odgovor HrFiskalizatora

Odgovor HrFiskalizatora je JSON string sa podacima o rezultatu slanja:
{"message":"Uspješno kreiran zahtjev za obradu dokumenta.","id":13065}
Iz odgovora možemo pročitati id koji služi za praćenje statusa slanja i obrade dokumenta.
📄Fiskalizacija računa POST
Ako račun želimo fiskalizirati odmah nakon slanja, potrebno je poslati dodatni zahtjev prema HrFiskalizatoru sa dobijenim ID-em dokumenta.:

AJAX fiskalizacija:

$.ajax({
    url: '/doku/documents/invoices/outgoing/{id}/fiscalize',
    method: 'post',
    data: '{}'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http:NOENCODEPOST
doku/documents/invoices/outgoing/{id}/fiscalize
{}
text/plain;charset=UTF-8
sequenceDiagram participant App as Vaša app participant HRF as HrFiskalizator participant IER as iEračuni API participant CIS as ePorezna App->>HRF: /doku/documents/invoices/outgoing/{id}/fiscalize activate HRF HRF->>IER: Slanje zahtjeva prema iEračuni API activate IER IER->>IER: Dodavanje Soap omotnice i potpisivanje. IER->>CIS: Slanje na poreznu CIS-->>IER: Dohvat odgovora IER-->>HRF: Povrat odgovora deactivate IER HRF-->>App: { "message": "Izlazni račun '1/1/1' je fiskaliziran." } deactivate HRF Note over App,CIS: Račun je sada fiskaliziran

Odgovor HrFiskalizatora

Odgovor HrFiskalizatora je JSON string sa podacima o rezultatu slanja:
{ "message": "Izlazni račun '1/1/1' je fiskaliziran." }
📄Slanje računa kupcu POST

AJAX zahtjev

$.ajax({
    url: '/doku/documents/invoices/incoming/{id}/send',
    method: 'post',
    data: '{}'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http
doku/documents/invoices/incoming/{id}/send
{}
text/html;charset=UTF-8 

primjer odgovora na upit :

{
  "message": "Ulazni račun '1/1/1' je predan na slanje.."
}

📄Evidencija isporuke za koju nije moguće izdati e-račun POST

AJAX zahtjev

xml je BASE64 encodiran XML račun u UBL 2.1 formatu
$.ajax({
    url: '/doku/report/non-einvoice-delivery',
    method: 'post',
    data:  { "xml": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEludm9pY2UgeG1sbnM..."}
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http
doku/report/non-einvoice-delivery
file=C:/hrfiskalizator/isporuka_za_koju_nije_izdan_racun.json
text/plain;charset=UTF-8

Odgovor na upit :

{
  "message": "Evidencija isporuke/računa '1/1/1' za koju nije izdan e-račun je uspješna."
}
📄Dohvat detalja izlaznog računa GET

Opcija A: AJAX zahtjev

$.ajax({
    url: '/doku/documents/invoices/outgoing/{id}',
    method: 'get',
}).done(function (response) {
    console.log(response);
    
})

Razmjena datoteka

http
doku/documents/invoices/outgoing/{id}

text/plain;charset=UTF-8
sequenceDiagram participant App as Vaša app participant HRF as HrFiskalizator participant IER as iEračuni API App->>HRF: /doku/documents/invoices/outgoing/{id} activate HRF HRF->>IER: Slanje zahtjeva prema iEračuni API activate IER IER-->>HRF: Povrat odgovora deactivate IER HRF-->>App: { JSON sa podacima } deactivate HRF

Odgovor na upit :

{
  "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"
  }
  }
📄Evidencija naplate izlaznog računa ⚠️ DOPUNJENO 04.01.2026 POST

AJAX zahtjev

⚠️ U međuvremenu je "/mark-paid" promijenjeno u "/payments" , tako da plugin od verzije 2 podržava oba formata!
$.ajax({
    url: '/doku/documents/invoices/outgoing/{id}/mark-paid',
    method: 'post',
    data: '{ "datumNaplate": "2025-10-28", "naplaceniIznos": 808.00,  "nacinPlacanja": "T" }'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http:NOENCODEPOST
doku/documents/invoices/outgoing/{id}/mark-paid
{ "datumNaplate": "2025-10-28", "naplaceniIznos": 808.00,  "nacinPlacanja": "T" }
text/plain;charset=UTF-8

Odgovor na upit :

{  "message": "Izlazni račun '1/1/1' je označen plaćen."}
📄Preuzimanje izlaznog računa GET

AJAX zahtjev

$.ajax({
    url: '/doku/documents/invoices/outgoing/{id}/export',
    method: 'get'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http
doku/documents/invoices/outgoing/{id}/export

text/plain;charset=UTF-8

Odgovor na upit :

{
  "data": {
	"xml": "BASE 64 UBL Invoice xml"
  }
}
📄Preuzimanje XMLA izlaznog računa NOVO GET

AJAX zahtjev

$.ajax({
    url: '/doku/getxmlinvoice/documents/invoices/outgoing/{id}/export',
    method: 'get'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http
/doku/getxmlinvoice/documents/invoices/outgoing/{id}/export

text/plain;charset=UTF-8

Odgovor na upit :

Vrača XML UBL 2.1 format računa ....
📄Preuzimanje HTML VIZUALIZACIJE izlaznog računa NOVO GET

AJAX zahtjev

$.ajax({
    url: '/doku/getinvoicehtml/documents/invoices/outgoing/{id}/export',
    method: 'get'
}).done(function (response) {
    console.log(response);
})
Vrača HTML sadržaj datoteke

Razmjena datoteka

http
/doku/getinvoicehtml/documents/invoices/outgoing/{id}/export

text/plain;charset=UTF-8
Sprema html u datoteku odgovor.txt
📄Preuzimanje PDFa izlaznog računa NOVO GET

AJAX zahtjev

$.ajax({
    url: '/doku/getinvoicepdf/documents/invoices/outgoing/{id}/export',
    method: 'get'
}).done(function (response) {
    console.log(response);
})
Vrača BASE64 ebcodirani string sa sadržajem PDF datoteke

Razmjena datoteka

http
/doku/getinvoicepdf/documents/invoices/outgoing/{id}/export

text/plain;charset=UTF-8
Sprema pdf u datoteku odgovor.pdf

Ulazni računi

📄Preuzimanje liste ulaznih računa GET

Moguče query opcije

ParametarTip podatkaOpis
pageintbroj stranice
importedFromdatetimeod datuma importa, uključivo taj datum i vrijeme
importedTodatetimedo datuma importa, uključivo taj datum i vrijeme
issueDateFromdateod datuma izdavanja, uključivo taj datum. ISO 8601
issueDateTodatedo datuma izdavanja, uključivo taj datum. ISO 8601
dueDateFromdateod datuma dospijeća, uključivo taj datum. ISO 8601
dueDateTodatedo datuma dospijeća, uključivo taj datum. ISO 8601
Primjer ISO 8601 datuma: 2025-11-29
Primjer ISO 8601 datuma i vremena: 2025-11-29T14:30:00

AJAX zahtjev

$.ajax({
    url: '/doku/documents/invoices/incoming?issueDateFrom=2025-10-01&issueDateTo=2025-10-31&page=1',
    method: 'get'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http    
doku/documents/invoices/incoming?issueDateFrom=2025-10-01&issueDateTo=2025-10-31&page=1

text/plain;charset=UTF-8

Odgovor na upit :

{
  "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"
      }
    ]
  }
}
📄Preuzimanje detalja ulaznog računa GET

AJAX zahtjev

$.ajax({
    url: '/doku/documents/invoices/incoming/{id}',
    method: 'get'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http
doku/documents/invoices/incoming/{id}

text/plain;charset=UTF-8

primjer odgovora na upit :

{
  "data": {
    "id": 89,
    "name": "17/1/1",
    "sender": {
      "name": "AUTOKAROSERIJA,VL. ALJOŠA KEFELJA",
      "oib": "21888768739"
    },
    "issueDate": "2026-01-08",
    "dueDate": "2026-01-08",
    "payableAmount": 175,
    "currency": "EUR",
    "status": "RECEIVED",
    "history": [
      {
        "status": "DELIVERED",
        "timestamp": "2026-01-08T10:32:26.34"
      },
      {
        "status": "RECEIVED",
        "timestamp": "2026-01-08T16:22:03.93"
      }
    ]
  }
}
📄Fiskalizacija ulaznog računa POST

AJAX zahtjev

$.ajax({
    url: '/doku/documents/invoices/incoming/{id}/fiscalize',
    method: 'post'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http
doku/documents/invoices/incoming/{id}/fiscalize
{}
text/plain;charset=UTF-8

primjer odgovora na upit :

{
  "message": "Ulazni račun '1/1/1' je fiskaliziran."
}

📄Preuzimanje ulaznog računa GET

AJAX zahtjev

$.ajax({
    url: '/doku/documents/invoices/incoming/{id}/export',
    method: 'get'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http
doku/documents/invoices/incoming/{id}/export

text/plain;charset=UTF-8

primjer odgovora na upit :

{
  "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"
  }
}
📄Preuzimanje XMLA ulaznog računa NOVO GET

AJAX zahtjev

$.ajax({
    url: '/doku/getxmlinvoice/documents/invoices/incoming/{id}/export',
    method: 'get'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http
/doku/getxmlinvoice/documents/invoices/incoming/{id}/export

text/plain;charset=UTF-8

Odgovor na upit :

Vrača XML UBL 2.1 format računa ....
📄Preuzimanje HTML VIZUALIZACIJE ulaznog računa NOVO GET

AJAX zahtjev

$.ajax({
    url: '/doku/getinvoicehtml/documents/invoices/incoming/{id}/export',
    method: 'get'
}).done(function (response) {
    console.log(response);
})
Vrača HTML sadržaj datoteke

Razmjena datoteka

http
/doku/getinvoicehtml/documents/invoices/incoming/{id}/export

text/plain;charset=UTF-8
Sprema html u datoteku odgovor.txt
📄Preuzimanje PDFa ulaznog računa NOVO GET

AJAX zahtjev

$.ajax({
    url: '/doku/getinvoicepdf/documents/invoices/incoming/{id}/export',
    method: 'get'
}).done(function (response) {
    console.log(response);
})
Vrača BASE64 ebcodirani string sa sadržajem PDF datoteke

Razmjena datoteka

http
/doku/getinvoicepdf/documents/invoices/incoming/{id}/export

text/plain;charset=UTF-8
Sprema pdf u datoteku odgovor.pdf
📄Odbijanje ulaznog računa POST

AJAX zahtjev

$.ajax({
    url: '/doku/documents/invoices/incoming/{id}/reject',
    method: 'post',
    data: '{ "datumOdbijanja": "2025-10-28", "vrstaRazlogaOdbijanja": "N",  "razlogOdbijanja": "Krivi primatelj eRačuna"}'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http:NOENCODEPOST
doku/documents/invoices/incoming/{id}/reject
{ "datumOdbijanja": "2025-10-28", "vrstaRazlogaOdbijanja": "N",  "razlogOdbijanja": "Krivi primatelj eRačuna"}
text/plain;charset=UTF-8
ili
http:NOENCODEPOST
doku/documents/invoices/incoming/{id}/reject
file=Odbijanje.txt
text/plain;charset=UTF-8

Odgovor na upit :

{
  "message": "Ulazni račun '1/1/1' je označen odbijen."
}

👤 Registracija korisnika

📄Registracija korisnika POST

AJAX zahtjev

var data = {
  "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"
  }
}

$.ajax({
    url: '/doku/accounts',
    method: 'post',
    data: JSON.stringify(data),
    contentType: 'application/json'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http:NOENCODEPOST
/doku/accounts
File=RegistrationData.json
text/plain;charset=UTF-8

Odgovor na upit :

{
  "message": "Registracija pretinca '01234567890' je uspješna"
  "data":
  {
    "activationNotificationEmail": "mailtvrtke@example.com",
    "password": "11223344",
    "apiToken": "23199e53-acb0-4ea4-a39a-00c765101f22"
  }
}
Registracijske podatke treba spremiti jer su potrebni za aktivaciju računa i pristup API-ju.
📄Formati povratnih podataka

Povrat podataka

ℹ️ Plugin defaultno vrača neizmjenjene podatke primljene od servera DOKU.
Moguče je podesiti u postavkma da format bude konvertiran u INI format ili obićan TEXT format.
U tom slučaju će svi JSON odgovori biti konvertirani u INI ili text format.
Ovo može biti korisno ako vaša aplikacija ne podržava JSON format.

⚠️ Preporučuje se korištenje JSON formata jer sadrži najviše informacija i najlakše se parsira.

ℹ️ Ako poziv prema pluginu učinimo sa parametrom response=xxxxxx,
Samo taj poziv će biti vračen u formatu određenim sa xxxxxx.
Ovo omogućuje da se pojedinačni pozivi vrate u drugačijem formatu od defaultnog.
Na primjer možemo imati defaultno JSON vračanje,
ali poziv za registraciju korisnika može biti vračen u INI formatu.

Podržani formati su:
RAW - vrača originalne podatke.
INI - konvertira podatke u INI format
SIMPLE - konvertira podatke u strukturirani text

RAZNO

💾Spremi račun iz DOKU u lokalnu H2 arhivu GET

AJAX zahtjev

$.ajax({
    url: '/doku/saveIdToLocalArchive/outgoing/450',
    method: 'get'
}).done(function (response) {
    console.log(response);
})

Razmjena datoteka

http
/doku/saveIdToLocalArchive/{direction}/{id}

application/json

Primjer odgovora na upit:

{
  "success": true,
  "id": 450,
  "name": "26-1-27",
  "xmlPath": "1_2026/26-1-27.xml",
  "action": "created"
}
ℹ️ Opis:
  • Endpoint za server-to-server arhiviranje računa iz DOKU u H2 arhivu
  • {direction} - smjer računa: incoming ili outgoing
  • {id} - ID računa u DOKU sustavu
  • Automatski dohvaća metadata i XML iz DOKU
  • Sprema račun u lokalnu H2 arhivu
  • Zahtijeva da je F2ARCHIVE plugin učitan
  • Prednost: Smanjuje mrežni promet sa ~1MB na ~2KB po računu (500x efikasnije)
⚠️ Mogući error odgovori:
  • 400 - Neispravan format URL-a
  • 503 - F2ARCHIVE plugin nije učitan
  • 500 - Greška pri dohvatu iz DOKU ili spremanju u arhivu

HrFiskalizator v78 - 2025 MVV.hr