English versionPDF verzija

Sadržaj

ELV LPFR — Vodič za integraciju ESIR-a

Za koga je: programeri i tehničari ESIR softvera (fiskalne kase) koji su kupili licencu za ELV LPFR i povezuju svoj ESIR sa njim.
Proizvod: ELV LPFR, verzija 2 · akreditacija Poreske uprave #1698 · šifra proizvođača 8S-0002 · proizvođač ELV d.o.o.
Podrška: [email protected]

Veb verzija: https://allurepos.com/lpfr-api.html

Ukratko

  • ELV LPFR je program za Windows. Radi na računaru na kome je čitač sa karticom Bezbednosnog elementa.
  • ESIR mu šalje zahteve preko HTTP-a, na adresu http://localhost:8888/api/v3.
  • Posle svakog pokretanja kartica je zaključana. ESIR ili operater mora da unese PIN.
  • Račun se potpisuje pozivom POST /api/v3/invoices. Odgovor sadrži broj računa, žurnal, QR kod i potpis.
  • ESIR štampa žurnal i QR kod i čuva ceo odgovor.
  • Svaki račun šaljite sa zaglavljem RequestId. Ako se odgovor izgubi, račun preuzmite sa GET /api/v3/invoices/{RequestId}. Ne šaljite ga ponovo naslepo.
  • Stanje uređaja čitajte sa GET /api/v3/status (polja gsc i mssc).

1. Šta vam treba

ŠtaDetalji
Računar sa Windows-omU poslovnom prostoru obveznika. ELV LPFR radi samo na Windows-u (proveren sa Gemalto USB čitačem). Linux i macOS nisu podržani. Ništa se ne instalira: ceo servis je jedan program, ELV-LPFR.exe.
Čitač pametnih kartica (PC/SC)Bilo koji PC/SC čitač. Dovoljan je ugrađeni Windows servis „Smart Card". Poseban drajver nije potreban.
Kartica Bezbednosnog elementa (BE)Izdaje je Poreska uprava. Za razvoj i probu: kartica za testiranje (sandbox). Za rad kod obveznika: produkciona kartica.
PIN karticeTačno četiri cifre. Unosi se posle svakog pokretanja.
Aktivacioni kod licence16 znakova u četiri grupe po četiri (oblik: K7QM-2XRA-9PDT-4HW8). Stiže e-poštom i nalazi se u „Moje licence". 1 kod = 1 kartica = 12 meseci od aktivacije. Kod radi samo za kartice PIB-a na koji je kupljen. Kartici za testiranje licenca nije potrebna.
Licenca prati karticuLicenca je vezana za karticu (JID i PIB), ne za računar. Ako preselite karticu na drugi računar (tamo pokrenite ELV-LPFR-Setup.exe i prenesite folder sa podacima C:\ProgramData\ELV LPFR\, uz zaustavljen ELV LPFR na starom računaru), licenca i dalje važi. Jedna kartica ne može da radi na dva računara istovremeno, jer je fizički jedna.
Programski paketU „Moje licence" (https://allurepos.com/lpfr.html) je paket „Produkcija", već podešen za stvarno okruženje SUF-a (ne menjate ništa). Uz paket je i njegov SHA-256 otisak. Test paket za karticu za testiranje (sandbox, paket koji je pregledala Poreska uprava) šalje podrška na zahtev: [email protected].
Pristup „Moje licence"Prijava e-adresom sa kojom je licenca kupljena. Na tu adresu stiže kod za prijavu (6 cifara). Ako e-pošta sa aktivacionim kodovima nije stigla, proverite neželjenu poštu (spam), pa pišite podršci.
InternetZa slanje podataka Poreskoj upravi (SUF), za preuzimanje poreskih stopa i za licencu (https://licenca.allurepos.com, port 443). Računi se izdaju i bez interneta. Prvo pokretanje ipak mora da preuzme poreske stope sa SUF-a.
Nalog korisnika Windows-aELV LPFR radi u sesiji prijavljenog korisnika, ne kao Windows servis. Aktivacija koda i uključivanje rada na mreži traže potvrdu Administratora (UAC).
Tačan satSat računara mora biti usklađen sa vremenskim serverom. Ako je sat ispred tačnog vremena više od 5 minuta, potpisivanje se odbija.
Prostor na diskuOko 21,6 KB po računu. Ispod 100 MB slobodnog prostora novi računi se ne izdaju.

2. Instalacija za 5 minuta

  1. Izaberite pravi paket:

    • za produkcionu karticu preuzmite paket „Produkcija" u „Moje licence";
    • za karticu za testiranje zatražite test paket od podrške: [email protected].

    Nikada ne pokrećite test paket (od podrške) sa produkcionom karticom, niti paket „Produkcija" sa karticom za testiranje. ELV LPFR odbija neusklađeno okruženje (mssc 8215) samo između sopstvenih podešavanja. Karticu sa paketom ne poredi. Zato je izbor paketa vaš posao.

    Po želji proverite otisak preuzetog fajla i uporedite ga sa vrednošću u „Moje licence":

    certutil -hashfile <preuzeti-paket>.zip SHA256
  2. Raspakujte ceo ZIP u bilo koji folder, na primer u Preuzimanja. Ne pokrećite program iz samog ZIP-a. Taj folder služi samo za instalaciju: program i podaci posle toga žive na stalnim mestima iz koraka 6. Važno: pri prvoj instalaciji Setup preuzima podešavanja, među njima adresu SUF-a (produkcija ili test), iz fajla .env koji je u istom folderu kao ELV-LPFR-Setup.exe. Zato pokrenite Setup iz raspakovanog foldera onakvog kakav jeste i ne odvajajte ELV-LPFR-Setup.exe od njegovog .env. Bez tog .env (Setup pokrenut iz samog ZIP-a, bez raspakivanja, ili kopiran sam) Setup prvu instalaciju odbija i ne instalira ništa. Postojeća instalacija pri ažuriranju zadržava sopstvena podešavanja.

  3. Umetnite karticu u čitač.

  4. Dvoklik na ELV-LPFR-Setup.exe. Windows traži potvrdu Administratora: potvrdite je. To je jedino pitanje te vrste pri instalaciji. Prozor Setup-a ne zatvarajte dok ne završi.

  5. Windows SmartScreen može jednom da prikaže „Windows je zaštitio vaš računar". Kliknite „Više informacija", pa „Pokreni svakako". To se radi jednom po računaru.

  6. Instalacija se završi za nekoliko sekundi. Program i njegova podešavanja (.env) se postavljaju u C:\Program Files\ELV LPFR\, a podaci (baza lpfr.sqlite, licenca) u C:\ProgramData\ELV LPFR\. ELV LPFR se pokreće sam, bez prozora, pri svakoj prijavi korisnika na Windows, a operaterska stranica se otvara. Svaki korak se upisuje u C:\ProgramData\ELV LPFR\instalacija.log (to pošaljite podršci ako nešto pođe naopako). Setup ispisuje i red SUF: … (PRODUKCIJA / production), SUF: … (TEST / sandbox) ili SUF: … (nepoznato / unknown), a kada adresa SUF-a nije podešena, SUF: (nije podesen / not set). Da je okruženje pravo (test ili produkcija) vidite i u odgovoru status ispod: polje "taxCoreApi" sa paketom „Produkcija" ne sadrži sandbox, a sa test paketom (od podrške) je https://api.sandbox.suf.purs.gov.rs.

  7. Operaterska stranica http://localhost:8888/ otvara se sama u pregledaču. Na vrhu piše „Unesite PIN kartice". Upišite PIN i kliknite „Otključaj karticu".

    Šta treba da vidite: stranica najavljuje „Windows će posle toga tražiti isti PIN još jednom."

  8. Odmah zatim Windows otvara svoj prozor „Smart Card" i traži isti PIN još jednom. Unesite ga i potvrdite. Bez toga se računi izdaju, ali podaci ne stižu Poreskoj upravi. Ako ne vidite prozor, pogledajte traku zadataka.

    Šta treba da vidite: obaveštenje „Konfiguracija preuzeta sa SUF-a: …" i, na vrhu, „Spremno za izdavanje računa".

  9. Licenca: na operaterskoj stranici otvorite odeljak „Licenca" → „Aktivacioni kod od prodavca". Upišite kod, kliknite „Aktiviraj" i potvrdite Windows prozor Administratora. Potreban je internet. Sa karticom za testiranje stanje licence je „Nije potrebna" i ovaj korak preskačete.

  10. Automatsko pokretanje je već uključeno instalacijom. Posle ponovnog pokretanja ELV LPFR-a (ili računara) ponovo unesite PIN (koraci 7 i 8). Po potrebi operatersku stranicu otvorite ručno: http://localhost:8888/. Posle instalacije ne koristite ni pokreni.cmd, ni autostart-ukljuci.cmd, ni autostart-iskljuci.cmd, ni ELV-LPFR.exe iz ZIP foldera ni iz starog foldera: ELV LPFR se pokreće sam iz C:\Program Files\ELV LPFR\.

Posebni slučajevi instalacije:

  • Ažuriranje: raspakujte novi paket i pokrenite novi ELV-LPFR-Setup.exe. ELV LPFR se zaustavlja uredno (račun koji je u toku se završava), prethodni program ostaje sačuvan u C:\Program Files\ELV LPFR\prethodna-verzija\, program se zamenjuje, a podaci, licenca i podešavanja (.env, mrežna i ESIR podešavanja) ostaju; automatsko pokretanje ostaje za istog korisnika Windows-a. Ako se ELV LPFR ne može zaustaviti, ako je otvoren još jedan prozor ELV LPFR-a ili ako je instalirana novija verzija od one u Setup-u, ništa se ne menja i Setup kaže zašto. Ako kopiranje ne uspe, prethodna verzija se vraća.
  • Ranija instalacija iz ZIP-a (0.8.2–0.8.7): Setup je pronalazi. Taj folder ostaje folder sa podacima (ništa se ne premešta i ne briše), a program se zatim pokreće iz C:\Program Files\ELV LPFR\. Taj folder sada čuva fiskalne podatke ELV LPFR-a (lpfr.sqlite, licenca): nikada ga ne brišite i ne premeštajte, čak ni kada je u Preuzimanja ili na radnoj površini. Kada se usvajanje završi, iz tog foldera više ništa ne pokrećite: ni pokreni.cmd, ni autostart-ukljuci.cmd, ni autostart-iskljuci.cmd, ni ELV-LPFR.exe. Stari autostart-iskljuci.cmd (0.8.2–0.8.7) briše zadatak „ELV LPFR“ koji je napravio Setup, pa se ELV LPFR posle sledeće prijave ne bi pokrenuo. Ako takvih foldera ima više od jednog, Setup staje i traži da se obratite podršci ([email protected]).
  • Zaštita od druge instalacije: posle instalacije ELV-LPFR.exe 0.8.8 ili noviji pokrenut iz bilo kog drugog foldera ne radi (izlazni kod 5) i javlja gde je ELV LPFR instaliran. Tako ne može da nastane druga instalacija bez podataka i licence. Stari ELV-LPFR.exe (0.8.2–0.8.7) u folderu koji je Setup preuzeo nema tu proveru: ne pokrećite ga. autostart-ukljuci.cmd i autostart-iskljuci.cmd iz paketa 0.8.8 (novi ZIP) ne menjaju automatsko pokretanje instaliranog ELV LPFR-a. Tu proveru imaju samo primerci iz paketa 0.8.8: stari (0.8.2–0.8.7) je nemaju, a stari autostart-iskljuci.cmd briše zadatak instaliranog ELV LPFR-a. Zato se iz starog foldera ne pokreće ništa.
  • Računar sa AllurePOS kasom: Setup nije potreban i ne instalira ništa (kasa ima sopstveni ELV LPFR).

Kada je sve u redu, operaterska stranica pokazuje:

  • na vrhu: „Spremno za izdavanje računa";
  • u odeljku „Licenca": stanje „Važeća" i datum „Važi do" (sa karticom za testiranje: „Nije potrebna");
  • u panelu „Uređaj": „Pristup za ESIR" = „Samo ovaj računar" (osim ako ste uključili rad na mreži, poglavlja 3.2 i 3.6);
  • obaveštenje da su poreske stope i adresa za verifikaciju preuzete sa SUF-a.

