Revenue Recognition Stepper
This skill walks a single customer contract through the IFRS 15 five-step model and produces a documented set of judgements plus a technical accounting memo skeleton. It is built for financial accountants, controllers, and auditors who need a disciplined, standard-grounded analysis of how and when revenue should be recognised - especially for contracts with bundled goods and services, variable pricing, or long delivery periods. The methodology aligns with IFRS 15 Revenue from Contracts with Customers; the same logic maps to ASC 606 (the FASB equivalent), which is substantially converged.
When to use this
- A new or modified customer contract needs a revenue accounting conclusion.
- A contract bundles multiple deliverables (e.g. licence + implementation + support) and you must split it into performance obligations.
- Pricing includes discounts, rebates, refunds, penalties, bonuses, or usage-based fees (variable consideration).
- You need to decide whether revenue is recognised over time or at a point in time.
- Year-end or interim audit support: documenting management's revenue judgements in a workpaper or memo.
- Preparing for an auditor's challenge on cut-off, allocation, or the constraint on variable consideration.
Inputs
Provide the contract facts. Either paste the contract terms or supply a structured file:
samples/sample-contract-terms.md - a narrative template of the key terms (parties, deliverables, prices, payment schedule, variable elements, termination clauses, transfer/acceptance conditions). Use this as the input shape.
- Optionally a price list or standalone-selling-price (SSP) reference for each deliverable.
- The reporting entity's functional currency and reporting period, and whether IFRS 15 or ASC 606 applies.
If any fact needed for a step is missing, list it explicitly as an open question rather than assuming - revenue conclusions are sensitive to the precise wording of transfer-of-control and termination clauses.
How to do it
Apply the five steps in order. Do not allocate price (Step 4) before obligations are identified (Step 2); do not conclude timing (Step 5) until obligations are defined.
Step 1 - Identify the contract (IFRS 15.9-16)
Confirm all five criteria are met, otherwise no revenue is recognised under the standard model:
- The contract is approved and the parties are committed to perform.
- Each party's rights regarding the goods/services are identifiable.
- Payment terms are identifiable.
- The contract has commercial substance.
- It is probable the entity will collect the consideration it is entitled to (assess the customer's ability and intention to pay - a collectability gate, not a Step 3 measurement issue).
Also flag: contract combination (IFRS 15.17 - contracts negotiated as a package, with linked consideration, or with goods forming a single obligation) and contract modifications (IFRS 15.18-21 - separate contract vs. prospective vs. cumulative catch-up).
Step 2 - Identify the performance obligations (IFRS 15.22-30)
For each promised good or service, test whether it is distinct. A promise is a separate performance obligation only if BOTH:
- Capable of being distinct - the customer can benefit from it on its own or with readily available resources; AND
- Distinct within the context of the contract - it is separately identifiable, i.e. the entity is not providing a significant integration service, the item does not significantly modify/customise another, and items are not highly interdependent/interrelated.
If a promise fails either test, combine it with other promises until a distinct bundle is formed. Document the conclusion per promise in a table. Watch for: material rights / loyalty points (IFRS 15.B40), warranties (assurance-type = not a PO and provision under IAS 37; service-type = a PO), principal vs. agent (IFRS 15.B34 - who controls the good/service before transfer), and non-refundable upfront fees.
Step 3 - Determine the transaction price (IFRS 15.46-72)
Start from the fixed consideration, then adjust for:
- Variable consideration (IFRS 15.50-54): estimate using either the expected value (probability-weighted - better when many possible outcomes) or the most likely amount (a single most-probable outcome - better for binary outcomes). Apply consistently per type of variability.
- The constraint (IFRS 15.56-58): include variable consideration only to the extent it is highly probable that a significant reversal will not occur when the uncertainty resolves. Constrain for: high susceptibility to factors outside the entity's control, long time to resolution, limited experience, broad range of outcomes, history of price concessions.
- Significant financing component (IFRS 15.60-65): if the timing of payments gives the customer or entity a significant financing benefit, adjust to the cash selling price using a discount rate that reflects the customer's credit standing. Practical expedient: ignore if the period between payment and transfer is one year or less.
- Non-cash consideration (IFRS 15.66): measure at fair value.
- Consideration payable to a customer (IFRS 15.70): treat as a reduction of transaction price unless it is payment for a distinct good/service.
Step 4 - Allocate the transaction price (IFRS 15.73-86)
Allocate the price to each performance obligation in proportion to its standalone selling price (SSP). Hierarchy for SSP:
- Observable price when the item is sold separately.
- If not observable, estimate using adjusted market assessment, expected cost plus a margin, or - only when SSP is highly variable or uncertain - the residual approach (total price less the sum of observable SSPs of other items).
Apply discounts proportionately unless evidence shows a discount relates to specific obligations (IFRS 15.81). Allocate variable consideration entirely to one obligation only if the allocation objective is met (IFRS 15.84-85).
Step 5 - Recognise revenue (IFRS 15.31-45)
Determine, per performance obligation, whether control transfers over time or at a point in time. Recognise over time if ANY of the three criteria is met (IFRS 15.35):
- The customer simultaneously receives and consumes the benefits as the entity performs (e.g. routine services); OR
- The entity's performance creates or enhances an asset the customer controls as it is created; OR
- The entity's performance does not create an asset with alternative use AND the entity has an enforceable right to payment for performance completed to date (including a reasonable margin).
If none is met, recognise at a point in time when control transfers - indicators (IFRS 15.38): present right to payment, legal title, physical possession, significant risks and rewards of ownership, customer acceptance.
For over-time obligations, select a measure of progress (IFRS 15.39-45): an output method (units delivered, milestones, surveys of performance) or an input method (costs incurred, labour hours). Be consistent and do not recognise revenue for inefficiencies or uninstalled materials passed through at cost.
Output
Produce a Markdown technical accounting memo with these sections, plus a supporting CSV revenue schedule if amounts are known:
Memo skeleton:
- Purpose and scope - the contract, the question, the standard applied (IFRS 15 / ASC 606), reporting period.
- Background and key facts - the relevant contract terms, with paragraph/clause references.
- Five-step analysis - one labelled subsection per step, each stating the conclusion, the standard reference, and the supporting judgement.
- Performance obligations table - columns: PO ref | Description | Capable of being distinct (Y/N + why) | Distinct in context (Y/N + why) | Conclusion | Timing (over time / point in time) | Measure of progress.
- Transaction price and allocation table - columns: PO ref | SSP | SSP basis | Allocated price | Variable component | Constrained amount | Recognition pattern.
- Significant judgements and estimates - variable consideration method, the constraint conclusion, SSP estimation, over-time vs. point-in-time rationale.
- Open questions / information requested - facts needed before finalising.
- Conclusion - the recognised amount and pattern per obligation, with effective date.
CSV schedule (if amounts known): period, po_ref, basis_of_measure, percent_complete, cumulative_revenue, period_revenue, deferred_revenue, contract_asset_or_liability.
Quality checks
- The five steps are addressed in order and each conclusion cites a specific IFRS 15 paragraph.
- Allocated prices across all obligations sum exactly to the total transaction price (reconcile to the penny).
- Variable consideration is measured AND separately tested against the constraint - do not skip the constraint.
- Each over-time conclusion names which of the three IFRS 15.35 criteria is met; each point-in-time conclusion names the control indicators relied on.
- Collectability (Step 1, criterion 5) and the financing-component test are not silently ignored.
- Common errors avoided: treating an assurance warranty as a performance obligation; using the residual method when an observable SSP exists; recognising revenue on uninstalled materials in an input method; netting a refund liability against revenue without recording it; confusing a contract asset (conditional right) with a receivable (unconditional right).
- A contract liability (deferred revenue) is recognised where the customer has paid or payment is due before the entity performs.
Worked example
Using samples/sample-contract-terms.md (Aurora Components Ltd sells a 3-year software licence with implementation and annual support to Northwind Trading BV for a fixed CU 900,000 plus a CU 60,000 bonus if go-live is within 90 days):
- Step 1: Contract approved, terms identifiable, commercial substance present, collection probable - criteria met.
- Step 2: Three candidate promises - licence, implementation, support. Implementation does not significantly customise the licence and is available from other vendors, so all three are distinct: three performance obligations.
- Step 3: Fixed CU 900,000 plus variable CU 60,000 bonus (binary outcome - use most likely amount). Given limited prior delivery history, the bonus is constrained to nil until go-live is achieved; transaction price = CU 900,000.
- Step 4: Allocate on observable SSPs (licence 500k, implementation 250k, support 150k = 900k) - here SSPs sum to the price, so no discount reallocation needed.
- Step 5: Licence (right-to-use) - point in time at access date; implementation - over time using an input (cost) method; support - over time, evenly across the 3-year term (customer consumes as delivered). When go-live occurs within 90 days, release the constraint and recognise the CU 60,000 bonus, allocated per the objective.
The memo records each conclusion, the constraint judgement on the bonus, and an open question on whether implementation includes any acceptance clause that defers control.
Disclaimer
Disclaimer: This skill is a drafting and analysis aid, not professional advice. It does not provide accounting, audit, tax, investment, or legal advice. All output must be reviewed and approved by a qualified professional before use or reliance.
Part of LedgerSkills - security-vetted Claude Code skills for finance teams. New skills scanned and tested weekly; subscribe on the site.