Een productteam bouwt een hypotheek- of aankoopmodule en krijgt een ogenschijnlijk eenvoudige vraag: hoeveel overdrachtsbelasting hoort bij deze transactie? De formule lijkt beperkt tot grondslag maal tarief. In 2026 bepaalt vooral de classificatie van de koper, het gebruik van het vastgoed en eventuele vrijstelling of die uitkomst klopt.
Voor Nederlandse banken, hypotheekverstrekkers, taxateurs, vastgoedinvesteerders en developers is overdrachtsbelasting berekenen daarom geen losse rekensom. Je bouwt een beslislogica die uitlegbaar moet zijn, per verkrijger moet kunnen verschillen en gevoed wordt door herleidbare woningdata. Dit artikel zet de fiscale regels om in concrete scenario's, API-velden en controles.
Hoe overdrachtsbelasting berekenen werkt in 2026
Een woningdata-platform moet eerst de transactie classificeren voordat het een bedrag berekent. Beantwoord drie vragen: wat wordt verkregen, wie koopt het en wordt het vastgoed het hoofdverblijf? In 2026 geldt voor een woning die niet als hoofdverblijf wordt gebruikt 8%. Een woning die de koper zelf langdurig gaat bewonen valt onder 2%. Voor niet-woningen, zoals bedrijfspanden, winkels en grond, geldt 10,4%. Controleer de actuele tarieven in de Belastingdienst over tarieven voor overdrachtsbelasting.

Begin met de juiste grondslag
De basisformule is:
overdrachtsbelasting = belastbare waarde × toepasselijk tarief
In een transactiedataset ligt de belastbare waarde vaak dicht bij de koopsom. Een API kan die waarde bijvoorbeeld ontvangen als transaction_value, maar mag dat veld niet zonder controle als grondslag gebruiken. De concrete verkrijging en relevante waarderingsgegevens, zoals een WOZ-waarde of andere economische waarde, kunnen bepalend zijn.
Leg daarom minimaal deze velden vast:
- Objecttype, woning, bedrijfspand, winkel of grond.
- Gebruiksdoel, hoofdverblijf, verhuur, tweede woning of ander gebruik.
- Transactiewaarde, inclusief valuta en herkomst.
- Koperclassificatie, met afzonderlijke gegevens per verkrijger.
- Vrijstellingsstatus, inclusief vereiste verklaring en controles.
Kies het tarief pas na classificatie
Een woning voor eigen bewoning valt in beginsel onder 2%. Een woning die niet als hoofdverblijf wordt gebruikt valt in 2026 onder 8%. Een niet-woning valt onder 10,4%. Deze classificatie hoort als controleerbare beslissing in de API-logica en audittrail te staan, niet alleen als label in de interface.
Praktische regel: sla naast het eindbedrag ook het gekozen tarief, de grondslag, de classificatie en de reden voor een eventuele vrijstelling op.
De API moet de waardebepaling, tariefkeuze en vrijstellingstoets als afzonderlijke beslissingen kunnen reconstrueren. De volgende onderdelen behandelen de rekensommen, de startersvrijstelling en de vertaling naar een API-module.
Rekenvoorbeelden voor eigen bewoner, belegger en niet-woning
Maak overdrachtsbelasting berekenen controleerbaar met afzonderlijke scenario's. Gebruik per berekening dezelfde invoer: woningtype, gebruikerscategorie en transactiewaarde. Zo blijft zichtbaar welke classificatie en welk tarief het bedrag bepalen. Die structuur is ook direct bruikbaar in een API of woningdata-platform.
Voorbeeld één, eigen bewoner
Een koper verwerft een woning voor €375.000 en gaat er zelf langdurig wonen. Er geldt geen vrijstelling.
Formule:
€375.000 × 2% = €7.500
De belastbare waarde bedraagt €375.000. Bij een tarief van 2% komt de overdrachtsbelasting uit op €7.500. Leg in de berekening vast dat het object als woning voor eigen bewoning is geclassificeerd.
Voorbeeld twee, belegger
Dezelfde woning wordt gekocht voor €375.000, maar de koper gaat haar verhuren. De woning wordt daardoor niet het hoofdverblijf van de koper.
Formule:
€375.000 × 8% = €30.000
De classificatie verandert de uitkomst volledig. Voor een woning die niet als hoofdverblijf wordt gebruikt, geldt sinds 2026 een tarief van 8%. Het verschil met de eigen bewoner bedraagt in dit voorbeeld €22.500. Een API moet dit gebruiksdoel dus als afzonderlijke invoer verwerken, niet afleiden uit alleen het objecttype.
Voorbeeld drie, niet-woning
Een koper koopt een bedrijfspand voor €600.000. Het object is geen woning en eigen bewoning als woning speelt niet.
Formule:
€600.000 × 10,4% = €62.400
De transactiewaarde is €600.000 en het tarief 10,4%. Classificeer dit object als niet-woning. Gebruik niet de route voor een woning met beleggersgebruik, want die keuze leidt tot een verkeerd tarief.
| Situatie | Grondslag | Tarief | Bedrag |
|---|---|---|---|
| Eigen bewoner | €375.000 | 2% | €7.500 |
| Belegger | €375.000 | 8% | €30.000 |
| Niet-woning | €600.000 | 10,4% | €62.400 |
Vul de transactiewaarde aan met een herleidbare bron, bijvoorbeeld via Kadaster-koopsomgegevens opvragen. Sla per veld de herkomst op, zoals de koopakte, een woningrecord, een gebruikersverklaring of een externe bron. Bewaar ook classificatie, tarief en uitkomst, zodat een reviewer de volledige berekening kan reconstrueren.
Wanneer gelden uitzonderingen en vrijstellingen
De startersvrijstelling is een volledige vrijstelling van overdrachtsbelasting wanneer de koper aan alle voorwaarden voldoet. In 2026 moeten kopers 18 tot en met 34 jaar zijn, de woning als hoofdverblijf gaan gebruiken, de vrijstelling niet eerder hebben benut en voorafgaand aan de verkrijging schriftelijk een duidelijke, stellige en onvoorwaardelijke verklaring afleggen. De woningwaardegrens bedraagt in 2026 €555.000. De voorwaarden staan in de wettelijke regeling voor de startersvrijstelling en worden ook door de Belastingdienst bij koop van een huis toegelicht.

