Nordlet

← Blog

Automatizácia vykazovania DPH podľa krajín a overovania VIES

Praktická príručka pre vývojárov integrujúcich dodržiavanie predpisov o DPH v EÚ do trhovísk a platforiem pomocou cloudového účtovného API.

Nordlet Team · · 12 min. čítania

Väčšina chýb v oblasti DPH v kóde platformy pramení z jedného predpokladu: že platný výsledok v systéme VIES znamená, že predaj môžete zaťažiť nulovou sadzbou. Nie je to tak a stavanie na tomto skratu vedie k výkazom, ktoré vyzerajú v poriadku, kým sa audítor neopýta, prečo bola uplatnená oslobodená intrakomunitárna dodávka bez dôkazu o preprave alebo konzistentného záznamu o mieste dodania. Priepasť medzi „IČ DPH je v poriadku“ a „s týmto plnením sa zaobchádza správne“ je miesto, kde väčšina integrácií potichu zlyháva.

Táto príručka vás provedie tým, ako automatizovať vykazovanie DPH podľa jednotlivých krajín a overovanie VIES pomocou cloudového účtovného API, pričom ako kontext implementácie využíva účtovné API od Nordletu. Cieľom je vytvoriť systém, ktorý zachytí správne dôkazy v okamihu predaja, zaúčtuje nezmeniteľné položky do hlavnej knihy a vytvorí údaje pripravené na podanie priznania zoskupené podľa schémy a členského štátu bez toho, aby ste neskôr museli súčty rekonštruovať v tabuľkovom procesore.

Čo VIES skutočne hovorí a čo nie

VIES je systém EÚ pre výmenu informácií o DPH. Keď odošlete kód krajiny a IČ DPH, systém v reálnom čase odošle dopyt do príslušnej národnej databázy a vráti informáciu o tom, či je dané IČ DPH platné alebo neplatné. To je celý jeho rozsah. Potvrdzuje, že číslo je registrované a v prípadoch, keď to členský štát podporuje, aktivované pre obchod v rámci EÚ.

Nevytvára však právo na oslobodenie intrakomunitárnej dodávky. Európska komisia sa k tomu vyjadruje jednoznačne. Platná odpoveď z VIES je len jedným dôkazom medzi viacerými. Stále musíte potvrdiť, že zákazník je skutočným príjemcom, že dodávka spĺňa podmienky pre intrakomunitárny obchod, že existuje dôkaz o preprave alebo odoslaní a že faktúra obsahuje požadovanú formuláciu o prenose daňovej povinnosti.

Prvé rozhodnutie o návrhu systému je preto štrukturálne: uchovávajte stav VIES a zaobchádzanie s DPH v oddelených poliach. Nikdy neprepájajte viesStatus: valid priamo s zeroRated: true. V momente, keď tieto dva pojmy zlúčite, strácate schopnosť obhájiť zvolený režim, keď budú dôkazy spochybnené.

Predpoklady pred napísaním integračného kódu

Skôr než zavoláte akýkoľvek koncový bod, definujte rozsah toho, čo vykazujete. Táto časť je nudná a jej preskočenie je drahé.

  • V ktorých krajinách má podnikanie svoje sídlo alebo stále prevádzkarne
  • V ktorých krajinách vlastní registrácie pre DPH
  • Či predáva tovar, služby, digitálne služby alebo ich kombináciu
  • Či sú transakcie typu B2B, B2C alebo oboje
  • Či využíva domáce registrácie, schémy OSS, IOSS, prenos daňovej povinnosti alebo pravidlá pre predpokladaného dodávateľa na trhovisku (marketplace deemed-supplier)
  • Aké výstupy musí API produkovať: údaje pre domáce priznanie, údaje pre OSS/IOSS, registre faktúr, ako je litovské i.SAF, iba účtovné zápisy alebo dátové sady pre externého poskytovateľa daňového priznania

Toto je dôležité, pretože schéma OSS nepokrýva každú transakciu. Služby dodané v krajine, kde má podnik prevádzkareň, spravidla patria do domáceho priznania tejto krajiny, nie do priznania OSS. Prevádzkarne modelujte oddelene hneď od začiatku, inak tieto plnenia v čase agregácie nesprávne nasmerujete.

