Storno i korektivni račun
Fiskalizovani račun se ne briše i ne mijenja. Ispravka ili storno ide kao novi dokument tipa Corrective, koji se referencira na original preko IIC-a.
Isti mehanizam važi za bezgotovinske i gotovinske račune.
| Šta želite | Šta šaljete |
|---|---|
| Storno (poništavanje cijelog računa) | type: "Corrective" + iste stavke kao original, negativna količina i negativna cijena |
| Korekcija (dio količine, pogrešna cijena, zamjena artikla) | type: "Corrective" + delta stavke (minus vraćeno, plus ispravljeno) |
| Korekcija (dio količine, pogrešna cijena, zamjena artikla) | type: "Corrective" + delta stavke (minus vraćeno, plus ispravljeno) |
Nema DELETE /invoices/{id} za fiskalizovani račun. Original ostaje u evidenciji; korektivni ga koriguje kod Poreske.
Obavezna polja
Pored uobičajenog payload-a (Payload):
| Polje | Opis |
|---|---|
type | Corrective (prihvaća i CORRECTIVE) |
original.id | IIC originalnog računa (32 hex znaka) |
original.issuedAt | Datum/vrijeme izdavanja originala (ISO-8601) — uzmite fiscalizedAt sa GET |
items | Min. 1 stavka; količina ne smije biti 0 |
typeOfInvoice / paymentMethod | Isti kao na originalu (Cash+CARD, NonCash+ACCOUNT, …) |
orderNumber: 0 — sistem dodjeljuje novi redni broj (korektivni nije isti broj kao original).
Stavke
- Storno / povrat:
quantityiunitPricesu negativni (ista apsolutna vrijednost kao na originalu). - Nova / ispravljena stavka: oba polja pozitivna, kao na običnom računu.
quantityne smije biti0.- PDV stopa (
vat.rate) mora biti ista kao na originalnoj stavci.
1. Uzmi original
Bezgotovinski / draft tok:
curl -s "https://api.fiskalmn.me/api/invoices/{id}" \
-H "Authorization: Bearer fk_live_YOUR_KEY"Gotovinski:
curl -s "https://api.fiskalmn.me/api/invoices/cash/{id}" \
-H "Authorization: Bearer fk_live_YOUR_KEY"Sa odgovora trebate:
iic→original.idfiscalizedAt→original.issuedAtinvoiceData.items(naziv, šifra, jedinica, cijena, količina, PDV)typeOfInvoice,paymentMethod,buyer
Račun mora biti status: "Fiscalized" i imati IIC. Draft se ne stornira korektivnim — obrišite / ne fiskalizujte draft.
2. Storno (cijeli račun)
Iste stavke kao original, količina i jedinična cijena sa minusom.
Original: 4× guma @ 75.00, 2× burger @ 5.00.
{
"type": "Corrective",
"orderNumber": 0,
"typeOfInvoice": "NonCash",
"paymentMethod": "ACCOUNT",
"paymentDeadline": "2026-09-23T12:00:00Z",
"buyer": {
"idType": "TIN",
"idNumber": "12345678",
"name": "TOP BUYER DOO",
"address": "4 JULA BB",
"city": "PODGORICA",
"country": "MNE"
},
"items": [
{
"code": "#guma",
"name": "Guma za automobil",
"unit": "komad",
"unitPrice": -75.00,
"quantity": -4,
"vat": { "rate": 21 }
},
{
"code": "#burger",
"name": "Burger",
"unit": "komad",
"unitPrice": -5.00,
"quantity": -2,
"vat": { "rate": 7 }
}
],
"note": "Kupac je odustao od kupovine.",
"original": {
"id": "0AE36859887129D6363C40F662FF9AE4",
"issuedAt": "2026-03-09T17:43:33Z"
}
}Ukupan iznos korektivnog je negativan i po apsolutnoj vrijednosti jednak originalu.
3. Korekcija (nije pun storno)
Šaljete samo razliku u odnosu na original.
Povrat 1 od 4 gume:
"items": [
{
"code": "#guma",
"name": "Guma za automobil",
"unit": "komad",
"unitPrice": -75.00,
"quantity": -1,
"vat": { "rate": 21 }
}
]Pogrešna cijena (storno stare linije + ispravna):
"items": [
{
"code": "#guma",
"name": "Guma za automobil",
"unit": "komad",
"unitPrice": -75.00,
"quantity": -4,
"vat": { "rate": 21 }
},
{
"code": "#guma",
"name": "Guma za automobil",
"unit": "komad",
"unitPrice": 70.00,
"quantity": 4,
"vat": { "rate": 21 }
}
]Neto efekat: stornirate staru cijenu, pa dodate ispravnu.
4. Slanje
Bezgotovinski (i B2C kartica preko draft toka)
Isti flow kao običan račun: Brzi start.
# 1. Draft
curl -s -X POST "https://api.fiskalmn.me/api/invoices/draft" \
-H "Authorization: Bearer fk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ ... payload iznad ... }'
# 2. Fiskalizacija
curl -s -X POST "https://api.fiskalmn.me/api/invoices/{id}/fiscalize" \
-H "Authorization: Bearer fk_live_YOUR_KEY"
# 3. Poll dok status nije Fiscalized
curl -s "https://api.fiskalmn.me/api/invoices/{id}" \
-H "Authorization: Bearer fk_live_YOUR_KEY"Gotovinski (POS, jedan korak)
curl -s -X POST "https://api.fiskalmn.me/api/invoices/cash/create-and-print" \
-H "Authorization: Bearer fk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "Corrective",
"orderNumber": 0,
"typeOfInvoice": "Cash",
"paymentMethod": "CARD",
"paymentDeadline": "2026-09-23T12:00:00Z",
"items": [
{
"name": "Usluga",
"code": "SVC-001",
"unit": "kom",
"unitPrice": -25.00,
"quantity": -1,
"vat": { "rate": 21 }
}
],
"original": {
"id": "IIC_ORIGINALNOG_GOTOVINSKOG",
"issuedAt": "2026-09-22T10:15:00Z"
}
}'Bez original.id / original.issuedAt ovaj endpoint vraća 400.
Pravila
- Original mora biti fiskalizovan (ima IIC). Jedan original može imati više korektivnih.
typeOfInvoiceipaymentMethoduskladite sa originalom — inače 400 na validaciji plaćanja.- Ne šaljite
quantity: 0. - Na storno stavci
unitPriceide u minus zajedno saquantity. - IIC u
original.idkopirajte 1:1 (velika slova, bez razmaka). issuedAtmora odgovarati vremenu originala (milisekunde API skida sam).- Test:
fk_test_ključ; produkcija:fk_live_. Test i live računi se ne miješaju. - Sačuvajte
idkorektivnog uz originalnu narudžbu (originalInvoiceId/correctiveInvoiceId).
Greške
| Situacija | HTTP | Poruka |
|---|---|---|
Nema original na gotovinskom korektivnom | 400 | Obavezni su IIC i datum izdavanja originala |
quantity = 0 | 400 | Količina na korektivnom računu ne smije biti 0 |
Pogrešan paymentMethod za typeOfInvoice | 400 | Način plaćanja nije dozvoljen |
| Original nije fiskalizovan / nema IIC | — | Ne šaljite korektivni; prvo GET i provjerite status |
Nakon uspjeha: novi iic, fic, invoiceNumber, PDF na GET /api/invoices/{id}/pdf (gotovinski: /api/invoices/cash/{id}/pdf).