Nordlet

← Blog

Automatizace DPH hlášení podle zemí a ověřování VIES

Praktický průvodce pro vývojáře, kteří integrují dodržování předpisů o DPH v EU do tržišť a platforem pomocí cloudového účetního API.

Nordlet Team · · 12 min. čtení

Většina chyb v oblasti DPH v kódu platforem vychází z jednoho předpokladu: že platný výsledek z VIES znamená, že prodej můžete osvobodit od daně s nulovou sazbou. Znamená to, ale stavět na této zkratce vede k přiznáním, která vypadají v pořádku, dokud se auditor nezeptá, proč byla uplatněna intra-EU výjimka bez důkazů o přepravě nebo konzistentního záznamu o místě plnění. Mezerou mezi „DIČ je v pořádku“ a „tento prodej je správně posouzen“ je místo, kde většina integrací potichu selhává.

Tento průvodce ukazuje, jak automatizovat hlášení DPH podle jednotlivých zemí a ověřování VIES pomocí cloudového účetního API, přičemž jako kontext implementace využívá účetní API od Nordlet. Cílem je systém, který zachytí správné důkazy v okamžiku prodeje, zaúčtuje neměnné položky hlavní knihy a vytvoří data připravená k přiznání seskupená podle režimu a členského státu, aniž by bylo nutné později přepočítávat souhrny v tabulkovém procesoru.

Co VIES ve skutečnosti říká a co neříká

VIES je systém Evropské komise pro výměnu informací o DPH. Když odešlete kód země a DIČ, systém v reálném čase dotáže příslušnou vnitrostátní databázi a vrátí informaci, zda jsou tyto údaje o DPH platné, či neplatné. To je celý rozsah. Potvrzuje, že číslo je zaregistrované a, pokud to členský stát podporuje, aktivované pro obchody v rámci EU.

Nezakládá právo na osvobození dodání zboží uvnitř Společenství. Evropská komise to uvádí zcela jasně. Platná odpověď z VIES je jedním z důkazů vedle několika dalších. Stále musíte potvrdit, že zákazník je skutečným příjemcem, že dodání splňuje podmínky pro intra-EU obchod, že existují důkazy o přepravě nebo odeslání a že faktura obsahuje požadovanou formulaci o přenesení daňové povinnosti.

Prvním rozhodnutím pro návrh je tedy struktura: udržujte stav VIES a daňový režim v samostatných polích. Nikdy nepropojujte viesStatus: valid přímo s zeroRated: true. V okamžiku, kdy tyto dva koncepty sloučíte, ztratíte schopnost obhájit daňový režim, když budou důkazy zpochybněny.

Předpoklady před psaním integračního kódu

Než zavoláte jakýkoliv koncový bod, definujte rozsah toho, co vykazujete. Tato část je nudná a její vynechání je drahé.

  • Ve kterých zemích má podnik sídlo nebo stálé provozovny
  • Ve kterých zemích je registrován k DPH
  • Zda prodává zboží, služby, digitální služby, nebo jejich kombinaci
  • Zda jsou transakce typu B2B, B2C, nebo obojí
  • Zda využívá domácí registrace, OSS, IOSS, přenesení daňové povinnosti (reverse charge) nebo pravidla pro zprostředkujícího dodavatele na tržištích (marketplace deemed-supplier rules)
  • Jaké výstupy musí API produkovat: data pro domácí přiznání, data pro OSS/IOSS, evidence faktur (například litevské i.SAF), pouze zápisy do hlavní knihy nebo datové payloady pro externího poskytovatele přiznání

To je důležité, protože režim OSS nepohlcuje každou transakci. Služby poskytnuté v zemi, kde má podnik stálou provozovnu, obvykle patří do domácího přiznání této země, nikoli do přiznání OSS. Modelujte stálé provozovny odděleně od samého začátku, jinak tyto plnění při agregaci špatně nasměrujete.