Tiež si hardcoded nezapisujte jednu sadzbu DPH na krajinu. EÚ má štandardné, znížené, super znížené, parkovacie, nulové sadzby a špecifické úpravy pre produkty, a tie sa menia. Spoľahlivým zdrojom pre konkrétny produkt v konkrétnom členskom štáte je daňový úrad danej krajiny, pričom celoeurópsky prehľad ponúka databáza TEDB Európskej komisie. Zaznamenajte zdroj a verziu, na ktorej základe bolo prijaté rozhodnutie o sadzbe, aby neskoršia aktualizácia tabuľky sadzieb ticho neprepísala vzhľad starých transakcií.

Modelovanie daňového posúdenia, nielen sadzby

Jadrom udržateľnej integrácie je vrstva daňových kategórií umiestnená medzi produktmi a sadzbami. Priraďte produkty ku kategóriám, kategórie k daňovým kódom špecifickým pre danú krajinu a následne k sadzbám s platnosťou od určitého dátumu:

produkt/služba
    → daňová kategória
    → daňový kód špecifický pre krajinu
    → sadzba a režim s platnosťom od určitého dátumu

Nebezpečná verzia, ktorá spôsobuje odchýlky vo vykazovaní, je produkt SKU → 21% DPH. Rovnaký produkt podlieha v rôznych krajinách rôznym sadzbám a sadzba sa môže zmeniť uprostred zdaňovacieho obdobia. Vlastné usmernenie k dodržiavaniu predpisov o DPH od Nordletu odporúča presne toto mapovanie založené na kategóriách namiesto priameho priradenia produktov k percentuálnym sadzbám.

Vaša taxonómia daňových kategórií by mala byť stabilná a interná: tovar so štandardnou sadzbou, tovar so zníženou sadzbou, elektronicky dodávané služby, bežné služby, oslobodené plnenie, plnenie s nulovou sadzbou, intrakomunitárny prenos daňovej povinnosti B2B, intrakomunitárny predaj na diaľku, dovoz v schéme IOSS, transakcia so zúčastneným dodávateľom. Všetko ostatné nadväzuje na túto taxonómiu.

Overovanie VIES ako asynchrónny proces spracovania dôkazov

Oficiálna služba VIES sprístupňuje rozhranie SOAP/WSDL, ktoré prijíma dvojpísmenový kód krajiny a IČ DPH. Jej zdokumentované nedostatky sú dôležité pre spracovanie chýb: neplatný vstup, limity súbežných požiadaviek na globálnej úrovni a úrovni členských štátov, nedostupnosť služby, nedostupnosť členského štátu a vypršanie časového limitu (timeout). Pristupujte k nim ako k rôznym výsledkom, nie ako k jednému spoločnému košu pre „zlyhania“.

Pracovný postup, ktorý obstojí pri zaťažení a audite, vyzerá nasledovne:

  1. Normalizujte IČ DPH: preveďte predponu na veľké písmená, odstráňte povolené medzery alebo interpunkciu a pôvodnú hodnotu zadanú používateľom uchovávajte oddelene.
  2. Pred odoslaním sieťovej požiadavky lokálne overte kód krajiny a formát čísla.
  3. Odošlite normalizované číslo do systému VIES.
  4. Uložte normalizované IČ DPH, časové pečiatky požiadavky a odpovede, stav platné/neplatné/nespracované, surovú odpoveď, prípadnú chybu služby, ID zákazníka a faktúry, ako aj rozhodnutie aplikácie.
  5. Úspešné výsledky vyrovnávajte do pamäte (cache) na definované, zdokumentované obdobie.
  6. Prechodné technické zlyhania opakujte s rastúcim časovým odstupom (backoff).
  7. Nerozhodnuté alebo protichodné prípady smerujte na manuálnu kontrolu.
  8. Vykonajte opätovné overenie, keď je vyrovnávacia pamäť neaktuálna alebo pred transakciou, kde je dôkaz kľúčový.

Nordlet kontroluje IČ DPH v EÚ pri pridaní zákazníka a opätovne ho kontroluje pred fakturáciou, ak je predchádzajúci výsledok neaktuálny, čo je správanie, ktoré chcete replikovať bez ohľadu na to, či kontrola prebieha v platforme alebo vo vašom vlastnom kóde.

Kritické pravidlo: nespájajte pokladničný predaj synchrónne so systémom VIES. Výpadok služby nie je neplatné číslo. Ak počas predaja vyprší časový limit služby VIES, podržte transakciu na kontrolu alebo jej priraďte predbežný stav. Blokovanie platobného procesu kvôli dostupnosti služby Európskej komisie generuje požiadavky na podporu a nesprávne označenie dobrého zákazníka za neplatného je horšie.

Oddelenie stavu overenia od daňového režimu

