Nordlet

← Blogi

Riigipõhise käibemaksuaruandluse ja VIES-i valideerimise automatiseerimine

Praktiline juhend arendajatele EL-i käibemaksu nõuetele vastavuse integreerimiseks veebiturgudesse ja platvormidesse pilveraamatupidamise API abil.

Nordlet Team · · 10 min lugemist

Enamik käibemaksuvigu platvormi koodis tuleneb ühest oletusest: et kehtiv VIES-i päringu tulemus tähendab võimalust rakendada müügile 0%-list maksumäära. Nii see ei ole ning sellele oletusele ehitatud aruanded näevad head välja täpselt seni, kuni audiitor küsib, miks rakendati ühendusesisest maksuvabastust ilma transporditõendi või ühtse käibe tekkekoha kirjeta. Vahemik "käibemaksunumber on korras" ja "seda tehingut on õigesti koheldud" on koht, kus enamik integratsioone märkamatult eksib.

See juhend kirjeldab, kuidas automatiseerida riigipõhist käibemaksuaruandlust ja VIES-i valideerimist pilveraamatupidamise API abil, kasutades näitena Nordlet's accounting API. Eesmärk on luua süsteem, mis kogub müügi hetkel õiged tõendid, kannab andmed muutumatutesse (immutable) pearaamatu kannetesse ja koostab skeemi ning liikmesriigi järgi rühmitatud aruandlusvalmis andmed ilma neid hiljem tabelarvutuses kokku arvutamata.

Mida VIES tegelikult näitab ja mida mitte

VIES on EL-i käibemaksete alase teabe vahetamise süsteem. Kui sisestate riigikoodi ja käibemaksunumbri, päring teeb reaalajas päringu vastavasse riiklikku andmebaasi ja tagastab info selle kohta, kas käibemaksuteave on kehtiv või kehtetu. See ongi kogu ulatus. Süsteem kinnitab, et number on registreeritud ja, kui liikmesriik seda toetab, aktiveeritud liidusiseseks kaubanduseks.

See ei loo õigust vabastada ühendusesisest soetust käibemaksust. Euroopa Komisjon on selles osas üheselt mõistetav. Kehtiv VIES-i vastus on üks tõend paljude seas. Peate ikkagi kinnitama, et klient on tegelik saaja, et tehing kvalifitseerub liidusiseseks, et olemas on transpordi- või lähetustõendid ning et arvel on nõutavad viited pöördmaksustamisele.

Seega on esimene arhitektuurne otsus struktuurne: hoidke VIES-i staatus ja käibemaksu kohtlemine eraldi väljadel. Ärge kunagi ühendage välja viesStatus: valid otse väärtusega zeroRated: true. Niipea kui need kaks mõistet omavahel kokku seote, kaotate võimekuse oma otsust kaitsta, kui tõendeid kahtluse alla seatakse.

Eeldused enne integratsioonikoodi kirjutamist

Enne ühegi API päringu tegemist määrake kindlaks aruandluse ulatus. See osa on rutiinne, kuid selle vahelejätmine on kulukas.

  • Riigid, kus ettevõttel on tegevuskoht või püsiv tegevuskoht
  • Riigid, kus ettevõttel on käibemaksukohustuslasena registreeringud
  • Kas müüakse kaupu, teenuseid, digiteenuseid või nende segu
  • Kas tehingud on B2B, B2C või mõlemad
  • Kas kasutatakse riigisiseseid registreeringuid, OSS-i, IOSS-i, pöördmaksustamist või veebituru eeldatava tarnija (deemed-supplier) reegleid
  • Milliseid väljundeid API peab tootma: riigisisese deklaratsiooni andmed, OSS-/IOSS-andmed, arveregistrid (nagu Leedu i.SAF), ainult pearaamatu kanded või andmepaketid eraldiseisvale aruandlusteenuse pakkujale

See on oluline, kuna OSS ei kata iga tehingut. Riigis, kus ettevõttel on püsiv tegevuskoht, osutatud teenused kuuluvad reeglina selle riigi kodumaisesse deklaratsiooni, mitte OSS-i aruandesse. Modelleerige püsivad tegevuskohad eraldiseisvalt juba alguses, vastasel juhul suunate need tehingud summeerimisel valesti.

