{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"a6f2a236-15e0-434b-bcb0-e2dde562891d","name":"VG eFiskal API","description":"<img src=\"https://doc.fiskalizacija.me/assets/logo.png\" width=\"100\" height=\"100\">\n\n_Poslednji put ažurirano: 21.10.2025._\n\n# Uvod\n\nOvaj dokument predstavlja uputstvo za integraciju IT sistema sa VG eFiskal rešenjem putem HTTP REST JSON API interfejsa. Dokument je organizovan tako što su opisane najčešće situacija i pozivi koji se koriste prilikom integracije.\n\n_**VAŽNO: Za uspešno korišćenje i integraciju pored tehničkog znanja neophodno je i poznavanj relvenatnih propisa u domenu elektronske fiskalizacije.**_\n\n# **Instalacija**\n\nVG eFiskal API se može instalirati na nekoliko načina:\n\n- kao deo standardne VG eFiskal aplikacije (Windows, Linux, Android)\n    \n- podešavanje VG eFiskal Middleware komponente (Windows, Linux)\n    \n\nU oba slučaja API je identičan i u nastavku su opisani tehnički detalji obe varijante.\n\n## Instalacija 1: standardna VG eFiskal aplikacija\n\nInstalacija se obavlja tako što se prvo instalira osnovna _VG Start_ aplikacija, unese serijski broj uređaja i preuzme poslednja verzija _VG eFiskal_ aplikacije nakon čega treba ručno pokrenuti _VG eFiskal_ aplikaciju. Kada se pokrene _VG eFiskal_ aplikacija u pozadini će se takođe pokrenuti i VG eFiskal API. Prednost ovog načina instalacije je što olakšava preuzimanje novih verzija _VG eFiskal aplikacije_.\n\nU zavisnosti od operativnog sistema folder gde se smeštaju podaci kao i osnovna konfiguracija je:\n\n- Windows:\n    \n    - _VG Start_ aplikacija se pokreće startovanjem `C\\Program Files\\VG Start\\bin\\vg-start.bat`\n        \n    - _VG Start_ konfiguracioni fajl se nalazi u `C\\Program Files\\VG Start\\conf\\vg-start.conf.bat`\n        \n    - Folder gde se smeštaju svi podaci: `%APPDATA%\\VG Start` (`%APPDATA%` je environment varijabla, najčešće pokazuje na folder `C:\\Users\\ImeKorisnika\\AppData\\Local` ili `C:\\Users\\ImeKorisnika\\AppData\\Roaming`). Ovaj folder u nastavku će se zvati `DATA` folder\n        \n    - _VG eFiskal_ podaci su smešteni u `DATA\\data\\VG eFiskal` folder\n        \n    - _VG eFiskal_ logovi su smešteni u `DATA\\log\\VG eFiskal` folder\n        \n- Linux:\n    \n    - Osnovni folder je folder gde je raspakovana _VG Start_ instalacija. Ovaj folder u nastavku će se zvati `DATA` folder.\n        \n    - _VG Start_ aplikacija se pokreće startovanje `DATA/bin/vg-start.sh`\n        \n    - _VG Start_ konfiguracioni fajl se nalazi u `DATA/conf/vg-start.conf`\n        \n    - _VG eFiskal_ podaci su smešteni u `DATA/data/vg-efiskal` folder\n        \n    - _VG eFiskal_ logovi su smešteni u `DATA/log/vg-efiskal` folder\n        \n- Android:\n    \n    - _VG Start_ i _VG eFiskal_ aplikacije se instaliraju kao APK i nije moguće direktno pristupati podacima aplikacija osim kroz funkcije same aplikacije.\n        \n\n### Rezervna kopija podataka\n\nRezervna kopija svih podataka se obavlja tako što se zaustave _VG eFiskal_ i _VG Start_ aplikacije (kroz systray ikonice, opcija \"Kraj rada\") a potom arhivira `DATA` folder.\n\nVraćanje podataka se obavlja tako što se prvo instalira _VG Start_, proveri da nije pokrenut, proveri da `DATA` folder postoji ali da je prazan a potom backup napravljen na prethodni način se raspakuje u prazan `DATA` folder (podaci se vrate na isto mesto) nakon čega može da se pokrene _VG Start_ i _VG eFiskal_.\n\nNapomena: VG eFiskal aplikacija kroz GUI pruža mogućnost za pravljenje rezervne kopije podataka kao i vraćanje podataka iz rezervne kopije na svim platformama (Windows, Linux, Android) i ukoliko je GUI dostupan ovo je poželjan način za pravljenje rezervnih kopija podataka.\n\n### Automatsko pokretanje\n\nAutomatsko pokretanje _VG eFiskal_ aplikacije prilikom startovanja računara sa Windows operativnom sistemom se može postići tako što ste u Windows-u podesi da se _VG Start_ automatski pokrene (pogledati standardna uputstva za Windows kako se ovo realizuje) a da bi _VG Start_ onda odmah pokrenula _VG eFiskal_ potrebno je u VG Start konfiguracionom (najčešće `C\\Program Files\\VG Start\\conf\\vg-start.conf.bat)`fajlu dodati na kraj red: `set TERON_OPTS=-auto-start -start-minimized`. Nakon ovoga kada se _VG Start_ pokrene isti će ostati minimizovan (u systray-u) a automatski će startovati _VG eFiskal_ aplikaciju.\n\nAutomatsko pokretanje _VG eFiskal_ aplikacije prilikom startovanja računara sa Linux operativnim sistemom se može postići tako što se na Linuxu podesi da se _VG Start_ automatski porekene (pogledati uputstvo za konkretnu Linux distribuciju kako se ovo realizuja) a da bi _VG Start_ onda odmah pokrenula _VG eFiskal_ potrebno je u VG Start konfiguracionom fajlu dodati na kraj red: `TERON_OPTS=\"-auto-start -start-minimized\"`. Nakon ovoga kada se _VG Start_ pokrene isti će ostati minimizovan (u systray-u) a automatski će startovati _VG eFiskal_ aplikaciju.\n\nAutomatsko pokretanje _VG eFiskal_ aplikacije na Android uređajima je nakon prve instalacije automatski podešeno tako da vi kao korisnik ne treba ništa dodatno da radite.\n\n## Instalacija 2: VG eFiskal Middleware\n\nNa Windows i Linux operativnim sistemima VG eFiskal API se može pokrenuti tako što se instalira samo VG eFiskal Middleware komponenta. Da bi se ovo postiglo neophodno je uraditi sledeće:\n\n1. Obezbediti da je Java JRE 1.8 instalirana na sistemu\n    \n2. Preuzeti poslednju verziju _VG eFiskal Middleware - Java jar bundle_ (naziv fajla je u formatu `vg-efiskal-GGMMDDNN-bundled.jar` gde je `GG` godina, `MM` mesec, `DD` dan, `NN` redni broj)\n    \n3. _VG eFiskal Middleware_ se pokreće sa sledećom komandom: `java -Dfile.encoding=UTF-8 -DESIR_SN=\"12345678\" -DESIR_ROOT=\"root\" -DESIR_DATA=\"data\" -DESIR_LOGS=\"logs\" -DESIR_TEMP=\"temp\" -jar vg-efiskal-GGMMDDNN-bundled.jar` gde parametre treba podesiti adekvatno:\n    \n    1. `-DESIR_ROOT` treba da pokazuje na osnovni folder gde želite da se podaci snimaju\n        \n    2. `-DESIR_DATA` treba da pokazuje na folder gde će biti smeštani aplikativni podaci\n        \n    3. `-DESIR_LOGS` treba da pokazuje na folder gde će biti smeštani logovi\n        \n    4. `-DESIR_TEMP` treba da pokazuje na folder gde će biti smešteni privremeni fajlovi\n        \n    5. Dodatno proverite da Java koja se pokreće je Java JRE 1.8\n        \n    6. Dodatno proverite da je `vg-efiska-GGMMDDNN-bundled.jar` dostupan, najbolje navedite punu putanju do JAR fajla u gornjoj komandi\n        \n4. Podesiti na sistemu automatsko pokretanje _VG eFiskal Middleware_ (izvršenje komande navedene u prethodnom koraku, pogledati uputstvo za operativni sistem kao se ovo radi kao i okruženje u koje integrišete VG eFiskal)\n    \n\n### Ažuriranje verzije VG eFiskal Middleware-a\n\nU slučaju da ste odabrali ovu vrstu instalacije neophodno je da sami obezbedite način za ažuriranje _VG eFiskal Middleware_ komponente sa novom verzijom. Postpuak za ažuriranje je sledeći:\n\n1. Preuzeti novu verziju _VG eFiskal Middleware JAR bundle_ fajla (`vg-efiskal-GGMMDDNN-bundled.jar`)\n    \n2. Zaustaviti rad _VG eFiskal Middleware_\n    \n3. Kopirati novi JAR file preko starog\n    \n4. Pokrenuti _VG eFiskal Middleware_\n    \n\n### Rezervna kopija podataka\n\nRezervna kopija podataka se obavlja tako što se svi podaci iz gore navedenih foldera sačuvaju (osim foldera sa privremenim fajlovima) i vrate na isto mesto po potrebi. Pre pravljenja rezervne kopije podataka neophodno je zaustaviti _VG eFiskal Middleware_\n\n# API\n\nVG eFiskal API se nalazi na adresi: [http://hostname:4566/api](http://hostname:4566/api) gde hostname predstavlja DNS ime ili IP adresu uređaja na kome se nalazi VG eFiskal aplikacija. U nastavku dokumentacije u svim primerima hostname je 127.0.0.1 i TCP port je 4566.\n\n## HTTP Zahtev\n\nDa bi VG eFiskal obavio autorizaciju i kontrolu pristupa neophodno je da vaš client u zaglavlju svakog zahteva obavezano šalje API-KEY koji Vam je dostavljen za konkretan uređaj (32 znaka, hex string). API-KEY se šalje u okviru HTTP zaglavlja (eng. \"HTTP header\") u okviru `Authorization` polja u sledećem formatu:\n\n`Authorization: Bearer API-KEY`\n\nPored ovog polja, drugo obavezno polje u slučaju zahteva koji sadrže JSON objekat u telu zahteva (većina POST i PUT zahteva) neophodno je navesti i tip sadržaja dodavanjem u zaglavlje HTTP zahteva:\n\n`Content-Type: application/json; charset=UTF-8;`\n\nU slučaju integracije na VG eFiskal Cloud svaki HTTP zahtev treba da sadrži i serijski broj uređaja u zaglavlju (HTTP header-u):\n\n- `X-Teron-SerialNumber: YYY` (`YYY` treba zameniti sa dodeljenim serijski brojem)\n    \n\n## HTTP Odgovor\n\nU slučaju uspešno obređanog zahteva odgovor će imati HTTP status kod:\n\n- `HTTP 200 OK` - uspešno obrađen zahtev, u telu odgovora su dodatne informacije u JSON formatu (`Content-type: application/json; charset=UTF-8`)\n    \n- `HTTP 204 No Content` - uspešno obrađen zahtev, nema dodatnih podataka u telu odgovora (prazno telo odgovora)\n    \n\nU slučaju greške odgovor će imati `HTTP 4xx` ili `HTTP 5xx` status kod dok će telo poruke sadržati detalje greške u JSON objektu u poljima:\n\n- _**statusCode**_ - kod greške\n    \n- _**message**_ - tekstualna reprezentacija greške\n    \n- _**details**_ - dodatne informacije o grešci\n    \n\n## Tipovi podataka\n\nU nastavku dokumentacije na svakom mestu gde se opisuje model podataka za svako polje se navodi i tip podatka koji može biti jedan od sledećih:\n\n- _**string**_ - tekstualno polje\n    \n- _**int**_ - celobrojna vrednost\n    \n- _**boolean**_ - logičko polje (`true` ili `false`)\n    \n- _**money**_ - decimalni broj sa dve decimale\n    \n- _**quantity**_ - decimalni broj sa tri decimale\n    \n- _**percent**_ - decimalni broj sa dve decimale\n    \n- _**timestamp**_ - datum i vreme u ISO 8601 formatu sa vremenskom zonom (primer: `2023-11-15T13:31:50.000+01:00`)\n    \n- _**uuid**_ - UUID v4\n    \n- _**object**_ - JSON objekat koji sadrži niz atribute i vrednosti\n    \n- _**list(x)**_ **\\-** JSON niz koji sadrži niz elemenata tipa x (gde X može biti bilo koji od navedenih tipova)\n    \n- _**tax-rate**_ - oznaka poreske stope:\n    \n    - `VAT_21, VAT_7, VAT_0` - standardno oporezivanje\n        \n    - `VAT_NO` - prodavac nije u PDV-u\n        \n    - `VAT_CL17, VAT_CL20, VAT_CL26, VAT_CL27, VAT_CL28, VAT_CL29, VAT_CL30, VAT_CL44` - oslobođeno oporezivanja","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"5353679","team":308096,"collectionId":"a6f2a236-15e0-434b-bcb0-e2dde562891d","publishedId":"2s9Ykn827r","public":true,"publicUrl":"https://api.fiskalizacija.me","privateUrl":"https://go.postman.co/documentation/5353679-a6f2a236-15e0-434b-bcb0-e2dde562891d","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":"VG eFiskal API dokumentacija"}],"appearance":{"default":"dark","themes":[{"name":"dark","logo":"https://content.pstmn.io/b3f35daf-84d9-49a9-b735-5e664e675633/bG9nby5wbmc=","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":"https://content.pstmn.io/31958688-563f-4b38-962d-11bdd0a33412/bG9nby5wbmc=","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.10.1","publishDate":"2023-12-20T19:16:54.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"VG eFiskal API dokumentacija","description":""},"logos":{"logoLight":"https://content.pstmn.io/31958688-563f-4b38-962d-11bdd0a33412/bG9nby5wbmc=","logoDark":"https://content.pstmn.io/b3f35daf-84d9-49a9-b735-5e664e675633/bG9nby5wbmc="}},"statusCode":200},"environments":[{"name":"VG eFiskal","id":"26d4e4c7-df1b-4c8e-b49a-26598e3999e5","owner":"5353679","values":[{"key":"baseUri","value":"http://127.0.0.1:4566","enabled":true,"type":"default"},{"key":"api_key","value":"0123456789abcdef0123456789abcdef","enabled":true,"type":"any"}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/44a4631ff75a74a425199fdefba5bc3a73d4b2476f84973b926920d06228bb74","favicon":"https://fiskalizacija.me/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"VG eFiskal","value":"5353679-26d4e4c7-df1b-4c8e-b49a-26598e3999e5"}],"canonicalUrl":"https://api.fiskalizacija.me/view/metadata/2s9Ykn827r"}