FiskalAPI — Dokumentacija

REST API za izdavanje fiskalnih računa u Srbiji (e-fiskalizacija Poreske uprave). Ovo je cela površina API-ja — jedan poziv za račun, po jedan za avans i refundaciju.

Osnovno

Bazni URLhttps://api.fiskalapi.rs
FormatJSON (Content-Type: application/json)
AutentikacijaAuthorization: Bearer <API_KLJUC>

Ključevi: live i test sandbox

Dobijaš dva ključa. fapi_test_… radi u sandbox režimu — pravi tok, probni računi, ne naplaćuje se i ne troši limit. fapi_live_… izdaje prave fiskalne račune. Isti pozivi, samo zameniš ključ.

Izdavanje računa

POST /api/racuni — promet prodaja (fiskalni račun)

curl https://api.fiskalapi.rs/api/racuni \
  -H "Authorization: Bearer fapi_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "nacinPlacanja": "Card",
    "items": [
      { "name": "Pretplata Pro", "quantity": 1, "unitPrice": 2400, "labels": ["А"] }
    ]
  }'

Odgovor 200

{
  "mode": "live",
  "brojRacuna": "NRXJ2JLE-XXXXXXXX-1",
  "qrKod": "data:image/png;base64,…",
  "verifikacija": "https://suf.purs.gov.rs/v/?vl=…",
  "zurnal": "…tekstualni fiskalni isečak…",
  "brojaci": { "invoiceCounter": 1, "totalCounter": 1 }
}

Polja zahteva

PoljeOpis
items[]Stavke: name, quantity, unitPrice (RSD), labels (poreske oznake), opciono gtin. Umesto stavki može i amountRsd + description.
payments[] / paymentTypeNačin plaćanja: Cash, Card, WireTransfer, Voucher, MobileMoney, Check, Other.
labelsPoreske oznake iz GET /api/status. Npr. А = Nije u PDV (0%), Ђ = opšta (20%), Е = posebna (10%).
buyerIdOpciono — identifikacija kupca (npr. "10:PIB") za račun na firmu.
transactionIdOpciono — tvoj ID; služi kao idempotency ključ (isti ID se ne fiskalizuje dvaput).

Avansni račun

POST /api/racuni/avans — za pretplate i uplate unapred. Ista struktura tela kao promet prodaja.

Refundacija

POST /api/racuni/refundacija — zahteva referentDocumentNumber (PFR broj originalnog računa) i referentDocumentDT.

Status i stope

GET /api/status — podaci obveznika, ESIR i aktuelne poreske stope (oznake i procenti). Uvek povlači stope od Poreske uprave — nikad ih ne kucaj ručno.

Potrošnja

GET /api/usage — broj računa, mesečni trošak i iskorišćenost limita za tekući mesec (opciono ?month=YYYY-MM).

Kodovi grešaka

KodZnačenje
401Nevalidan API ključ.
403Nalog nije aktivan ili je suspendovan (neizmirena obaveza).
402Dostignut mesečni limit računa.
400Neispravno telo zahteva (npr. zbir plaćanja ≠ iznos, nepoznata oznaka).
502Greška prema V-PFR-u Poreske uprave — ponovi zahtev.

Pitanja? Kontakt · Početna