Akonáhle máte výsledok VIES, rozhodovací engine má pred sebou ďalšiu prácu. Uložte tieto údaje ako samostatné polia:

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

Pred uplatnením prenosu daňovej povinnosti alebo oslobodenia by mal engine overiť, či je zákazník skutočne príjemcom, či sú krajina zákazníka a predpona DPH konzistentné, či dodávka spĺňa podmienky pre intrakomunitárny obchod, či sa uplatňujú špeciálne pravidlá miesta dodania, či existuje dôkaz o preprave, či predávajúci vystupuje ako povinná osoba (deemed supplier) a či faktúra obsahuje požadované znenie. Platný stav VIES, ktorý neprejde žiadnym z týchto ostatných testov, nie je zelenou prekážkou.

Vytvorenie nemenného daňového rozhodnutia v čase fakturácie

Pri vystavení faktúry uložte spolu s ňou aj úplné rozhodnutie, nielen konečnú sadzbu:

faktúra
  ├─ daňová kategória riadku
  ├─ miesto dodania
  ├─ schéma DPH
  ├─ sadzba špecifická pre krajinu
  ├─ verzia tabuľky sadzieb
  ├─ referencia na dôkaz VIES
  ├─ referencie na dôkazy o mieste dodania
  ├─ referencia na právny základ
  └─ príznaky úlohy na trhovisku

Pravidlá EÚ pre fakturáciu vyžadujú údaje o dodávateľovi a odberateľovi, číslo faktúry, opis, základ dane, sadzbu DPH, sumu DPH a všetky informácie o prenose daňovej povinnosti alebo oslobodení od dane. Dobropisy a úpravy vyžadujú jednoznačný odkaz na pôvodnú faktúru.

Hlavná kniha (ledger) v Nordlete je nemenná, takže opravy sa vykonávajú prostredníctvom nových záznamov, ako sú dobropisy alebo stornovacie zápisy, a nie úpravami zatvorených záznamov. Prispôsobte svoj konsumujúci systém tomuto modelu, aj keby vaše úložisko technicky umožňovalo prepisovanie. Úprava uzatvorenej faktúry narúša prepojenie medzi pôvodným priznaním a opravou, čo je presne tá sledovateľnosť, ktorú audítor preveruje.

Zaúčtovanie, webhooks a idempotencia

Predaj vytvára podvojné účtovné zápisy, ktoré zachovávajú obchodnú transakciu aj záväzok DPH rozdelený podľa krajiny a schémy. Domáci predaj môže zaúčtovať:

Má dať: Pohľadávky / zúčtovanie platieb
    Dal: Výnosy
    Dal: DPH na úhradu - DE - domáca

Intrakomunitárny predaj B2B v režime prenosu daňovej povinnosti zaúčtuje výnosy bez výstupnej DPH a s odkazom na dôkaz o prenose daňovej povinnosti. Presná účtová osnova je na vás; dôležité je, aby dimenzie vykazovania zostali priradené ku každému zápisu: členský štát, schéma, daňová kategória, sadzba, obdobie, zdrojová faktúra a línia opráv.

Zmeny stavu riadte prostredníctvom webhooks namiesto neustáleho dopytovania (polling). Nordlet emituje udalosti ako sale_invoice.paid, podpisuje doručené správy a v prípade zlyhania opakuje pokusy s narastajúcim oneskorením. Každému zápisu priraďte deterministický kľúč idempotencie:

sale:{platform_order_id}:invoice:{invoice_version}

Váš konsumujúci systém musí byť tiež idempotentný. Webhook môže doraziť dvakrát, doraziť neskôr alebo sa spustiť až po úspešnom dokončení pôvodnej požiadavky. Overujte podpisy, zaznamenávajte ID udalostí, umiestňujte chybne formátované udalosti do karantény, spracúvajte ich prostredníctvom odolnej fronty a podľa harmonogramu odsúhlasujte stav webhookov s API. Ak ste predtým nepracovali s podpísanými webhookmi a kľúčmi idempotencie, práve tu sa nachádzajú najskrytejšie chyby spojené s duplicitnými záznamami.

Zoskupovanie pre OSS a vytváranie exportov pripravených na podanie

Pre oprávnené transakcie v schéme OSS zoskupte údaje z hlavnej knihy podľa schémy, členského štátu spotreby, typu plnenia, sadzbovej kategórie, sadzby, základu dane, sumy DPH, členského štátu odoslania alebo prevádzkarne, meny a opravného obdobia.

