Za programere

Fiskalizacija sa tvog servera, bez hardvera

Tezga je cloud ESIR koji radi sa virtuelnim procesorom fiskalnih računa Poreske uprave. Tvoja platforma pozove REST API, mi izdamo i fiskalizujemo račun i vratimo PFR broj, QR i PDF. Nema lokalne instalacije, uređaja ni čitača kartica.

ИБ odobrenog ESIR-a
1597ИБ odobrenog ESIR-a
bez lokalnog hardvera
V-PFRbez lokalnog hardvera
server-to-server
RESTserver-to-server

Prvi račun

curl -X POST https://pos.narbiz.com/api/integrations/order?provider=custom \
  -H "X-Tezga-Api-Key: tzg_…" \
  -H "Content-Type: application/json" \
  -d '{
    "externalId": "NALOG-1042",
    "tok": "fiskalni",
    "nacinPlacanja": "Kartica",
    "kupac": { "naziv": "Kupac", "email": "[email protected]" },
    "stavke": [
      { "naziv": "Paket od 10 časova", "kolicina": 1, "cenaSaPdv": 24000 }
    ]
  }'

Odgovor nosi fiskalni.pfrBroj, brojacRacuna, verifikacioniUrl i javniPdfUrl koji radi bez prijave.

22 pitanja koja nam integratori najčešće pošalju

Kako radi

Da li je Tezga cloud ESIR, bez lokalne instalacije i hardvera?
Za integraciju, jeste: tvoj server pozove naš API, mi fiskalizujemo preko virtuelnog procesora fiskalnih računa (V-PFR) Poreske uprave i vratimo podatke računa. Bez lokalnog softvera i bez hardvera kod tebe. Tezga uz to podržava i lokalni procesor (L-PFR) za obveznike koji prodaju u fizičkom objektu, jer njima zakon traži uređaj koji izdaje račun i pri prekidu internet veze; to je odvojen režim i ne menja ništa u API integraciji.
Postoji li direktan REST API, nezavisno od gotovih konektora?
Postoji, i on je prvi način rada, a ne dodatak. Konektori za WooCommerce i Shopify koriste isti API. Opis za alate je na /api/openapi.json (Postman, Swagger), a uputstvo za ljude na /api-dokumentacija.pdf.
Kako se zahtev autentikuje?
API ključem u zaglavlju X-Tezga-Api-Key. Ključeva može biti više, po jedan za svaku integraciju, i svaki se posebno pauzira ili opoziva. Svaki ključ sme da se veže za IP adrese tvog servera (pojedinačne ili CIDR opseg), pa ukraden ključ ne radi ni sa jednog drugog mesta. Opciono se telo dodatno potpisuje HMAC-SHA256 tajnom (X-Tezga-Signature). OAuth i mTLS ne nudimo.
Koje operacije API pokriva?
Izdavanje fiskalnog računa i eFakture, predračun koji se sam zatvara po uplati, avansni račun i zatvaranje avansa, storno i refundaciju (punu i po stavkama), kopiju računa, stanje dokumenta sa svim fiskalnim podacima, poreske oznake naloga i bankovne transakcije.
Šta dobijam u odgovoru kad se račun izda?
PFR broj, vreme, brojač računa, ESIR broj, verifikacioni URL i sadržaj QR koda, plus javni link računa i PDF koji radi bez prijave. Dovoljno da sam odštampaš račun ili ga pošalješ kupcu.

Pouzdanost

Šta se dešava kada V-PFR Poreske uprave nije dostupan?
Dokument se izda i ne gubi se, a odgovor je HTTP 202 sa ok:false i porukom. Tezga zatim SAMA ponavlja fiskalizaciju u razmacima i, kad prođe, javi ti webhook-om; stanje možeš i sam pročitati kroz GET /documents/:id. Izuzetak je neizvestan ishod (Poreska je račun primila, a upis kod nas nije uspeo): tada se ne ponavlja automatski, jer bi država dobila drugi račun za isti promet. Rad bez internet veze na V-PFR putu ne postoji, jer virtuelni procesor po definiciji radi kroz stalnu vezu; obveznik kome to treba ide na lokalni procesor (L-PFR) u svom objektu.
Kako se sprečava dupli račun?
Svaki zahtev nosi tvoj externalId. Isti externalId nikad ne pravi drugi račun nego vraća postojeći, i kad dva zahteva stignu istovremeno. Zaštita je u samom API-ju, ne u konektoru.
Postoje li webhook obaveštenja?
Postoje. Tezga šalje POST na tvoju adresu za događaje: racun.fiskalizovan, racun.greska, refundacija.izvrsena, storno.izvrsen. Telo je potpisano HMAC-om, a ako tvoj server ne odgovori, slanje se ponavlja posle 1, 5, 15, 60, 360 minuta.
Postoji li ograničenje broja zahteva?
Podrazumevano 120 zahteva u minuti po firmi za izdavanje i refundaciju i 240 za čitanje. Svaki odgovor nosi X-RateLimit-Limit, X-RateLimit-Remaining i X-RateLimit-Reset, a 429 i Retry-After. Ograničenje je vezano za nalog, ne za kod: ako imaš najavljen vrh, na primer početak prodaje ulaznica za veliki događaj, javi nam očekivani broj računa u minuti pa ga podižemo pre nego što krene prodaja.
Pod kojim odobrenjem Tezga radi?
Rešenje Poreske uprave 000-092-00-00123/2026-0000 od 03.07.2026, ИБ 1597, verzija 1.1, kao ESIR koji radi sa V-PFR-om.

