Skip to main content New EU e-invoicing mandate from 2027 — Kontier issues XRechnung & ZUGFeRD natively
IFRS 15revenue recognitionrevenue deferraldeferred revenue

How to Automate IFRS 15 SaaS Billing: The Practical Guide

8 August 2026 7 min read Kontier Team

An invoice for €120,000 covering an annual subscription is not €120,000 of revenue on the invoice date. Exactly this difference is where IFRS 15 SaaS billing fails in many growing software companies. Billing creates the receivable, cash collection pulls in the money. Financial accounting, by contrast, needs a reliable, period-appropriate revenue trajectory – including an audit trail down to the individual contract event.

The problem intensifies as soon as pricing becomes usage-based, contracts change, or a customer combines several services. Anyone who merges invoices, Excel schedules, and manual bookings after the fact isn't building a scalable revenue architecture. They're building reconciliation effort.

What IFRS 15 concretely demands for SaaS

IFRS 15 governs when and in what amount revenue from contracts with customers is recognized. The standard follows a five-step model: identify the contract, determine performance obligations, determine the transaction price, allocate the price to the performance obligations, and recognize revenue when or as the obligation is satisfied.

For SaaS this sounds simple at first. A customer gets twelve months of platform access, so revenue is deferred monthly. That's often true, but not always. The correct trajectory depends on the contract's content, not on the billing period or payment date.

Typical cloud access is a time-based, continuously rendered service. Revenue is then recognized linearly over the contract term, provided the customer's benefit arises evenly. With API volume, transactions, or compute consumption, the obligation can instead be satisfied on a usage basis. The revenue logic must then mirror actual consumption.

The central rule: an invoice documents the payment claim. IFRS 15 documents the fulfillment of a contractual performance obligation. The two events can coincide, but they don't have to.

IFRS 15 SaaS billing starts with the contract model

The most important design decision comes before the first billing run: which commercial objects exist in the system, and how are they modeled in a way that works for the balance sheet? A product catalog with a price and a term isn't enough when a contract contains platform access, premium support, implementation, credits, and volume-dependent fees.

Don't confuse performance obligations with invoice line items

An invoice line item is a billing artifact. A performance obligation is an IFRS concept. The two can be congruent, but they don't have to be.

A SaaS base plan and premium support can be separate performance obligations if the customer can use both services independently and they are separately distinguishable in the contract context. If they're tightly integrated and only make sense as a combined service, a combined performance obligation may exist instead. This classification influences how the transaction price is split and revenue recognized.

Setup fees are especially critical. A one-time setup fee is not automatically revenue at project start. If the setup doesn't constitute a distinct service for the customer but merely prepares the SaaS service, the fee is usually deferred over the expected service period. That holds even when it appears on a separate invoice.

Product, finance, and legal must use the same contract language here. When sales sells "onboarding," engineering runs a configuration job, and finance expects a separate revenue item, the conflict is already built into the data model.

Determine the transaction price cleanly with usage and discounts

Usage-based billing creates variable consideration: fees per API call, per processed record, per active user, or revenue-dependent platform commissions. IFRS 15 requires including variable consideration in the transaction price only to the extent that a significant revenue reversal is highly unlikely.

In practice, the contract mechanics matter. When consumption is measured and billed monthly in arrears, revenue can often be recognized directly from verified usage data. With revenue-dependent fees, goodwill credits, refunds, or uncertain minimum commitments, clear rules for estimation, constraint, and later reassessment are needed instead.

Discounts belong in this logic too. A contract discount on a bundle must not be distributed arbitrarily across the most visible invoice lines. It is generally allocated to the identified performance obligations, unless a specific assignment can be justified on substance. That's an accounting topic with immediate requirements for the pricing and billing engine.

Contract events must trigger revenue schedules

A resilient system doesn't treat a contract as a static record. It processes events with clear effects on receivables, cash, tax documents, and revenue deferral: contract start, activation, upgrade, downgrade, add-on, quantity change, discount, cancellation, renewal, refund, and write-off.

