SaaS-omzetverwerking onder IFRS 15, met uitgewerkte grootboekboekingen
Elke stap van IFRS 15 voor een SaaS-contract, weergegeven als journaalposten met echte cijfers, en de API-aanroepen die deze automatisch genereren.
Onder IFRS 15 is een SaaS-abonnement een prestatieverplichting waaraan in de loop van de tijd wordt voldaan. De omzet wordt daarom gelijkmatig over de serviceperiode verwerkt, terwijl het gefactureerde bedrag op een contractverplichting blijft staan totdat het is verdiend. De debiteuren en de btw worden volledig geboekt op de dag dat de factuur wordt uitgeschreven. Alleen de omzet wacht.
Dat is de hele regel. De rest van dit artikel laat zien hoe dit eruitziet in een grootboek, met debet- en creditposten voor de situaties die een abonnementsbedrijf in de praktijk tegenkomt: een jaarplan, een bundel met korting, een project dat op basis van mijlpalen wordt gefactureerd, een verwachte restitutie en een contract dat halverwege wijzigt. Elke boeking maakt gebruik van het Litouwse grootboekrekeningstchema dat standaard wordt meegeleverd met Nordlet, en de laatste sectie toont de API-aanroepen die deze boekingen plaatsen zonder dat iemand ze handmatig hoeft in te typen.
De vijf stappen, toegepast op één contract
Een klant sluit op 1 januari 2026 een contract af voor twaalf maanden toegang tot het platform voor € 2.400 exclusief btw. De Litouwse btw van 21% bedraagt € 504, wat de factuur op een brutosom van € 2.904 brengt.
| Stap | Toegepast op dit contract |
|---|---|
| 1. Contract | De geaccepteerde bestelling voor twaalf maanden toegang |
| 2. Prestatieverplichtingen | Eén: toegang tot het platform van 1 januari tot en met 31 december 2026 |
| 3. Transactieprijs | € 2.400 (geen variabele vergoeding in dit eerste voorbeeld) |
| 4. Toewijzing | Niet nodig; één enkele verplichting beslaat de gehele prijs |
| 5. Verwerking | In de loop van de tijd, naarmate de dagen van toegang verstrijken |
Het conceptuele achtergrondmodel wordt behandeld in SaaS-boekhouding uitgelegd. Hier gaan we direct door naar de journaalposten.
Scenario 1: een jaarplan
Bij facturering op 1 januari 2026. De vordering en de btw zijn op deze datum reëel. De omzet is dat niet.
| Rekening | Debet | Credit |
|---|---|---|
| 2410 Handelsdebiteuren | 2.904,00 | |
| 4492 Te betalen omzetbelasting | 504,00 | |
| 4910 Vooruitontvangen baten (contractverplichting) | 2.400,00 |
Er is nog geen omzetrekening geraakt. De btw is echter op de factuurdatum verschuldigd volgens de gebruikelijke regels; de btw-aangifte voor januari bevat de € 504, ongeacht of de dienst al dan niet is geleverd.
Wanneer de klant betaalt.
| Rekening | Debet | Credit |
|---|---|---|
| 2710 Bank | 2.904,00 | |
| 2410 Handelsdebiteuren | 2.904,00 |
Aan het einde van elke maand. De theorieversie schrijft € 200 per maand vrij. Een op dagen gewogen schema, een outputmethode op basis van verstreken tijd zoals IFRS 15 §B15 toestaat voor een continu afgenomen dienst, kent elke maand zijn aandeel van de 365 dagen toe:
| Maand | Dagen | Tranche |
|---|---|---|
| Januari | 31 | 203,84 |
| Februari | 28 | 184,11 |
| Maart | 31 | 203,84 |
| April | 30 | 197,26 |
| … | ||
| December | 31 | 203,81 |
| Totaal | 365 | 2.400,00 |
De laatste tranche vangt de afrondingsverschillen op zodat het schema exact optelt tot het vooruitontvangen bedrag. De vrijval voor januari is:
| Rekening | Debet | Credit |
|---|---|---|
| 4910 Vooruitontvangen baten | 203,84 | |
| 5001 Dienstenomzet | 203,84 |
Na twaalf van dergelijke boekingen is het saldo op rekening 4910 voor deze factuur nul, en is er over het jaar waarin de dienst is verdiend precies € 2.400 aan omzet verantwoord.
Scenario 2: een bundel met korting
Dezelfde klant koopt het abonnement in combinatie met een onboardingsdienst. Op de factuur staat het abonnement vermeld voor € 2.400 en de onboarding voor € 600, wat neerkomt op een totaal van € 3.000 exclusief btw. Los verkocht bedraagt het abonnement € 3.000 en de onboarding € 1.000, waardoor de bundel een korting van € 1.000 bevat.
Volgens IFRS 15 §76 tot en met §80 moet de korting worden verdeeld over de verplichtingen in verhouding tot hun afzonderlijke verkoopprijzen (standalone selling prices), en niet worden gelaten waar het verkoopteam deze toevallig heeft neergezet.
| Regel | Vermelde prijs | Afzonderlijke verkoopprijs | Aandeel | Toegepast |
|---|---|---|---|---|
| Abonnement (over tijd) | 2.400 | 3.000 | 75% | 2.250,00 |
| Onboarding (op een moment in de tijd) | 600 | 1.000 | 25% | 750,00 |
| Totaal | 3.000 | 4.000 | 3.000,00 |
De btw blijft gekoppeld aan de vermelde regelprijzen, aangezien de factuur het btw-document is: 21% over € 3.000 is € 630. De toewijzing verandert uitsluitend hoe het nettobedrag wordt verdeeld over omzet nu en omzet later.
Bij facturering.
| Rekening | Debet | Credit |
|---|---|---|
| 2410 Handelsdebiteuren | 3.630,00 | |
| 4492 Te betalen omzetbelasting | 630,00 | |
| 5001 Dienstenomzet (onboarding, geleverd) | 750,00 | |
| 4910 Vooruitontvangen baten (abonnement) | 2.250,00 |
De onboarding levert direct € 750 aan omzet op bij facturering, en niet de € 600 die op de regel stond vermeld. Voor het abonnement wordt € 2.250 vooruitontvangen, en de tranche voor januari bedraagt 2.250 × 31 ÷ 365 = € 191,10.
Zonder toewijzing zou de boeking € 600 aan omzet en € 2.400 aan vooruitontvangen baten hebben laten zien. Het verschil is € 150 aan omzet die in het verkeerde jaar zou zijn verantwoord.
Scenario 3: een project gefactureerd op basis van mijlpalen
Een implementatieproject wordt gefactureerd voor € 10.000 exclusief btw (€ 12.100 inclusief btw) met drie mijlpalen: ontwerp 30%, bouw 50%, livegang 20%. Elke mijlpaal is een moment waarop een specifiek deel van het werk wordt geaccepteerd, blijkend uit een opleveringsdocument.
Bij facturering.
| Rekening | Debet | Credit |
|---|---|---|
| 2410 Handelsdebiteuren | 12.100,00 | |
| 4492 Te betalen omzetbelasting | 2.100,00 | |
| 4910 Vooruitontvangen baten | 10.000,00 |
Wanneer het ontwerptoestemmingsdocument is getekend.
| Rekening | Debet | Credit |
|---|---|---|
| 4910 Vooruitontvangen baten | 3.000,00 | |
| 5001 Dienstenomzet | 3.000,00 |
De verwachte datum van een mijlpaal is planningsinformatie. De omzet verschuift wanneer de gebeurtenis plaatsvindt, niet wanneer de kalender zegt dat het zou moeten gebeuren.
Scenario 4: een verwachte restitutie
Stel dat uit historische gegevens blijkt dat 5% van de jaarplannen binnen de eerste maand wordt gerestitueerd. IFRS 15 §55 tot en met §58 beschouwen verwachte restituties als een variabele vergoeding: deze worden uitgesloten van de transactieprijs en geboekt als een restitutieverplichting totdat de onzekerheid is opgelost.
Neem een eenmalige productverkoop van € 1.000 netto (€ 1.210 bruto) met een geschatte restitutie van 5%, verwerkt op één specifiek moment in de tijd.
Bij facturering.
| Rekening | Debet | Credit |
|---|---|---|
| 2410 Handelsdebiteuren | 1.210,00 | |
| 4492 Te betalen omzetbelasting | 210,00 | |
| 4450 Restitutieverplichting | 50,00 | |
| 5001 Dienstenomzet | 950,00 |
Aan een klant wordt € 40 netto gerestitueerd. De restitutie wordt gedocumenteerd met een creditnota, die de btw en de vordering vermindert en de verplichting verbruikt in plaats van de omzet te verlagen.
| Rekening | Debet | Credit |
|---|---|---|
| 4450 Restitutieverplichting | 40,00 | |
| 4492 Te betalen omzetbelasting | 8,40 | |
| 2410 Handelsdebiteuren | 48,40 |
Het restitutievenster sluit. Slechts € 40 van de geschatte € 50 is gebruikt, dus de resterende € 10 wordt vrijgevallen naar de omzet.
| Rekening | Debet | Credit |
|---|---|---|
| 4450 Restitutieverplichting | 10,00 | |
| 5001 Dienstenomzet | 10,00 |
Voor een regel die tevens een openstaand verwerkingsschema kent, is de volgorde van verbruik: eerst de vooruitontvangen baten (het openstaande schema wordt vanaf het uiteinde ingekort), dan de restitutieverplichting en vervolgens de omzet.
Scenario 5: het contract wijzigt
Halverwege het jaarplan in Scenario 1 onderhandelt de klant over een verlenging van zes maanden zonder extra kosten. Er zijn inmiddels zes maanden verwerkt (€ 1.200 op basis van gelijke maandelijkse bedragen voor de leesbaarheid; het systeem weegt op dagbasis) en er resteert € 1.200 aan vooruitontvangen baten.
IFRS 15 §20 en §21 bieden twee behandelwijzen, afhankelijk van de vraag of de resterende diensten onderscheidbaar zijn van de reeds geleverde diensten.
Prospectief (§21(a)). De resterende goederen of diensten zijn onderscheidbaar, dus de niet-verantwoorde € 1.200 wordt verdeeld over de nieuwe resterende looptijd van twaalf maanden: € 100 per maand. Er wordt geen inhaalboeking geplaatst; de volgende vrijval is eenvoudigweg kleiner.
Cumulatieve inhaalmethode (§21(b)). De verplichting wordt behandeld als één enkele gedeeltelijk nagekomen verplichting, waardoor de omzet wordt hererekend alsof er vanaf het begin achttien maanden van toepassing waren: € 2.400 ÷ 18 = € 133,33 per maand, met € 800 verdiend per 30 juni. Aangezien er al € 1.200 is verwerkt, wordt € 400 teruggedraaid:
| Rekening | Debet | Credit |
|---|---|---|
| 5001 Dienstenomzet | 400,00 | |
| 4910 Vooruitontvangen baten | 400,00 |
De resterende € 1.600 wordt vervolgens vrijgegeven tegen € 133,33 per maand gedurende de nieuwe resterende looptijd.
Toegang tot het platform die dag voor dag wordt geleverd, is doorgaans een reeks onderscheidbare diensten, waardoor de prospectieve behandeling het meest voorkomt. Welke methode van toepassing is, is een boekhoudkundig oordeel; het grootboek moet in staat zijn om beide te kunnen boeken.
Prijswijzigingen. Een prijsverlaging is een creditnota op de originele factuur en volgt de hierboven beschreven verbruiksvolgorde. Een prijsstijging is een nieuwe factuur met een eigen verwerkingsschema, wat per definitie prospectief is.
Dezelfde boekingen via de API
Elke bovenstaande boeking wordt gegenereerd door de module voor omzetverwerking van Nordlet op basis van gewone factuurgegevens. De verwerkingsmethode reist mee op de factuurregel.
Scenario 1. Maak de factuur aan met een rato-gewijze regel en schrijf deze vervolgens uit. Het uitschrijven boekt de vordering, de btw en de vooruitontvangen baten, en genereert het schema van twaalf tranches.
POST /v1/sales/invoices/create
Authorization: Bearer <api key with sales:write>
Idempotency-Key: <your order id>
{
"partnerId": "<customer id>",
"lines": [
{
"description": "Platform subscription 2026",
"unitPriceExclVat": "2400.0000",
"vatRatePercent": "21.00",
"recognition": { "method": "ratable", "startDate": "2026-01-01", "endDate": "2026-12-31" }
}
]
}
POST /v1/sales/invoices/issue
{ "id": "<invoice id>" }
Scenario 2. Voeg standaloneSellingPrice toe aan elke regel van de factuur. De toewijzing wordt berekend bij het uitschrijven; de onboarding-regel gebruikt de standaard point_in_time-methode.
Scenario 3. Geef de regel de eigenschap "recognition": { "method": "milestone", "milestones": [ { "percent": 30, "description": "Design", "expectedDate": "2026-02-28" }, … ] }. Het uitschrijven van een opleveringsdocument via sales/acts/issue tegenover de factuur verwerkt de openstaande mijlpaaltranches op de datum van het document.
Scenario 4. Stel refundEstimatePercent in op de regel. Creditnota's verbruiken de verplichting in de beschreven volgorde; sales/refund-liability/true-up met een herziene estimatedTotal boekt de vrijval of de bijstorting. Een restitutie van een betalingsprovider die is gekoppeld aan de factuur, wordt geregistreerd op de verplichting en verzendt een refund_liability.actual-webhook, maar boekt niet direct tegen de verplichting zelf, omdat het verminderen van omzet en verschuldigde btw de creditnota vereist als het btw-document.
Scenario 5.
POST /v1/sales/recognition/modify
{ "invoiceLineId": "<line id>", "approach": "prospective", "newEndDate": "2027-06-30" }
Vervang prospective door cumulative_catch_up voor de tweede behandelwijze; de omzetboeking van € 400 wordt onmiddellijk teruggedraaid en het resterende bedrag wordt opnieuw verspreid.
Vrijvallen. Omzetverwerking boekt als één journaalpost per run. Dit wordt op drie manieren getriggerd zonder dat polling nodig is: het vergrendelen van een periode verwerkt eerst alles wat verschuldigd is tot het einde van de periode, het uitschrijven van een opleveringsdocument verwerkt mijlpaaltranches, en een timer die is ingesteld op de volgende vervaldatum boekt rato-gewijze tranches wanneer deze verschuldigd worden. sales/recognition/compute geeft een voorbeeld van wat een run zou boeken; sales/recognition/run voert de boeking uit; sales/recognition/summary rapporteert de tot op heden verantwoorde omzet, het resterende bedrag en de volgende vervaldatum per regel; sales/recognition-schedules/list toont elke tranche met bijbehorende status.
Wat de module niet doet
De gedocumenteerde beperkingen zijn net zo belangrijk als de functies bij het plannen van een periodeafsluiting:
- Schema's zijn vastgesteld in euro's tegen de wisselkoers op de factuurdatum. Vooruitontvangen saldi worden na de factuurdatum niet opnieuw gewaardeerd voor valutaschommelingen.
- Toewijzing vereist een afzonderlijke verkoopprijs op elke regel of op geen enkele regel. De restwaarde-benadering van §79(c) is niet geïmplementeerd.
- De restitutieverplichting wordt op factuurniveau gecorrigeerd voor btw bijgehouden. Het corresponderende actief voor het recht op terugname van geretourneerde goederen (§B25) wordt niet gemodelleerd.
- De cumulatieve inhaalmethode is uitsluitend van toepassing op rato-gewijze regels; herplanning van mijlpalen is prospectief.
- Significante financieringscomponenten (§60 tot en met §65), niet-geldelijke vergoedingen en aan de klant te betalen vergoedingen vallen buiten de scope.
- De actiefrekening voor contracten (2910) bestaat in het grootboekrekeningstchema en als boekingssleutel, maar het verantwoorden van omzet voorafgaand aan facturering vereist momenteel een handmatige journaalpost.
De software is volledig toegerust voor IFRS 15- en ASC 606-verwerking. Het kiezen van de methode voor elke verplichting, het schatten van afzonderlijke verkoopprijzen en restitutiepercentages, en het beoordelen of resterende diensten onderscheidbaar zijn, blijven beslissingen die de rapporterende entiteit zelf moet nemen.
FAQ
Wanneer wordt de omzet verantwoording voor een SaaS-abonnement onder IFRS 15?
Gedurende de serviceperiode, omdat toegang tot de software een prestatieverplichting is waaraan in de loop van de tijd wordt voldaan. Voor een twaalfmaandenplan dat vooraf wordt gefactureerd, verdient elke maand haar aandeel in de prijs. De factuurdatum bepaalt wanneer de vordering en de btw worden geboekt, en niet wanneer de omzet wordt gerealiseerd.
Wat is de journaalpost voor vooruitontvangen omzet?
Bij facturering: debet handelsdebiteuren voor het brutosombedrag, credit te betalen omzetbelasting en credit vooruitontvangen baten (contractverplichting) voor het nettobedrag. Elke periode: debet vooruitontvangen baten en credit dienstenomzet voor het verdiende bedrag. De vordering wordt afgelost wanneer de klant betaalt.
Volgt de btw het omzetchema?
Nee. Btw wordt verschuldigd wanneer de factuur wordt uitgeschreven of de vooruitbetaling wordt ontvangen, volgens de reguliere regels van de btw-richtlijn en de nationale wetgeving. Het schema voor vooruitontvangen baten en de btw-schuld bewegen zich onafhankelijk van elkaar, wat de reden is dat een voorschotfactuur een echt btw-document is en een proforma-factuur niet.
Hoe wordt een bundelkorting toegewezen onder IFRS 15?
In verhouding tot de afzonderlijke verkoopprijzen van de verplichtingen in de bundel (§81). Een korting van € 1.000 op een bundel van € 4.000 waarvan de onderdelen los € 3.000 en € 1.000 kosten, verlaagt elk onderdeel met 25%. De btw blijft op de factuurregels staan zoals vermeld.
Wat is het verschil tussen een prospectieve behandeling en de cumulatieve inhaalmethode?
De prospectieve behandeling verspreidt het niet-verantwoorde resterende bedrag over de nieuwe voorwaarden vanaf de wijzigingsdatum, zonder aanpassing van de omzet uit het verleden. De cumulatieve inhaalmethode hererekent de omzet alsof de nieuwe voorwaarden vanaf het begin golden en boekt het verschil onmiddellijk. Welke methode van toepassing is, hangt af van de vraag of de resterende diensten onderscheidbaar zijn van de reeds geleverde diensten.