
AASB 15 is Australia's adoption of IFRS 15, and it is functionally equivalent to ASC 606 in the United States. If you sell software subscriptions, it governs when you are allowed to call cash revenue — and for most SaaS businesses, the answer is "not when you invoiced".
This is a working explanation for finance teams, not a technical accounting paper. Your auditor is the authority on your specific contracts.
AASB 15 uses a single framework for all revenue contracts.
Step 1: Identify the contract. An agreement with enforceable rights and obligations, where collection is probable. For SaaS this is usually the order form plus the master agreement — read together, not separately.
Step 2: Identify the performance obligations. What have you actually promised? A distinct promise is one the customer can benefit from on its own. A software subscription is typically one performance obligation delivered over time. Implementation, training, premium support and professional services may be separate ones — or may not, depending on whether the customer could obtain them elsewhere.
Step 3: Determine the transaction price. The consideration you expect to be entitled to. Variable consideration — usage overages, volume rebates, service credits — has to be estimated and constrained so that a significant reversal is not probable.
Step 4: Allocate the price to the performance obligations. Based on standalone selling price. If you discount a bundle, the discount is generally allocated proportionally across obligations rather than assigned to whichever one is convenient.
Step 5: Recognise revenue as obligations are satisfied. Over time for a subscription; at a point in time for something delivered once.
Implementation fees. A common instinct is to recognise a setup fee immediately because the work is done. Often that is wrong. If the implementation is not distinct — if the customer cannot benefit from it without the subscription, and nobody else could provide it — it is not a separate performance obligation, and the fee is generally recognised across the subscription term.
Multi-year deals with uplifts. A three-year contract at increasing annual prices is not necessarily three annual revenue figures. If it is a single performance obligation delivered evenly, the total transaction price may be recognised rateably across the whole term — which produces a different revenue number from the invoice in years one and three.
Usage-based components. Variable consideration is estimated and constrained, unless it qualifies for the variable consideration allocation exception. This is genuinely difficult and worth getting advice on.
Free periods and pilots. A "free" first month inside a twelve-month contract is usually a discount on the whole arrangement, not a month of zero revenue.
Contract costs. Sales commissions directly attributable to obtaining a contract are generally capitalised and amortised over the expected benefit period, which may be longer than the initial term if renewals are likely.
Every one of those situations is manageable in Excel for a handful of contracts. The difficulty is that they compound.
A single customer might have an initial contract, a mid-term seat expansion, a usage overage in month seven, a renewal at a different rate, and a partial credit for an outage. Each event changes the schedule. In a spreadsheet, each event is a manual adjustment somebody has to remember to make, in two places, correctly.
Across four hundred customers, that is not a process. It is an accumulating liability, and it typically surfaces during your first serious audit.
This is the specific problem revenue recognition automation solves: the schedule is derived from the contract record, so when the contract changes, the schedule changes with it — with the working retained for the auditor.
Three questions worth asking this month:
We configure Campfire's revenue engine against real contract populations for ANZ finance teams — which in practice means reading the contracts, agreeing the performance obligation treatment with your auditor, and building the configuration to match rather than forcing contracts into a template.
If your revenue schedule currently lives in a spreadsheet and you are heading towards an audit or a raise, that is a good conversation to have early. You can also read how we approach implementation.