Ärge ka hardcode'ige ühte käibemaksumäära riigi kohta. EL-is on standard-, vähendatud, eriti madalad, parkimis-, null- ja tootepõhised määrad ning need muutuvad. Usaldusväärne allikas konkreetse toote jaoks konkreetses liikmesriigis on selle riigi maksuhaldur, kusjuures komisjoni TEDB pakub riikidevahelist ülevaadet. Salvestage iga maksumäära otsuse taga olev allikas ja versioon, et hilisem maksumäärade tabeli uuendus ei muudaks märkamatult seda, kuidas vanad tehingud kuvatakse.

Maksustamise otsuse, mitte ainult määra modeleerimine

Töökindla integratsiooni tuumaks on maksukategooriate kiht, mis asub toodete ja määrade vahel. Seoge tooted kategooriatega, kategooriad riigipõhiste maksekoodidega ja seejärel kehtivusaegadega määradega:

product/service
    → tax category
    → country-specific tax code
    → effective-dated rate and treatment

Ebaturvaline lähenemine, mis põhjustab aruandluse triivimist, on product SKU → 21% VAT. Sama toode kannab eri riikides erinevaid määrasid ja määr võib perioodi keskel muutuda. Nordleti enda käibemaksu nõuetele vastavuse juhend soovitab täpselt sellist kategooriapõhist vastendust, mitte toodete sidumist otse protsentidega.

Teie maksukategooriate taksonoomia peab olema stabiilne ja sisemine: standardmüüriga kaubad, vähendatud määraga kaubad, elektrooniliselt osutatavad teenused, tavapärased teenused, maksuvaba käive, 0%-müük, EL-i sisene B2B pöördmaksustamine, EL-i sisene kaugmüük, IOSS-i impordid, eeldatava tarnija (deemed-supplier) tehingud. Kõik sellele järgnev põhineb sellel taksonoomial.

VIES-i valideerimine asünkroonse tõendite töövookesena (workflow)

Ametlik VIES-i teenus pakub SOAP/WSDL liidest, mis võtab vastu kahetähelise riigikoodi ja käibemaksunumbri. Selle dokumenteeritud tõrked on teie veahalduses olulised: vigane sisend, globaalsed ja liikmesriikide päringute limiidid, teenuse kättesaamatus, liikmesriigi kättesaamatus ja aegumised (timeouts). Käsitlege neid eraldiseisvate tulemitena, mitte üheainsa „ebaõnnestunud“ kategooriana.

Koormust ja auditeerimist taluv töövoog näeb välja järgmiselt:

  1. Normaliseerige käibemaksunumber: muutke eesliide suurtähtedeks, eemaldage lubatud tühikud või kirjavahemärgid ning säilitage kasutaja sisestatud väärtus eraldi.
  2. Valideerige riigikoodi ja numbri vormingut kohapeal, enne kui teete võrgupäringu.
  3. Esitage normaliseeritud number VIES-ile.
  4. Salvestage normaliseeritud ID, päringu ja vastuse ajatemplid, kehtiv / kehtetu / töötlemata olek, toores vastus, teenuse vead, kliendi- ja arve ID-d ning rakenduse otsus.
  5. Puhverdage (cache) edukad tulemused määratud ja dokumenteeritud perioodiks.
  6. Tehke ajutiste tehniliste tõrgete korral korduskatseid (retry) ooteajaga (backoff).
  7. Suunake lahendamata või vastuolulised juhud käsitsi ülevaatusele.
  8. Valideerige uuesti, kui puhverdatud tulemus on aegunud või enne tehingut, mille tõend on oluline.

Nordlet kontrollib EL-i käibemaksunumbrit kliendi lisamisel ja teeb uue kontrolli enne arve esitamist, kui varasem tulemus on aegunud. See on käitumine, mida soovite korrata olenemata sellest, kas kontroll toimub platvormil või teie enda koodis.

Kriitiline reegel: ärge muutke ostukorvi tasumist VIES-iga sünkroonseks. Teenuse katkestus ei tähenda kehtetut numbrit. Kui VIES-i päring aegub müügiprotsessi ajal, hoidke tehing ülevaatamiseks kinni või määrake sellele ajutine staatus. Tasumise blokeerimine Komisjoni teenuse kättesaadavuse taga tekitab klienditoe päringuid ning hea kliendi ekslik märgistamine kehtetuks on veelgi hullem.

Valideerimisstaatuse eraldamine tehingu kohtlemisest

