Avtomatizacija poročanja o DDV po državah in preverjanja VIES
Praktični vodič za razvijalce, ki z uporabo oblačnega računovodskega API-ja vgrajujejo skladnost z EU DDV v tržnice in platforme.
Večina napak v zvezi z DDV v kodi platform izhaja iz ene same domneve: da veljaven rezultat iz sistema VIES pomeni, da se lahko prodaja obdavči z 0-odstotno stopnjo. To ne drži, gradnja na tej bližnjici pa ustvarja obračune, ki so videti povsem v redu, dokler davčni inšpektor ne vpraša, zakaj je bila uporabljena oprostitev znotraj EU brez dokazil o prevozu ali doslednega zapisa o kraju opravljanja storitve oziroma dobave. Vrzel med "identifikacijska številka za DDV je veljavna" in "ta dobava je obravnavana pravilno" je točka, kjer se večina integracij neopazno zalomi.
Ta vodič prikazuje, kako z uporabo oblačnega računovodskega API-ja – kot primer izvajanja bomo uporabili Nordletov računovodski API – avtomatizirati poročanje o DDV po posameznih državah in preverjanje VIES. Cilj je sistem, ki zajame ustrezna dokazila ob trenutku prodaje, knjiži nespremenljive (immutable) vknjižbe v glavno knjigo in ustvari podatke, pripravljene za oddajo obračuna, združene po ureditvah in državah članicah, ne da bi bilo treba pozneje seštevati zneske v preglednicah.
Kaj sistem VIES dejansko pove in česa ne
Sistem VIES je Evropski sistem za izmenjavo informacij o DDV. Ko vnesete kodo države in številko DDV, sistem v realnem času poizve v ustrezni nacionalni podatkovni bazi in vrne podatek, ali je ta podatek o DDV veljaven ali neveljaven. To je ves obseg delovanja. Sistem potrdi, da je številka registrirana in, če to podpira zadevna država članica, omogočena za trgovanje znotraj EU.
VIES pa ne utemeljuje pravice do oprostitve dobave znotraj Skupnosti. Evropska komisija je glede tega izrecno jasna. Veljaven odgovor sistema VIES je le eno izmed dokazil. Še vedno morate potrditi, da je kupec dejanski prejemnik, da dobava izpolnjuje pogoje za dobavo znotraj EU, da obstajajo dokazila o prevozu ali odpremi in da račun vsebuje zahtevano besedilo o prenosu davčne obveznosti (reverse-charge).
Prva projektna odločitev je torej strukturne narave: status VIES in obravnavo DDV hranite v ločenih poljih. Nikoli ne povezujte vrednosti viesStatus: valid neposredno z zeroRated: true. V trenutku, ko ta dva pojma združite v enega, izgubite sposobnost zagovarjanja davčne obravnave, ko se pojavi dvom o dokazilih.
Predpogoji pred pisanjem integracijske kode
Preden pokličete katero koli končno točko (endpoint), si opredelite obseg poročanja. Ta del je sicer dolgočasen, vendar je njegovo preskakovanje drago:
- V katerih državah ima podjetje sedež ali stalne poslovne enote
- V katerih državah je registrirano za namene DDV
- Ali podjetje prodaja blago, storitve, digitalne storitve ali mešanico navedenega
- Ali so transakcije B2B, B2C ali oboje
- Ali uporablja domače registracije, ureditev OSS, ureditev IOSS, prenos davčne obveznosti ali pravila za tržnice (deemed-supplier)
- Katere izhode mora API zagotoviti: podatke za domači obračun, podatke za OSS/IOSS, registre računov, kot je litovski i.SAF, samo knjižbe v glavno knjigo ali podatkovne pakete za zunanjega ponudnika oddaje obračunov
To je ključno, ker ureditev OSS ne zajame vsake transakcije. Storitve, dobavljene v državi, kjer ima podjetje poslovno enoto, spadajo na splošno v domači obračun te države, ne pa v obračun OSS. Poslovne enote modelirajte ločeno že od začetka, sicer boste te dobave ob združevanju napačno preusmerili.
Prav tako ne vnašajte ene same stopnje DDV na državo v kodo (hard-coding). EU pozna standardne, znižane, super-znižane, parkirne, 0-odstotne in za posamezne izdelke specifične davčne stopnje, ki se spreminjajo. Zanesljiv vir za posamezen izdelek v določeni državi članici je davčni organ tiste države, medtem ko portal TEDB Evropske komisije nudi pregled po državah. Zabeležite vir in različico za vsako odločitev o stopnji, da poznejša posodobitev preglednice stopenj ne bo tiho spremenila prikaza stare transakcije.
Modeliranje davčne odločitve in ne le davčne stopnje
Jedro zanesljive integracije je sloj davčnih kategorij, ki se nahaja med izdelki in stopnjami. Izdelke povežite s kategorijami, kategorije s specifičnimi davčnimi kodami posamezne države in nato s stopnjami z veljavnostjo od določenega datuma naprej:
product/service
→ tax category
→ country-specific tax code
→ effective-dated rate and treatment
Nevarnejši pristop, ki povzroča odklone pri poročanju, je shema product SKU → 21% VAT. Isti izdelek ima v različnih državah različne stopnje, stopnja pa se lahko spremeni sredi obračunskega obdobja. Nordletova smernica za skladnost z DDV priporoča natanko takšno kartiranje na podlagi kategorij namesto neposrednega vezanja izdelkov na odstotke.
Vaša taksonomija davčnih kategorij mora biti stabilna in notranja: blago po splošni stopnji, blago po znižani stopnji, elektronsko opravljene storitve, običajne storitve, oproščena dobava, dobava z 0-odstotno stopnjo, prenos davčne obveznosti B2B znotraj EU (intra-EU B2B reverse charge), daljinska prodaja znotraj EU, uvoz po ureditvi IOSS, transakcija s fiksnim dobaviteljem (deemed-supplier). Vse nadaljnje obdelave izhajajo iz te taksonomije.
Preverjanje VIES kot asinhroni delovni proces za zbiranje dokazil
Uradna storitev VIES ponuja vmesnik SOAP/WSDL, ki sprejema dvomestno kodo države in številko DDV. Njene dokumentirane pomanjkljivosti so pomembne za vaše obvladovanje napak: neveljaven vnos, globalne omejitve sočasnosti in omejitve posameznih držav članic, nedosegljivost storitve, nedosegljivost posamezne države članice in poteki časovnih omejitev (timeouts). Obravnavajte jih kot ločene izhode in ne kot enoten košček z oznako "neuspelo".
Delovni proces, ki zdrži obremenitve in davčne inšpekcije, je videti takole:
- Normalizirajte identifikacijsko številko za DDV: predpono zapisujte z velikimi črkami, odstranite dovoljena presledkova mesta ali ločila, prvotno vnešeno vrednost stranke pa shranite posebej.
- Pred klicem omrežja lokalno preverite kodo države in obliko številke.
- Normalizirano številko pošljite v sistem VIES.
- Shranite normalizirani ID, časovne žige zahteve in odgovora, stanje veljavnosti / neveljavnosti / neobdelanosti, surov odgovor, morebitne napake storitve, ID-je kupca in računa ter odločitev aplikacije.
- Uspešne rezultate predpomnite za določeno, dokumentirano obdobje.
- Prehodne tehnične napake poskusite ponoviti z naraščajočim zakasnitvenim intervalom (backoff).
- Nerazrešene ali protislovne primere usmerite v ročni pregled.
- Ponovno preverite, ko je predpomnjeni rezultat zastarel ali pred transakcijo, kjer so dokazila bistvenega pomena.
Nordlet preveri številko EU DDV ob dodajanju kupca in jo ponovno preveri pred izdajo računa, če je prejšnji rezultat zastarel. To je vedenje, ki ga želite posnemati, ne glede na to, ali preverjanje poteka v platformi ali v vaši lastni kodi.
Ključno pravilo: postopek zaključka nakupa (checkout) naj ne bo sinhronski s sistemom VIES. Izpad storitve ne pomeni neveljavne številke. Če sistem VIES med prodajo preseže časovno omejitev, zadržite transakcijo v pregledu ali ji dodelite začasno stanje. Blokiranje zaključka nakupa zaradi nedelovanja storitve Evropske komisije je vir podpornih zahtevkov, napačna opredelitev dobrega kupca kot neveljavnega pa je še slabša.
Ločevanje statusa preverjanja od davčne obravnave
Ko prejmete rezultat iz sistema VIES, mora mehanizem za odločanje opraviti še nekaj dela. Shranite te podatke kot ločena polja:
{
"viesStatus": "valid",
"vatTreatment": "intra_eu_b2b_reverse_charge",
"evidenceStatus": "reviewed",
"placeOfSupply": "DE"
}
Preden uporabite prenos davčne obveznosti ali oprostitev, mora mehanizem preveriti, ali je kupec resnično prejemnik, ali sta država kupca in predpona DDV skladni, ali dobava izpolnjuje pogoje za dobavo znotraj EU, ali veljajo posebna pravila o kraju obdavčitve, ali obstajajo dokazila o prevozu, ali prodajalec deluje kot nadomeščeni dobavitelj (deemed supplier) in ali račun vsebuje zahtevano besedilo. Veljaven status VIES, ki ne prestane nobenega od teh preostalih preizkusov, ni zelena luč.
Ustvarjanje nespremenljive davčne odločitve ob izdaji računa
Ko je račun ustvarjen, poleg njega shranite celotno odločitev in ne le končne stopnje:
invoice
├─ line tax category
├─ place of supply
├─ VAT scheme
├─ country-specific rate
├─ rate-table version
├─ VIES evidence reference
├─ location-evidence references
├─ legal-basis reference
└─ marketplace-role flags
Pravila EU glede računov zahtevajo podatke o dobavitelju in kupcu, številko računa, opis, obdavčljivi znesek, stopnjo DDV, znesek DDV ter vse podatke o prenosu davčne obveznosti ali oprostitvi. Dobropisi in popravki potrebujejo nedvomen sklic na izvirni račun.
Nordletova glavna knjiga je nespremenljiva, zato se popravki izvajajo z novimi vnosi, kot so dobropisi ali stornacijske vknjižbe, in ne s popravljanjem zaključenih zapisov. Svojo programsko rešitev prilagodite temu modelu, tudi če bi vaša hramba podatkov tehnično omogočala prepisovanje. Urejanje zaključenega računa uniči povezavo med prvotnim obračunom in popravkom, kar je točno tista sledljivost, ki jo preverja davčni inšpektor.
Knjiženje, spletni kljuke (webhooks) in idempotenca
Prodaja ustvarja dvostavne računovodske vknjižbe, ki ohranjajo tako komercialno transakcijo kot obveznost za DDV, razdeljeno po državah in ureditvah. Domača prodaja se lahko knjiži takole:
Dr Accounts receivable / payment clearing
Cr Revenue
Cr VAT payable - DE - domestic
Prodaja znotraj EU s prenosom davčne obveznosti B2B knjiži prihodke brez izstopnega DDV in s sklicem na dokazilo o prenosu davčne obveznosti. Točen kontni plan je vaša izbira; pomembno je, da so dimenzije poročanja pritrjene na vsako vknjižbo: država članica, ureditev, davčna kategorija, stopnja, obdobje, izvirni račun in sled popravkov.
Spremembe stanj sprožajte s spletnimi kljukami (webhooks) in ne s preverjanjem stanja s poizvedbami (polling). Nordlet oddaja dogodke, kot je sale_invoice.paid, podpisuje dostave in ponavlja poskuse z naraščajočim zakasnitvenim intervalom. Vsakemu zapisu določite deterministični ključ idempotence:
sale:{platform_order_id}:invoice:{invoice_version}
Tudi vaš sprejemnik mora biti idempotenten. Spletna kljuka lahko prispe dvakrat, zamudi ali se sproži, potem ko je bila prvotna zahteva že uspešna. Preverite podpise, zabeležite ID-je dogodkov, dajte napačno oblikovane dogodke v karanteno, obdelajte jih prek zanesljive vrste (queue) in po urniku uskladite stanje spletnih kljuk z API-jem. Če še niste delali s podpisanimi spletnimi kljukami in ključi idempotence, je to mesto, kjer se skrivajo najsubtilnejše napake podvojenih vknjižb.
Združevanje za OSS in priprava podatkov za obračun
Za upravičene transakcije v okviru ureditve OSS združite podatke v glavni knjigi po ureditvah, državah članicah potrošnje, vrstah dobave, stopenjskih kategorijah, stopnjah, obdavčljivih zneskih, zneskih DDV, državi članici odpreme ali poslovne enote, valuti in obdobju popravka.
Obračun v okviru unijske ureditve ločuje dobave po državah članicah potrošnje in loči storitve iz države članice identifikacije, storitve iz drugih stalnih poslovnih enot ter blago, odpremljeno iz različnih držav članic. Poroča o obdavčljivih zneskih in zneskih DDV ločeno za standardne in znižane stopnje. Oproščene dobave in dobave z 0-odstotno stopnjo sploh ne sodijo v obračun OSS.
Nekaj operativnih podrobnosti, ki pogosto begajo:
- Obdobja za unijsko in neunijsko ureditev OSS so četrtletna; za IOSS pa mesečna. Obračuni in plačila zapadejo do konca naslednjega meseca.
- Ničelni obračun je obvezen za vsako obdobje, tudi če ni bilo ustreznih dobav. Samodejno ustvarite kontrolni seznam obdobja in ničelni obračun.
- Obračuni OSS se izdelujejo v evrih, pri čemer se uporablja referenčni tečaj ECB na zadnji dan davčnega obdobja, kadar je potrebna pretvorba. Shranite izvorno valuto, menjalni tečaj, datum tečaja, pretvorjeni znesek in metodo.
Izvozi morajo izvirati iz zaklenjene glavne knjige in nikoli iz stranske preglednice. Seštevki v preglednicah izgubijo popravke, države odpreme, stopnje in dokazila. Izvoz vsebuje obračunsko obdobje, ureditev, državo članico potrošnje, državo odpreme, kategorijo dobave, stopnjo, obdavčljiv znesek in znesek DDV, valuto in uporabljeni menjalni tečaj, zneske popravkov za tekoče in preteklo obdobje, ID-je izvornih računov, sklice na dobropise in usklajene vsote.
Bodite natančni glede tega, kaj API tukaj ponuja. Nordlet izračunava obračune OSS in IOSS na podlagi računov in glavne knjige, vključno s popravki iz preteklih obdobij, pošilja pakete domačih obračunov za Litvo (FR0600), Nemčijo (UStVA) in Poljsko (JPK_V7M) ter ustvarja register i.SAF, pripravljen za litovski VMI. To so podatki, pripravljeni za obračun. En sam klic API-ja ne odda davčnega obračuna za DDV posamezne države prek vsakega nacionalnega prehoda in noben obračun se ne odda organu v vašem imenu. Računovodstvo, pripravo obračuna, izvoz, oddajo prek prehoda in potrditev plačila obravnavajte kot ločena stanja v svojem sistemu. Vodič po motorju za EU DDV dokumentira primere, ki jih motor rešuje, in mesta, kjer se sprožijo opozorila.
Zaklepanje obdobja
Po pregledu in odobritvi uskladite račune z vknjižbami v glavni knjigi, uskladite salde DDV v glavni knjigi s podatki za obračun, izvozite obračun, zabeležite sklice na oddajo in plačilo ter nato zaklenite obdobje. Nordlet blokira vknjižbe v zaklenjen mesec, tudi prek API-ja. Popravki po zaklepanju se uvrstijo v kasnejše obdobje z izrecnimi povezavami na izvirni dokument in vplivno obračunsko obdobje.
Pogosti vzorci napak in kako se jim izogniti
| Vzorec napake | Zakaj se pojavi | Rešitev |
|---|---|---|
| Obravnavanje veljavnega rezultata VIES kot zadostnega za 0-odstotno stopnjo | VIES ne utemeljuje pravic do oprostitve | Poleg rezultata shranite dokazila o kupcu, dobavi, prevozu in računu |
| Obravnavanje neveljavnega rezultata kot dokaza o odsotnosti registracije | Številka morda ni omogočena za trgovanje znotraj EU ali pa podatkovna baza zamuja | Ločite neveljavne, neobdelane in tehnično neuspele primere; spore usmerite v pregled |
| Vzpostavitev sinhrone povezave med zaključkom nakupa in VIES | Omejitve sočasnosti, poteki časovnih omejitev, izpadi | Asinhrono preverjanje, kratkotrajno predpomnjenje, naraščajoči interval, začasna stanja |
| Večno predpomnjenje rezultatov | Status registracije in aktivacije se spreminjata | Shranite časovne žige in veljavnost; pred izdajo računa ponovno preverite, če je zastarelo |
| Neposredno preslikovanje izdelkov v odstotke DDV | Stopnje in oprostitve so odvisne od države in datuma | Izdelek v kategorijo, kategorijo v državno kodo, nato v stopnjo z veljavnostjo |
| Rekonstrukcija OSS iz preglednic | Sklici ne vsebujejo popravkov, držav odpreme, dokazil | Izpeljite iz nespremenljive glavne knjige z dimenzijami na vsaki vknjižbi |
| Vključevanje storitev domačih poslovnih enot v OSS | Določene storitve sodijo v domači obračun | Poslovne enote modelirajte ločeno, pred združevanjem usmerite glede na ureditev |
| Izpuščanje ničelnih obračunov | OSS zahteva obračun za vsako obdobje | Ustvarite kontrolni seznam in samodejno ustvarite ničelne obračune |
| Urejanje zaključenih računov za popravke | Uniči povezavo med oddajo in popravkom | Uporabite dobropise in stornacijske vknjižbe v kasnejšem obdobju |
Česa bi se lotili najprej
Če bi to integracijo začeli jutri, bi najprej zgradili sloj davčnih kategorij in zapis davčne odločitve, preden bi se dotaknili katere koli končne točke za poročanje. Taksonomijo je treba stabilizirati, izdelke preslikati v kategorije, zapis o odločitvi pa mora zajemati surove podatke iz držav in razlog, zakaj je bil izbran kraj opravljanja storitve. Vse ostalo – VIES, knjiženje, združevanje za OSS, izvoz – je odvisno od pravilnosti tega modela.
Nato bi sistem VIES vključili kot asinhroni korak zbiranja dokazil s štirimi ločenimi stanji ter ga zagnali v testnem podjetju (sandbox) z vzorčnimi podatki za zahtevnejše primere (časovne omejitve, neobdelani rezultati, neujemajoče se predponifikacije), preden bi ga spustili v produkcijsko okolje. Zgornjim vzorcem napak se je mogoče skoraj v celoti izogniti, če podatkovni model nosi dokazila in dimenzije poročanja že od prve vknjižbe naprej.
FAQ
Ali veljaven odgovor sistema VIES pomeni, da lahko uporabim 0-odstotno stopnjo pri prodaji B2B znotraj EU?
Ne. VIES potrjuje, da je številka DDV registrirana in, kjer je to podprto, omogočena za trgovanje znotraj EU. Pravica do oprostitve dobave znotraj Skupnosti je odvisna od dodatnih dokazil: da je kupec dejanski prejemnik, dokazila o prevozu ali odpremi, pravilnega kraja opravljanja storitve ter zahtevanega besedila na računu. Rezultat VIES shranite kot enega od vnosov in ne kot končno odločitev.
Ali naj preverjanje VIES blokira zaključek nakupa?
Ne bi smelo. Sistem VIES lahko preseže časovno omejitev ali naleti na omejitve sočasnosti, pri čemer izpad storitve ni enak neveljavni številki. Preverjajte asinhrono, uspešne rezultate predpomnite za dokumentirano obdobje, ponovite poskuse pri prehodnih napakah, dvoumne primere pa zadržite v pregledu z začasnim stanjem, namesto da prekinete prodajo.
Ali lahko oblačni računovodski API samodejno odda moje obračune DDV?
Lahko ustvari podatke, pripravljene za oddajo, združene po ureditvah in državah članicah, izračunane iz nespremenljive glavne knjige, vključno s popravki. Ali se oddaja izvede tudi prek posameznih nacionalnih prehodov za oddajo, je odvisno od izdelka in države. Nordlet izračunava obračune OSS in IOSS, pošilja pakete domačih obračunov za Litvo, Nemčijo in Poljsko ter ustvarja register i.SAF za Litvo, vendar ne oddaja ničesar davčnemu organu v vašem imenu. Računovodstvo, pripravo obračuna, izvoz, oddajo prek prehoda in plačilo obravnavajte kot ločena stanja, namesto da predvidevate, da en sam klic uredi vse povsod.
Kako obravnavam popravke po zaklepanju obdobja?
Objavite jih v kasnejšem obdobju z izrecnimi povezavami na izvirni dokument in vplivno obračunsko obdobje. Nordlet blokira nove vknjižbe v zaklenjen mesec, tudi prek API-ja, zato popravki potekajo prek dobropisov ali stornacijskih vknjižb in ne s popravljanjem podatkov. S tem se ohrani sledljivost med prvotnim obračunom in popravkom.