Module 4 · 4.1
Btw instellen in WooCommerce
Module 4: Btw, verzending en betalen · Leestijd: 11 minuten
Leerdoel: Na deze les kun je de btw in WooCommerce correct instellen voor verkoop in je eigen land, de gevolgen van elke instelling uitleggen en een afrondingsverschil of een verkeerde prijs opsporen.
Kernbegrippen: btw-tarief, algemeen en verlaagd tarief, prijzen ingevoerd inclusief of exclusief btw, btw berekenen op basis van, btw-klassen, tarieventabel, prioriteit, afronding, weergave in winkel en bij afrekenen, achtervoegsel, B2B, verlegging, intracommunautaire levering, VIES
Deze les legt de regels uit zoals ze op 9 november 2026 gelden. Het is geen juridisch of fiscaal advies. Twijfel je over jouw situatie, vraag het dan aan een jurist, je brancheorganisatie of je boekhouder.
Waarom btw in een shop lastiger is dan in een factuurprogramma
Op een factuur zet je één bedrag, één tarief en één klant. In een webshop rekent een programma de btw uit voor elke winkelwagen, elk land, elke verzendmethode en elke kortingscode, duizenden keren per dag. Eén verkeerde instelling zit dan in elke bestelling. En de consument ziet het direct: de wet vraagt dat je aan consumenten de totale prijs inclusief belastingen toont (EU: artikel 6 lid 1 sub e richtlijn 2011/83/EU; Nederland: artikel 6:230m lid 1 sub e en 3:15d lid 2 BW; Duitsland: Art. 246a § 1 EGBGB; zie les 5.1).
WooCommerce rekent btw pas uit als je het aanzet: WooCommerce > Instellingen > Algemeen, vinkje Btw-tarieven en berekeningen inschakelen (Enable tax rates and calculations). Daarna verschijnt het tabblad Btw (Tax). Staat het vinkje uit, dan is elke prijs gewoon een getal zonder btw-logica, en klopt je administratie alleen als al je prijzen toevallig hetzelfde tarief hebben.
De tarieven in de drie voorbeeldlanden
| Land | Algemeen tarief | Verlaagde tarieven | Voorbeeld verlaagd |
|---|---|---|---|
| Nederland | 21% | 9% en 0% | veel voedingsmiddelen |
| België | 21% | 12%, 6% en 0% | veel voedingsmiddelen |
| Duitsland | 19% | 7% | veel voedingsmiddelen |
Welk tarief bij welk product hoort, staat in de regels van elk land; een theepot is algemeen tarief, voor losse thee kan een verlaagd tarief gelden. Twijfel je, vraag het je boekhouder. De actuele tarieven van alle EU-landen vind je in de database TEDB van de Europese Commissie (zie Verder lezen). Dat heb je nodig in les 4.2.
De instellingen één voor één
Op het tabblad Btw staan de keuzes die het meest misgaan.
Prijzen ingevoerd met btw (Prices entered with tax). Vul je in het product € 24,20 in als consumentenprijs, of € 20,00 zonder btw? Voor een shop aan consumenten is "ja, ik voer prijzen inclusief btw in" meestal het handigst: de prijs die je invoert is de prijs die de klant ziet, ook na afronding. Voor een groothandel die met prijzen zonder btw werkt, is "nee" logischer. Kies één keer en verander het niet meer als je al producten hebt: WooCommerce rekent je bestaande bedragen niet om. Zet je het later om, dan worden al je prijzen in één klap 21 procent hoger of lager.
Btw berekenen op basis van (Calculate tax based on): het verzendadres van de klant (standaard), het factuuradres of het winkeladres. Verkoop je alleen in Nederland, dan maakt het weinig uit. Verkoop je in meer EU-landen boven de drempel van les 4.2, dan heb je het verzendadres nodig: daar komen de goederen aan.
Btw-klasse verzending (Shipping tax class): standaard "op basis van de producten in de winkelwagen". Er is een eigenaardigheid: staat er één product met het algemene tarief in de winkelwagen, dan gebruikt WooCommerce dat tarief voor de verzending, ook als er ook een product met een ander tarief in zit. Of dat klopt voor jouw situatie, is een vraag voor je boekhouder; sommige landen verdelen verzendkosten naar verhouding.
Afronding: "Btw afronden op subtotaalniveau in plaats van per regel". WooCommerce waarschuwt dat ongelijke instellingen bij invoer en weergave tot verschillen van een cent leiden; de knop Aanbevolen instellingen gebruiken zet ze gelijk.
Extra btw-klassen: naast Standaard bestaan standaard Verlaagd tarief en Nultarief. Per klasse maak je een tarieventabel. Per product kies je de klasse.
Prijzen weergeven in de winkel en Prijzen weergeven bij winkelwagen en afrekenen: inclusief of exclusief btw. Voor consumenten: inclusief. Met het achtervoegsel (Price display suffix) zet je er tekst achter, zoals "incl. btw". Voor een shop met consumenten en bedrijven kun je {price_excluding_tax} gebruiken om beide te tonen: "incl. btw ({price_excluding_tax} excl. btw)".
De tarieventabel
Elke regel in een tarieventabel heeft: landcode, provincie, postcode, plaats, tarief %, naam, prioriteit, samengesteld en verzending (of het tarief ook over verzendkosten geldt). Voor Theehuis Example, dat alleen in Nederland verkoopt:
| Klasse | Land | Tarief | Naam | Verzending |
|---|---|---|---|---|
| Standaard | NL | 21,0000 | BTW | ja |
| Verlaagd tarief | NL | 9,0000 | BTW | ja |
Laat je provincie, postcode en plaats leeg, dan geldt de regel voor het hele land. Een * als land betekent "elk land": gebruik dat niet voor btw, want dan rekent je shop 21 procent voor een klant in Duitsland.
Over prioriteit: WooCommerce neemt per prioriteit alleen het eerste passende tarief. Meer tarieven tegelijk (in Europa zelden nodig) krijgen elk een andere prioriteit. Samengesteld (compound) betekent btw over btw; dat komt in de EU voor gewone btw niet voor, laat het uit.
Rekenvoorbeeld en een afrondingsval
Theehuis Example voert prijzen inclusief btw in. Een theepot kost € 29,95. WooCommerce rekent terug: 29,95 / 1,21 = 24,75 zonder btw, en 5,20 btw. Een pakje thee van € 4,95 met 9 procent: 4,95 / 1,09 = 4,54, btw 0,41.
Een klant koopt drie pakjes thee. Per regel afgerond: 3 × 0,41 = 1,23. Op subtotaal afgerond: 14,85 / 1,09 = 13,62, btw 1,23. Hier gelijk, maar bij andere aantallen kan het een cent schelen. Dat is geen fout van WooCommerce, maar een gevolg van de keuze. Kies er één, stem hem af met je boekhouding, en verander hem niet midden in een kwartaal.
Verkopen aan bedrijven
Aan een Nederlands bedrijf reken je gewoon Nederlandse btw; het bedrijf trekt die af. Verkoop je goederen aan een bedrijf in een ander EU-land met een geldig btw-nummer, dan is het meestal een intracommunautaire levering: jij rekent 0 procent en het bedrijf geeft de btw aan in zijn eigen land (de btw wordt verlegd). Daarvoor moet je het btw-nummer controleren in VIES, het controlesysteem van de Europese Commissie, en de levering apart opgeven in je aangifte en de opgaaf intracommunautaire prestaties. WooCommerce doet dit niet zelf: je hebt een uitbreiding nodig die het btw-nummer bij het afrekenen vraagt, in VIES controleert en dan geen btw rekent. Gaat er iets mis met die controle, dan reken je gewoon btw. Laat je boekhouder meekijken voordat je dit aanzet.
In de praktijk: zo ziet het eruit in WooCommerce
- Instellingen > Algemeen: winkeladres invullen, vinkje btw-berekeningen aan.
- Instellingen > Btw: prijzen inclusief btw ingevoerd, berekenen op basis van verzendadres, weergave inclusief, achtervoegsel "incl. btw".
- Standaardtarieven: regel NL 21%, naam BTW, verzending aan. Verlaagd tarief: NL 9%.
- Per product bij Productgegevens > Algemeen: btw-status "Belastbaar" en de juiste btw-klasse.
- Test: zet een product in de winkelwagen, vul een Nederlands adres in en kijk of het btw-bedrag klopt met je rekenmachine.
Samenvatting
- Zet btw-berekening aan en kies één keer of je prijzen inclusief of exclusief btw invoert.
- Consumenten zien altijd de prijs inclusief btw; een achtervoegsel maakt het duidelijk.
- Een tarieventabel per klasse; per prioriteit telt het eerste passende tarief; geen
*als land. - Afrondingsverschillen van een cent komen uit je keuze voor afronding per regel of op subtotaal.
- Verkoop aan bedrijven in andere EU-landen (verlegging) vraagt een btw-nummercontrole in VIES en een uitbreiding.
Quiz
Opdracht
Opdracht A4.1: Kloppen je prijzen met btw? Vul het adres van je shop in, de slug of het adres van één product, de prijs van dat product zonder btw, het btw-tarief en of je aan consumenten of alleen aan bedrijven verkoopt. Het programma vraagt het product op via de Store API (/wp-json/wc/store/v1/products?slug=...), een publieke ingang die elke bezoeker kan gebruiken. Het rekent de getoonde prijs uit (prices.price gedeeld door 10 tot de macht currency_minor_unit) en vergelijkt die met jouw prijs zonder btw keer (1 + tarief).
- Groen bij consumenten: de getoonde prijs is jouw prijs inclusief btw (op 2 cent na).
- Oranje: er staat geen aanduiding als "incl. btw" bij de prijs (in
price_html), of de valuta is geen euro. - Rood bij consumenten: de winkel toont de prijs zonder btw, of een prijs die bij geen van beide past (controleer tarief, btw-klasse van het product en "Prijzen ingevoerd met btw").
Bij "alleen bedrijven" is zowel de prijs met als zonder btw goed, met de tip om duidelijk te zeggen wat het is. Let op: de Store API toont prijzen zoals ingesteld bij "Prijzen weergeven in de winkel", voor een bezoeker zonder adres op basis van het winkeladres.
Verder lezen
- Setting up taxes in WooCommerce (woocommerce.com, Engels): https://woocommerce.com/document/setting-up-taxes-in-woocommerce/
- Btw-tarieven van alle EU-landen, TEDB (Europese Commissie, Engels): https://ec.europa.eu/taxation_customs/tedb/
- Btw-nummer controleren, VIES (Europese Commissie): https://ec.europa.eu/taxation_customs/vies/
- Factuureisen (Belastingdienst): https://www.belastingdienst.nl/wps/wcm/connect/bldcontentnl/belastingdienst/zakelijk/btw/administratie_bijhouden/facturen_maken/factuureisen/factuureisen
- Wie je bent: informatieplichten en Impressum (deze cursus, les 5.1)