Provera iz komandne linije. Na Windows-u uvek kucajte curl.exe, a ne curl: u PowerShell-u je curl drugi program, koji ne prikazuje telo odgovora kada stigne greška. Na novoj instalaciji prvi /status može da traje do oko 30 sekundi (čeka podatke sa SUF-a), zato --max-time 60.

curl.exe -i http://localhost:8888/api/v3/attention
curl.exe http://localhost:8888/api/v3/device-info
curl.exe --max-time 60 http://localhost:8888/api/v3/status

Šta treba da vidite:

  • attention: HTTP/1.1 200 OK, bez tela odgovora.
  • device-info: "manufacturerCode":"8S-0002", "softwareVersion":"verzija 2", "productName":"ELV LPFR".
  • status: "gsc":["0100"], "mssc":[]. Polje "taxCoreApi" sa paketom „Produkcija" ne sadrži sandbox.

2.1 Kako se menja .env

Neka podešavanja (port, čitač, rad na mreži) su u fajlu .env.

  1. Fajl .env je pored programa: C:\Program Files\ELV LPFR\.env (i kod ranije instalacije iz ZIP-a koju je Setup preuzeo; .env u starom folderu se više ne čita). Već sadrži sve redove koji se pominju u ovom vodiču (PORT=8888, PCSC_READER_NAME=, LPFR_LISTEN=, ESIR_TOKEN=, a od izdanja paketa 0.8.6 i LPFR_LAN_TRUST=). Neki su prazni.
  2. Otvorite ga u Notepad-u pokrenutom kao Administrator (Windows štiti folder Program Files; bez toga se izmena ne može sačuvati).
  3. Upišite vrednost iza znaka = u postojećem redu. Ne dodajte isti red drugi put.
  4. Sačuvajte fajl u kodiranju UTF-8.
  5. Ponovo pokrenite ELV LPFR (2.2). Vrednosti se čitaju samo pri pokretanju.

Ostale redove ne menjajte. Paket je već podešen za svoje okruženje.

2.2 Zaustavljanje i ponovno pokretanje

  • U Task Manager-u (Upravljač zadacima) pronađite ELV-LPFR.exe i završite zadatak. Uradite to kada se ne izdaje račun. Zatim se odjavite i ponovo prijavite na Windows (ELV LPFR se pokreće sam).
  • Posle svakog pokretanja ponovo unesite PIN.
  • Foldere sa podacima nikada ne brišite.

2.3 Nova verzija programa

  • Pokrenite novi ELV-LPFR-Setup.exe (opis: odeljak „Posebni slučajevi instalacije“ u ovom poglavlju, stavka „Ažuriranje“). Ne kopirajte fajlove ručno preko instalacije.
  • Podaci (.env, lpfr.sqlite, folder licenca\) ostaju na svom mestu i ne smeju se izgubiti.
  • Ako nešto pođe naopako, pošaljite C:\ProgramData\ELV LPFR\instalacija.log podršci ([email protected]).

3. Povezivanje ESIR-a

ELV LPFR ima tri režima pristupa za ESIR. Trenutni režim piše na operaterskoj stranici, panel „Uređaj" → „Pristup za ESIR".

RežimKo može da šalje zahteveX-ESIR-TokenPoglavlje
„Samo ovaj računar" (podrazumevano)Samo programi na računaru sa ELV LPFR-om (127.0.0.1, ::1)ne3.1
„Mreža (LAN)"I drugi računari u mrežida, za svaki zahtev sa drugog računara3.2
„Lokalna mreža ovog računara (bez tokena)"I uređaji iz iste privatne podmreže kao ovaj računar, na primer telefon sa aplikacijom „ESIR Poreska uprava RS"ne iz te podmreže; da za sve ostale3.6
  • Za telefon ili tablet sa aplikacijom Poreske uprave postoji jedno dugme: „Poveži telefon ili tablet (ESIR Poreske uprave)" (3.6). Dugme „Isključi pristup sa mreže (Administrator)" vraća „Samo ovaj računar".
  • Režim sa tokenom je u odeljku „Napredno: ESIR sa tokenom", dugmad „Dozvoli ESIR-e sa mreže (Administrator)" i „Samo ovaj računar (Administrator)" (3.2).
  • Svaka promena traži potvrdu Administratora Windows-a (UAC) i važi odmah, bez ponovnog pokretanja. Ako ne može odmah (na primer port drži drugi program), podešavanje se čuva, a stranica kaže „Promena važi posle ponovnog pokretanja ELV LPFR-a." Tada ELV LPFR ponovo pokrenite (2.2).
  • Isti korak Administratora pravi i pravilo zaštitnog zida Windows-a „ELV LPFR (ESIR)": dolazne TCP veze na port ELV LPFR-a, za sve mrežne profile. U režimu bez tokena pravilo važi samo za lokalnu podmrežu, a u režimu „Mreža (LAN)" za sve adrese. Povratak na „Samo ovaj računar" briše pravilo.
  • Kada je režim podešen u .env (LPFR_LISTEN), stranica ga ne menja. Piše: „Režim je podešen u .env (LPFR_LISTEN) i menja se tamo, ne na ovoj stranici."
  • Izdanje paketa piše u „Moje licence" („Izdanje paketa"). Jedno dugme i promena bez ponovnog pokretanja postoje od izdanja 0.8.7. Izdanje 0.8.6 ima treći režim i pravilo zaštitnog zida, ali sa posebnim dugmadima i uz ponovno pokretanje posle svake promene. Stariji paketi znaju samo prva dva režima.

3.1 ESIR na istom računaru (podrazumevano)