Prodaja na daljinu i ulaznice

Kako izgleda tok kod prodaje na daljinu, na primer ulaznica?
Kupac plati karticom kod svog platnog posrednika, tvoj bekend sačeka potvrdu uplate i tek onda pošalje jedan POST na /api/integrations/order sa svojim brojem porudžbine. Mi izdamo i fiskalizujemo račun i u istom odgovoru vratimo PFR broj, brojač, QR i link na PDF. Račun kupcu ili šaljemo mi, ili ga ti preuzmeš sa javnog linka i ušteš u svoju potvrdu o kupovini.
Prodajem u ime organizatora događaja, kako to izgleda kod vas?
Tehnički: račun uvek nosi PIB firme čiji je nalog, jer se izdaje njenim bezbednosnim elementom. Ako je prodavac tvoja platforma, sve staje u jedan nalog. Ako svaki organizator izdaje svoj račun, onda je svaki organizator svoj nalog, sa svojim bezbednosnim elementom i svojom pretplatom, a tvoj sistem samo bira ključ kojim šalje porudžbinu. Ko je od vas dvoje izdavalac računa nije naša odluka nego stvar tvog ugovora sa organizatorom i mišljenja tvog knjigovođe; oba rasporeda podržavamo.
Kako se radi povraćaj novca za otkazanu ulaznicu?
POST /api/integrations/refund, po našem documentId ili po tvom broju porudžbine. Za otkaz u celosti koristi se "vrsta":"storno" i ne traži dodatne podatke. Za povraćaj dela iznosa koristi se "vrsta":"refundacija" sa listom stavki, a tu naš API traži identifikaciju kupca: uzima je sa originala ako je ima, a kad je nema (kupac fizičko lice bez PIB-a) mora da stigne polje "kupacIdBroj". Bez njega odgovor je 422 sa jasnom porukom, ne tiho odbijanje.
Da li kupac mora da dobije papirni račun?
Ne mora. Kod prodaje na daljinu račun se isporučuje elektronski: mi ga šaljemo na mejl kupca ako pošalješ posaljiMejl:true, ili ga ti preuzmeš kao PDF sa javnog linka iz odgovora i prikažeš ga u nalogu kupca i u svojoj potvrdi. Link radi bez prijave i bez API ključa, pa sme direktno u mejl.

Bezbednosni element i nalozi

Koristi se moj bezbednosni element ili tražite novi?
Koristi se tvoj, koji ti je Poreska već izdala, u obliku .pfx fajla. Predaješ ga sam u Podešavanja → Fiskalizacija (fajl, lozinka i PAK); čuva se šifrovan i ne napušta server. Pametna kartica nam ne treba, ona je za hardverske uređaje.
Kako se rešava više portala ili više poslovnih prostora?
Više portala pod istim poslovnim prostorom radi kroz istu firmu, svaki sa svojim API ključem, bez dodatne licence. Poseban poslovni prostor sa svojim bezbednosnim elementom je posebna firma u nalogu, sa svojom pretplatom; prebacivanje je jedan klik.
Kako izgleda test pre produkcije?
Test se radi na zvaničnom sandbox okruženju Poreske uprave, sa test bezbednosnim elementom koji ona izdaje. U Podešavanjima upišeš sandbox adresu i test sertifikat, a prelazak na produkciju je zamena adrese i sertifikata. API ključ i tvoj kod ostaju isti.
Kako se čuvaju poreske stope ako nisam u sistemu PDV-a?
Nalog se označi kao neobveznik i Tezga svaku stavku evidentira kao oslobođenu, bez obzira na stopu koju pošalješ. Šta nalog koristi možeš pročitati i kroz GET /api/integrations/tax-labels.

Cena i rokovi

Koji paket je potreban za direktan API pristup?
API je uključen u svaki paket, bez doplate za web shop modul. Za prodaju na daljinu obično je dovoljan Start (1.190 RSD mesečno); Biznis je potreban tek ako izdaješ e-fakture firmama preko SEF-a.
Ima li ugovorne obaveze i otkaznog roka?
Nema ni jednog ni drugog. Pretplata se plaća unapred za tri, šest ili dvanaest meseci i ne obnavlja se sama. Ako ne produžiš, pristup prestaje po isteku, a podaci ostaju za izvoz.
Koliko traje integracija?
Do prvog test računa obično pola radnog dana uz spremnog programera: jedan poziv za izdavanje, jedan za proveru stanja, jedan za storno. Pristup okruženju je isti dan, a prelazak na produkciju je promena podešavanja, ne novi razvoj.
Šta je na vama, a šta na meni?
Na nama: aktivacija, ispravnost fiskalizacije po rešenju Poreske uprave, dokumentacija i podrška pri integraciji. Na tebi: nalog i uplata, predaja bezbednosnog elementa i PAK-a, tvoj kod i odluka o prelasku na produkciju.

Nešto nije odgovoreno?

Piši nam sa opisom scenarija (šta prodaješ, ko su kupci, kako se plaća) i odgovorićemo konkretno, sa primerima poziva za tvoj slučaj.

[email protected]