Kui VIES-i tulemus on käes, on otsuse mootoril vaja teha veel tööd. Salvestage need eraldi väljadena:

{
  "viesStatus": "valid",
  "vatTreatment": "intra_eu_b2b_reverse_charge",
  "evidenceStatus": "reviewed",
  "placeOfSupply": "DE"
}

Enne pöördmaksustamise või maksuvabastuse rakendamist peaks mootor kontrollima, kas klient on tõeliselt saaja, kas kliendi riik ja käibemaksu eesliide on kooskõlas, kas tarne kvalifitseerub liidusiseseks, kas kehtivad erilised käibe tekkekoha reeglid, kas transporditõendid on olemas, kas müüja tegutseb eeldatava tarnijana ja kas arve sisaldab nõutavat sõnastust. Kehtiv VIES-i staatus, mis ei läbi ühtegi teist testi, ei ole roheline tuli.

Muutumatu (immutable) käibemaksuotsuse loomine arve koostamisel

Arve loomisel säilitage selle juures kogu otsus, mitte ainult lõplik määr:

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

EL-i arvenõuded nõuavad tarnija ja kliendi andmeid, arvenumbrit, kirjeldust, maksustatavat summat, käibemaksumäära, käibemaksusummat ning mis tahes pöördmaksustamise või maksuvabastuse teavet. Kreeditarved ja parandused vajavad ühemõttelist viidet algsele arvele.

Nordleti pearaamat on muutumatu, mistõttu parandused tehakse uute kannete (näiteks kreeditarvete või tagasipööramiskannete) kaudu, mitte suletud kirjete redigeerimisega. Ehitage oma tarbija selle mudeli ümber isegi siis, kui teie andmebaas tehniliselt lubaks ülekirjutamist. Suletud arve muutmine hävitab seose esialgse deklaratsiooni ja paranduse vahel, mis on täpselt see ajalugu, mida audiitor jälgib.

Postitamine, veebikonksud (webhooks) ja identsus (idempotency)

Müük loob kahekordse kirjendamise (double-entry) raamatupidamiskanded, mis säilitavad nii äritehingu kui ka riigi ja skeemi kaupa eraldatud käibemaksukohustuse. Riigisisene müük võib luua kande:

Dr Accounts receivable / payment clearing
    Cr Revenue
    Cr VAT payable - DE - domestic

EL-i sisene B2B pöördmaksustamisega müük kannab tulu ilma väljundkäibemaksuta ja viitega pöördmaksustamise tõendile. Täpne kontoplaan on teie valida; oluline on, et aruandluse dimensioonid jääksid seotuks iga kandega: liikmesriik, skeem, maksukategooria, määr, periood, algne arve ja paranduste ajalugu.

Käivitage olekumuutusi veebikonksude, mitte küsitluse (polling) abil. Nordlet edastab sündmusi nagu sale_invoice.paid, allkirjastab edastused ja teeb ooteajaga korduskatseid. Andke igale kirjutamisele deterministlik identsusvõti (idempotency key):

sale:{platform_order_id}:invoice:{invoice_version}

Ka teie tarbija peab olema identsuskindel (idempotent). Veebikonks võib saabuda kaks korda, hilineda või käivituda pärast seda, kui algne päring oli juba edukas. Kontrollige allkirju, salvestage sündmuste ID-d, eraldage vigased sündmused karantiini, töödelge vastupidava järjekorra (durable queue) kaudu ja leppige veebikonksi olek API-ga kokku graafiku alusel. Kui te pole varem allkirjastatud veebikonksude ja identsusvõtmetega töötanud, elavad siin kõige peenemad topeltkannete vead.

Rühmitamine OSS-i jaoks ja aruandlusvalmis eksportide koostamine

Kõlblike OSS-i tehingute puhul rühmitage pearaamatu andmed skeemi, tarbimise liikmesriigi, tarne tüübi, määrade kategooria, määra, maksustatava summa, käibemaksusumma, lähetus- või tegevuskoha liikmesriigi, valuuta ja parandusperioodi järgi.

Liidu skeemi deklaratsioon eraldab tarned tarbimise liikmesriigi järgi ja eristab teenuseid identifitseerimise liikmesriigist, teenuseid teistest püsivatest tegevuskohtadest ja eri liikmesriikidest lähetatud kaupu. See kajastab maksustatavaid ja käibemaksusummasid eraldi standard- ja vähendatud määrade puhul. Maksuvabad ja 0%-lised tarned jäävad OSS-i deklaratsioonist täielikult välja.