Beslismoment één, kwalificeert de koper voor de startersvrijstelling
Beantwoord achtereenvolgens:
- Is de verkrijger tussen 18 en 34 jaar op het moment van de juridische overdracht? Zo nee, toets het reguliere tarief voor de gekozen gebruikscategorie.
- Wordt de woning het hoofdverblijf van deze verkrijger? Zo nee, dan past de startersvrijstelling niet.
- Is de vrijstelling eerder gebruikt? Zo ja, dan vervalt deze route.
- Blijft de woningwaarde binnen €555.000? Zo nee, dan is een percentageberekening zonder vrijstelling nodig.
- Is de vereiste verklaring vooraf en zonder voorbehoud beschikbaar? Zo nee, dan kun je de vrijstelling niet als definitief resultaat teruggeven.
Bij gezamenlijke aankoop toets je deze voorwaarden per koper. Eén verkrijger kan wel kwalificeren en een andere niet. Je datamodel moet daarom geen enkel veld starter = true op transactieniveau gebruiken als dat de individuele beoordeling overschrijft.
Beslismoment twee, geldt het verlaagde tarief
Voldoet de koper niet aan de startersvrijstelling, maar wordt de woning wel het hoofdverblijf? Dan geldt voor die eigen woning het tarief van 2%. De woningwaardegrens van de startersvrijstelling bepaalt dus niet zelfstandig het reguliere tarief voor eigen bewoning.
Beslismoment drie, is sprake van een schenking
Bij een verkrijging door schenking of een verkoop met een mogelijk geschonken voordeel moet je een aparte vlag opnemen, bijvoorbeeld acquisition_by_gift. De overdrachtsbelastinglogica kan dan niet volstaan met alleen koopsom en gebruiksdoel. Laat een notariële en fiscale beoordeling bepalen welke aanvullende regeling geldt.
Beslismoment vier, speelt een specifieke vrijstelling
Voormalige huurwoningen, landbouwgrond en andere bijzondere verkrijgingen kunnen een afzonderlijke beoordeling onder de Wet op belastingen van rechtsverkeer vereisen. Geef in zulke gevallen geen schijnzeker resultaat. Retourneer de relevante status, de ontbrekende gegevens en een route voor handmatige beoordeling.
Minimale invoer voor deze beslisboom: overdrachtsdatum, woningwaarde, objecttype, hoofdverblijfstatus, leeftijd per verkrijger, eerder gebruik van de vrijstelling, startersverklaring, eigendomsverhouding en schenkingstatus.
Veelvoorkomende situaties naast elkaar
Een productteam heeft meer aan een beslistabel dan aan één algemene formule. De tabel hieronder maakt zichtbaar welke voorwaarden elkaar uitsluiten en welke verklaring je moet vastleggen. De bedragen zijn rekenvoorbeelden op basis van een koopsom van €350.000 en gebruiken de tarieven die bij het betreffende scenario horen.
| Scenario | Tarief 2026 | Vrijstelling | Rekenvoorbeeld €350.000 | Verplichte verklaring |
|---|---|---|---|---|
| Particuliere koper met eigen bewoning | 2% | Alleen startersvrijstelling als alle voorwaarden per koper zijn vervuld | €7.000 zonder vrijstelling | Verklaring hoofdverblijf, en bij startersvrijstelling de startersverklaring |
| Belegger | 8% | Startersvrijstelling past niet bij niet-eigen bewoning | €28.000 | Verklaring van gebruik als niet-hoofdverblijf |
| Nieuwbouw | Afhankelijk van de juridische en fiscale kwalificatie van de verkrijging | Niet automatisch afleiden uit het label nieuwbouw | Niet zonder aanvullende beoordeling vaststellen | Documentatie van de transactie en fiscale behandeling |
| Schenking | Afhankelijk van de verkrijging en toepasselijke regeling | Niet automatisch toepassen | Niet zonder waarderings- en schenkingsgegevens vaststellen | Schenkings- en overdrachtsdocumentatie |
De combinatie startersvrijstelling en beleggersstatus moet in je systeem onmogelijk worden verklaard. Ook nieuwbouw mag je niet automatisch als vrijgesteld markeren. Het objectlabel zegt niet zelfstandig welke fiscale behandeling volgt.
Voor automatische classificatie moeten minimaal de objectsoort, het beoogde gebruik, de transactiewaarde, de overdrachtsdatum, de koperstatus, de individuele leeftijd, de hoofdverblijfverklaring en de schenkingstatus gevuld zijn. Ontbreekt een essentieel veld, geef dan needs_review terug in plaats van een bedrag dat eruitziet als een definitieve aanslag.
Overdrachtsbelasting berekenen via woningdata en API
Een overdrachtsbelasting-calculator werkt het best als herbruikbare beslismodule binnen een woningdata-platform. De module haalt objectkenmerken op, toetst de koperstatus en retourneert niet alleen het bedrag, maar ook de onderliggende redenatie. Voor aanvullende woningkenmerken kun je bijvoorbeeld een woningwaarde-API voor woningdata gebruiken.
Definieer invoer en uitkomst
Gebruik ten minste deze velden:
transaction_valueproperty_typeintended_usebuyer_typebuyer_agetransfer_datefirst_time_exemption_usedprimary_residence_declarationstarter_declarationacquisition_by_gift
Een modelmatige functie kan er logisch als volgt uitzien:
calculateTransferTax(input)
- Controleer of de transactiewaarde en het objecttype aanwezig zijn.
- Bepaal of het object een woning of niet-woning is.
- Bepaal of de koper het object als hoofdverblijf gaat gebruiken.
- Toets de startersvoorwaarden per verkrijger.
- Selecteer vrijstelling, 2%, 8% of 10,4%.
- Bereken grondslag maal tarief.
- Retourneer tarief, vrijstelling, bedrag, redenen en validatiefouten.
Gebruik voor de module bijvoorbeeld /v1/transfers/calculate en verrijk de invoer via /v1/properties/{id}/tax-scenario. Een POST-request kan deze vorm hebben:
POST /v1/transfers/calculate
{
"transaction_value": 350000,
"property_type": "residential",
"intended_use": "primary_residence",
"buyer_type": "private",
"buyer_age": 29,
"transfer_date": "2026-01-01",
"first_time_exemption_used": false,
"primary_residence_declaration": true,
"starter_declaration": true,
"acquisition_by_gift": false
}
Een succesvolle respons bevat bijvoorbeeld de structuur:
{
"rate": 0,
"exemption": "starter",
"total_amount": 0,
"status": "validated",
"reason_codes": [
"primary_residence",
"age_eligible",
"value_within_threshold",
"declaration_present"
]
}
Cache objectkenmerken die niet wijzigen tijdens één transactie, maar cache geen koperverklaring zonder versie, timestamp en bron. Rate limits horen in de client zichtbaar te zijn. Retourneer daarom een foutcode, resterende limiet en retry-informatie, zodat een hypotheekmodule niet stilvalt of een oud resultaat toont.
Praktische checklist en volgende stap
Een betrouwbare implementatie van overdrachtsbelasting berekenen begint met governance, niet met de formule. Productteams en fintech-developers moeten kunnen aantonen welke invoer, tariefversie en verklaring tot het resultaat hebben geleid.
Controleer de fiscale logica
- Gebruik actuele tarieven: modelleer in 2026 2% voor eigen bewoning, 8% voor woningen die niet als hoofdverblijf worden gebruikt en 10,4% voor niet-woningen. Bewaar de ingangsdatum van elke tariefregel.
- Toets de startersvrijstelling volledig: controleer leeftijd, hoofdverblijf, eerder gebruik, woningwaarde en de vooraf afgelegde verklaring. Een ontbrekende verklaring mag niet als geldige vrijstelling worden geïnterpreteerd.
- Beoordeel iedere verkrijger afzonderlijk: bij gezamenlijke aankoop kunnen uitkomsten per koper verschillen. Leg eigendomspercentages en individuele verklaringen apart vast.
- Classificeer nieuwbouw niet automatisch: het label nieuwbouw is onvoldoende voor een definitieve fiscale route. Vraag transactie- en aktegegevens op.
- Markeer schenkingen: gebruik een aparte
acquisition_by_gift-status en blokkeer automatische afronding wanneer waardering of samenloop niet compleet is.
Maak de uitkomst auditbaar
Sla naast total_amount ook tax_base, rate, exemption, reason_codes, bronvelden en rekenversie op. Zo kunnen developers, compliance en fiscalisten dezelfde beslissing reconstrueren. Een resultaat zonder reden en bron is voor een bank- of hypotheekproces onvoldoende controleerbaar.
Gebruik voor de bredere integratie van woningdata de uitleg over woningdata integreren. Koppel de tax-scenario-endpoint aan je validatielaag en laat ontbrekende gegevens terugkomen als expliciete fout, niet als nulwaarde.
Start nu de gratis Altum AI-sandbox, valideer een eigen en een beleggersscenario en integreer daarna het /v1/transfers/calculate-endpoint in jullie staging-omgeving. Altum AI levert herleidbare woningdata en API-inzichten voor onder meer waarde, transacties en fiscale scenario's, zodat jullie overdrachtsbelastingmodule controleerbaar van test naar productie kunnen brengen. Bezoek Altum AI en maak direct een account aan.