Nezapomeňte také natvrdo kódovat jednu sazbu DPH na zemi. EU má standardní, snížené, super-snížené, parkovací, nulové sazby a sazby specifické pro dané produkty, které se navíc mění. Spolehlivým zdrojem pro konkrétní produkt v konkrétním členském státě je daňový úřad dané země, přičemž nástroj TEDB Evropské komise nabízí přehled napříč zeměmi. Zaznamenejte zdroj a verzi pro každé rozhodnutí o sazbě, aby pozdější aktualizace číselníku sazeb potichu nepřepsala to, jak vypadá stará transakce.

Modelování daňového posouzení, nejen sazby

Jádrem robustní integrace je vrstva daňových kategorií, která se nachází mezi produkty a sazbami. Namapujte produkty na kategorie, kategorie na daňové kódy specifické pro danou zemi a následně na sazby s časovou platností:

produkt/služba
    → daňová kategorie
    → daňový kód specifický pro danou zemi
    → časově platná sazba a režim

Nezabezpečená verze, která způsobuje odchylky v hlastech, je SKU produktu → 21 % DPH. Stejný produkt podléhá v různých zemích různým sazbám a sazba se může změnit uprostřed období. Vlastní pokyny pro dodržování předpisů ohledně DPH od Nordlet doporučují přesně toto mapování založené na kategoriích, nikoli přímé vázání produktů na procenta.

Vaše taxonomie daňových kategorií by měla být stabilní a interní: zboží ve standardní sazbě, zboží ve snížené sazbě, elektronicky poskytované služby, běžné služby, osvobozené plnění, plnění s nulovou sazbou, intra-EU B2B reverse charge, intra-EU prodej na dálku, dovoz v režimu IOSS, transakce zprostředkujícího dodavatele. Všechno navazující se řídí touto taxonomií.

Ověřování VIES jako asynchronní proces ověřování důkazů

Oficiální služba VIES zpřístupňuje rozhraní SOAP/WSDL přijímající dvoupísmenný kód země a DIČ. Její dokumentované chyby jsou pro zpracování chyb klíčové: neplatný vstup, globální limity souběhu a limity členského státu, nedostupnost služby, nedostupnost členského státu a vypršení časového limitu (timeout). Považujte tyto stavy za samostatné výsledky, nikoli za jeden společný koš „selhání“.

Pracovní postup, který obstojí při vysokém zatížení a auditu, vypadá takto:

  1. Normalizujte DIČ: převeďte předponu na velká písmena, odstraňte povolené mezery nebo interpunkci a původní hodnotu zadanou uživatelem uchovávejte odděleně.
  2. Před odesláním síťového požadavku lokálně ověřte kód země a tvar čísla.
  3. Odešlete normalizované číslo do systému VIES.
  4. Uložte normalizované DIČ, časová razítka požadavku a odpovědi, stav platné/neplatné/nezpracované, surovou odpověď, případnou chybu služby, ID zákazníka a faktury a rozhodnutí aplikace.
  5. Úspěšné výsledky ukládejte do mezipaměti (cache) po definovanou a zdokumentovanou dobu.
  6. Opakujte přechodné technické chyby s postupným prodlužováním intervalů (backoff).
  7. Nereovované nebo protichůdné případy směrujte k ruční kontrole.
  8. Proveďte revalidaci, pokud je výsledek v mezipaměti zastaralý nebo před transakcí, kde jsou důkazy klíčové.

Nordlet kontroluje DIČ v EU při přidání zákazníka a provádí jeho opakovanou kontrolu před fakturací, pokud je předchozí výsledek zastaralý, což je chování, které chcete replikovat bez ohledu na to, zda kontrola probíhá v platformě nebo ve vašem vlastní kódu.

Klíčové pravidlo: neprovádějte kontrolu VIES synchronně při pokladně (checkoutu). Výpadek služby neznamená neplatné číslo. Pokud během prodeje vyprší časový limit služby VIES, podržte transakci ke kontrole nebo jí přiřaďte předběžný stav. Blokování pokladny kvůli dostupnosti služby Komise generuje požadavky na podporu a nesprávné označení dobrého zákazníka za neplatného je horší.

Oddělení stavu ověření od daňového režimu