With every change, an IFRS 15 question arises: is it a separate contract, a prospective adjustment, or a cumulative catch-up adjustment? An add-on at a standalone selling price can be a separate contract. A mid-term upgrade that changes existing and remaining services can instead require a modification of the existing contract. The answer depends on the price and distinguishability of the additional service.

This can't be solved reliably with a blanket proration rule. Proration calculates an invoice amount. The revenue engine must additionally decide which open and future revenue periods are adjusted. Both calculations need the same event context but serve different purposes.

For finance this means: every revenue booking needs a traceable origin. An auditor should be able to trace from the general ledger balance through the revenue schedule, contract version, obligation definition, and price allocation back to the source of the usage event. Without this chain, month-end closings become slow and contract changes turn into manual special cases.

Data architecture decides the close

SaaS companies should run billing, metering, and revenue recognition as connected infrastructure. The core model needs at least: a versioned contract, contract line items, performance obligations, standalone selling prices, terms, billing schedules, usage events, and an immutable event history.

Usage events need more than timestamp and quantity. Relevant are at least customer, product or meter, measurement period, unit, idempotency key, source, and correction reference. When events arrive late or are corrected, it must remain traceable whether only the next invoice changes or also already booked revenue.

The period logic must be explicit too. A contract can start on the 17th of a month, be invoiced annually in advance, and bill consumption-based components monthly in arrears. The revenue engine produces separate schedules for time-based and usage-based obligations from this. It must not try to hide these differences inside an invoice line.

Kontorion connects these contract and usage events with subscription billing, metering, invoicing, and accounting-adjacent revenue schedules. What matters isn't an additional export at month-end but a consistent event lifecycle from product access to the auditable revenue booking.

Tax, payment, and revenue are separate control layers

In EU business especially, there's a frequent attempt to solve all questions in one invoice logic. That leads to errors. VAT determines invoice requirements and tax reporting. Payment status steers dunning, retries, and default risk. IFRS 15 steers revenue recognition. These layers must be connected but not mixed.

A reverse-charge case, an OSS-liable B2C sale, or an XRechnung requirement changes document and tax logic. It doesn't automatically answer when revenue arises. Conversely, a correct revenue schedule is no substitute for a fiscally correct invoice. Systems therefore need separate rule sets with shared references to customer, contract, and service period.

The same holds for payment failures. A failed SEPA direct debit doesn't automatically trigger a revenue reversal. Only the contractual and economic assessment decides whether a receivable is impaired, a contract terminated, or a revenue correction triggered. Billing status alone is not a sufficient booking basis for that.

An operational flow for a resilient implementation

The fastest path is not laying IFRS 15 retroactively over historical invoices. The starting point is the recurring contract patterns. Finance should first identify the ten to twenty most frequent combinations of product, price, term, usage, and contract change. In many SaaS models, these cases cover the bulk of revenue.

Then, for each pattern, performance obligations, allocation rules, revenue method, and modification treatment are defined. Only after that comes the technical mapping: product catalog, contract versioning, metering schema, event handling, revenue schedules, and journal export. Edge cases deliberately remain as a review queue. Full automation without a clear exception process just moves errors into the close faster.

Before go-live, teams should test three reconciliations in particular:

  1. Invoice against contract
  2. Revenue schedule against contract events
  3. Subledger against general ledger

An additional test set with backdating, partial cancellation, retroactive credit, late usage events, and contract renewal shows early whether the architecture holds under real conditions.

Conclusion

The next sensible step is not another spreadsheet for deferred revenue. It's a binding contract and event model that lets product, billing, and finance see the same economic facts. That's when IFRS 15 turns from a monthly reconciliation exercise into a controlled system process.

Book a demo

Book a technical demo. 15 minutes with an engineer on your specific pricing model and tax setup. No hard sell.

Prefer email? Reach us at contact@frontieralgorithmics.com