Priznanie k úniovej schéme oddeľuje dodávky podľa členského štátu spotreby a rozlišuje služby z členského štátu identifikácie, služby z iných stálych prevádzkarní a tovar odoslaný z rôznych členských štátov. Vyčísľuje základ dane a sumy DPH osobitne pre štandardné a znížené sadzby. Oslobodené plnenia a plnenia s nulovou sadzbou sú z priznania OSS úplne vylúčené.

Niekoľko prevádzkových detailov, ktoré ľudí často prekvapia:

  • Obdobia pre úniovú a neúniovú schému OSS sú štvrťročné; IOSS je mesačné. Priznania a platby sú splatné do konca nasledujúceho mesiaca.
  • Nulové priznanie sa vyžaduje za každé obdobie, aj keď sa neuskutočnili žiadne relevantné dodávky. Vytvorte kontrolný zoznam období a automaticky generujte priznanie s nulovou hodnotou.
  • Priznania OSS sa vyhotovujú v eurách s použitím referenčného kurzu ECB platného v posledný deň zdaňovacieho obdobia, ak je potrebný prepočet. Uložte zdrojovú menu, výmenný kurz, dátum kurzu, prepočítanú sumu a metódu.

Exporty by mali pochádzať z uzamknutej hlavnej knihy, nikdy nie z bočného tabuľkového procesora. Súčty v tabuľkách strácajú opravy, krajiny odoslania, sadzby a dôkazy. Export obsahuje vykazované obdobie, schému, členský štát spotreby, krajinu odoslania, kategóriu dodávky, sadzbu, základ dane a sumy DPH, menu a použitý výmenný kurz, sumy opráv za aktuálne a predchádzajúce obdobie, ID zdrojových faktúr, odkazy na dobropisy a odsúhlasovacie súčty.

Buďte presní v tom, čo API v tejto časti poskytuje. Nordlet vypočítava priznania OSS a IOSS z faktúr a hlavnej knihy vrátane opráv predchádzajúcich období, dodáva balíky domácich priznaní pre Litvu (FR0600), Nemecko (UStVA) a Poľsko (JPK_V7M) a generuje registre i.SAF pripravené pre systém VMI v Litve. To sú údaje pripravené na podanie. Jedno volanie API nepodáva daňové priznanie k DPH každej krajiny cez každú národnú bránu a žiadne priznanie sa neodosiela úradom vo vašom mene. Uchovávajte účtovníctvo, generovanie priznaní, export, odoslanie cez bránu a potvrdenie platby ako samostatné stavy vo vašom systéme. Príručka k daňovému enginu pre DPH v EÚ dokumentuje, ktoré prípady engine rieši a kde sa spúšťajú jeho varovania.

Uzamknutie obdobia

Po kontrole a schválení odsúhlaste faktúry s položkami v hlavnej knihe, odsúhlaste zostatky DPH v hlavnej knihe s dátovou sadou priznania, exportujte priznanie, zaznamenajte podacie a platobné referencie a potom obdobie uzamknite. Nordlet blokuje zaúčtovanie do uzamknutého mesiaca, a to aj prostredníctvom API. Opravy po uzamknutí vstupujú do neskoršieho obdobia s výslovnými odkazmi na pôvodný dokument a dotknuté vykazované obdobie.

Bežné chybové stavy a ako sa im vyhnúť

Chybový stav Prečo k nemu dochádza Opatrenie na nápravu
Považovanie platného výsledku VIES za postačujúci pre uplatnenie nulovej sadzby VIES neustanovuje právo na oslobodenie od dane Ukladajte dôkazy o zákazníkovi, dodávke, preprave a faktúre spolu s výsledkom
Považovanie neplatného výsledku za dôkaz o absencii registrácie Číslo nemusí byť aktivované pre obchod v rámci EÚ alebo databáza môže meškať Rozlišujte neplatné, nespracované a technické zlyhanie; spory smerujte na kontrolu
Synchronizácia platobného procesu so systémom VIES Limity súbežných požiadaviek, vypršané limity, výpadky Asynchrónne overovanie, krátkodobé ukladanie do vyrovnávacej pamäte, postupné opakovanie, predbežné stavy
Nekonečné ukladanie výsledkov do vyrovnávacej pamäte Stav registrácie a aktivácie sa mení Ukladajte časové pečiatky a platnosť; pred fakturáciou opätovne overte, ak sú údaje neaktuálne
Priame mapovanie produktov na percentuálne sadzby DPH Sadzby a oslobodenia závisia od krajiny a dátumu Produkt na kategóriu, kategória na kód krajiny, kód krajiny na sadzbu s platnosťou od určitého dátumu
Rekonštrukcija OSS z tabuľkových procesorov Súčty vynechávajú opravy, krajiny odoslania, dôkazy Odvodzujte z nezmeniteľnej hlavnej knihy s dimenziami pri každom zápise
Zahrnutie služieb domácich prevádzkarní do OSS Určité služby patria do domáceho priznania Modelujte prevádzkarne oddelene, pred agregáciou smerujte podľa schémy
Vynechanie nulových priznaní OSS vyžaduje podanie priznania za každé obdobie Vygenerujte kontrolný zoznam a automaticky vytvorte priznania s nulovou hodnotou
Úprava zatvorených faktúr kvôli oprave Narušuje prepojenie medzi priznaním a opravou Použite dobropisy a stornovacie zápisy v neskoršom období