Jakmile máte výsledek z VIES, rozhodovací engine má před sebou další práci. Ukládejte tyto údaje jako samostatná pole:

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

Před uplatněním přenesení daňové povinnosti nebo osvobození od daně by měl engine prověřit, zda je zákazník skutečně příjemcem, zda jsou země zákazníka a předpona DIČ konzistentní, zda plnění splňuje podmínky pro intra-EU obchod, zda se uplatňují zvláštní pravidla místa plnění, zda existují důkazy o přepravě, zda prodávající vystupuje jako zprostředkující dodavatel a zda faktura obsahuje požadovanou formulaci. Platný stav VIES, který neprojde žádným z těchto dalších testů, není zelenou světlem.

Vytvoření neměnného rozhodnutí o DPH v okamžiku fakturace

Při vystavení faktury uložte vedle ní kompletní rozhodnutí, nejen konečnou sazbu:

faktura
  ├─ daňová kategorie položky
  ├─ místo plnění
  ├─ režim DPH
  ├─ sazba specifická pro danou zemi
  ├─ verze číselníku sazeb
  ├─ odkaz na důkaz VIES
  ├─ odkazy na důkazy o umístění
  ├─ odkaz na právní základ
  └── příznaky role na tržišti

Pravidla pro fakturaci v EU vyžadují údaje o dodavateli a odběrateli, číslo faktury, popis, základ daně, sazbu DPH, výši DPH a jakékoli informace o přenesení daňové povinnosti nebo osvobození od daně. Dobropisy a opravné daňové doklady vyžadují jednoznačný odkaz na původní fakturu.

Hlavní kniha Nordlet je neměnná, takže opravy probíhají prostřednictvím nových záznamů, jako jsou dobropisy nebo stornovací položky, nikoli úpravami uzavřených záznamů. Přizpůsobte svůj konzumující systém tomuto modelu, i když by vaše úložiště mohlo technicky přepisovat data. Úprava uzavřené faktury ničí vazbu mezi původním přiznáním a opravou, což je přesně ta linie, kterou auditor sleduje.

Zaúčtování, webhooky a idempotentnost

Prodej generuje podvojné účetní zápisy, které zachovávají jak obchodní transakci, tak závazek na DPH rozdělený podle zemí a režimů. Domácí prodej může zaúčtovat:

Md Pohledávky / zúčtování plateb
    Dal Výnosy
    Dal DPH na výstupu - DE - domácí

Prodej v rámci EU v režimu B2B reverse charge zaúčtuje výnosy bez DPH na výstupu a s odkazem na důkazy o přenesení daňové povinnosti. Přesná účtová osnova je na vás; důležité je, aby kladené reportovací dimenze zůstaly připojeny ke každému zaúčtování: členský stát, režim, daňová kategorie, sazba, období, zdrojová faktura a linie oprav.

Změny stavu řízeně vyvolávejte pomocí webhooků namísto pravidelného dotazování (polling). Nordlet vysílá události jako sale_invoice.paid, podepisuje doručení a opakuje pokusy s prodlevou. Poskytněte každému zápisu deterministický klíč idempotentnosti:

sale:{platform_order_id}:invoice:{invoice_version}

Váš zpracovatel musí být také idempotentní. Webhook může dorazit dvakrát, dorazit pozdě nebo se spustit poté, co původní požadavek již byl úspěšně vyřízen. Ověřujte podpisy, zaznamenávejte ID událostí, dávejte vadné události do karantény, zpracovávejte je prostřednictvím trvalé fronty a pravidelně slaďte stav webhooků s API. Pokud jste dosud nepracovali s podepsanými webhooky a klíči idempotentnosti, jedná se o místo, kde se skrývají ty nejjemnější chyby s duplicitními záznamy.

Seskupování pro OSS a vytváření exportů připravených k přiznání

Pro způsobilé transakce v režimu OSS seskupte data hlavní knihy podle režimu, členského státu spotřeby, typu plnění, daňové kategorie, sazby, základu daně, výše DPH, členského státu odeslání nebo provozovny, měny a období oprav.

