ENIGMA LOGICFROM COMPLEXITY TO CLARITY

VODIČ / E-FAKTURE

Povezivanje vašeg softvera sa SEF-om

Većina tekstova o e-fakturama objašnjava ko mora da ih izdaje. Mnogo manje njih objašnjava šta se dešava kada odlučite da fakture ne kucate ručno na portalu, nego da ih šalje vaš postojeći program. Ovaj vodič je o tom drugom delu: kako API Sistema e-faktura zaista radi, šta sve integracija mora da pokrije osim slanja, i gde projekti najčešće stanu.

01

Ko mora na SEF, a ko ne

Zakon o elektronskom fakturisanju u članu 3 stav 1 navodi pet situacija u kojima je izdavanje e-fakture obavezno: između dva subjekta privatnog sektora, od privatnog prema javnom sektoru, od javnog prema privatnom, između dva javna subjekta, i kada poreski punomoćnik stranog lica izdaje fakturu.

Ključna je definicija iz člana 2 tačka 3: subjekt privatnog sektora je obveznik poreza na dodatu vrednost. To praktično znači da linija ne ide po veličini firme nego po PDV-u. Paušalac koji nije u sistemu PDV-a i ne fakturiše javnom sektoru nije obveznik korišćenja SEF-a.

Postoji i kategorija dobrovoljnih korisnika iz člana 2 tačka 4 i člana 5 stavova 7 i 8: obveznici poreza na dohodak ili na dobit koji nisu ni javni ni privatni sektor u smislu zakona mogu da se prijave sami. Važno je da to nije odluka koju možete povući sledeće nedelje - posle prijave sistem morate koristiti u tekućoj i narednoj godini.

02

Tri načina da izdajete e-fakture

Pre nego što uopšte razmišljate o integraciji, vredi znati da imate tri opcije i da sve tri mogu biti ispravan izbor:

  • Ručno na portalu. Besplatno, bez ijednog reda koda. Ima smisla dok je broj faktura mali i dok podaci ionako nastaju ručno.
  • Preko informacionog posrednika. Član 13 zakona dozvoljava da izdavanje, slanje, prijem i čuvanje poverite posredniku koji ima saglasnost ministarstva. Brzo se uvodi, plaća se pretplata, a vi niste vlasnik integracije.
  • Direktna API integracija iz vašeg sistema. Najviše posla na početku, ali fakture nastaju tamo gde podaci već postoje i niko ih ne prekucava.

Treća opcija se isplati kada vam podaci za fakturu već postoje u nekom sistemu: u proizvodnji, u magacinu, u evidenciji radnih naloga. Tada je prekucavanje na portal čist gubitak vremena i izvor grešaka. Ako vam fakture i dalje nastaju tako što neko gleda u svesku, integracija vam neće rešiti problem, nego ga automatizovati.

03

Kako API zaista radi

Sistem e-faktura ima javni API čiju specifikaciju Ministarstvo finansija objavljuje na portalu efaktura.gov.rs. Autentifikacija je jednostavna: svaki zahtev nosi HTTP zaglavlje ApiKey sa vrednošću koju generišete kroz svoj nalog na portalu. Nema OAuth-a, nema potpisivanja zahteva.

Produkciono okruženje je na efaktura.mfin.gov.rs, a postoje i odvojena okruženja za testiranje. Integraciju nikada ne razvijajte direktno na produkciji, jer izdata faktura ima poreske posledice.

Slanje izlazne fakture kao UBL 2.1 dokumenta
curl -X POST \
  "https://efaktura.mfin.gov.rs/api/publicApi/sales-invoice/ubl" \
  -H "ApiKey: 00000000-0000-0000-0000-000000000000" \
  -H "Content-Type: application/xml" \
  --data-binary @faktura.xml

Format je UBL 2.1, u srpskom prilagođenju evropskog standarda EN 16931. Portal objavljuje primere XML datoteka i servis za validaciju dokumenata, i oba vredi koristiti pre nego što pošaljete prvu fakturu. Validacija pre slanja je jedina stvar koja vas deli od fakture koja je formalno izdata, a sadržinski pogrešna.

04

Slanje je manji deo posla