Čo by sme urobili ako prvé

Ak by sme túto integráciu začínali zajtra, najskôr by sme vybudovali vrstvu daňových kategórií a záznam o daňovom rozhodnutí predtým, ako sa dotkneme čo i len jedného koncového bodu pre vykazovanie. Stabilizujte taxonómiu, prepojte produkty s kategóriami a zabezpečte, aby záznam o rozhodnutí zachytával surové vstupy z krajín spolu s dôvodom, prečo bolo zvolené miesto dodania. Všetko ostatné – VIES, účtovanie, zoskupovanie OSS, export – závisí od správnosti tohto modelu.

Následne by sme integrovali VIES ako asynchrónny krok overenia so štyrmi oddelenými stavmi a spustili ho oproti testovacej spoločnosti (sandbox) s pripravenými dátami pre zložité prípady (vypršané limity, nespracované výsledky, nezhodujúce sa predpony) predtým, ako ho pustíme k produkčnému prostrediu. Vyššie uvedeným chybovým stavom sa dá takmer úplne vyhnúť, ak dátový model nesie dôkazy a dimenzie vykazovania už od prvého zaúčtovania.

FAQ

Znamená platná odpoveď VIES, že môžem uplatniť nulovú sadzbu pri intrakomunitárnom predaji B2B?

Nie. VIES potvrdzuje, že IČ DPH je registrované a v podporovaných prípadoch aktivované pre obchod v rámci EÚ. Právo na oslobodenie intrakomunitárnej dodávky závisí od ďalších dôkazov: zákazník musí byť skutočným príjemcom, vyžaduje sa dôkaz o preprave alebo odoslaní, správne miesto dodania a požadované znenie na faktúre. Výsledok VIES ukladajte ako jeden zo vstupov, nie ako finálne rozhodnutie.

Malo by overovanie VIES blokovať dokončenie nákupu (checkout)?

Nemalo by. Služba VIES môže vypršať alebo naraziť na limity súbežných požiadaviek, pričom výpadok sa nerovná neplatnému číslu. Overujte asynchrónne, úspešné výsledky ukladajte do vyrovnávacej pamäte na zdokumentované obdobie, pri dočasných zlyhaniach zopakujte pokus a nejednoznačné prípady podržte na kontrolu v predbežnom stave namiesto zlyhania predaja.

Môže cloudové účtovné API automaticky podať moje daňové priznania k DPH?

Dokáže vygenerovať údaje pripravené na podanie zoskupené podľa schémy a členského štátu, vypočítané z nezmeniteľnej hlavnej knihy vrátane započítaných opráv. To, či zároveň prebieha odoslanie cez jednotlivé národné podacie brány, závisí od produktu a krajiny. Nordlet vypočítava priznania OSS a IOSS, dodáva balíky domácich priznaní pre Litvu, Nemecko a Poľsko a generuje registre i.SAF pripravené pre systém VMI v Litve, ale neodosiela žiadne dokumenty daňovému úradu vo vašom mene. Účtovníctvo, generovanie priznaní, export, odoslanie cez bránu a platbu vnímajte ako samostatné stavy namiesto predpokladu, že jediné volanie vybaví všetko všade.

Ako mám spracovať opravy po uzamknutí obdobia?

Zaúčtujte ich v nasledujúcom období s výslovnými odkazmi na pôvodný dokument a dotknuté vykazované obdobie. Nordlet blokuje nové účtovné zápisy do uzamknutého mesiaca, a to aj prostredníctvom API, takže opravy prechádzajú cez dobropisy alebo stornovacie zápisy namiesto priamych úprav. Tým sa zachováva prepojenie medzi pôvodným priznaním a úpravou.

Ďalšie čítanie