Přiznání v unijním režimu odděluje plnění podle členského státu spotřeby a rozlišuje služby z členského státu identifikace, služby z jiných stálých provozoven a zboží odeslané z různých členských států. Zasedá základy daně a částky DPH odděleně pro standardní a snížené sazby. Osvobozená plnění a plnění s nulovou sazbou zůstávají mimo přiznání OSS úplně.

Několik provozních detailů, které lidi často překvapí:

  • Období unijního a mimounijního režimu OSS jsou čtvrtletní; IOSS je měsíční. Přiznání a platba jsou splatné do konce následujícího měsíce.
  • Nulové přiznání je vyžadováno pro každé období, a to i v případě, že nebyla provedena žádná příslušná plnění. Vygenerujte si kontrolní seznam období a automaticky vytvořte přiznání s nulovou hodnotou.
  • Přiznání OSS se podávají v eurech za použití referenčního kurzu ECB v poslední den daňového období, kdy je nutný přepočet. Uložte zdrojovou měnu, směnný kurz, datum kurzu, přepočtenou částku a metodu.

Exporty by měly pocházet ze zamčené hlavní knihy, nikdy z bočního tabulkového procesoru. Souhrny v tabulkovém procesoru ztrácí opravy, země odeslání, sazby a důkazy. Export obsahuje zdaňovací období, režim, členský stát spotřeby, zemi odeslání, kategorii plnění, sazbu, základ daně a výši DPH, měnu a uplatněný směnný kurz, částky oprav pro aktuální a předchozí období, ID zdrojových faktur, odkazy na dobropisy a odsouhlasené součty.

Buďte přesní v tom, co API v tomto ohledu dodává. Nordlet počítá přiznání OSS a IOSS z faktur a hlavní knihy včetně oprav z předchozích období, odesílá balíčky pro domácí přiznání pro Litvu (FR0600), Německo (UStVA) a Polsko (JPK_V7M) a generuje registry i.SAF pro Litvu připravené pro VMI. To jsou data připravená k přiznání. Jedno volání API nepodává přiznání k DPH pro každou zemi přes každou národní bránu a žádné přiznání není odesláno úřadu vaším jménem. Účtování, generování přiznání, export, odeslání bráně a potvrzení platby udržujte ve svém systému jako oddělené stavy. Průvodce enginem pro DPH v EU dokumentuje, které případy engine řeší a kde se spouštějí jeho varování.

Uzamčení období

Po revizi a schválení odsouhlaste faktury se zápisy v hlavní knize, odsouhlaste zůstatky DPH v hlavní knize se souborem dat pro přiznání, exportujte přiznání, zaznamenejte reference o podání a platbě a poté období uzamkněte. Nordlet blokuje zaúčtování do uzamčeného měsíce, a to i prostřednictvím API. Opravy po uzamčení spadají do pozdějšího období s výslovnými odkazy na původní doklad a dotčené zdaňovací období.

Časté režimy selhání a jak se jim vyhnout

Režim selhání Proč k němu dochází Opatření
Považování platného výsledku VIES za dostatečný pro nulovou sazbu VIES nezakládá práva na osvobození od daně Uchovávejte vedle výsledku také důkazy o zákazníkovi, plnění, přepravě a faktuře
Považování neplatného výsledku za důkaz o absenci registrace Číslo nemusí být aktivováno pro obchody v rámci EU nebo databáze může mít zpoždění Rozlišujte neplatné, nezpracované a technické selhání; spory směrujte ke kontrole
Synchronní provedení VIES při pokladně Limity souběhu, vypršení časového limitu, výpadky Asynchronní ověření, krátkodobé ukládání do mezipaměti, backoff, předběžné stavy
Trvalé ukládání výsledků do mezipaměti Stav registrace a aktivace se mění Ukládejte časová razítka a platnost; před fakturací proveďte opětovnou kontrolu, pokud je výsledek zastaralý
Přímé mapování produktů na procenta DPH Sazby a osvobození závisí na zemi a datu Produkt na kategorii na kód země na časově platnou sazbu
Rekonstrukce OSS z tabulkových procesorů Součty vynechávají opravy, země odeslání, důkazy Odvozujte z neměnné hlavní knihy s dimenzemi u každého záznamu
Zahrnutí služeb pro domácí provozovny do OSS Určité služby patří do domácího přiznání Modelujte provozovny odděleně, před agregací směrujte podle režimu
Vynechání nulových přiznání OSS vyžaduje přiznání za každé období Vygenerujte kontrolní seznam a automaticky vytvořte nulová přiznání
Úprava uzavřených faktur za účelem opravy Ničí vazbu mezi přiznáním a opravou Použijte dobropisy a stornovací položky v pozdějším období