Mõned operatiivsed üksikasjad, mis sageli probleeme tekitavad:

  • Liidu ja liiduvälised OSS-perioodid on kvartaalsed; IOSS on kuupõhine. Deklaratsioonid ja maksed tuleb tasuda järgmise kuu lõpuks.
  • Null-deklaratsioon on nõutav iga perioodi kohta isegi siis, kui asjakohaseid tarneid ei tehtud. Looge perioodi kontroll-leht ja genereerige nullväärtusega deklaratsioon automaatselt.
  • OSS-i deklaratsioonid esitatakse eurodes, kasutades EKP võrdluskurssi maksustamisperioodi viimasel päeval, kui konverteerimine on vajalik. Salvestage algne valuuta, valuutakurss, kursipäev, konverteeritud summa ja meetod.

Eksport peaks tulema lukustatud pearaamatust, mitte kunagi kõrvalolevast tabelarvutusest. Tabelarvutuse summad kaotavad parandused, lähetusriigid, määrad ja tõendid. Eksport sisaldab aruandlusperioodi, skeemi, tarbimise liikmesriiki, lähetusriiki, tarnekategooriat, määra, maksustatavaid ja käibemaksusummasid, valuutat ja rakendatud valuutakurssi, jooksva ja varasema perioodi parandussummasid, algseid arve ID-sid, kreeditarvete viiteid ja vastavussummasid.

Olge täpsed selle suhtes, mida API siin edastab. Nordlet arvutab OSS-i ja IOSS-i deklaratsioonid arvete ja pearaamatu põhjal, kaasates varasemate perioodide parandused, edastab riigisiseseid deklaratsioonipakette Leedu (FR0600), Saksamaa (UStVA) ja Poola (JPK_V7M) jaoks ning genereerib Leedule VMI-valmis i.SAF-i registreid. Need on aruandlusvalmis andmed. Ükski API päring ei esita iga riigi käibemaksudeklaratsiooni läbi iga riikliku lüüsi ja ühtegi deklaratsiooni ei esitata teie nimel maksuhaldurile. Hoidke raamatupidamist, deklaratsiooni koostamist, eksporti, lüüsi kaudu esitamist ja maksekinnitust oma süsteemis eraldi olekutena. EL-i käibemaksumootori juhend dokumenteerib, milliseid juhtumeid mootor lahendab ja kus selle hoiatused käivituvad.

Perioodi lukustamine

Pärast ülevaatamist ja kinnitamist leppige arved pearaamatu kannetega kokku, leppige pearaamatu käibemaksusaldod deklaratsiooni andmestikuga kokku, eksportige deklaratsioon, registreerige esitamise ja maksmise viited ning seejärel lukustage periood. Nordlet blokeerib kanded lukustatud kuusse, sealhulgas API kaudu. Parandused pärast lukustamist tehakse hilisemas perioodis selgete viidetega algsele dokumendile ja mõjutatud aruandlusperioodile.

Sagedased vead ja nende vältimine

Veamolt Põhjus Lahendus
Kehtiva VIES-i tulemuse käsitlemine piisava tõendina 0%-lise määra rakendamiseks Vies ei loo maksuvabastuse õigust Salvestage kliendi-, tarne-, transpordi- ja arvetõendid tulemuse juures
Kehtetu tulemuse käsitlemine registreeringu puudumise tõendina Number ei pruugi olla liidusiseseks kaubanduseks aktiveeritud või andmebaas viibib Eristage kehtetu, töötlemata ja tehniline tõrge; suunake vaidlused ülevaatusele
Ostukorvi tasumise sünkroonseks muutmine VIES-iga Päringute limiidid, aegumised, katkestused Asünkroonne valideerimine, lühiajaline puhverdamine, ooteaeg, ajutised olekud
Tulemuste igavene puhverdamine Registreerimise ja aktiveerimise staatus muutub Salvestage ajatemplid ja aegumine; kontrollige uuesti enne arveldamist, kui aegunud
Toodete vastendamine otse käibemakuprotsentidega Määrad ja vabastused sõltuvad riigist ja kuupäevast Toode kategooriasse, kategooria riigikoodi järgi, kehtivusajaga määrale
OSS-i taasloomine tabelarvutustest Summadest puuduvad parandused, lähetusriigid, tõendid Tuletada muutumatust pearaamatust koos dimensioonidega igal kandel
Riigisisese tegevuskoha teenuste kaasamine OSS-i Teatud teenused kuuluvad kodumaisesse deklaratsiooni Modelleerige tegevuskohad eraldi, suunake skeemi järgi enne summeerimist
Null-deklaratsioonide vahelejätmine OSS nõuab deklaratsiooni igal perioodil Looge kontroll-leht ja looge automaatselt nullväärtusega deklaratsioonid
Suletud arvete redigeerimine paranduste tegemiseks Hävitab deklaratsiooni ja paranduse vahelise seose Kasutage hilisemas perioodis kreeditarveid ja tagasipööramiskandeid

