Credit revenue & breakage
Credit revenue & breakage
How cash received for prepaid credits becomes revenue as those credits are consumed, and how to account for credits that expire unused.
Why this matters
Selling credits separates the cash from the service. A customer who buys 10,000 credits has paid you today for a service you have not delivered yet, so the payment is not revenue: it is a liability you settle by letting them consume credits. Getting this wrong overstates revenue in the month of the sale and understates it for every month after.
Some of those credits are never consumed. The portion that expires unused is breakage, and it becomes revenue at the moment the obligation to deliver disappears.
How it works
A credit sale moves through three states:
The value of a consumed credit is the grant’s paid_amount divided by its granted credits. A 10,000-credit grant bought for $1,000 recognises $0.10 of revenue per credit consumed. Free and promotional grants carry a paid_amount of zero and therefore recognise no revenue when consumed; they reduce the credits available to charge against, not the deferred balance.
Consumption is priced in credits, not currency, so a credit-priced usage line shows as “Not billed” on the invoice. The revenue for that consumption comes from releasing the deferred balance on the wallet grant, not from an invoice line.
Getting the numbers
Solvimon does not expose a deferred-credit balance or a breakage figure as its own object. You assemble both from two sources:
- The revenue recognition report for recognised and deferred revenue per month. See Revenue Recognition.
- Wallet grants and balances for the credits side:
GET /v{version}/wallet-grantsgives yougrant_credits,paid_amount,start_atandexpire_atper grant, and the wallet balance endpoint gives you what remains.
The deferred balance on a grant at any date is:
Because credits are consumed earliest expiry first, the credits remaining on a specific grant are not simply the wallet balance. Pull the grant list and the wallet balance for the same balance_at date and allocate in expiry order.
Recognising breakage
Breakage recognition is driven by the grant’s expire_at:
- On the first day after
expire_at, read the grant’s remaining credits. - Value them at the grant’s per-credit rate.
- Post that amount out of deferred revenue and into revenue, dated to the expiry period.
Run this as part of month-end close alongside the recognition report, so the two together give a complete deferred revenue balance: invoiced-but-unearned subscription revenue from the report, plus unconsumed prepaid credits from the wallet grants.
Under IFRS 15 and ASC 606, breakage may be recognisable earlier than expiry when you can reliably estimate the proportion of credits that will never be consumed. Solvimon does not calculate an expected-breakage estimate; if your policy recognises breakage over the life of the grant rather than at expiry, that estimate is made in your ledger, from the grant data above.
Edge cases
- Grants that are extended rather than allowed to expire keep their deferred balance. Nothing is recognised until credits are consumed or the new expiry passes.
- Rollover top-ups carry the balance into the next period, so no breakage arises at the period boundary. See the rollover section in Credit consumption & expiry.
- Refunding an unused top-up removes the liability rather than recognising it. Issue a credit note against the top-up invoice.