Co bychom udělali jako první

Pokud bychom tuto integraci zahajovali zítra, vybudovali bychom vrstvu daňových kategorií a záznam rozhodnutí o DPH dříve, než se dotkneme jediného koncového bodu pro hlášení. Udržujte taxonomii stabilní, namapujte produkty na kategorie a zajistěte, aby záznam rozhodnutí zachycoval surové signály ze země spolu s důvodem, proč bylo vybráno místo plnění. Všechno ostatní - VIES, zaúčtování, seskupování OSS, export - závisí na tom, že tento model bude správný.

Poté bychom propojili VIES jako asynchronní krok ověřování důkazů se čtyřmi oddělenými stavy a otestovali ho vůči testovací společnosti (sandbox) s připravenými případy pro ošklivé situace (vypršení časového limitu, nezpracované výsledky, neshodné předpony), než jej pustíme do produkce. Výše uvedeným režimům selhání lze téměř úplně předejít, pokud datový model nese důkazy a vykazovací dimenze již od prvního zaúčtování.

FAQ

Znamená platná odpověď z VIES, že mohu prodej B2B v rámci EU osvobodit od daně s nulovou sazbou?

Ne. VIES potvrzuje, že DIČ je registrováno a, kde je to podporováno, aktivováno pro obchody v rámci EU. Právo na osvobození dodání zboží uvnitř Společenství závisí na dalších důkazech: že zákazník je skutečným příjemcem, dokladu o přepravě nebo odeslání, správném místě plnění a požadované formulaci na faktuře. Uložte výsledek VIES jako jeden ze vstupů, nikoli jako konečné rozhodnutí.

Mělo by ověření VIES blokovat pokladnu (checkout)?

Nemělo. U VIES může vypršet časový limit nebo může dojít k dosažení limitů souběhu, přičemž výpadek není totéž co neplatné číslo. Ověřujte asynchronně, úspěšné výsledky ukládejte do mezipaměti po zdokumentovanou dobu, opakujte přechodné chyby a nejednoznačné případy ponechte k posouzení s předběžným stavem namísto selhání prodeje.

Může cloudové účetní API automaticky podávat mé přiznání k DPH?

Může generovat data připravená k přiznání seskupená podle režimu a členského státu, vypočtená z neměnné hlavní knihy včetně zahrnutých oprav. Zda také podává přiznání přes každou národní podací bránu, závisí na produktu a zemi. Nordlet počítá přiznání OSS a IOSS, odesílá balíčky pro domácí přiznání pro Litvu, Německo a Polsko a generuje registry i.SAF pro Litvu připravené pro VMI, ale neodchyluje se k odesílání čehokoli daňovému úřadu vaším jménem. Zacházejte s účetnictvím, generováním přiznání, exportem, odesláním bráně a platbou jako s oddělenými stavy, namísto abyste předpokládali, že jedno volání vyřídí vše všude.

Jak mám řešit opravy po uzamčení období?

Zaúčtujte je v následujícím období s výslovnými odkazy na původní doklad a dotčené zdaňovací období. Nordlet blokuje nové zaúčtování do uzamčeného měsíce, a to i přes API, takže opravy probíhají prostřednictvím dobropisů nebo stornovacích položek namísto úprav. Tím se zachová vazba mezi původním přiznáním a úpravou.

Další čtení