Osnovna adresa je http://localhost:8888/api/v3 (ili http://127.0.0.1:8888/api/v3). Token nije potreban. Ništa se ne podešava.

  • U podrazumevanom režimu ELV LPFR sluša samo na 127.0.0.1 i ::1.
  • Zahtev na mrežnu adresu računara (npr. http://192.168.1.20:8888), čak i sa istog računara, zato ne dobija nikakav HTTP odgovor: veza se odbija. Token se tada uopšte ne proverava. Pravilo o tokenu važi samo u radu na mreži (3.2 i 3.6).
  • Zahtev na neko drugo ime koje pokazuje na 127.0.0.1 dobija HTTP 403. To je zaštita od veb-stranica koje se predstavljaju kao lokalni program. Dozvoljeni su localhost, 127.0.0.1 i ime računara.
  • Port se menja u .env (PORT, poglavlje 2.1). Tada se menja i adresa operaterske stranice.

3.2 ESIR na drugom računaru (rad na mreži, LAN) [ELV]

Podrazumevano ELV LPFR prima zahteve samo sa računara na kome radi. ESIR koji ne može da šalje token (na primer aplikacija „ESIR Poreska uprava RS" na telefonu) povežite po poglavlju 3.6. Za ESIR na drugom računaru:

  1. Uključite rad na mreži, na jedan od dva načina:
    • na operaterskoj stranici, panel „Uređaj" → „Napredno: ESIR sa tokenom" → „Dozvoli ESIR-e sa mreže (Administrator)", pa potvrdite Windows prozor Administratora. ELV LPFR sam pravi token i pravilo zaštitnog zida (korak 5). Do izdanja 0.8.6 dugme je direktno u panelu „Uređaj".
    • ili u .env (poglavlje 2.1) popunite LPFR_LISTEN=lan i ESIR_TOKEN=<najmanje 16 znakova>. Vrednost iz .env ima prednost nad stranicom.
  2. Promena na stranici važi odmah (izdanje 0.8.7 ili novije). Ponovo pokrenite ELV LPFR (2.2) posle promene u .env, sa starijim paketom, ili kada stranica kaže „Promena važi posle ponovnog pokretanja ELV LPFR-a."

    Šta treba da vidite: na stranici „Pristup za ESIR" = „Mreža (LAN)"; posle pokretanja u ispisu L-PFR on *:8888 (LAN, X-ESIR-Token; UID …, SUF …, BE pcsc).

  3. Na računaru sa ELV LPFR-om, na operaterskoj stranici, kliknite „Prikaži" pored „Deljeni token (X-ESIR-Token)". Prepišite token u podešavanja ESIR-a.
  4. U ESIR-u podesite adresu http://<IP-adresa-računara-sa-ELV-LPFR-om>:8888/api/v3. Svaki zahtev mora da nosi zaglavlje X-ESIR-Token: <token>.
  5. Zaštitni zid Windows-a na računaru sa ELV LPFR-om mora da propusti dolazne TCP veze na port 8888. Kada rad na mreži uključite na stranici, pravilo „ELV LPFR (ESIR)" je već napravljeno i ovaj korak preskačete. Ručno pravilo treba samo kada je režim podešen u .env (ili sa paketom starijim od 0.8.6). Primer komande (pokrenuti kao Administrator):
    netsh advfirewall firewall add rule name="ELV LPFR 8888" dir=in action=allow protocol=TCP localport=8888

    Šta treba da vidite: Windows odgovara Ok.

Probni poziv sa računara na kome je ESIR:

curl.exe --max-time 60 http://192.168.1.20:8888/api/v3/status -H "X-ESIR-Token: <token>"

Šta treba da vidite: JSON sa poljima "gsc" i "mssc". Bez tokena ili sa pogrešnim: {"message":"Unauthorized"} (HTTP 401).

Više ESIR-a na jedan ELV LPFR je dozvoljeno. Više kasa sa drugih računara može da radi sa istim ELV LPFR-om preko mreže. Sve koriste isti token. RequestId mora biti jedinstven za sve kase zajedno (na primer sa oznakom kase na početku), jer ELV LPFR ima jednu zajedničku bazu.

Šta još treba da znate:

  • Zahtev bez tokena ili sa pogrešnim tokenom ne stiže ni do jedne funkcije ELV LPFR-a.
  • Ako je rad na mreži zatražen, a token od bar 16 znakova nije podešen, ELV LPFR ostaje na „Samo ovaj računar". To javlja na operaterskoj stranici.
  • Programi na samom računaru sa ELV LPFR-om i dalje rade preko localhost, bez tokena.
  • Windows prozor „Smart Card" za drugi unos PIN-a (korak 8 u poglavlju 2) uvek se pojavljuje na računaru sa ELV LPFR-om. Posle svakog pokretanja neko mora tamo da ga potvrdi.
  • Blokada unosa PIN-a (poglavlje 6.4) otključava se samo na operaterskoj stranici tog računara.

3.3 Zaglavlja HTTP zahteva

ZaglavljeKadaIzvorNapomena
Content-Type: application/jsonPOST /invoices, POST /local-readout, POST /local-readout/applyPURSBez njega telo zahteva se ne čita i zahtev se odbija.
Accept-LanguagePOST /invoicesPURSen ili bilo koje en-… (npr. en-US) daje žurnal na engleskom. sr, sr-… (i sr-Latn-RS), *, nepoznat jezik ili bez zaglavlja daju srpski, ćirilicom. Žurnala na latinici nema.
RequestIdPOST /invoices (preporuka: uvek)PURSVaš jedinstveni ID zahteva. Vraća se u zaglavlju odgovora. Služi za GET /invoices/{RequestId}.
X-ESIR-Tokensvaki zahtev sa drugog računaraELVSamo u radu na mreži. U režimu „Lokalna mreža ovog računara (bez tokena)" ne šalju ga uređaji iz podmreže ovog računara (3.6).

Telo zahteva šaljite u kodiranju UTF-8. Poreske oznake mogu biti ćirilične (npr. Ж).

3.4 ESIR u veb-pregledaču ili u Electron / Tauri / WebView aplikaciji [ELV]

  • ELV LPFR ne šalje CORS zaglavlja (Access-Control-Allow-*). Veb-stranica sa druge adrese zato ne može direktno da čita njegove odgovore.
  • Svaki prikaz zasnovan na pregledaču šalje zaglavlje Origin. To važi i za renderer u Electron-u, Tauri-ju i WebView-u.
  • POST /pin sa tuđim zaglavljem Origin dobija HTTP 403 {"ok":false,"reason":"cross-origin"}.
  • Rešenje: ELV LPFR pozivajte iz pozadinskog dela ESIR-a (server, glavni proces Electron-a, Rust deo Tauri-ja, lokalni servis), ne iz JavaScript-a u prikazu.

3.5 Vreme čekanja i ponovno slanje

  • ELV LPFR ne prepoznaje duplikate. Isti račun poslat dva puta daje dva fiskalna računa. Nikada ne ponavljajte POST /invoices naslepo.
  • Svaki račun šaljite sa novim, jedinstvenim RequestId.
  • Vreme čekanja u ESIR-u postavite na najmanje 30–60 sekundi. Na novoj instalaciji prvi zahtev može da sačeka preuzimanje podataka sa SUF-a (do 15 sekundi po pozivu, dva poziva). I potpisivanje karticom traje.
  • Kada odgovor ne stigne (isteklo vreme, prekinuta veza):
    1. pozovite GET /api/v3/invoices/{RequestId};
    2. HTTP 200: račun je izdat. Koristite taj odgovor;
    3. HTTP 404: račun nije sačuvan. Pre novog slanja pogledajte GET /status. Ako mssc sadrži 8204 (potpisivanje prekinuto, oporavak u toku), sačekajte da šifra nestane i ponovite korak 1;
    4. tek tada pošaljite račun ponovo, sa novim RequestId. Zapamtite oba ID-ja uz isti račun u ESIR-u.
  • Greška 2220 (kartica prestala da odgovara usred potpisivanja) rešava se na isti način.
  • GET /invoices/{RequestId} radi samo sa karticom u čitaču i unetim PIN-om. Posle restarta prvo unesite PIN.
  • Grešku 2400 ne ponavljajte automatski. Prvo pročitajte mssc (poglavlje 6.3).
  • POST /pin ne šaljite u petlji. ELV LPFR propušta najviše jedan pokušaj u sekundi. Posle dva uzastopna pogrešna PIN-a zaustavlja dalji unos.

3.6 Uređaji iz lokalne mreže bez tokena (ESIR aplikacija Poreske uprave) [ELV]

Aplikacija Poreske uprave „ESIR Poreska uprava RS" (Google Play) za telefon i tablet traži samo protokol, IP adresu i port L-PFR-a. Zaglavlje X-ESIR-Token ne može da pošalje. Za takav ESIR služi režim „Lokalna mreža ovog računara (bez tokena)". Potreban je paket ELV LPFR 0.8.6 ili noviji. Jedno dugme i promena bez ponovnog pokretanja postoje od izdanja 0.8.7.

Kako radi:

  • Uređaj čija je IPv4 adresa u istoj privatnoj podmreži (10.x.x.x, 172.16–31.x.x, 192.168.x.x) kao jedna od mrežnih kartica ovog računara ne šalje token.
  • Uređaj iz druge podmreže, preko VPN-a, sa javnom adresom ili preko IPv6 i dalje mora da šalje X-ESIR-Token. Zato ELV LPFR i u ovom režimu pravi token („Prikaži" pored „Deljeni token (X-ESIR-Token)"). Bez tokena takav zahtev dobija HTTP 401. Takav uređaj, uz token, traži i ručno pravilo zaštitnog zida iz 3.2 (korak 5), jer pravilo koje pravi stranica u ovom režimu propušta samo lokalnu podmrežu. Napravite ga posle promene režima na stranici, jer od izdanja 0.8.7 stranica pri svakoj promeni briše pravilo „ELV LPFR 8888".
  • Programi na samom računaru sa ELV LPFR-om i dalje rade preko localhost, bez tokena.

Uključivanje (izdanje 0.8.7 ili novije):

  1. Na operaterskoj stranici, panel „Uređaj", kliknite „Poveži telefon ili tablet (ESIR Poreske uprave)". Stranica prvo traži potvrdu, sa upozorenjem „Svaki uređaj u lokalnoj mreži ovog računara, i gost na istoj bežičnoj mreži, moći će da izdaje račune dok je PIN unet." Potvrdite, pa potvrdite i jedan Windows prozor Administratora. Taj jedan korak:
    • uključuje režim „Lokalna mreža ovog računara (bez tokena)";
    • pravi pravilo zaštitnog zida „ELV LPFR (ESIR)", samo za lokalnu podmrežu;
    • briše preusmeravanja porta (netsh interface portproxy, sve četiri vrste) na portu ELV LPFR-a;
    • briše staro ručno pravilo „ELV LPFR 8888". Pravila sa drugim imenima ostaju.
  2. Promena važi odmah, bez ponovnog pokretanja.

    Šta treba da vidite: „Pristup sa mreže je uključen, odmah, bez ponovnog pokretanja." i „Pristup za ESIR" = „Lokalna mreža ovog računara (bez tokena)". Ako stranica umesto toga kaže „Promena važi posle ponovnog pokretanja ELV LPFR-a." (na primer port drži drugi program), podešavanje je sačuvano: ponovo pokrenite ELV LPFR (2.2).

  3. Stranica zatim pokazuje šta se upisuje u aplikaciju: „U aplikaciji „ESIR Poreska uprava RS": PFR server → L-PFR · HTTP · <adresa> · port <port>". Adresa je privatna IPv4 adresa prave mrežne kartice ovog računara. Virtuelni adapteri (na primer vEthernet ili WSL) se ne prikazuju. Ispod je savet za DHCP rezervaciju: u ruteru zaključajte tu adresu za ovaj računar.
  4. Povežite telefon ili tablet na istu mrežu kao računar sa ELV LPFR-om. U aplikaciji „ESIR Poreska uprava RS" izaberite PFR server → L-PFR, protokol HTTP, adresu sa stranice i port 8888. Token se ne unosi.
  5. Kliknite „Proveri vezu" (Administrator nije potreban). Spisak sa ✓ i ✗ pokazuje: da li ELV LPFR prima zahteve sa mreže (port); da li postoji pravilo zaštitnog zida „ELV LPFR (ESIR)" (samo lokalna mreža ili sve adrese); da nema preusmeravanja porta (portproxy), jer bi sa njim telefon dobio grešku 403; adresu ovog računara u lokalnoj mreži. Kod svakog ✗ piše da kliknete „Poveži telefon ili tablet".

Isključivanje: „Isključi pristup sa mreže (Administrator)" vraća „Samo ovaj računar", takođe odmah, i briše pravilo „ELV LPFR (ESIR)".

Preko .env, umesto stranice: popunite LPFR_LISTEN=lan i LPFR_LAN_TRUST=subnet (poglavlje 2.1). Token tada nije obavezan. Vrednost iz .env ima prednost nad stranicom, a stranica tada ne menja režim. Ako red LPFR_LAN_TRUST= ne postoji (.env iz starijeg paketa), dodajte ga jednom. Zatim ponovo pokrenite ELV LPFR (2.2) i ručno podesite zaštitni zid (3.2, korak 5).

Šta treba da vidite: u ispisu L-PFR on *:8888 (LAN, lokalna mreža bez tokena + X-ESIR-Token; UID …, SUF …, BE pcsc).

Sa izdanjem 0.8.6: dugme „Dozvoli uređaje iz lokalne mreže bez tokena (Administrator)", a promena važi tek posle ponovnog pokretanja ELV LPFR-a (2.2). Adresu računara tada vidite komandom ipconfig.

Probni poziv sa drugog računara iz iste podmreže, bez tokena:

curl.exe --max-time 60 http://192.168.1.20:8888/api/v3/status

Šta treba da vidite: JSON sa poljima "gsc" i "mssc". HTTP 401 znači da taj računar nije u podmreži računara sa ELV LPFR-om (7.1).

Bezbednost:

  • Dok je PIN unet, račune može da izdaje svaki uređaj iz te mreže, i gost na istoj bežičnoj mreži. Goste držite na posebnoj bežičnoj mreži (gostujući Wi-Fi).
  • Svaki uređaj primljen bez tokena upisuje se jednom po pokretanju programa u izveštaj o greškama (operaterska stranica, „Greške"), sa šifrom ESIR_LAN_DEVICE i porukom request from <ip> accepted without a token (this PC's local network). Tako vidite koji uređaji šalju zahteve.
  • Ostala pravila iz 3.2 važe i ovde: RequestId jedinstven za sve uređaje zajedno; Windows prozor „Smart Card" i otključavanje unosa PIN-a samo na računaru sa ELV LPFR-om.

4. API pregled

Osnovna adresa: http://localhost:8888/api/v3. Putanje ne razlikuju velika i mala slova. Tela su JSON (UTF-8). Najveće telo zahteva je 1 MB.

MetodPutanjaIzvorČemu služiTelo zahtevaTipičan odgovorKartica / PIN
GET/attentionPURSDa li ELV LPFR radi—200, bez telane / ne
GET/statusPURS (polje mssc ELV)Stanje, šifre, poreske stope—200 JSON (uvek 200)ne / ne
POST/pinPURSOtključavanje karticePIN kao goli tekst, npr. 1234 (prima i {"pin":"1234"})200 "0100"; 423 "2100", "2110" ili "1999"; 200 "1300" bez karticeda / —
GET/environment-parametersPURSPodaci o okruženju SUF-a—200 JSON; 400 {"code":"1300"} bez kartice; {} dok podaci nisu preuzetida / ne
GET/device-infoELVProizvođač, šifra, verzija, naziv, serijski broj—200 JSONne / ne
POST/invoicesPURSPotpisivanje (fiskalizacija) računazahtev za račun (JSON objekat)200 rezultat; 400 {message, modelState}da / da
GET/invoices/{RequestId}PURSPonovno preuzimanje izdatog računa—200 rezultat; 404 {"error":"not found"}da / da
POST/local-readoutELVLokalno iščitavanje na USB/SD{"dir":"E:/"}200 {folder, uid, exportedCount, ids, errorReport}da / da
POST/local-readout/applyELVPrimena komandi {JID}.commands sa medijuma{"dir":"E:/"}200 {applied, confirmedCount, commandCount} ili {"applied":false}da / da

Napomene:

  • Putanje / i /ui/... pripadaju operaterskoj stranici. Nisu deo API-ja za ESIR.
  • Nepoznata putanja dobija 404 {"message":"Bad Request","modelState":[{"property":"","errors":["2806"]}]}.
  • Lokalno iščitavanje je najlakše pokrenuti sa operaterske stranice (Pojmovnik, 5 koraka). API prihvata samo priključene izmenjive medijume i putanje iz LOCAL_READOUT_ROOTS.
  • POST /invoices tehnički prima i niz računa. Ne koristite to (5.8).

4.1 GET /status — primer (ilustrativno — ne šaljite)

Primer je sastavljen prema kodu ELV LPFR-a, sa test paketom (sandbox). Vrednosti sa … zavise od kartice i instalacije. Poreska grupa je primer iz test okruženja.

jsonc
{
  "isPinRequired": false,
  "auditRequired": false,
  "sdcDateTime": "2026-10-04T14:05:09.123+02:00",
  "protocolVersion": "1.0.0.0",
  "softwareVersion": "verzija 2",
  "secureElementVersion": "…",
  "hardwareVersion": "N/A",
  "deviceSerialNumber": "8S-0002-…",
  "mrc": "8S-0002-…",
  "make": "ELV d.o.o.",
  "model": "ELV LPFR",
  "uid": "…",                       // JID kartice; null kada kartica nije u čitaču
  "taxCoreApi": "https://api.sandbox.suf.purs.gov.rs",   // Test paket; kod paketa „Produkcija" bez "sandbox"
  "lastInvoiceNumber": "…",         // "" dok uređaj nije izdao nijedan račun
  "supportedLanguages": ["sr-Cyrl-RS", "en-US"],
  "currentTaxRates": {
    "validFrom": "2023-10-08T06:40:00Z",
    "groupId": 8,
    "taxCategories": [
      { "name": "VAT", "categoryType": 0, "orderId": 6,
        "taxRates": [ { "rate": 10.00, "label": "A" }, { "rate": 0.00, "label": "B" }, { "rate": 19.00, "label": "Ж" } ] },
      …
    ]
  },
  "allTaxRates": [ … ],
  "mssc": [],
  "gsc": ["0100"]
}

Šta ESIR koristi iz /status:

PoljeZnačenje
gscNiz šifara stanja, poređanih po važnosti: prvo kartica, pa PIN, pa iščitavanje, informativne (0xxx) na kraju. Poglavlje 6.2.
mssc[ELV] Razlog stanja licence ili zaštite kartice. Prazan niz = sve u redu. Poglavlje 6.3.
isPinRequiredtrue dok PIN nije unet (ili je poslednji pokušaj bio pogrešan).
auditRequiredtrue kada neiščitani promet dostigne 75% granice kartice (tada je i 1400 u gsc).
uidJID kartice koja je sada u čitaču.
currentTaxRatesPoreska grupa koja važi sada. Iz nje uzmite oznake (label) za artikle.
allTaxRatesSve poreske grupe koje je SUF isporučio, sa datumima važenja.
taxCoreApiAdresa SUF-a iz paketa. Kod paketa „Produkcija" ne sadrži sandbox.
lastInvoiceNumberBroj poslednjeg računa koji je ovaj uređaj potpisao.
mrc, deviceSerialNumberŠifra MRC uređaja: 8S-0002-<serijski broj instalacije>.
sdcDateTimeLokalno vreme uređaja, ISO 8601 sa pomakom vremenske zone.

4.2 GET /device-info — primer [ELV]

json
{
  "manufacturer": "ELV d.o.o.",
  "manufacturerCode": "8S-0002",
  "softwareVersion": "verzija 2",
  "productName": "ELV LPFR",
  "serialNumber": "<JID kartice>"
}

Radi i bez kartice i bez PIN-a. serialNumber je JID kartice pročitan pri pokretanju programa. Ako kartica nije bila u čitaču pri pokretanju, serialNumber ne pokazuje stvarnu karticu (može biti prazan ili vrednost iz konfiguracije). JID umetnute kartice uvek čitajte iz GET /status → uid.

4.3 GET /environment-parameters — primer (test okruženje)

Odgovor je doslovno ono što SUF isporučuje. Primer je iz test (sandbox) okruženja:

json
{
  "organizationName": "Министарство финансија - Пореска управа - Централа",
  "serverTimeZone": "Central Europe Standard Time",
  "street": "Саве Машковића 3-5",
  "city": "Београд",
  "country": "RS",
  "endpoints": {
    "taxpayerAdminPortal": "https://tap.sandbox.suf.purs.gov.rs:443/",
    "taxCoreApi": "https://api.sandbox.suf.purs.gov.rs:443/",
    "vsdc": "https://vsdc.sandbox.suf.purs.gov.rs:443/",
    "root": "https://sandbox.suf.purs.gov.rs:443/v/?vl="
  },
  "environmentName": "СУФ Развој",
  "logo": "https://sandbox.suf.purs.gov.rs:443/DownloadContent/TAlogo.png",
  "ntpServer": "http://0.pool.ntp.org:80/",
  "supportedLanguages": ["sr-Cyrl-RS", "en-US"]
}

5. Izdavanje računa korak po korak

5.1 Preporučeni tok

  1. Pri pokretanju ESIR-a: GET /attention (200 = ELV LPFR radi), pa GET /status.
  2. Ako gsc sadrži 1300: prikažite kasiru „Umetnite karticu u čitač". Čekajte da 1300 nestane.
  3. Ako gsc sadrži 1500, pogledajte prvo mssc:
    • ako mssc sadrži 8201 ili 8202: ne šaljite PIN preko API-ja. Odgovor bi bio 423 "1999", čak i sa tačnim PIN-om. Uputite kasira da PIN unese na operaterskoj stranici (6.4);
    • inače tražite PIN od kasira i pošaljite ga sa POST /pin. Na "0100" podsetite kasira da Windows na računaru sa ELV LPFR-om traži isti PIN još jednom.
  4. Iz currentTaxRates pročitajte važeće poreske oznake. Proverite da svaki artikal ima oznaku koja postoji.
  5. Za svaki račun: POST /invoices, sa zaglavljima Content-Type, RequestId i (po želji) Accept-Language. Jedan račun po zahtevu.
  6. Iz odgovora odštampajte žurnal i QR kod. Sačuvajte ceo odgovor uz svoj račun.
  7. Tokom rada: periodično pozivajte GET /status, na primer jednom u minuti. Prikažite kasiru upozorenja (1400, mssc).

Unos PIN-a preko API-ja (za proveru; u svakodnevnom radu PIN unosite kroz ESIR ili na operaterskoj stranici):

curl.exe -X POST http://localhost:8888/api/v3/pin -H "Content-Type: application/json" -d "PIN-KARTICE"
  • Umesto PIN-KARTICE ide stvarni PIN.
  • Pažnja: PIN otkucan u komandnoj liniji može da ostane zapisan u istoriji komandi. Posle provere zatvorite prozor i ne delite snimke ekrana.
  • Telo može biti i JSON: {"pin":"1234"}. Tako ga obično šalje ESIR iz svog koda.
  • Odgovor je goli JSON string: "0100" (prihvaćeno), "2100" (pogrešan PIN), "2110" (kartica zaključana), "1999" (unos PIN-a je blokiran, 6.4).

5.2 Zahtev: običan račun, gotovina [PURS]

Primer A — za kopiranje. Najmanji ispravan zahtev (stvarni zahtev iz PURS-ovog referentnog snimka):

json
{
  "invoiceType": 0,
  "transactionType": 0,
  "payment": [
    { "amount": 110, "paymentType": 1 }
  ],
  "items": [
    { "name": "Hleb", "unitPrice": 110, "quantity": 1, "labels": ["A"], "totalAmount": 110 }
  ]
}

Sačuvajte ga kao racun.json (UTF-8) i pošaljite. Slanje iz fajla radi isto u cmd-u i u PowerShell-u i ne kvari ćirilične oznake:

curl.exe -i --max-time 60 -X POST http://localhost:8888/api/v3/invoices -H "Content-Type: application/json" -H "Accept-Language: sr-Cyrl-RS" -H "RequestId: esir-000123" --data-binary "@racun.json"

Šta treba da vidite: HTTP/1.1 200 OK, zaglavlje RequestId: esir-000123 i telo koje počinje sa {"requestedBy":"<JID>". U telu su invoiceNumber, verificationUrl, verificationQRCode i journal.

Isti račun sa neobaveznim poljima (ilustrativno — ne šaljite; skraćeno sa …):

jsonc
{
  "invoiceType": 0,
  "transactionType": 0,
  "cashier": "Milica Kovačević",
  "buyerId": "10:105255401",
  "buyerCostCenterId": "20:01234567",
  "invoiceNumber": "<ESIR broj>",
  "dateAndTimeOfIssue": "2026-09-16T08:00:00.000+02:00",
  "payment": [ { "amount": 13958.02, "paymentType": 1 } ],
  "items": [
    { "name": "Cedeni Sok/l", "unitPrice": 349.99, "quantity": 1.5, "labels": ["Ж"], "totalAmount": 524.99, "gtin": "12345678" },
    …
  ]
}

5.3 Polja zahteva

Pravila u koloni „Provera" sprovodi sam ELV LPFR. U zagradi je šifra greške.

PoljeObaveznoProveraNapomena
invoiceTypeda0 Normal (promet), 1 ProForma (predračun), 2 Copy (kopija), 3 Training (obuka), 4 Advance (avans). Broj ili naziv, bez obzira na velika i mala slova (inače 2805).
transactionTypeda0 Sale (prodaja), 1 Refund (refundacija). Broj ili naziv (inače 2805).
paymentdaNajmanje jedan element (2800). paymentType: 0 Other, 1 Cash, 2 Card, 3 Check, 4 WireTransfer, 5 Voucher, 6 MobileMoney — broj ili naziv.amount je iznos tog načina plaćanja.
itemsdaSvaki artikal ima name, quantity, unitPrice, labels, totalAmount. 2800: nedostaje bilo koje od tih polja. 2805: name duži od 2048 znakova ili nije tekst; quantity nije broj, manji je od 0,001 ili ima više od 3 decimale; unitPrice nije broj, iznosi 10^15 ili više ili ima više od 4 decimale; totalAmount nije broj. 2804: totalAmount je negativan, ima više od 4 decimale ili je prevelik za karticu.Porez računa ELV LPFR iz totalAmount i oznake, ne ESIR.
items[].labelsdaNeprazan niz (2800). Svaka oznaka mora postojati u važećoj grupi stopa (2310). Velika i mala slova nisu bitna. Ista oznaka dva puta na istom artiklu: 2805.Najviše 12 poreskih kategorija po računu (2808).
items[].gtinne8 do 14 znakova (2803).
cashierneNajviše 50 znakova (2803).Štampa se kao „Касир".
buyerIdneAko je poslat, ne sme biti prazan (2805). Najviše 20 znakova (2803). Samo štampivi ASCII znaci (2805).Oblik <šifra vrste>:<broj>, npr. 10:105255401.
buyerCostCenterIdneNajviše 50 znakova (2801). Traži i buyerId (2800).„Опционо поље купца".
invoiceNumberneAko je poslat, ne sme biti prazan (2805). Najviše 60 znakova (2803).Štampa se kao „ЕСИР број". Sadržaj propisuje PURS za vaš ESIR.
dateAndTimeOfIssueneISO 8601, od 1900. do 9999. godine (2805).Vreme ESIR-a („ЕСИР време"). Ne određuje fiskalno vreme računa: to je uvek sat ELV LPFR-a (sdcDateTime).
referentDocumentNumberza kopiju i svaku refundacijuOblik XXXXXXXX-XXXXXXXX-N (2806), najviše 60 znakova. Nedostaje kada je obavezno: 2800.Broj originalnog računa (invoiceNumber iz odgovora).
referentDocumentDTneIspravan datum (2805), ne u budućnosti (2804). Ako je poslat, traži i referentDocumentNumber.Porez se računa po stopama koje su važile u tom trenutku. Štampa se kao „Реф. време".
options.omitQRCodeGenne0 ili 1 (2805).1 = u odgovoru verificationQRCode: null.
options.omitTextualRepresentationne0 ili 1 (2805).1 = u odgovoru journal: null.

Greška u polju se vraća sa tačnom putanjom polja. Primer (nepostojeća poreska oznaka):

json
{ "message": "Bad Request", "modelState": [ { "property": "items[0].labels[0]", "errors": ["2310"] } ] }

5.4 Odgovor: šta ESIR štampa i čuva

Odgovor na Primer A (ilustrativno — ne šaljite). Vrednosti su iz PURS-ovog referentnog snimka, sa poreskom stopom A = 10% kao u primeru 4.1. Oblik i spisak polja su ELV LPFR-ovi. Dugačke vrednosti su skraćene sa ….

jsonc
{
  "requestedBy": "K6Y3AGSV",
  "signedBy": "K6Y3AGSV",
  "sdcDateTime": "2026-09-15T22:31:52.000Z",
  "invoiceCounter": "184/749ПП",
  "invoiceCounterExtension": "ПП",
  "invoiceNumber": "K6Y3AGSV-K6Y3AGSV-749",
  "taxItems": [
    { "categoryType": 0, "label": "A", "amount": 10, "rate": 10, "categoryName": "VAT" }
  ],
  "totalCounter": 749,
  "transactionTypeCounter": 184,
  "totalAmount": 110,
  "businessName": "ELV d.o.o.",
  "tin": "RS114111400",
  "locationName": "ELV d.o.o.",
  "address": "Beogradska 235c",
  "district": "NOT APPLICABLE",
  "taxGroupRevision": …,
  "mrc": "8S-0002-…",
  "messages": "Success",
  "signature": "…",
  "encryptedInternalData": "…",
  "verificationUrl": "https://sandbox.suf.purs.gov.rs/v/?vl=…",
  "verificationQRCode": "…",
  "journal": "============ ФИСКАЛНИ РАЧУН ============\r\n…"
}
PoljeŠta jeŠta ESIR radi
invoiceNumberBroj fiskalnog računa („ПФР број рачуна"), oblik JID-JID-redni brojŠtampa i čuva. Trebaće za refundaciju i kopiju.
sdcDateTimeFiskalno vreme potpisa („ПФР време")Čuva. ELV LPFR ga vraća u UTC-u (…Z). Za štampu pretvorite u lokalno vreme; žurnal ga već sadrži po beogradskom vremenu. Za refundaciju ga pošaljite kao referentDocumentDT.
invoiceCounterBrojač računa („Бројач рачуна"), npr. 184/749ППŠtampa (već je u žurnalu).
invoiceCounterExtension, totalCounter, transactionTypeCounterDelovi brojačaČuva.
totalAmount, taxItemsUkupan iznos i porez po oznaci, kako ih je izračunao ELV LPFRČuva. Za izveštaje koristite ove iznose, ne sopstveni proračun.
requestedBy, signedByJID karticeČuva.
businessName, tin, locationName, address, districtPodaci obveznika sa sertifikata karticeŠtampa (već su u zaglavlju žurnala).
taxGroupRevision, mrc, messagesRevizija poreske grupe, MRC uređaja, "Success"Čuva.
signature, encryptedInternalDataPotpis i šifrovani interni podaci kartice (base64)Čuva.
verificationUrlAdresa za proveru računa kod Poreske upraveČuva. Ovo je sadržaj QR koda. Kod produkcione kartice adresa ne sme da sadrži sandbox.
verificationQRCodeQR kod kao GIF slika, base64, bez prefiksa data:Štampa kao sliku. Za prikaz dodajte data:image/gif;base64,.
journalTekst računa: 40 znakova po redu, redovi odvojeni sa \r\nŠtampa doslovno, fontom fiksne širine. Elemente koje propisuje štampani račun ESIR-a (npr. „За уплату", „Повраћај", potpis kupca na kopiji refundacije) dodaje ESIR.

Žurnal za gornji primer (srpski):

============ ФИСКАЛНИ РАЧУН ============
              RS114111400
               ELV d.o.o.
               ELV d.o.o.
            Beogradska 235c
             NOT APPLICABLE
Касир:
-------------ПРОМЕТ ПРОДАЈА-------------
Артикли
========================================
Назив   Цена         Кол.         Укупно
Hleb (A)
       110,00          1          110,00
----------------------------------------
Укупан износ:                     110,00
Готовина:                         110,00
========================================
Ознака       Име      Стопа        Порез
A             VAT   10,00%         10,00
----------------------------------------
Укупан износ пореза:               10,00
========================================
ПФР време:           16.9.2026. 00:31:52
ПФР број рачуна:   K6Y3AGSV-K6Y3AGSV-749
Бројач рачуна:                 184/749ПП
========================================
======== КРАЈ ФИСКАЛНОГ РАЧУНА =========

(Prikaz je bez završnih razmaka. U pravom odgovoru redovi zadržavaju razmake za poravnanje i odvojeni su sa \r\n.)

5.5 Jezik žurnala (Accept-Language) [PURS]

  • en ili bilo koje en-… (npr. en-US): žurnal na engleskom („FISCAL INVOICE", „Total Purchase", „SDC Time"…).
  • sr, bilo koje sr-… (i sr-Latn-RS), *, nepoznat jezik ili bez zaglavlja: žurnal na srpskom, ćirilicom. Žurnala na latinici nema.
  • Kada zaglavlje navodi više jezika, pobeđuje prvi podržan (uz poštovanje q vrednosti).
  • Iznosi, količine i vreme (po beogradskom vremenu) pišu se isto na oba jezika.
  • Podržani jezici okruženja su u GET /status → supportedLanguages.

5.6 Refundacija, kopija, avans, predračun, obuka [PURS]

VrstainvoiceType / transactionTypeŠta je drugačijeNastavak brojača
Promet, prodaja0 / 0Običan račun.ПП
Promet, refundacija0 / 1Obavezan referentDocumentNumber = invoiceNumber originala. Preporučeno i referentDocumentDT = sdcDateTime originala (porez po tada važećim stopama, „Реф. време" na žurnalu). U žurnalu su iznosi artikala negativni, a ukupno piše „Укупна рефундација".ПР
Kopija2 / 0 ili 1Obavezan referentDocumentNumber. Žurnal počinje i završava se natpisom „ОВО НИЈЕ ФИСКАЛНИ РАЧУН".КП / КР
Predračun1 / 0 ili 1Nije fiskalni račun (isti natpis). Za prodaju ELV LPFR ne traži referencu.РП / РР
Obuka3 / 0 ili 1Nije fiskalni račun (isti natpis). Za prodaju ELV LPFR ne traži referencu.ОП / ОР
Avans, prodaja4 / 0Račun avansa.АП
Avans, refundacija4 / 1Obavezan referentDocumentNumber avansnog računa.АР

Svaka refundacija (transactionType 1), bilo koje vrste, traži referentDocumentNumber.

Primer B — za kopiranje, posle izmene dva polja. Refundacija računa iz Primera A (stvarni zahtev iz PURS-ovog referentnog snimka). Pre slanja zamenite referentDocumentNumber vrednošću invoiceNumber, a referentDocumentDT vrednošću sdcDateTime iz vašeg odgovora na Primer A. Šaljite ga isto kao Primer A, sa novim RequestId.

json
{
  "invoiceType": 0,
  "transactionType": 1,
  "cashier": "Tosha",
  "buyerId": "10:105255401",
  "referentDocumentNumber": "K6Y3AGSV-K6Y3AGSV-749",
  "referentDocumentDT": "2026-09-16T00:31:52+02:00",
  "payment": [ { "amount": 110, "paymentType": 1 } ],
  "items": [ { "name": "Hleb", "unitPrice": 110, "quantity": 1, "labels": ["A"], "totalAmount": 110 } ]
}

Važno [ELV]:

  • Licenca nikada ne zaustavlja refundaciju, kopiju, obuku ni predračun. Kada licenca nije važeća, odbijaju se samo novi računi Promet–prodaja i Avans–prodaja (šifra 2400).
  • Kako se sastavlja konačni račun posle avansa propisuje PURS za ESIR. To nije posebnost ELV LPFR-a i ovde nije opisano.

5.7 Ponovno preuzimanje računa: GET /invoices/{RequestId} [PURS]

curl.exe http://localhost:8888/api/v3/invoices/esir-000123

Šta treba da vidite: isti JSON kao u prvom odgovoru na Primer A. Za nepoznat RequestId: HTTP 404 {"error":"not found"}.

  • Vraća isti rezultat kao prvi odgovor, sa QR kodom i žurnalom.
  • Traži se po RequestId koji je ESIR poslao, ne po broju računa. Poziv sa invoiceNumber vraća 404.
  • Ako je isti RequestId greškom poslat više puta, vraća se samo poslednji račun.
  • Radi samo sa karticom u čitaču i unetim PIN-om (inače 400 {"code":"1300"} ili {"code":"1500"}).
  • POST /invoices sa istim RequestId ne vraća stari račun. Pravi novi.

5.8 Nikada ne šaljite više računa u jednom zahtevu

POST /invoices tehnički prima i niz zahteva i vraća niz rezultata. Ne koristite to:

  • svi računi u nizu dele isti RequestId, pa GET /invoices/{RequestId} posle izgubljenog odgovora vraća samo poslednji račun iz niza. Ostale ne možete da preuzmete;
  • ako jedan zahtev u nizu padne, raniji su možda već potpisani, a odgovor je samo greška.

Šaljite jedan račun po zahtevu, svaki sa svojim RequestId.


6. Statusne šifre i greške

6.1 Gde se šifre pojavljuju

MestoOblik
GET /status"gsc": ["1500","0210"] — niz, po važnosti. Uz njega "mssc": [...] [ELV]. HTTP uvek 200.
POST /invoices (greška)HTTP 400: {"message":"Bad Request","modelState":[{"property":"<polje ili prazno>","errors":["<šifra>"]}]}. property je prazan kada greška nije vezana za polje (npr. PIN nije unet).
POST /pinGoli JSON string, npr. "0100", sa zaglavljem Content-Type: application/json.
GET /environment-parameters bez karticeHTTP 400 {"code":"1300"}. PIN ovde nije potreban, pa 1500 ne dolazi.
GET /invoices/{RequestId}, /local-readout, /local-readout/apply (uređaj nije spreman)HTTP 400 {"code":"1300"} ili {"code":"1500"}.

Odgovor sa greškom nikada ne nosi tekst poruke, samo šifru. Razlog [ELV] stanja vidi se u mssc, na operaterskoj stranici i u izveštaju o greškama.

6.2 Šifre iz šifrarnika [PURS]

ŠifraZnačenjeGdeŠta ESIR radi
0100PIN prihvaćen; uređaj spreman/status, /pinNišta.
0210Informativna šifra („Internet Available")/status, kada kartica nije u čitaču ili PIN nije unetZanemarite. Ne koristite je kao pokazatelj interneta.
1100Disk je skoro pun (upozorenje)/statusUpozorite operatera da oslobodi prostor.
1300Kartica nije u čitaču/status; /pin (HTTP 200); /invoices, /environment-parameters (HTTP 400)„Umetnite karticu", zatim tražite PIN.
1400Potrebno je iščitavanje (75% granice kartice)/statusRačuni se još izdaju. Upozorite: proveriti internet i Windows prozor za PIN, ili uraditi lokalno iščitavanje.
1500PIN nije unet/status; /invoices (HTTP 400)Pogledajte mssc, pa tražite PIN (5.1, korak 3).
1999Opšte upozorenje [ELV ga koristi]/status (licenca u periodu odlaganja, upozorenja zaštite); /pin (HTTP 423)Pročitajte mssc. Na /pin: PIN se sada unosi samo na operaterskoj stranici (6.4).
2100Pogrešan PIN/pin (HTTP 423)Prikažite grešku. Ne ponavljajte automatski.
2110Kartica je zaključana (potrošeni svi pokušaji PIN-a)/pin (HTTP 423)Kartica je trajno zaključana. Obratite se izdavaocu kartice.
2210Bezbednosni element zaključan: granica prometa je dostignuta/invoices (HTTP 400)Novi računi se ne izdaju do Dokaza o iščitavanju: internet ili lokalno iščitavanje.
2220Kartica je prestala da odgovara usred potpisivanja/invoices (HTTP 400)Ne šaljite ponovo naslepo. Postupak iz poglavlja 3.5.
2310Neispravna poreska oznaka/invoices (HTTP 400), property = items[i].labels[j]Ispravite oznaku artikla prema currentTaxRates.
2400Uređaj nije spreman za potpisivanje/invoices (HTTP 400); /statusNe ponavljajte automatski. Uzrok je u mssc: 81xx = licenca; 82xx = zaštita kartice; bez mssc je najčešće uzrok to što poreske stope ili adresa za verifikaciju još nisu preuzete (nova instalacija bez interneta).
2800Obavezno polje nedostaje/invoicesIspravite zahtev (polje je u property).
2801Vrednost polja je preduga/invoicesIspravite zahtev.
2803Neispravna dužina polja/invoicesIspravite zahtev.
2804Vrednost polja je van opsega/invoicesIspravite zahtev.
2805Neispravna vrednost polja/invoicesIspravite zahtev. Ako je property prazan: sat računara je pogrešan (ispred tačnog vremena ili vraćen unazad).
2806Neispravan format podataka/invoices; nepoznata putanja (HTTP 404); neispravan JSONProverite JSON i putanju.
2808Više od 12 poreskih kategorija na jednom računu (ELV LPFR ovu šifru koristi za taj slučaj)/invoicesPodelite račun.
2809Sertifikat kartice je istekao/invoicesKartica mora da se zameni.

6.3 mssc — razlog stanja [ELV]

mssc (Manufacturer Specific Status Codes) je zvanično polje odgovora „Get Status". ELV LPFR u njega upisuje razlog. U ispravnom stanju je prazan.

Kolona gsc pokazuje šta se tada dodaje u gsc:

  • 2400 — novi računi se odbijaju;
  • 1999 — samo upozorenje;
  • (1500) — ništa se ne dodaje: 1500 je već u gsc jer se traži PIN. To nije blokada računa;
  • — — nema promene.

Licenca (81xx):

msscZnačenjegsc
8101Licenca ističe u okviru perioda upozorenja upisanog u licenci (obično 14 dana)—
8102Licenca nije obnovljena najmanje 7 dana (nema veze sa serverom licenci)—
8103Period odlaganja: novi računi prestaju datuma prikazanog na operaterskoj stranici1999
8104Licenca je istekla2400
8105Licenca je opozvana (do stupanja na snagu 1999, posle 2400)1999 / 2400
8106Nema važeće licence za ovu karticu2400
8107Sat računara odstupa (samo upozorenje)—
8108Provera integriteta instalacije nije prošla (sa 8110 blokira)—
8109JID/PIB nisu pročitani sa sertifikata kartice2400
8110Provera licence nije mogla da se izvrši2400

Zaštita kartice (82xx):

msscZnačenjegsc
8201Unos PIN-a blokiran posle 2 pogrešna PIN-a; otključava se na operaterskoj stranici(1500)
8202Kartici su ostala najviše 2 pokušaja PIN-a; PIN se unosi samo na operaterskoj stranici(1500)
8203Skladište nema račune koje je kartica potpisala2400
8204Potpisivanje prekinuto (nestanak struje, izvađena kartica); oporavak u toku2400
8205Brojač kartice je preskočio (kartica korišćena na drugom uređaju); potrebna potvrda2400
8206Poreska uprava je odbila najmanje jedan paket (čuva se, ne šalje se ponovo)1999
8207Poreska oznaka blokirana posle odbijanja (takve stavke dobijaju 2310)1999
8208Sistemsko odbijanje (PIB, potpis, MRC ili sertifikat); svi novi računi se odbijaju2400
8209Poreske stope sa SUF-a nisu prošle proveru; koristi se druga, ispravna tabela1999
8210Sat računara odstupa više od 3 minuta1999
8211Sat računara je ispred tačnog vremena; potpisivanje odbijeno2400
8212Skladište nije upisivo ili nema prostora (manje od 100 MB)2400
8213Rezervna kopija bar jednog paketa nije upisana1999
8214Drugo skladište ili druga instanca drži ovu karticu2400
8215Okruženje nije usklađeno (podešavanja SUF-a / adrese za verifikaciju / MRC)2400
8216PIB/JID nisu pročitani sa sertifikata kartice2400
8217Paketi se ne isporučuju Poreskoj upravi1999
8218Sertifikat kartice ističe za najviše 30 dana—
8219PIN u Windows prozoru nije prihvaćen1999
8220Provera zaštite kartice nije mogla da se izvrši2400

Preporuka za ESIR: kada mssc nije prazan, prikažite kasiru kratku poruku i uputite ga na operatersku stranicu ELV LPFR-a. Tamo je objašnjenje i dugme za potrebnu radnju.

6.4 Tok PIN-a

[nema kartice] gsc 1300,1500,0210
      | umetnuta kartica
      v
[kartica, PIN nije unet] gsc 1500,0210  <-- posle svakog pokretanja i vraćanja kartice
      | POST /pin  -> "0100"
      v
[spremno] gsc 0100
      | izvađena kartica -> nazad na [nema kartice], PIN se briše

Pravila ELV LPFR-a za POST /pin [ELV]:

  • Šaljite tačno 4 cifre. PIN od samih cifara koji nema tačno 4 cifre (i prazno telo) dobija 423 "2100", a kartica se ne pita (ne troši se pokušaj).
  • Između dva pokušaja prođe najmanje 1 sekunda. Brži zahtev se samo zadrži, ne odbija.
  • Posle 2 uzastopna pogrešna PIN-a ELV LPFR zaustavlja dalje pokušaje: svaki sledeći POST /pin dobija 423 "1999" (mssc 8201), čak i sa tačnim PIN-om. Otključava se samo na operaterskoj stranici, dugmetom „Otključaj unos PIN-a". Tako se kartica čuva od trajnog zaključavanja (2110).
  • Kada kartici ostanu najviše 2 pokušaja, PIN poslat iz ESIR-a dobija 423 "1999" (mssc 8202). Tada se PIN unosi samo na operaterskoj stranici.
  • Posle "0100" Windows na računaru sa ELV LPFR-om jednom traži isti PIN u prozoru „Smart Card". Taj prozor mora biti potvrđen.

6.5 HTTP statusi

HTTPTeloKada
200JSONUspeh. Uvek za /status i /attention (bez tela). Za /pin i kod "0100" i kod "1300".
400{message, modelState}Greška na POST /invoices, neispravan JSON.
400{"code":"…"}Uređaj nije spreman: /environment-parameters (samo 1300), GET /invoices/{RequestId} i /local-readout* (1300 ili 1500).
400{"error":"…"}/local-readout: dir nedostaje ili nije dozvoljen.
401{"message":"Unauthorized"}[ELV] Zahtev sa drugog računara u radu na mreži, bez ispravnog X-ESIR-Token. U režimu „Lokalna mreža ovog računara (bez tokena)": zahtev bez tokena sa uređaja van podmreže ovog računara (3.6).
403{"message":"Forbidden"}[ELV] Zahtev sa ovog računara upućen na tuđe ime (Host).
403{"ok":false,"reason":"cross-origin"}[ELV] POST /pin sa tuđim zaglavljem Origin (pregledač, renderer).
404{message, modelState} sa 2806Nepoznata putanja ili pogrešan metod.
404{"error":"not found"}GET /invoices/{RequestId}: nema računa sa tim RequestId.
423"2100", "2110", "1999"POST /pin odbijen.
bez odgovora—Veza odbijena ili isteklo vreme: ELV LPFR ne radi, zahtev stiže sa mreže dok je uključen režim „Samo ovaj računar", ili ELV LPFR nije ponovo pokrenut posle promene režima koja to traži (3.6).
5xx—API /api/v3 ih namerno ne vraća. 5xx znači: ELV LPFR nije dostupan.

7. Rešavanje problema

7.1 Program ne radi ili ESIR ne može da se poveže

SimptomUzrokRešenje
„Windows je zaštitio vaš računar" pri prvom pokretanjuProgram još nije potpisan sertifikatom izdavača koda„Više informacija" → „Pokreni svakako", jednom po računaru. Ispravnost proverite SHA-256 otiskom iz „Moje licence".
Prozor kaže „ELV-LPFR.exe nije pronadjen pored ovog fajla"ZIP nije ceo raspakovan, ili je pokrenut iz ZIP-aRaspakujte ceo paket u jedan folder i pokrenite ELV-LPFR-Setup.exe odatle.
U prozoru se pojavi greška o zauzetom portu (EADDRINUSE), pa „Servis je zaustavljen."Port 8888 već koristi drugi program, najčešće drugi primerak L-PFR-aZatvorite drugi primerak (2.2; posle instalacije ne pokrećite ELV-LPFR.exe iz drugog foldera), ili u .env promenite PORT (2.1) i tu adresu upišite u ESIR.
ELV LPFR se ne javlja posle prijave na Windows (http://localhost:8888/ se ne otvara ni kada je otvorite ručno)Pokretanje je odbijeno, na primer zato što je port zauzet (kod 3 ili 4)Razlog, na srpskom i engleskom, upisan je u poslednja-greska.txt u folderu sa podacima C:\ProgramData\ELV LPFR\ (kod ranije instalacije iz ZIP-a koju je Setup preuzeo: u tom folderu). Pošaljite ga podršci ako vam razlog nije jasan.
Poruka „Drugi L-PFR proces (PID …) već koristi ovaj folder podataka"Dva primerka nad istim folderomZatvorite drugi primerak. Potpisivanje se nastavlja samo.
ESIR sa drugog računara ili uređaja: veza odbijena ili istek vremenaUključen je režim „Samo ovaj računar"; ELV LPFR nije ponovo pokrenut posle promene u .env, sa paketom 0.8.6 ili starijim, ili kada je stranica rekla „Promena važi posle ponovnog pokretanja ELV LPFR-a."; token je kraći od 16 znakova; ili zaštitni zid blokira port 8888 (režim iz .env ili paket stariji od 0.8.6)Kliknite „Proveri vezu" (od izdanja 0.8.7) i uradite ono što piše uz ✗. Proverite panel „Uređaj" → „Pristup za ESIR" i ispis L-PFR on *:8888 (LAN, …). Po potrebi ponovo pokrenite ELV LPFR (2.2). Kod režima iz .env ili paketa starijeg od 0.8.6 dozvolite TCP 8888 u zaštitnom zidu (3.2, korak 5).
ESIR na istom računaru: veza odbijena na http://<IP-adresa>:8888U režimu „Samo ovaj računar" ELV LPFR ne sluša na mrežnoj adresiKoristite http://localhost:8888/api/v3.
ESIR sa drugog računara: HTTP 401Nema zaglavlja X-ESIR-Token ili je token pogrešanPrepišite token sa operaterske stranice („Prikaži"). Naziv zaglavlja mora biti tačan.
Uređaj u režimu „Lokalna mreža ovog računara (bez tokena)": HTTP 401Uređaj nije u podmreži računara sa ELV LPFR-om (druga podmreža, VPN, javna adresa ili IPv6)Povežite uređaj na istu mrežu kao računar sa ELV LPFR-om, ili neka šalje X-ESIR-Token (3.6).
HTTP 403 Forbidden na istom računaruESIR koristi ime koje nije localhost, 127.0.0.1 ni ime računaraKoristite http://localhost:8888/api/v3.
Telefon dobija HTTP 403, ili „Proveri vezu" pokazuje preusmeravanje porta (portproxy)Na portu ELV LPFR-a postoji netsh interface portproxy. Preusmeravanje porta ne zamenjuje režim za mrežuKliknite „Poveži telefon ili tablet (ESIR Poreske uprave)": taj korak uklanja preusmeravanje (3.6).
HTTP 403 cross-origin na /pin/pin se poziva iz pregledača ili renderer-a (Electron, Tauri, WebView)Pozivajte ELV LPFR iz pozadinskog dela ESIR-a (3.4).
curl u PowerShell-u ne prikazuje telo greškecurl je u PowerShell-u drugi programKucajte curl.exe.
Nema odgovora na POST /invoicesMreža, istek vremenaNe šaljite ponovo. GET /invoices/{RequestId} (3.5).

7.2 API vraća šifru greške

SimptomUzrokRešenje
2400 na novoj instalaciji, mssc prazanPoreske stope ili adresa za verifikaciju još nisu preuzete (nema interneta)Obezbedite internet. Razlog je u obaveštenjima operaterske stranice. ELV LPFR pokušava ponovo pri sledećem računu (najviše jednom u minuti).
2400, mssc 8215Podešavanja okruženja ELV LPFR-a se međusobno ne slažuNe menjajte .env ručno. Pišite podršci; po potrebi preuzmite i raspakujte pravi paket ponovo (2.3).
2310 za oznaku koja postoji na kasiOznake nema u currentTaxRates uređaja, ili je blokirana (mssc 8207)Uskladite oznake artikala sa currentTaxRates. Kod 8207 pogledajte operatersku stranicu.
Ćirilične oznake (Ж) daju 2310Telo nije u UTF-8Šaljite UTF-8.
400 sa property invoiceType i 2805, iako je polje poslatoNedostaje Content-Type: application/json, pa telo nije pročitanoDodajte zaglavlje.
2805 sa praznim propertySat računara je ispred tačnog vremena više od 5 minuta (mssc 8211) ili je vraćen unazadUključite usklađivanje sata u Windows-u i ispravite vreme.
2210Granica prometa kartice je dostignutaDokaz o iščitavanju: internet (potreban potvrđen Windows prozor) ili lokalno iščitavanje (Pojmovnik, 5 koraka).
Računi se izdaju, ali paketi čekaju; kasnije 1400, pa 2210Windows prozor „Smart Card" nije potvrđen, ili nema internetaPotvrdite prozor (pogledajte traku zadataka). Prozor se pojavljuje jednom po pokretanju: ako je zatvoren, ponovo pokrenite ELV LPFR (2.2) i unesite PIN. Proverite internet.
SUF nedostupan (operaterska stranica, „Slanje Poreskoj upravi": „SUF: nedostupan (bez interneta)")Nema interneta ili je SUF nedostupanRačuni se i dalje izdaju; paketi bezbedno čekaju. Vratite internet. Ako traje dugo: mssc 8217, pa 1400 i 2210. Tada uradite lokalno iščitavanje.

7.3 Kartica, PIN i licenca

SimptomUzrokRešenje
„Kartica nije u čitaču" iako je kartica umetnutaČitač nije priključen, izabran je drugi čitač, ili je kartica u drugom čitačuPanel „Uređaj" → „Čitač kartice": izaberite „Automatski (čitač u kome je kartica)". PCSC_READER_NAME u .env ostavite prazno (2.1).
/pin vraća "2100"Pogrešan PIN (ili nije tačno 4 cifre)Proverite PIN. Ne pokušavajte više puta naslepo.
/pin vraća "1999"Unos PIN-a blokiran posle 2 pogrešna PIN-a (8201) ili kartici su ostala najviše 2 pokušaja (8202)Proverite tačan PIN, pa na operaterskoj stranici kliknite „Otključaj unos PIN-a" i unesite PIN tamo.
/pin vraća "2110"Kartica je trajno zaključanaObratite se izdavaocu kartice.
Produkciona kartica, a verificationUrl ili taxCoreApi sadrži sandboxPokrenut je test paket (od podrške) sa produkcionom karticomOdmah prestanite sa izdavanjem računa. Pišite podršci. Instalirajte paket „Produkcija" iz „Moje licence" (2.3).
2400, mssc 8104 ili 8106Licenca je istekla ili je nema„Licenca" → „Proveri sada", ili aktivirajte novi kod. Refundacije, kopije, obuka i predračuni rade i tada.
1999, mssc 8103Period odlaganja licence (nema obnove preko interneta)Vratite internet i kliknite „Proveri sada", ili uvezite licencni fajl (.lic) sa USB-a.
2400, mssc 8110 (sa 8108)Programski fajl je izmenjen ili modul licence ne radiPotrebna je ponovna instalacija sa originalnog paketa iz „Moje licence". Pre toga pišite podršci. Ne brišite folder sa podacima.
Aktivacioni kod odbijenGreška u kucanju (16 znakova, 4×4), kod je već iskorišćen za drugu karticu, istekao je, ili kartica pripada drugom PIB-uProverite kod i njegov status u „Moje licence". Potrebni su internet i potvrda Administratora. Pišite podršci.
„Potvrda Administratora Windows-a nije data — kod nije poslat."UAC prozor odbijen ili korisnik nije AdministratorPonovite i potvrdite prozor kao Administrator.
E-pošta sa aktivacionim kodovima nije stiglaPoruka je u neželjenoj pošti, ili je kupovina obavljena drugom e-adresomProverite neželjenu poštu (spam). Prijavite se u „Moje licence" e-adresom kupca. Ako ni tamo nema koda, pišite podršci.

8. Pre nego što krenete u produkciju


9. Podrška i korisni linkovi

ŠtaGde
Tehnička podrška (i test paket, na zahtev)[email protected]
Moje licence (kodovi, kartice, preuzimanje paketa „Produkcija")https://allurepos.com/lpfr.html — prijava e-adresom kupca i kodom od 6 cifara koji stiže na nju
Operaterska stranica ELV LPFR-ahttp://localhost:8888/ (samo na računaru sa ELV LPFR-om; latinica, ćirilica, engleski)
Dokumentacija u paketufolder dokumentacija\: 01-Opis-proizvoda-ELV-LPFR.pdf, 02-Korisnicko-uputstvo-ELV-LPFR.pdf, 03-Uputstvo-za-instalaciju-ELV-LPFR.pdf; fajl PROCITAJ-ME.md
Tehnički vodič Poreske uprave (sandbox)https://tap.sandbox.suf.purs.gov.rs/help

Kada pišete podršci, pošaljite:

  • šifru greške i tačno vreme;
  • koji paket koristite („Produkcija" ili test paket od podrške);
  • izlaz curl.exe --max-time 60 http://localhost:8888/api/v3/status i curl.exe http://localhost:8888/api/v3/device-info;
  • po potrebi izveštaj o greškama: pri lokalnom iščitavanju na medijum se upisuje {JID}-errors.json, a poslednji zapisi su i na operaterskoj stranici („Izveštaj o greškama").

PIN kartice nikada ne šaljite podršci.