PVM ataskaitų teikimo pagal šalis ir VIES patvirtinimo automatizavimas
Praktinis vadovas kūrėjams, integruojantiems ES PVM atitiktį į prekyvietes ir platformas naudojant debesų buhalterinės apskaitos API.
Didžioji dalis PVM klaidų platformos kode kyla iš vienos prielaidos: kad galiojantis VIES rezultatas reiškia, jog pardavimui galima taikyti 0 procentų PVM tarifą. Taip nėra, o statant sprendimus ant šio supaprastinimo gaunamos ataskaitos, kurios atrodo gerai iki tol, kol auditorius paklausia, kodėl ES vidinis atleidimas nuo mokesčio buvo taikytas be transportavimo įrodymų arba nuoseklaus teikimo vietos įrašo. Atotrūkis tarp „PVM kodas yra tvarkoje“ ir „šis sandoris traktuojamas teisingai“ yra vieta, kur dauguma integracijų tyliai suklumpa.
Šiame vadove pasakojama, kaip automatizuoti PVM ataskaitų teikimą pagal šalis ir VIES patvirtinimą naudojant debesų buhalterinės apskaitos API, pasitelkiant „Nordlet“ buhalterinės apskaitos API kaip įgyvendinimo pavyzdį. Tikslas – sukurti sistemą, kuri pardavimo metu fiksuoja tinkamus įrodymus, įrašo nekeičiamus (immutable) didžiosios knygos įrašus ir generuoja ataskaitoms paruoštus duomenis, sugrupuotus pagal schemas ir valstybes nares, vėliau nerekonstruojant sumų skaičiuoklėje.
Ką VIES iš tikrųjų parodo ir ko neparodo
VIES yra ES PVM informacijos keitimosi sistema. Kai pateikiate šalies kodą ir PVM kodą, sistema realiuoju laiku užklausia atitinkamos nacionalinės duomenų bazės ir grąžina atsakymą, ar ta PVM informacija galioja, ar ne. Tuo ir apsiriboja visa apimtis. Sistema patvirtina, kad numeris yra registruotas ir, jei valstybė narė tai palaiko, aktyvus tarptautinei prekybai ES viduje.
Ji nesuteikia teisės taikyti atleidimo nuo mokesčio prekių tiekimui Bendrijos viduje. Europos Komisija dėl to pasisako aiškiai. Galiojantis VIES atsakymas yra tik vienas iš kelių įrodymų. Jūs vis tiek turite patvirtinti, kad pirkėjas yra tikrasis gavėjas, kad tiekimas atitinka ES vidaus sandorio kriterijus, kad egzistuoja transportavimo arba išgabenimo įrodymai ir kad sąskaitoje faktūroje yra nurodyta reikalaujama atvirkštinio apmokestinimo formuluotė.
Taigi pirmasis projektavimo sprendimas yra struktūrinis: laikykite VIES statusą ir PVM apmokestinimo tvarką atskiruose laukuose. Niekada tiesiogiai nesiejama viesStatus: valid su zeroRated: true. Tą akimirką, kai šias dvi sąvokas sulyginate, prarandate galimybę pagrįsti taikomą tvarką, kai kyla klausimų dėl įrodymų.
Būtinos sąlygos prieš rašant integracijos kodą
Prieš iškviečiant bet kokį galinį punktą (endpoint), apibrėžkite ataskaitų teikimo apimtį. Ši dalis yra nuobodi, tačiau jos praleidimas kainuoja brangiai:
- Šalys, kuriose įmonė yra įsikūrusi arba turi nuolatines buveines
- Šalys, kuriose ji turi PVM registracijas
- Ar įmonė parduoda prekes, paslaugas, skaitmenines paslaugas, ar jų mišinį
- Ar sandoriai yra B2B, B2C, ar abu
- Ar ji naudoja vietines registracijas, OSS, IOSS, atvirkštinį apmokestinimą, ar prekyvietės privalomo mokesčio mokėtojo (deemed-supplier) taisykles
- Kokias išvestis API turi pateikti: vietinės ataskaitos duomenis, OSS / IOSS duomenis, sąskaitų faktūrų registrus, tokius kaip Lietuvos i.SAF, tik didžiosios knygos įrašus arba narkavimus (payload) atskiram deklaravimo paslaugų teikėjui
Tai svarbu, nes OSS neapima kiekvieno sandorio. Paslaugos, suteiktos šalyje, kurioje įmonė turi buveinę, paprastai priskiriamos tos šalies vietinei, o ne OSS ataskaitai. Nuo pat pradžių modeliuokite buveines atskirai, antra, agregavimo metu šiuos sandorius nukreipsite neteisingai.
Taip pat nenaudokite vieno fiksuoto PVM tarifo kiekvienai šaliai. ES taiko standartinius, sumažintus, itin sumažintus, tarpinius, nualintus (parking), 0 procentų tarifus ir nuo produktų priklausančius režimus, ir jie keičiasi. Patikimas konkretaus produkto šaltinis konkrečioje valstybėje narėje yra tos šalies mokesčių institucija, o Komisijos TEDB sistema siūlo bendrą apžvalgą tarp šalių. Kiekvienam tarifo sprendimui priskirkite šaltinį ir versiją, kad vėlesnis tarifų lentelės atnaujinimas slapta nepakeistų to, kaip atrodo senas sandoris.
Mokesčių sprendimo, o ne tik tarifo modeliavimas
Tvarios integracijos pagrindas yra mokesčių kategorijų lytis (layer), esanti tarp produktų ir tarifų. Susiekite produktus su kategorijomis, kategorijas – su šaliai specifiniais mokesčių kodais, o tada – su tarifais ir tvarkomis, turinčiais galiojimo datas:
product/service
→ tax category
→ country-specific tax code
→ effective-dated rate and treatment
Nesaugus variantas, sukeliantis ataskaitų išsikraipymą, yra product SKU → 21% VAT. Tas pats produktas skirtingose šalyse turi skirtingus tarifus, o tarifas laikotarpio viduryje gali pasikeisti. Pačios „Nordlet“ PVM atitikties gairės rekomenduoja būtent tokį kategorijomis pagrįstą susiejimą, o ne tiesioginį produktų susiejimą su procentais.
Jūsų mokesčių kategorijų taksonomija turi būti stabili ir vidinė: standartinio tarifo prekės, sumažinto tarifo prekės, elektroniniu būdu teikiamos paslaugos, įprastos paslaugos, neapmokestinamas tiekimas, tiekimas taikant 0 procentų tarifą, ES vidaus B2B atvirkštinis apmokestinimas, ES vidaus nuotolinė prekyba, IOSS importas, fiksuotojo tiekėjo sandoris. Viskas, kas yra grandinės gale, remiasi šia taksonomija.
VIES patvirtinimas kaip asinchroninis įrodymų darbo srautas
Oficialioji VIES paslauga turi SOAP/WSDL sąsają, kuriai reikia dviejų raidžių šalies kodo ir PVM numerio. Dokumentuotos jos klaidos yra svarbios jūsų klaidų valdymui: netinkama įvestis, pasauliniai ir valstybių narių lygiagrečių užklausų limitai, paslaugos nepasiekiamumas, valstybės narės nepasiekiamumas ir skirtasis laikas (timeout). Laikykite tai atskirais rezultatais, o ne viena „nepavykusia“ kategorija.
Darbo srautas, kuris išlaiko apkrovą ir auditą, atrodo taip:
- Normalizuokite PVM kodą: parašykite priešdėli didžiosiomis raidėmis, pašalinkite leistinus tarpus ar skyrybos ženklus ir atskirai išsaugokite vartotojo įvestą pradinę reikšmę.
- Prieš siunčiant tinklo užklausą, lokaliai patikrinkite šalies kodo ir numerio formą.
- Pateikite normalizuotą numerį VIES sistemai.
- Išsaugokite normalizuotą kodą, užklausos ir atsakymo laiko žymas, galiojimo (valid / invalid / not-processed) būseną, pirminį atsakymą, bet kokią paslaugos klaidą, pirkėjo ir sąskaitos faktūros ID bei programos priimtą sprendimą.
- Sėkmingus rezultatus talpykloje (cache) išsaugokite apibrėžtam, dokumentuotam laikotarpiui.
- Laikinus techninius gedimus bandykite pakartoti taikydami laiko intervalų didinimą (backoff).
- Neišspręstus arba prieštaringus atvejus nukreipkite rankinei peržiūrai.
- Atlikite pakartotinį patvirtinimą, kai talpykloje esantis rezultatas pasenęs arba prieš sandorį, kurio įrodymai yra esminiai.
„Nordlet“ patikrina ES PVM numerį pridedant klientą ir pakartotinai patikrina jį prieš išrašant sąskaitą faktūrą, jei ankstesnis rezultatas yra pasenęs. Tai elgsena, kurią norite atkurti nesvarbu, ar patikrinimas vyksta platformoje, ar jūsų pačių kode.
Kritinė taisyklė: nedarykite apmokėjimo (checkout) sinchroninio su VIES. Paslaugos sutrikimas nereiškia, kad numeris yra neteisingas. Jei VIES laikas baigiasi pardavimo metu, sulaikykite sandorį peržiūrai arba priskirkite jam laikiną būseną. Užsakymo apmokėjimo blokavimas dėl Komisijos paslaugos veikimo laiko yra klientų aptarnavimo bilietų generatorius, o gero kliento palaikymas netinkamu yra dar blogiau.
Patvirtinimo statuso atskyrimas nuo mokesčių taikymo tvarkos
Gavus VIES rezultatą, sprendimų variklis turi atlikti daugiau darbo. Išsaugokite šiuos duomenis kaip atskirus laukus:
{
"viesStatus": "valid",
"vatTreatment": "intra_eu_b2b_reverse_charge",
"evidenceStatus": "reviewed",
"placeOfSupply": "DE"
}
Prieš taikydamas atvirkštinį apmokestinimą arba atleidimą nuo mokesčio, variklis turi patikrinti, ar pirkėjas tikrai yra gavėjas, ar pirkėjo šalis ir PVM priešdėlis sutampa, ar tiekimas kvalifikuojamas kaip ES vidaus sandoris, ar taikomos specialios prekių ar paslaugų teikimo vietos taisyklės, ar yra transportavimo įrodymai, ar pardavėjas veikia kaip privalomo mokesčio mokėtojas (deemed supplier) ir ar sąskaitoje faktūroje yra reikalaujama formuluotė. Galiojantis VIES statusas, kuris neišlaiko nė vieno iš šių kitų testų, nėra žalia šviesa.
Nekeičiamo PVM sprendimo sukūrimas sąskaitos išrašymo metu
Kai sąskaita faktūra yra sukurta, kartu su ja išsaugokite visą sprendimą, o ne tik galutinį tarifą:
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
ES sąskaitų faktūrų išrašymo taisyklės reikalauja nurodyti tiekėjo ir pirkėjo duomenis, sąskaitos numerį, aprašymą, apmokestinamąją sumą, PVM tarifą, PVM sumą ir bet kokią su atvirkštiniu apmokestinimu ar atleidimu nuo mokesčio susijusią informaciją. Kreditinėse sąskaitose faktūrose ir pataisymuose turi būti aiški nuoroda į pradinę sąskaitą faktūrą.
„Nordlet“ didžioji knyga yra nekeičiama (immutable), todėl taisymai atliekami per naujus įrašus, tokius kaip kreditinės sąskaitos faktūros arba atvirkštiniai įrašai, o ne redaguojant uždarytus įrašus. Kurkite savo sistemą aplink šį modelį, net jei jūsų saugykla techniškai galėtų daryti perrašymus. Uždaros sąskaitos faktūros redagavimas sugadina ryšį tarp pirminio deklaravimo ir pataisymo – o būtent šią giją seka auditorius.
Įrašų teikimas, saistytieji žiniatinklio elementai (webhooks) ir vienarūšis vykdymas (idempotency)
Pardavimas sugeneruoja dvigubo įrašo buhalterinius įrašus, kurie išsaugo ir komercinį sandorį, ir PVM prievolę, padalytą pagal šalis bei schemas. Vietinis pardavimas gali sugeneruoti tokius įrašus:
Dr Accounts receivable / payment clearing
Cr Revenue
Cr VAT payable - DE - domestic
ES vidaus B2B atvirkštinio apmokestinimo pardavimas užregistruoja pajamas be pardavimo PVM ir su nuoroda į atvirkštinio apmokestinimo įrodymus. Tikslus sąskaitų planas yra jūsų pasirinkimas; svarbiausia, kad ataskaitų teikimo matmenys liktų priskirti prie kiekvieno įrašo: valstybė narė, schema, mokesčių kategorija, tarifas, laikotarpis, pirminė sąskaita faktūra ir taisymo gija.
Būsenos pokyčiams valdyti naudokite saistytuosius žiniatinklio elementus (webhooks), o ne apklausą (polling). „Nordlet“ išsiunčia tokius įvykius kaip sale_invoice.paid, pasirašo pristatymus ir bando siųsti pakartotinai taikydamas laiko intervalų didinimą. Kiekvienam rašymui priskirkite deterministinį vienarūšio vykdymo raktą (idempotency key):
sale:{platform_order_id}:invoice:{invoice_version}
Jūsų vartotojų sistema taip pat turi būti idempotentiška. Žiniatinklio pranešimas gali atvykti du kartus, vėluoti arba įsijungti po to, kai pirminė užklausa jau buvo sėkmingai įvykdyta. Patikrinkite parašus, įrašykite įvykių ID, patalpinkite neteisingus įvykius į karantiną, apdorokite per patvarią eilę ir suderinkite žiniatinklio pranešimo būseną su API pagal grafiką. Jei anksčiau nesate dirbę su pasirašytais saistytaisiais žiniatinklio elementais ir idempotentiškumo raktais, čia slypi subtiliausios dubliuotų įrašų klaidos.
Agregavimas OSS tikslais ir ataskaitoms paruoštų eksportų kūrimas
Tinkamiems OSS sandoriams sugrupuokite didžiosios knygos duomenis pagal schemą, vartojimo valst Bytę narę, tiekimo tipą, tarifo kategoriją, tarifą, apmokestinamąją sumą, PVM sumą, išgabenimo arba buveinės valstybę narę, valiutą ir taisymo laikotarpį.
Sąjungos schemos deklaracija atskiria tiekimus pagal vartojimo valstybę narę ir atskiria paslaugas iš identifikavimo valstybės narės, paslaugas iš kitų nuolatinių buveinių ir prekes, išgabentas iš skirtingų valstybių narių. Ji atskirai pateikia apmokestinamąsias ir PVM sumas standartiniams bei sumažintiems tarifams. Atleisti nuo mokesčių ir 0 procentų tarifo tiekimai visiškai neįtraukiami į OSS deklaraciją.
Keletas operacinių detalių, kurios užkliūva žmonėms:
- Sąjungos ir nesąjungos OSS laikotarpiai yra ketvirtiniai; IOSS yra mėnesinis. Deklaracijos ir mokėjimas turi būti pateikti iki kito mėnesio pabaigos.
- Nulinė deklaracija privaloma kiekvienam laikotarpiui, net jei jokių atitinkamų tiekimų nebuvo. Sugeneruokite laikotarpio kontrolinį sąrašą ir automatiškai sukurkite nulinės vertės deklaraciją.
- OSS deklaracijos pildomos eurais, naudojant ECB orientacinį kursą paskutinę mokestinio laikotarpio dieną, kai reikalingas konvertavimas. Išsaugokite pradinę valiutą, valiutos kursą, kurso datą, konvertuotą sumą ir metodą.
Eksportas turi būti atliekamas iš užrakintos didžiosios knygos, niekada iš papildomos skaičiuoklės. Skaičiuoklės sumos praranda pataisymus, išgabenimo šalis, tarifus ir įrodymus. Eksporto faile nurodomas ataskaitinis laikotarpis, schema, vartojimo valstybė narė, išgabenimo šalis, tiekimo kategorija, tarifas, apmokestinamosios ir PVM sumos, valiuta ir pritaikytas valiutos kursas, einamojo ir ankstesnio laikotarpių pataisymų sumos, pirminių sąskaitų faktūrų ID, kreditinių sąskaitų nuorodos ir suderinimo sumos.
Būkite tikslūs dėl to, ką API čia pateikia. „Nordlet“ apskaičiuoja OSS ir IOSS deklaracijas iš sąskaitų faktūrų ir didžiosios knygos, įskaitant ankstesnių laikotarpių pataisymus, pateikia vietinių ataskaitų paketus Lietuvai (FR0600), Vokietijai (UStVA) ir Lenkijai (JPK_V7M) bei sugeneruoja VMI paruoštus iSAF registrus Lietuvai. Tai yra ataskaitoms paruošti duomenys. Vienas API iškvietimas nepatvirtina kiekvienos šalies PVM deklaracijos per kiekvieną nacionalinį šliuzą, ir jokia deklaracija nėra pateikiama institucijai jūsų vardu. Apskaitą, deklaracijų generavimą, eksportą, šliuzo pateikimą ir mokėjimo patvirtinimą laikykite atskiromis būsenomis savo sistemoje. ES PVM variklio vadove dokumentuojama, kokius atvejus variklis išsprendžia ir kur suveikia jo įspėjimai.
Laikotarpio užrakinimas
Po peržiūros ir patvirtinimo suderinkite sąskaitas faktūras su didžiosios knygos įrašais, suderinkite didžiosios knygos PVM likučius su deklaracijos duomenų rinkiniu, eksportuokite deklaraciją, įrašykite deklaravimo ir mokėjimo nuorodas, o tada užrakinkite laikotarpį. „Nordlet“ blokuoja įrašus į užrakintą mėnesį, taip pat ir per API. Pataisymai po užrakinimo keliauja į vėlesnį laikotarpį su aiškiomis nuorodomis į pradinį dokumentą ir paveiktą ataskaitinį laikotarpį.
Dažniausiai pasitaikantys nesėkmės scenarijai ir kaip jų išvengti
| Nesėkmės scenarijus | Kodėl taip nutinka | Kaip sušvelninti |
|---|---|---|
| Galiojančio VIES rezultato laikymas pakankamu nulinio tarifo taikymui | VIES nenustato atleidimo nuo mokesčių teisių | Šalia rezultato išsaugokite pirkėjo, tiekimo, transportavimo ir sąskaitos faktūros įrodymus |
| Negaliojančio rezultato laikymas registracijos nebuvimo įrodymu | Numeris gali būti neaktyvintas ES vidaus prekybai arba duomenų bazė gali vėluoti | Atskirkite neteisingus, neapdorotus ir techninius gedimus; ginčus nukreipkite peržiūrai |
| Apmokėjimo padarymas sinchroniniu su VIES | Lygiagretumo limitai, laiko limitai, sutrikimai | Asinchroninis patvirtinimas, trumpalaikis kaupimas talpykloje, laiko intervalų didinimas, laikinos būsenos |
| Rezultatų saugojimas talpykloje amžinai | Registracijos ir aktyvavimo statusas keičiasi | Saugokite laiko žymas ir galiojimo pabaigą; esant pasenusiems duomenims, pakartotinai patikrinkite prieš išrašant sąskaitą faktūrą |
| Produktų tiesioginis susiejimas su PVM procentais | Tarifai ir išimtys priklauso nuo šalies ir datos | Produktas -> kategorija -> šalies kodas -> tarifas su galiojimo data |
| OSS rekonstrukcija iš skaičiuoklių | Sumose neatsispindi pataisimai, išgabenimo šalys, įrodymai | Išveskite iš nekeičiamos didžiosios knygos su matmenimis kiekviename įraše |
| Vietinės buveinės paslaugų įtraukimas į OSS | Tam tikros paslaugos priklauso vietinei deklaracijai | Modeliuokite buveines atskirai, nukreipkite pagal schemą prieš agregavimą |
| Nulinių deklaracijų praleidimas | OSS reikalauja deklaracijos kiekvieną laikotarpį | Sugeneruokite kontrolinį sąrašą ir automatiškai sukurkite nulinės vertės deklaracijas |
| Uždarytų sąskaitų faktūrų redagavimas taisymo tikslais | Sugadinamas ryšys tarp deklaravimo ir pataisymo | Vėlesniame laikotarpyje naudokite kreditines sąskaitas faktūras arba atvirkštinius įrašus |
Ką darytume pirmiausia
Jei pradėtume šią integraciją rytoj, prieš prisiliesdami prie bet kurio ataskaitų teikimo galinio punkto, sukurtume mokesčių kategorijų lytį ir PVM sprendimo įrašą. Stabilizuokite taksonomiją, susiekite produktus su kategorijomis ir užtikrinkite, kad sprendimo įrašas fiksuotų pirminius šalies signalus bei priežastį, kodėl buvo pasirinkta prekių ar paslaugų teikimo vieta. Viskas kita – VIES, įrašų teikimas, OSS grupavimas, eksportas – priklauso nuo to, ar šis modelis yra teisingas.
Tada prijungtume VIES kaip asinchroninio įrodymų etapo žingsnį su keturiomis atskirtomis būsenomis ir paleistume jį smėlio dėžės (sandbox) įmonėje su testiniais duomenimis sudėtingiems atvejams (laiko limitų pabaiga, neapdoroti rezultatai, nesutampantys priešdėliai), prieš leidžiant sistemai priartėti prie gamybinės aplinkos (production). Anksčiau minėtų nesėkmės scenarijų beveik visiškai galima išvengti, jei duomenų modelis neša įrodymus ir ataskaitų teikimo matmenis nuo pat pirmojo įrašo.
D.U.K.
Ar galiojantis VIES atsakymas reiškia, kad galiu taikyti 0 procentų PVM tarifą ES vidaus B2B pardavimui?
Ne. VIES patvirtina, kad PVM kodas yra registruotas ir, jei palaikoma, aktyvus prekybai ES viduje. Teisė taikyti atleidimą nuo mokesčio prekių tiekimui Bendrijos viduje priklauso nuo papildomų įrodymų: pirkėjo, kaip tikrojo gavėjo, statuso, transportavimo ar išgabenimo įrodymų, teisingos teikimo vietos ir reikalingos sąskaitos faktūros formuluotės. VIES rezultatą išsaugokite kaip vieną iš įvesties duomenų, o ne kaip galutinį sprendimą.
Ar VIES patvirtinimas turi blokuoti atsiskaitymą?
Neturėtų. VIES sistema gali viršyti skirtąjį laiką arba pasiekti lygiagrečių užklausų limitus, o paslaugos sutrikimas nereiškia neteisingo numerio. Vykdykite patvirtinimą asinchroniškai, sėkmingus rezultatus dokumentuotam laikotarpiui saugokite talpykloje, pakartokite nesėkmingus trumpalaikius bandymus ir sulaikykite dviprasmiškus atvejus peržiūrai su laikina būsena, o ne nutraukite pardavimą.
Ar debesų buhalterinės apskaitos API gali automatiškai pateikti mano PVM deklaracijas?
Ji gali sugeneruoti ataskaitoms paruoštus duomenis, sugrupuotus pagal schemas ir valstybes nares, apskaičiuotus iš nekeičiamos didžiosios knygos, įskaitant pataisymus. Tai, ar ji taip pat pateikia duomenis per kiekvieną nacionalinį deklaravimo šliuzą, priklauso nuo produkto ir šalies. „Nordlet“ apskaičiuoja OSS ir IOSS deklaracijas, pateikia vietinių ataskaitų paketus Lietuvai, Vokietijai ir Lenkijai bei sugeneruoja VMI paruoštus iSAF registrus Lietuvai, tačiau ji nieko nepateikia mokesčių institucijai jūsų vardu. Apskaitą, deklaracijų generavimą, eksportą, šliuzo pateikimą ir mokėjimą laikykite atskiromis būsenomis, o ne darykite prielaidą, kad vienas iškvietimas viską pateikia visur.
Kaip tvarkyti pataisymus užrakinus laikotarpį?
Įtraukite juos į vėlesnį laikotarpį su aiškiomis nuorodomis į pradinį dokumentą ir paveiktą ataskaitinį laikotarpį. „Nordlet“ blokuoja naujus įrašus į užrakintą mėnesį, įskaitant per API, todėl pataisymas atliekamas per kreditines sąskaitas faktūras arba atvirkštinius įrašus, o ne redagavimą. Tai išsaugo giją tarp pirminio deklaravimo ir koregavimo.