Mida me teeksime esimesena

Kui alustaksime seda integratsiooni homme, ehitaksime maksukategooriate kihi ja käibemaksu otsuse kirje enne ühegi aruandlusotsase puudutamist. Saavutage stabiilne taksonoomia, seoge tooted kategooriatega ja pange otsuse kirje salvestama toored riigi signaalid koos põhjusega, miks tarbimiskoht valiti. Kõik muu - VIES, postitamine, OSS-i rühmitamine, eksport - sõltub selle mudeli õigsusest.

Seejärel ühendaksime VIES-i asünkroonse tõendite sammuna nelja eraldatud olekuga ja käivitaksime selle liivakasti ettevõttes keeruliste juhtude (aegumised, töötlemata tulemused, ebakõlalised eesliited) katsetamiseks, enne kui lubame selle tootmiskeskkonda lähedale. Ülaltoodud vead on peaaegu täielikult välditavad, kui andmemudel kannab tõendeid ja aruandluse dimensioone alates esimesest kandesth.

FAQ

Kas kehtiv VIES-i vastus tähendab, et võin rakendada EL-i sisesele B2B müügile 0%-list maksumäära?

Ei. VIES kinnitab, et käibemaksunumber on registreeritud ja, kus toetatud, aktiveeritud liidusiseseks kaubanduseks. Õigus vabastada liidusisene tarne sõltub lisatõenditest: sellest, et klient on tegelik saaja, transpordi- või lähetustõendist, õigest käibe tekkekohast ja nõutavast arve sõnastusest. Salvestage VIES-i tulemus ühe sisendina, mitte lõpliku otsusena.

Kas VIES-i valideerimine peaks ostukorvi tasumist blokeerima?

Ei peaks. VIES võib aeguda või saavutada päringute piirmäärad ning katkestus ei ole sama mis kehtetu number. Valideerige asünkroonselt, puhverdage edukaid tulemusi dokumenteeritud perioodiks, proovige ajutisi tõrkeid uuesti ja hoidke ebaselgeid juhtumeid ajutise olekuga ülevaatamisel, selle asemel et müük ebaõnnestunuks märkida.

Kas pilveraamatupidamise API saab minu käibemaksudeklaratsioonid automaatselt esitada?

See suudab genereerida aruandluse valmis andmed, mis on rühmitatud skeemi ja liikmesriigi järgi, arvutatud muutumatust pearaamatust koos lisatud parandustega. Kas see esitab andmeid ka läbi iga riikliku esitamislüüsi, sõltub tootest ja riigist. Nordlet arvutab OSS-i ja IOSS-i deklaratsioone, edastab riigisiseseid deklaratsioonipakette Leedu, Saksamaa ja Poola jaoks ning genereerib Leedule VMI-valmis i.SAF-i registreid, kuid see ei esita midagi teie nimel maksuhaldurile. Käsitlege raamatupidamist, deklaratsiooni koostamist, eksporti, lüüsi kaudu esitamist ja maksmist eraldi olekutena, selle asemel et eeldada ühe päringu toimimist igal pool.

Kuidas käsitleda parandusi pärast perioodi lukustamist?

Postitage need järgnevas perioodis selgete viidetega algsele dokumendile ja mõjutatud aruandlusperioodile. Nordlet blokeerib uued kanded lukustatud kuusse, sealhulgas API kaudu, mistõttu parandused liiguvad kreeditarvete või tagasipööramiskannete kaudu, mitte redigeerimise teel. See säilitab seose esialgse deklaratsiooni ja paranduse vahel.

Edasine lugemine