August 2, 2026
The Five-Step Revenue Model & Sales Orders in Business Central - Part 1 of 5
- IFRS 15
- Business Central
By Shailesh Apte, Chartered Accountant and Business Central Solution Architect
How IFRS 15's core framework maps to Dynamics 365 Business Central, using Meridian Tech Solutions, a software and hardware reseller, to show multiple performance obligations, SSP allocation, and revenue timing in practice.
“Revenue is the single largest line in most income statements, and IFRS 15 is the most comprehensive revenue standard ever written. Getting it right in Business Central starts with understanding what the standard actually requires.” |
IFRS 15 Revenue from Contracts with Customers introduced a single, principles-based five-step model for recognising revenue across all industries and contract types.
This series applies IFRS 15 to Dynamics 365 Business Central across five posts. One contract, TechCo Ltd's £150,000 deal with RetailCo (the case walked through at the D365PPUG UK user group), runs through all five as a common thread. Each post then adds a second, deeper example in a different business context. This first part builds the foundation on Meridian Tech Solutions, a reseller whose software-plus-hardware bundle makes every step of the model concrete.
THE RUNNING CASE Company: TechCo Ltd (from the D365PPUG stage) Customer: RetailCo UK Ltd Contract value: £150,000 Framework: IFRS 15 and UK FRS 102 Section 23
This example is the thread followed across all five parts. In this part, the detailed five-step walkthrough is carried by Meridian Tech Solutions below, whose bundle includes hardware and makes each step concrete. |
DEEPER EXAMPLE Company: Meridian Tech Solutions Customer: Albright Manufacturing Ltd Contract value: £185,000 Framework: IFRS 15 and UK FRS 102 Section 23
* Discount is spread proportionally across all three POs (IFRS 15 paragraphs 76–80), so hardware ends up recognised at more than its quoted price. |
The Five-Step Model
IFRS 15 requires revenue to be recognised by applying five sequential steps to every contract with a customer. No step can be skipped. Here is each step and what it means:
1. Identify the contract with the customer
A contract exists when it has commercial substance, both parties have approved it, rights and payment terms are identifiable, and collection is probable. A contract modification (scope or price change) is accounted for separately or as part of the original contract, depending on whether it adds a distinct good or service.
→ Meridian: the signed order form and statement of work together form the contract.
2. Identify the performance obligations
A performance obligation is a promise to transfer a distinct good or service. A good or service is distinct if the customer can benefit from it on its own or with other readily available resources, and it is separately identifiable from other promises in the contract. If bundled items are not distinct, they are combined into a single performance obligation.
→ Meridian's contract has three distinct POs: software licence, implementation, hardware.
3. Determine the transaction price
The transaction price is the amount of consideration the entity expects to receive. It includes fixed amounts and estimates of variable consideration (discounts, rebates, returns, performance bonuses), but excludes amounts collected on behalf of third parties (for example, VAT). Variable consideration is included only to the extent it is highly probable that a significant revenue reversal will not occur.
→ Meridian's contract price is a fixed £185,000.
4. Allocate the transaction price to performance obligations
The transaction price is allocated to each performance obligation in proportion to its standalone selling price (SSP), the price at which the entity would sell the good or service separately. Where observable SSPs are not available, estimation methods are used: adjusted market assessment, expected cost plus margin, or the residual approach (only where SSP is highly variable or uncertain).
→ SSPs: software £95k, implementation £55k, hardware £45k (total £195k).
5. Recognise revenue when (or as) a performance obligation is satisfied
Revenue is recognised when control of the promised good or service transfers to the customer, either at a point in time (most goods) or over time (services where the customer simultaneously receives and consumes the benefit, or where the entity's performance creates an asset controlled by the customer). Over-time recognition requires a reasonable measure of progress.
→ Hardware and licence: point in time. Implementation: over time, on a percentage-of-completion basis.
A NOTE ON FRS 102 SECTION 23 Both case studies in this series are tagged IFRS 15 and UK FRS 102 Section 23 because most mid-market Business Central customers will meet one or the other, and the posting mechanics in BC do not change between them. The frameworks are not identical, though, and the gaps matter more as the series goes on:
None of this changes the Business Central configuration shown above. Where it matters is the judgement behind the numbers that go into it, which is why this note sits here rather than being folded into the worked example. |
Setting It Up in Business Central: Three Surfaces, One Contract
Business Central has no cross-module SSP-allocation engine, and no single document holds all three obligations. Only the goods belong on a Sales Order (the perpetual licence and the hardware), and they bill at their quoted prices. The implementation service is a Project (Job). The SSP allocation touches none of these documents: it is a recognition-only calculation, posted by journal. What ties the three together is the CONTRACT dimension, not a shared header.
Configure related documents:
1. Sales Order
Sales Order in Business Central, billing the licence and hardware at quoted prices.
Watch out: the allocated amount never goes on the order The Sales Order bills what the customer agreed: £100,000 for the licence, £30,000 for the hardware. Do not overwrite the unit price with the allocated figure (£90,132 / £42,680); that would invoice the customer for something they never signed. Allocation is a recognition exercise, not a billing one: the billing lines stay at the quoted prices, and the SSP delta posts by journal to a Balance Sheet contract-control account. |
2. Project
Project (Job) in Business Central, tracking the implementation service against the same contract.
The implementation service does not belong on a Sales Order at all. It is set up as a Project (Job) against the same contract, with planning lines and WIP Method = Percentage of Completion. It bills by milestone and recognises revenue over time as hours are posted. (The mechanics of this are the subject of Post 4. Had the contract also carried a support element, that would be a third surface again: a Subscription contract, billed and released monthly, covered in Post 3.)
3. Where the allocation actually lives
The SSP allocation is worked out once, in a revenue-allocation worksheet (or an ISV that stores an IFRS 15 recognition schedule per obligation), never as a field on the Sales Order or the Project. Each module keeps billing at its quoted price; the difference between billed and allocated posts to a Balance Sheet contract-control account by journal, tagged with the CONTRACT dimension.
Business Central is the execution engine; the allocation is the practitioner's overlay. There is no native “Multiple PO Allocation” method or IFRS 15 template that does this for you.
Step-by-Step Posting in Business Central
1. Deposit on signing
On contract signing, Meridian is eligible for 50% of payment, i.e. £92,500 (50% × £185,000). Under IFRS 15, this creates a contract liability: Meridian has received (or is entitled to receive) payment before transferring the goods or services. It is not revenue yet.
Using the standard prepayment invoice for the goods portion (50% of the £130,000 quoted for licence and hardware combined) against the Sales Order creates the following accounting entry:
Account Type | Account Name | Debit (£) | Credit (£) |
|---|---|---|---|
Customer | Albright Manufacturing Ltd | 65,000 | |
General Ledger | Contract Liability | 65,000 |
Configuring the correct accounts and generating a sales invoice (50% of the £55,000 implementation price) from the Project module creates the following accounting entry:
Account Type | Account Name | Debit (£) | Credit (£) |
|---|---|---|---|
Customer | Albright Manufacturing Ltd | 27,500 | |
General Ledger | Contract Liability | 27,500 |
2. Delivery of hardware and licence
When the hardware and licence are delivered, posting the Sales Invoice from the Sales Order creates the following accounting entries:
Account Type | Account Name | Debit (£) | Credit (£) |
|---|---|---|---|
General Ledger | Contract Liability | 65,000 | |
Customer | Albright Manufacturing Ltd | 65,000 | |
General Ledger | Revenue – Hardware Sales | 30,000 | |
General Ledger | Revenue – Software Licences | 100,000 |
Since there is no native SSP engine in Business Central, an extension needs to be developed; otherwise the following journal needs to be posted manually:
Account Type | Account Name | Debit (£) | Credit (£) |
|---|---|---|---|
General Ledger | Revenue Allocation Clearing Account | 12,680 | |
General Ledger | Revenue – Hardware Sales (42,680 – 30,000) | 12,680 | |
General Ledger | Revenue – Software Licences (100,000 – 90,132) | 9,868 | |
General Ledger | Revenue Allocation Clearing Account | 9,868 |
3. Implementation services: revenue over time (% completion)
Implementation services of £52,188 are recognised over time using the input method: hours worked as a proportion of total estimated hours (220). As consultants post time to the job in Business Central, revenue is released incrementally as the related WIP is posted.
Account Type | Account Name | Debit (£) | Credit (£) |
|---|---|---|---|
General Ledger | Job Cost (40% of £40,000 estimated total cost) | 16,000 | |
General Ledger | Job Cost Applied | 16,000 | |
General Ledger | Contract Liability (40% of £55,000) | 22,000 | |
General Ledger | Revenue – Implementation Services | 22,000 |
* The balance of the implementation fee (50%) is invoiced per the milestone schedule agreed with the customer, posted as a sales invoice from the Project: Dr Customer / Cr Contract Liability £27,500.
Additionally, a proportionate journal for release of the Revenue Allocation Clearing balance must be posted:
Account Type | Account Name | Debit (£) | Credit (£) |
|---|---|---|---|
General Ledger | Revenue – Implementation Services (55,000 – 52,188 = 2,812; 2,812 × 40%) | 1,125 | |
General Ledger | Revenue Allocation Clearing Account | 1,125 |
Contract Asset vs Contract Liability
A contract asset arises when Meridian has performed but does not yet have an unconditional right to payment. A contract liability arises when cash (or an unconditional right to it) arrives before the related good or service transfers. Both must be shown separately on the balance sheet.
UP NEXT – POST 2 Service Contracts, Variable Consideration & Customer Prepayments Vantage Facilities Management signs a 3-year cleaning and maintenance contract with a performance bonus clause. We work through variable consideration estimation, the constraint principle, customer prepayments creating contract liabilities, and how BC Service Contracts reconcile billing schedules that don't align with revenue recognition. |
THIS SERIES Part 1 The Five-Step Revenue Model & Sales Orders in Business Central (this post) Part 2 Service Contracts, Variable Consideration & Customer Prepayments Part 3 Subscription Billing & Recognising Revenue Pro Rata Over Time Part 4 Projects, WIP & Percentage-of-Completion Mechanics Part 5 coming soon |
📝 This post reflects the author's professional views and is for informational purposes only. It does not constitute legal, financial, or accounting advice. |