Ovde se integracije najčešće potcene. Poslati fakturu je jedan poziv. Sve ostalo je ono što čini sistem upotrebljivim:

  • Praćenje statusa. Faktura prolazi kroz stanja i vaš sistem mora da zna u kom je. Postoje pozivi za pojedinačnu fakturu, za listu identifikatora i za izmene u zadatom periodu.
  • Prijem ulaznih faktura. Dobavljači vama šalju fakture kroz isti sistem i njih treba povući, prikazati i proknjižiti.
  • Prihvatanje i odbijanje u roku. Po članu 10 primalac iz privatnog sektora ima 15 dana da prihvati ili odbije fakturu. Ako ne reaguje, dobija novo obaveštenje, i ako ni u narednih 5 dana ne reaguje, faktura se smatra odbijenom.
  • Otkazivanje i storniranje, kao zasebni pozivi sa svojim pravilima.
  • Preuzimanje PDF prikaza i istorije statusa, za arhivu i za ljude koji ne čitaju XML.
  • Notifikacije. Postoji poziv za pretplatu na obaveštenja, koji se u praksi mora održavati aktivnim.

Dodajte na to član 15: e-fakture u privatnom sektoru čuvaju se deset godina od isteka godine u kojoj su izdate. To je zahtev prema vašoj arhivi, ne prema SEF-u, i treba ga rešiti svesno, a ne osloniti se na to da će dokument zauvek stajati na portalu. Deset godina je duže od veka većine diskova, pa arhiva i backup ovde nisu ista stvar.

05

Zamke koje se vide tek u praksi

Nekoliko stvari na kojima se gubi najviše vremena, a nisu očigledne iz dokumentacije:

  • Datum prometa. Ako nedostaje, sistem odbija dokument greškom InvoiceDeliveryDateMissing. Trivijalno za ispraviti, ali lako se previdi kada datum u vašoj bazi sme da bude prazan.
  • Veza sa fiskalnim računima. Kada se faktura odnosi na već fiskalizovan promet, referenca na fiskalni račun ide u UBL kao AdditionalDocumentReference sa prefiksom FISR. Ako izostane, dokument pada na grešci UBLInvoiceMissingFiscalBillsOrDate.
  • Poreske kategorije. Pogrešno mapiranje vaših internih šifri PDV-a na kategorije koje SEF očekuje proizvodi fakture koje prođu validaciju, a pogrešne su u poreskom smislu. Ovo je najskuplja vrsta greške jer se otkrije kasno.
  • Zaokruživanje. Razlika od jednog dinara između vašeg obračuna i zbira stavki u XML-u zaustavlja dokument.
Referenca na fiskalni račun unutar UBL dokumenta
<cac:AdditionalDocumentReference>
  <cbc:ID>FISR:20250115-1107308722</cbc:ID>
</cac:AdditionalDocumentReference>
06

Koliko to traje i kada se ne isplati

Pošteno: samo slanje izlaznih faktura iz sistema koji već ima uredne podatke je posao od nekoliko dana. Kompletna integracija koja pokriva i prijem, statuse, rokove za prihvatanje, storniranje i arhivu redovno traje nekoliko nedelja, a najveći deo tog vremena ne odlazi na API nego na vaše podatke.

Trošak guraju četiri stvari: koliko su vam šifarnici uredni, da li faktura nastaje na jednom mestu ili na nekoliko, koliko izuzetaka ima u načinu na koji obračunavate PDV, i da li kod vas postoji neko ko može da presudi šta je ispravno kada se pojavi nejasnoća.

Ako izdajete nekoliko faktura mesečno, nemojte graditi integraciju. Portal je dovoljan i besplatan. Integracija počinje da se isplati kada prekucavanje postane posao koji neko radi svakog dana, ili kada greška u prekucavanju počne da košta više od samog kucanja.

AUTOR

David Božić, autor vodiča

David Božić

Osnivač i softverski inženjer

Radio na razvoju i održavanju bankarskih i fintech sistema, gde greška u podacima ima cenu. Danas gradi i preuzima poslovne sisteme za proizvodne firme, magacine i administrativne agencije.

LinkedIn profil

Niste sigurni da li vam integracija uopšte treba?

Recite nam kako vam fakture sada nastaju i koliko ih je mesečno. Ako je odgovor da vam portal sasvim dovoljno radi posao, to ćemo vam i reći.

Opišite nam slučaj↗