Loyalty and rewards: a deferred-revenue liability hiding in plain sight
Every point you give a user is debt. Real debt. With an interest expense.
By Solomon Ajayi · Free to read, no signup
Your card grants 2 points per ₦100 spent. 1 point = ₦1 redeemable for fee waivers or merchant credits. User spends ₦10,000, earns 200 points. From the user's perspective: free reward. From your books: you just took on ₦200 of contingent liability that will be recognized as expense when the points are redeemed (or breakage revenue when they expire). IFRS 15 (revenue from contracts) requires you to split each card transaction into two performance obligations: the payment service AND the rewards promise. Each gets its own revenue treatment. Get this wrong and your revenue is overstated by the points you've not yet recognized.
A loyalty point feels like marketing, a freebie you hand out to keep users sticky. On the books it is debt. Every point you grant is a promise to give the user something of value later, and IFRS 15 treats that promise as a performance obligation you have not yet fulfilled. So when you award 200 points, you have not just made a user happy, you have taken on ₦200 of liability.
That is why each card swipe splits into two obligations: the payment service you deliver now and the rewards promise you defer. The reward portion of your fee gets parked in a Loyalty Points Liability rather than recognized as revenue immediately. You only recognize it later, against the foregone-service event when the user redeems, or as breakage revenue when the points expire unused. Recognizing the whole fee up front overstates today's revenue by the value of points you still owe.
Breakage is where the real money surfaces. A large slice of points, often a quarter to a third, never gets redeemed, and once they are stale you release that liability into income as breakage revenue. That can be one of the bigger recognition events of your year, so you estimate the breakage rate from your own redemption data and revisit it annually rather than guessing. Redemption clears the liability against the service you forgo; breakage clears it into revenue.
Worked example, step by step
User spends ₦10,000, earns 200 points
Standard card swipe + reward accrual. Your MDR revenue from this swipe is say ₦200. Of that, ₦200 is SPLIT under IFRS 15: some belongs to the payment service (recognized now) and some belongs to the rewards (deferred until used or expired). To keep this simple, treat the full ₦200 reward value as deferred, so your immediate revenue is reduced.
| Account | Debit | Credit |
|---|---|---|
| Bank Account (1200) | ₦200.00 | |
| Loyalty Points Liability (deferred) (2500) | ₦200.00 |
Bank Account UP ₦200 (the MDR you collected, debit). Merchant Fee Revenue UP ₦0 (recognized later as breakage or against redemption). Loyalty Points Liability UP ₦200 (credit, you owe the user). In practice the split is more nuanced; for an MVP loyalty program, deferring 100% of the reward face value is the conservative call.
User redeems 200 points for fee waiver
Three months later, user redeems 200 points to waive a ₦200 service fee. From accounting, the liability you've been carrying clears, the foregone-fee event hits expense.
| Account | Debit | Credit |
|---|---|---|
| Loyalty Points Liability (deferred) (2500) | ₦200.00 | |
| Loyalty Redemption Expense (5700) | ₦200.00 |
Loyalty Points Liability DOWN ₦200 (debit, you no longer owe them). Loyalty Redemption Expense UP ₦200 (debit), wait, the liability already accounts for the cost. If you debit both the liability AND book an expense, you'd double-count. Re-think: the redemption EXTINGUISHES the liability AND doesn't generate new cash. Single entry: Liability debit ₦200, Loyalty Redemption Expense credit ₦200. But wait, that's the wrong sign on the expense, recognising expense INCREASES it (debit-natural). Reframe: when redeemed, the deferred revenue you were holding is recognised as foregone service fee. Either book it as a contra-revenue (revenue down) or as an expense (cost up). The cleanest IFRS 15 treatment: recognise the deferred revenue NOW (ahead of the related service event), with the offset being the elimination of the liability.
12 months pass, 30% of points expire (breakage)
Across your whole user base, points have built up over the year. Stats: 30% of issued points never get redeemed (industry norm is 15-40% breakage). Say total liability ₦100,000 of which ₦30,000 is now stale and unlikely to be redeemed.
| Account | Debit | Credit |
|---|---|---|
| Loyalty Points Liability (deferred) (2500) | ₦30,000.00 | |
| Loyalty Breakage Revenue (4420) | ₦30,000.00 |
Loyalty Points Liability DOWN ₦30,000 (debit, you don't owe them anymore). Loyalty Breakage Revenue UP ₦30,000 (income, credit). Recognise the unredeemed portion as revenue. This is one of the larger income recognition events for card programs; budget for it in your annual close.
Takeaway
Loyalty points are real liabilities under IFRS 15. Defer the reward portion of every card swipe into a Loyalty Points Liability; recognise the corresponding revenue ONLY when points are redeemed (against the foregone-service event) or expire (as breakage revenue). Most fintech card programs that 'forgot' to do this discover the issue at audit and book a one-time catch-up that wipes out a quarter of profits. Calibrate your breakage rate from actual redemption data and revisit it every year.
Practice this on a real ledger
Reading is half of it. Open this lesson in the lab to post the entries yourself against a real Postgres-backed double-entry ledger, with the validation on. Free, your sandbox is yours.