Belastingtarieven en zones instellen

Martijn
Dit artikel vertelt je hoe je de belastingtarieven in Vendure op de juiste manier kunt instellen voor verkoop binnen en buiten de EU.

Nu je technische installatie compleet is, is het tijd om je shop te configureren voor real-world gebruik. Dit artikel behandelt de best practices met betrekking tot belastingen, die wij gebruiken bij Pinelab.studio. De voorbeelden in dit artikel zijn voornamelijk voor webwinkels in Europa, maar het geeft je ook een goed inzicht in hoe je de flexibele belastingtarieven en -zones van Vendure voor jouw regio kunt gebruiken.
Landen instellen in Vendure
Als het goed is, heeft je Vendure instance al landen ingesteld. Zo niet, dan kun je Vendure's populate utility en deze lijst met landen gebruiken om de landen in Vendure in te vullen.
Je storefront moet de GraphQL query availableCountries gebruiken om de landen weer te geven die beschikbaar zijn voor je klanten. Als je niet aan alle landen goederen of diensten levert, kun je de landen die je niet toestaat uitschakelen. (Het is gemakkelijker om ze allemaal te importeren en uit te schakelen, zodat je ze later gemakkelijk kunt inschakelen)
Belastingcategorieën aanmaken
In de meeste gevallen wil je de belastingcategorieën Nul
, Verlaagd
en Standaard
aanmaken. Sommige landen, zoals België of Frankrijk, hebben ook een Verder Verlaagd
belastingcategorie. Je kunt deze categorieën maken via de Vendure Admin UI: Instellingen > Belastingcategorieën.
Voorbeeld 1: Je blijft onder de drempel van €10.000 in verkoop aan andere EU-landen
Ons eerste voorbeeld maakt gebruik van de EU-regelgeving: Je bent gevestigd in Nederland en verkoopt aan andere EU-landen, maar de totale omzet naar andere EU-landen blijft onder de €10.000. Hetzelfde geldt voor andere landen van de Europese Unie.
In dit geval moet je nog steeds de Nederlandse belastingtarieven toepassen, 21% of 9%, wanneer je levert aan andere landen in de Europese Unie.
Voor deze opzet moet je het volgende doen:
- Maak zone
EU
aan en voeg alle landen in de EU-regio toe. - Maak zone
Other
aan, met alle andere landen erin. - Maak belastingtarief
EU Verlaagd
, voor zoneEU
, belastingcategorieVerlaagd
en tarief9%
. - Maak belastingtarief
EU Standaard
, voor zoneEU
, belastingcategorieStandaard
en tarief21%
. - Creëer belastingtarief
EU Nul
, voor zoneEU
, belastingcategorieStandaard
en tarief0%
. - Voor zone
Other
maak je de tarievenOther Zero
,Other reduced
enOther standard
, maar allemaal met een tarief van0%
.
Configureer de AddressBasedTaxZoneStrategy, zodat belastingen worden berekend op basis van het land van de bestelling.
Voorbeeld 2: Je verkoopt aan andere EU-landen voor meer dan €10.000 per jaar
Als je in Nederland gevestigd bent, maar verwacht dat je totale omzet naar andere EU-landen de drempel van €10.000 overschrijdt, moet je de btw-tarieven van het land van verzending van je klant in rekening brengen. Als je bijvoorbeeld goederen naar een Duitse klant verzendt, moet je 19% btw in rekening brengen in plaats van de Nederlandse 21%.
- Maak een zone aan voor elk land binnen de EU. Maak bijvoorbeeld de zone
BE
aan, die alleen het land België als lid heeft. - Maak belastingtarieven voor elk land, voor elk belastingtarief. Bijvoorbeeld
BE Standaard
enBE Verlaagd
, met tarieven 21% en 6%. - Maak een andere zone
Overig
voor alle landen buiten de EU. - Voor zone
Other
kun je de tarievenOther reduced
enOther standard
maken, maar beide zullen een tarief van0%
hebben.
Je moet opnieuw de AddressBasedTaxZoneStrategy gebruiken om Vendure de juiste zones te laten gebruiken.
Je kunt op internet zoeken naar "EU VAT One Stop Shop" voor meer informatie over deze belastingregels.
Voorbeeld 3: BTW verleggen bij verkoop aan andere bedrijven (B2B)
Voor verkoop tussen bedrijven moet je de BTW verleggen. Dit betekent dat de verantwoordelijkheid voor de belastingregistratie bij de ontvangende partij ligt.
Je moet een geldig BTW-nummer van de klant hebben en dat BTW-nummer moet ook worden weergegeven op de factuur die je naar de klant stuurt.
- Maak een zone
EU Reverse Tax Charge
aan, die alle EU-landen bevat. - Maak de tarieven
Nul
,Verlaagd
enStandaard
voor deze zone. Alle tarieven zijn 0%. - Implementeer je eigen TaxZoneStrategy die de zone instelt op
EU Reverse Tax Charge
, als de bestelling een geldige BTW-ID heeft en wordt geplaatst in een land binnen de EU.
Verzendmethode belasting
In Nederland worden verzendkosten belast tegen hetzelfde btw-tarief als de goederen in de bestelling, en als er meerdere btw-tarieven van toepassing zijn, moet de belasting op de verzending naar rato worden berekend op basis van de waarde van de artikelen tegen elk tarief.
Voorbeeld: Als een bestelling €100 aan 21% btw-goederen bevat en €50 aan 9% btw-goederen, en de verzendkosten bedragen €15, dan wordt €10 van de verzendkosten belast met 21% en €5 met 9%. De totale btw op de verzendkosten is dan €2,10 (21% van €10) + €0,45 (9% van €5) = €2,55.
Je kunt je eigen ShippingCalculator implementeren om deze berekening uit te voeren.
Alternatieve optie: Prijzen incl. belasting hetzelfde houden voor alle klanten, ongeacht land
Het bovenstaande voorbeeld implementeert lokale belastingtarieven voor klanten, maar houdt de prijzen exclusief belasting voor iedereen gelijk. Dit betekent dat de prijs inclusief belasting per land verschilt. Bijvoorbeeld:
- Een product kost €121,- inclusief 21% belasting in Nederland. De prijs exclusief belasting is dus €100,-.
- Een klant selecteert Duitsland in de kassa. Het belastingtarief dat wordt gebruikt op de bestelling is nu 19%.
- Vendure berekent de nieuwe prijs inclusief btw voor dit product in Duitsland. Dit wordt €119, want €100 ex. belasting, plus €19 BTW.
Als je wilt dat de prijs altijd €121 is, ongeacht het toegepaste belastingtarief, kun je de volgende ProductVariantPriceCalculationStrategy implementeren:
import {
PriceCalculationResult,
ProductVariantPriceCalculationArgs,
ProductVariantPriceCalculationStrategy,
} from "@vendure/core";
/**
* Zorg ervoor dat de brutoprijs hetzelfde is voor alle klanten, ongeacht hun land.
*
* @example
* Een product is €121 inclusief 21% btw in Nederland
* Hetzelfde product is ook €121 inclusief 19% btw in Duitsland. Dit betekent dat de nettoprijs €101,68 is.
*/
export class SameGrossPriceForEveryoneCalculationStrategy
implements ProductVariantPriceCalculationStrategy
{
async calculate(
args: ProductVariantPriceCalculationArgs,
): Promise<PriceCalculationResult> {
const { inputPrice, ctx } = args;
return {
price: inputPrice,
priceIncludesTax: ctx.channel.pricesIncludeTax,
};
}
}
Dit waren enkele voorbeelden van hoe je belastingtarieven en zones kunt instellen in Vendure. Heb je hulp nodig of wil je meer weten? Neem contact met ons op!