Wanneer Odoo de verkeerde btw op een factuur zet, is de fiscale positie van de klant vrijwel altijd de reden. Ze ontbreekt, is verkeerd ingesteld, of is onvolledig gekoppeld, en de standaardbelasting van het product is alleen het startpunt dat ze herschrijft.
Je stuurt een factuur naar een zakelijke klant in Duitsland. Je Odoo rekent er 21% Nederlandse btw op. Het had 0% met een verleggingsnotitie moeten zijn, want het is een intra-EU B2B-verkoop. De boekhouder van de klant mailt terug, de factuur wordt gecrediteerd en je geeft hem handmatig opnieuw uit. Vermenigvuldig dat met elke export en elke EU-klant en je hebt een terugkerende puinhoop.
Het gaat ook de andere kant op mis. Een verkoop aan een klant buiten de EU toont btw die er niet hoort te zijn, of een binnenlandse factuur toont opeens 0% omdat iemand ooit de verkeerde instelling koos en het bleef hangen. De cijfers in je btw-aangifte kloppen niet meer met de werkelijkheid. Zo werkt het mechanisme en zo krijg je het goed.
Waarom het gebeurt
Elk product in Odoo draagt een standaard verkoopbelasting. Voor een Nederlands bedrijf is dat meestal 21% btw. Als niets die standaard verandert, gebruikt elke factuurregel 21%, ongeacht wie de klant is of waar die zit.
Een fiscale positie is de regel die de standaard verandert. Ze verzint geen belasting. Ze koppelt de ene belasting aan de andere voor een bepaalde klant. "Wanneer deze klant wordt gefactureerd, vervang 21% btw door 0% intra-EU." Hetzelfde mechanisme kan ook de grootboekrekening hertoewijzen, zodat EU-verkopen op een andere omzetrekening belanden dan binnenlandse verkopen. Belastingen en rekeningen, beide gekoppeld door dezelfde regel.
Een verkeerde btw komt dus neer op een van drie dingen. Of er is geen fiscale positie ingesteld op de klant, waardoor overal de productstandaard (je binnenlandse tarief) wordt gebruikt. Of er is de verkeerde fiscale positie ingesteld, waardoor een exportklant de intra-EU-toewijzing krijgt of andersom. Of de fiscale positie bestaat maar de toewijzing is onvolledig, waardoor sommige belastingen worden gewijzigd en andere worden gemist. Detectie die niet automatisch is, maakt de eerste twee veel waarschijnlijker, want het laat de keuze over aan wie de klant aanmaakt.
De oplossing, in stappen
Bevestig dat de standaardbelasting van het product juist is
Open één product en controleer het veld Klantbelastingen op het tabblad Boekhouding. Dit is het startpunt waar elke fiscale positie vanuit werkt. Voor een Nederlandse verkoper zou dit je standaardtarief van 21% moeten zijn (of het juiste verlaagde tarief voor dat product). Als de standaard zelf verkeerd is, redt geen enkele fiscale positie je, want de toewijzing herschrijft een belasting die al verkeerd was.
De toewijzing herschrijft altijd alleen de standaard. Krijg de standaard eerst goed, koppel daarna.
Open je fiscale posities en lees de toewijzing
Ga naar Boekhouding > Configuratie > Fiscale Posities. Een Nederlandse lokalisatie levert er meestal een paar kant-en-klaar mee, met namen als "Intra-EU B2B", "Buiten de EU" of "Binnenlands". Open er een.
Binnenin zie je een tabel Belastingtoewijzing: een linkerkolom "Belasting op product" en een rechterkolom "Toe te passen belasting". Een intra-EU B2B-positie koppelt je 21% aan een 0% intra-EU-belasting die het verleggingslabel draagt. Een exportpositie koppelt 21% aan een 0% exportbelasting. Een binnenlandse positie heeft meestal helemaal geen toewijzing, omdat de productstandaard al het binnenlandse tarief is.
Daaronder zit een tabel Rekeningtoewijzing die hetzelfde doet voor grootboekrekeningen. Gebruik die wanneer EU- of exportverkopen op hun eigen omzetrekening moeten worden geboekt.
De vier posities die de meeste Nederlandse verkopers nodig hebben:
- Binnenlands. Geen toewijzing, of een expliciete toewijzing aan je standaardtarief. De standaard doet het werk al.
- Intra-EU B2B. Koppelt je btw aan 0% intra-EU met verlegging. Voor zakelijke klanten in een ander EU-land die een geldig btw-nummer hebben.
- Export (buiten de EU). Koppelt je btw aan 0% export. Voor klanten buiten de EU.
- Verlegging. Koppelt je btw aan een 0%-verleggingsbelasting waarbij de koper de btw afdraagt. Intra-EU B2B is het meest voorkomende geval; ook sommige binnenlandse situaties gebruiken verlegging.
Maak detectie automatisch in plaats van handmatig
Dit is de stap die de fouten stopt. Standaard wordt een fiscale positie alleen toegepast als iemand die handmatig op de klant instelt. Laat je het handmatig, dan ben je afhankelijk van wie het contact aanmaakt en of die de regel onthoudt.
Open een fiscale positie en vink Automatisch detecteren aan. Er verschijnen twee voorwaarden:
- Btw verplicht. De positie geldt alleen als het contact van de klant een btw-nummer heeft ingevuld. Gebruik dit voor intra-EU B2B: geen btw-nummer, geen verlegging.
- Land / Landengroep. De positie geldt alleen voor het geselecteerde land of de geselecteerde groep. Stel de EU-landengroep in voor intra-EU, en de rest van de wereld voor export.
Nu kiest Odoo de positie zelf op basis van het land en btw-nummer van de klant. Bij een webshoporder werkt de belasting bij op het moment dat de klant zijn factuurgegevens invult of inlogt. Je hoeft niet meer op je geheugen te vertrouwen.
Stel de volgorde zo in dat de juiste wint
Als meer dan één automatische positie bij een klant zou kunnen passen, past Odoo degene toe die als eerste in de volgorde staat (de volgorde in de lijst). Zet dus de specifieke posities boven de brede. Een intra-EU B2B-positie met een btw-vereiste moet boven een generieke positie "elk EU-land" staan, anders grijpt de brede de klant als eerste.
Sleep de rijen in volgorde op de lijst met fiscale posities. De eerste match wint.
Koppel inclusief belasting aan inclusief belasting
Let op de prijsscope. Elke belasting in Odoo is ofwel inclusief belasting (de prijs bevat de btw al) of exclusief belasting (de btw komt er bovenop). Een fiscale positie koppelt de ene belasting aan de andere, en converteert niet tussen de twee scopes.
Als je productstandaard een 21% inclusief belasting is en je koppelt die aan een 0% exclusief belasting, kan het regeltotaal verschuiven op een manier die je niet verwachtte. Houd de toewijzing consistent: koppel een belasting inclusief aan een belasting inclusief, en een belasting exclusief aan een belasting exclusief. Een B2C-webshop draait meestal inclusief belasting; een B2B-flow draait meestal exclusief belasting. Bepaal welke de klant gebruikt en houd de hele keten op dezelfde scope.
Stel de positie ook in op bestaande klanten
Detectie past de positie toe op nieuwe orders. Ze reikt niet terug om die op het contactrecord van elke bestaande klant te stempelen. Stel voor je huidige bestand de fiscale positie één keer in op de klant, op het tabblad Verkoop & Inkoop van het contact. Nieuwe facturen voor die klant starten dan vanuit de juiste toewijzing.
Het stuk waar mensen over struikelen
Een paar dingen overkomen vrijwel iedereen
De toewijzing werkt alleen met actieve belastingen. Als de 0% intra-EU-belasting waaraan je koppelt gearchiveerd of inactief is, doet de toewijzing stilletjes niets en houdt de factuur het standaardtarief. Controleer onder Boekhouding > Configuratie > Belastingen dat elke belasting waaraan je koppelt actief is.
Detectie wordt pas geactiveerd zodra de details zijn ingevuld. In een webshop is de belasting de binnenlandse standaard totdat de klant zijn land en btw-nummer invoert. Een uitgelogde bezoeker ziet het binnenlandse tarief. Dat is correct gedrag, geen bug, maar het verrast mensen die als gast testen.
Een ontbrekend btw-nummer breekt intra-EU. Je intra-EU B2B-positie vereist een btw-nummer. Een zakelijke klant die het zijne nooit heeft ingevuld, krijgt niet de 0% verlegging, maar binnenlandse btw. De oplossing zit in de gegevens van de klant, niet in de positie. Odoo valideert het btw-nummer niet uit zichzelf tegen VIES; dat is een aparte controle.
Handmatig wint van automatisch. Een fiscale positie die handmatig op de klant is ingesteld, overschrijft automatische detectie voor die klant. Als één klant steeds de verkeerde belasting krijgt terwijl het bij anderen wel goed gaat, kijk dan eerst naar het veld fiscale positie op dat contact.
De volgorde is stil. Als twee posities matchen en de verkeerde wint, waarschuwt niets je. De factuur toont gewoon een belasting die je niet verwachtte. Controleer de volgorde van je posities voordat je de toewijzing de schuld geeft.
De standaardbelasting is de echte bron. Een fiscale positie herschrijft alleen de standaard van het product. Als facturen over de hele linie verkeerd zijn, is de standaardbelasting op de producten de waarschijnlijkere boosdoener dan de positie.
Er zit een plafond aan dit mechanisme. We liepen er in de praktijk tegenaan op het moment dat producttypes per land verschillende btw-categorieën dragen. Voedsel, boeken of kinderartikelen kunnen in het ene EU-land verlaagd tarief zijn en in het volgende standaardtarief, dus twee producten die je binnenlandse belasting delen, hebben in het buitenland opeens verschillende belastingen nodig, en een fiscale positie kan ze niet splitsen: ze koppelt belasting aan belasting, niet product aan belasting. Op dat punt is standaard Odoo niet meer genoeg en heb je een doordachte opzet nodig met aparte belastingen per productgroep en land. Dat is werk om één keer zorgvuldig te ontwerpen, met iemand die het eerder heeft gedaan, niet om factuur voor factuur te patchen.
Hoe je het test
Maak voor elk geval één testfactuur en lees de belasting op de regel en de rekening waarop die boekt. Een binnenlandse klant zou je standaardtarief moeten tonen. Een zakelijke EU-klant met een btw-nummer zou 0% intra-EU met de verleggingsnotitie moeten tonen. Een klant buiten de EU zou 0% export moeten tonen. Als een ervan verkeerd is, is de positie op die klant of de toewijzing daarin de plek om te kijken, in die volgorde.
Snelle checklist
- De standaardbelasting van het product (Klantbelastingen) is je juiste binnenlandse tarief.
- Er bestaat een fiscale positie voor elk geval: binnenlands, intra-EU B2B, export, verlegging.
- De belastingtoewijzing van elke positie verwijst naar een actieve belasting.
- Automatisch detecteren staat aan, met de juiste btw- en landvoorwaarden.
- Specifieke posities staan boven brede posities in de volgorde.
- Inclusief belasting koppelt aan inclusief belasting, exclusief belasting aan exclusief belasting.
- Bestaande klanten hebben de fiscale positie ingesteld op hun contact.
- Je hebt per geval één factuur getest en de belasting en de grootboekrekening gecontroleerd.
FAQ
Waarom zet Odoo de verkeerde btw op mijn factuur?
De belasting op een factuur komt uit de standaardbelasting van het product, aangepast door de fiscale positie van de klant. Verkeerde btw betekent bijna altijd dat de klant geen fiscale positie heeft, de verkeerde, of een met een onvolledige belastingtoewijzing. Controleer eerst de fiscale positie op de klant, daarna de belastingtoewijzing daarin.
Wat is een fiscale positie in Odoo?
Een fiscale positie is een regel die de standaardbelastingen en -rekeningen van een transactie koppelt aan andere voor een bepaalde klant of een bepaald land. Het is hoe Odoo 0% intra-EU-btw toepast op zakelijke EU-klanten, 0% export op klanten buiten de EU, en je binnenlandse tarief op lokale klanten, allemaal vanuit hetzelfde product.
Hoe laat ik Odoo automatisch de juiste btw toepassen?
Open de fiscale positie onder Boekhouding > Configuratie > Fiscale Posities en vink Automatisch detecteren aan. Stel het land of de landengroep in en vereis, voor intra-EU B2B, een btw-nummer. Odoo kiest de positie dan op basis van het land en btw-nummer van de klant, in plaats van te wachten tot iemand het handmatig instelt.
Waarom krijgt mijn zakelijke EU-klant nog steeds binnenlandse btw?
Hoogstwaarschijnlijk vereist de intra-EU fiscale positie een btw-nummer en heeft het contact van de klant er geen ingevuld. Zonder het btw-nummer faalt de voorwaarde en valt Odoo terug op de binnenlandse standaard. Voeg het btw-nummer toe aan het contact, of stel de intra-EU-positie handmatig in op de klant.
Verandert een fiscale positie prijzen inclusief belasting in prijzen exclusief belasting?
Nee. Een fiscale positie koppelt de ene belasting aan de andere, maar converteert niet tussen scopes inclusief belasting en exclusief belasting. Koppel een belasting inclusief aan een belasting inclusief, en een belasting exclusief aan een belasting exclusief, anders kan het regeltotaal onverwacht verschuiven.