Revenue Recognition Under IFRS for SMEs: How to Apply Steps 4 and 5 to Real Contracts

This article will count 0.25 units (15 minutes) of unverifiable CPD. Remember to log these units under your membership profile.


The previous article covered the first three steps of the new five-step revenue model: identifying the contract, identifying what was promised, and determining the price. If you missed it, go back and read that article first. Steps 4 and 5 build on that foundation and you need both halves to apply the model correctly.

This article is where the model gets practical. Step 4 tells you how to split the price when your client made more than one promise in a single contract. Step 5 tells you when to actually put the revenue in the income statement. And the second half of this article works through how those two steps play out in the contract types your clients deal with most often.

Step 4: How to Split the Price Across Multiple Promises

In the previous article you identified each distinct promise in the contract as a separate performance obligation. Now you need to allocate the transaction price across each of those obligations.

The rule is straightforward: allocate in proportion to the standalone selling price of each obligation. The standalone selling price is what your client would charge for that good or service if they sold it on its own, separately from everything else in the bundle.

A practical example. A software company sells a licence for R80,000 and includes twelve months of technical support. Sold separately, the licence would cost R80,000 and the support would cost R20,000. The total standalone value is R100,000. The bundle price is R90,000. Allocate R90,000 in the ratio 80:20. The licence gets R72,000 (80% of R90,000) and the support gets R18,000 (20% of R90,000). Recognise each portion when that obligation is satisfied.

What if your client does not sell the items separately and there is no obvious standalone price? Use your best estimate. The standard allows three approaches: look at what competitors charge for the same item on its own; estimate the cost of fulfilling that obligation and add a margin; or, as a last resort, allocate the total price to the observable obligations and assign what is left over to the remaining one.

How to apply Step 4:

For contracts with one performance obligation, skip this step entirely. The whole transaction price belongs to that one obligation. For contracts with two or more obligations, list each one, identify the standalone selling price of each, add them up, and allocate the transaction price proportionally. Do this calculation once at the start of the contract and do not redo it when prices change later. Changes in the transaction price after the contract starts are allocated using the same standalone prices you used at inception.

Step 5: When Does the Revenue Actually Get Recognised?

This is the step that changes the most for many SME clients. Revenue is recognised when, or as, your client satisfies a performance obligation. That means when control of the good or service transfers to the customer.

Control transfers in one of two ways: over time, or at a single point in time.

Revenue recognised over time applies when any one of three conditions is met. First, the customer receives and uses the benefit as your client performs, for example a monthly payroll service or a cleaning contract. Second, your client creates or improves an asset that the customer controls as it is being built, for example a building being constructed on the customer's own land. Third, your client creates something with no alternative use to anyone else and has an enforceable right to be paid for the work done to date, for example a custom-built piece of specialist machinery that cannot be sold to another buyer.

Revenue recognised at a point in time applies to everything else. The revenue goes in when control passes to the customer. The clearest indicators that control has passed are: the customer has legal title, the customer has physical possession, the customer has accepted the asset, and your client has an unconditional right to be paid.

When revenue is recognised over time, you need a method to measure how much progress has been made. The most common approach for SME clients is the cost-to-cost method: divide costs incurred to date by total expected costs, and apply that percentage to the total contract revenue. Simple, auditable, and widely accepted.

How to apply Step 5:

For each performance obligation, ask one question: does control transfer continuously as your client performs, or does it transfer at a defined moment? If continuously, recognise revenue over time using a progress measurement method. If at a moment, recognise revenue when the indicators of control transfer are all met. The most common mistake is recognising at a point in time when one of the three over-time conditions actually applies. Check each condition carefully, especially the third one, which catches many construction and manufacturing contracts that practitioners incorrectly account for at a point in time.

How the Model Applies to Construction Contracts

Construction is one of the most common areas where the new model changes things.

Most construction contracts satisfy the third over-time condition: the contractor builds something the customer ordered that cannot be redirected to another buyer, and the contract gives the contractor an enforceable right to payment for work completed. Revenue is recognised over time using the cost-to-cost method.

A straightforward example. Your client has a R10 million contract to build a warehouse. By year-end, they have incurred R3.5 million in costs out of a total estimated cost of R8.75 million. Progress is 40% (R3.5m divided by R8.75m). Revenue recognised to date is R4 million (40% of R10m). If they had already recognised R2.5 million in the prior year, the current year revenue entry is R1.5 million.

Contract modifications are common in construction. If the client adds scope and the new work is distinct and priced at its standalone value, treat it as a new contract. If the new work is not distinct or is not priced at standalone value, modify the existing contract and recognise the cumulative effect as an adjustment in the current period.

How to apply it to construction:

At each reporting date, calculate your cost-to-cost percentage, apply it to the contract price, subtract what you have already recognised, and recognise the difference. Keep your estimate of total contract costs up to date. If total expected costs exceed the contract price, you have an onerous contract and need to recognise the full expected loss immediately under Section 21.

How the Model Applies to Service Contracts and Retainers

Monthly service agreements, annual retainers, and ongoing support contracts almost always satisfy the first over-time condition: the customer receives and uses the benefit as the service is delivered. A monthly bookkeeping retainer, an annual audit engagement, or a 24-month software support contract all qualify.

For a fixed monthly fee with consistent services delivered evenly over the period, recognise revenue evenly over time. For contracts where the effort or value delivered varies significantly month by month, use a method that reflects the actual pattern of transfer.

How to apply it to service contracts:

If the service is delivered evenly over the contract term, divide the transaction price by the number of months and recognise that amount each month. If the pattern of delivery is uneven, document your progress measurement method and apply it consistently. Payments received in advance, like an upfront annual retainer, are a contract liability until the service is delivered. Do not recognise them as revenue on receipt.

How the Model Applies to Software Licences

This one turns on a single question: does the customer have a right to access the software as it exists and evolves over time, or a right to use the software as it existed at the moment of purchase?

  • Right to access (the licence keeps updating): recognise revenue over time. A SaaS subscription where your client continuously updates and maintains the platform is the clearest example. The customer is paying for ongoing access and the value changes as the platform changes.

  • Right to use (a fixed snapshot): recognise at a point in time. A perpetual licence to a specific version of software, where the customer gets a copy and your client has no further obligation, transfers at a point in time. Revenue goes in when the customer can use the licence.

How to apply it to software licences:

Ask whether your client has any ongoing obligation to maintain, update, or keep the software functional after handing it over. If yes, it is likely a right to access and revenue is recognised over time. If no, and the licence is a one-time sale of a defined version, it is a right to use and revenue goes in at a point in time. Annual maintenance agreements sold separately are their own performance obligation and are recognised evenly over the maintenance period.

How the Model Applies to Warranties

Not all warranties are the same, and the accounting treatment depends on what kind you are dealing with.

  • Assurance warranties guarantee that the product works as promised for a defined period. They are not a separate performance obligation. Account for the expected cost of honouring them as a provision under Section 21.

  • Service warranties go beyond the basic promise. They provide additional coverage, cover damage not caused by defects, or extend protection beyond the standard period. These are separate performance obligations. Allocate part of the transaction price to the warranty and recognise that portion over the warranty period.

The simplest test: could the customer have bought the warranty separately? If the answer is yes, it is a service warranty and a separate performance obligation. If it is always bundled with the product and customers cannot choose to exclude it, it is likely an assurance warranty.

How the Model Applies to Property Sales

This is the one that surprises practitioners most, and it is common enough in South Africa to deserve attention.

A property developer selling residential units needs to ask one question: when does the buyer get control?

If ownership transfers only when the buyer takes occupation and the title deed is transferred, revenue is recognised at that point in time. All the cash collected during construction, deposits, progress payments, and stage payments, sit as contract liabilities until occupation.

If the contract gives the buyer enforceable rights over the unit as it is being built, for example because they have ownership of the land, or the contract clearly stipulates that the partially completed unit belongs to the buyer, the third over-time condition may be met and revenue is recognised over the construction period.

Get the answer wrong here and you get the revenue profile completely wrong. A developer who recognises everything at completion looks like they make no money for three years and then have a massive year. A developer who recognises over time shows a smooth, consistent profit over the construction period. Both can be correct, but only one will be right for any specific contract.

How to apply it to property sales:

Read the contract carefully. Does control transfer continuously as construction progresses, or does it transfer at a single moment at completion? The answer is in the terms, not in your client's preference. If the contract is ambiguous, apply the default: point in time at completion, with all prepayments as contract liabilities until then.

The five-step model is now complete. The next step is applying it to every contract your clients who has financial periods beginning on or after 1 January 2027.



Choose Your Path to Exclusive Insights

Stay ahead in the world of accounting with premium content designed for professionals like you. Access expert articles, industry trends, and essential resources. Become a CIBA member and claim your CPD hours from CIBA.

CIBA Member Access

R250.00 FREE!

100% Discount when you become a CIBA Member. Join now to claim your CPD Hours. Register here: https://accounts.myciba.org/register


✓ Step 1: Register as CIBA Member
✓ Step 2: Sign up to access premium resources
✓ Step 3: Apply your CIBA discount code for 100% off

Premium

R250.00
Every month


 

Trending


Latest Podcast



Next
Next

School Financial Statements: What Gets SGBs Into Trouble