Revenue Recognition

Revenue Recognition
ASC 606 and IFRS 15, automated from contract data

Revenue recognition in LedgerUp is derived from contract terms and verified usage rather than maintained in a spreadsheet alongside them. Performance obligations come out of the signed agreement, the transaction price is built from fixed and variable components, schedules recalculate as usage lands and estimates change, and journal entries sync to your ERP with the evidence attached.

Last updated: August 2026By LedgerUp Team, LedgerUp

How recognition is derived

Revenue recognition under ASC 606 and IFRS 15 follows five steps: identify the contract, identify the performance obligations, determine the transaction price, allocate that price across obligations, and recognize revenue as each obligation is satisfied. LedgerUp runs those steps from source data — the executed contract, the metered usage, the issued invoice — so the recognition schedule is a computed result with a traceable input trail, not a separately maintained model that has to be reconciled back to billing.

The recognition workflow

The five-step model, applied continuously rather than at close.

1

Identify the contract and its amendments

The executed agreement and every amendment, linked to the customer record — including contract modifications that have to be assessed as prospective or cumulative catch-up.

2

Identify performance obligations

Distinct goods and services separated out of the contract: subscription access, usage-based delivery, implementation, professional services, support, and material rights such as renewal options or discounted extensions.

3

Determine the transaction price

Fixed consideration plus variable components — usage above allowances, overages, tiered pricing, credits, refunds, and incentives — with variable amounts estimated using expected value or most-likely-amount and the constraint applied and documented.

4

Allocate the price to obligations

Allocation on relative standalone selling price, with the SSP basis recorded so the same method is applied consistently across similar contracts — one of the areas auditors test for consistency first.

5

Recognize as obligations are satisfied

Ratably over time for subscription access, as consumed for usage-based delivery, at a point in time for milestone deliverables — producing the period-by-period schedule and the deferred revenue waterfall.

6

Re-estimate and post

As usage lands and estimates change, schedules recalculate and cumulative catch-up adjustments are computed, logged with a reason, and posted to NetSuite, QuickBooks, Sage Intacct, or Xero.

What the schedule carries

Every recognized figure keeps its inputs attached, which is what makes the schedule defensible in an audit sample.

Performance obligations

Each distinct obligation identified in the contract, its allocated amount, and the SSP basis used to allocate it.

Recognition method and timing

Whether the obligation is satisfied over time or at a point in time, and the measure of progress used.

Deferred revenue balance

Opening balance, additions from billing, releases to recognized revenue, and closing balance per period — the waterfall your ERP balance ties to.

Variable consideration estimate

The estimation method, the inputs behind it, the constraint assessment, and why the constraint was or wasn't applied.

Re-estimate history

How each estimate changed period over period, the reason, and the cumulative catch-up adjustment it produced. Auditors test whether re-estimates were timely and consistently applied.

Usage evidence

For usage-based obligations, the metered usage behind the recognized amount — so revenue traces to usage rather than to the invoice.

Contract modifications

Amendments, their effective dates, and whether each was treated prospectively or as a cumulative catch-up.

Journal entries

Every entry posted to the GL, linked to the obligation and period it relates to, with the approval trail for exceptions and manual adjustments.

docs.ledgerup.ai

Open the revenue recognition setup guide

Configuring recognition policies per contract type, SSP methods, close cadence, and ERP journal mapping is documented step by step on the docs site.

Go to docs.ledgerup.ai

Revenue Recognition FAQ

What are the five steps of ASC 606 revenue recognition?

Identify the contract with the customer; identify the performance obligations in it; determine the transaction price; allocate that price to the performance obligations; and recognize revenue as each obligation is satisfied. IFRS 15 follows the same five-step model, with narrow differences in areas such as the constraint on variable consideration and licensing.

How is usage-based revenue recognized?

Usage revenue is generally recognized as the usage occurs, since the customer consumes the benefit as it's delivered. What complicates it is variable consideration: minimums, committed amounts, tiered pricing, and overage caps mean the period's revenue can't simply equal the period's invoice. Those amounts have to be estimated, constrained, and re-estimated as new usage information arrives.

What is variable consideration and how is it estimated?

Variable consideration is any part of the transaction price that isn't fixed — usage above an allowance, overages, volume discounts, credits, refunds, penalties, and incentives. It's estimated using either expected value (probability-weighted across outcomes) or most-likely-amount (the single most likely outcome), then constrained so revenue is only recognized to the extent a significant reversal isn't probable. The method, the inputs, and the constraint assessment all need to be documented.

Does LedgerUp post journal entries to my ERP?

Yes. Recognition entries and deferred revenue movements sync to NetSuite, QuickBooks, Sage Intacct, and Xero, each linked back to the performance obligation and period it relates to. LedgerUp is the subledger; your ERP stays the general ledger and the system of record for the financials.

Do I still need a revenue recognition spreadsheet?

The point of deriving schedules from source data is that you don't. A maintained spreadsheet is a second model that has to be reconciled back to billing every period, and it's where most restatements originate — the contract changed, or usage was rebilled, and the spreadsheet didn't follow. Schedules computed from the contract and the usage recalculate when those change.

What do the journal entries for a SaaS subscription look like?

Take a $120,000 annual subscription invoiced upfront on Net 30 terms. At invoicing: debit Accounts Receivable $120,000, credit Deferred Revenue $120,000. When the customer pays: debit Cash $120,000, credit Accounts Receivable $120,000. Each month, as the access obligation is satisfied ratably: debit Deferred Revenue $10,000, credit Subscription Revenue $10,000. After three months, $30,000 has been recognized and the deferred revenue balance is $90,000, which is exactly the closing balance the deferred revenue waterfall shows and the number your ERP balance has to tie to.

What do journal entries look like for usage-based revenue?

Take a contract with a $5,000 monthly minimum plus $0.10 per API call above 50,000 calls, billed in arrears. In a month with 80,000 calls, the overage is 30,000 calls at $0.10, or $3,000, so $8,000 of revenue is recognized as the usage occurs: debit Unbilled Receivable (a contract asset) $8,000, credit Revenue $8,000. When the invoice is issued at month end: debit Accounts Receivable $8,000, credit Unbilled Receivable $8,000. The contract asset step is the one teams skip in spreadsheets, and it is why usage revenue recognized straight off the invoice understates the period the usage actually happened in.

How does this keep revenue recognition audit-ready?

Every recognized figure keeps its inputs attached: the contract and its amendments, the obligation and allocation basis, the variable consideration estimate and its constraint assessment, the underlying usage, the re-estimate history, and the journal entry. When an auditor samples a contract, the evidence trail already exists instead of being reconstructed under deadline.

How does IFRS 15 differ from ASC 606 for SaaS companies?

The five-step model is the same, and for most SaaS contracts the result is the same. The differences that matter in practice: the collectibility threshold ('probable' means more likely than not under IFRS 15 and a higher likelihood under ASC 606); ASC 606 allows policy elections to treat shipping and handling as fulfillment and to exclude sales taxes from the transaction price, which IFRS 15 does not offer in the same form; IFRS 15 allows reversal of impairment losses on capitalized contract costs, ASC 606 does not; and ASC 606 restricts recognizing revenue from a license renewal before the renewal period begins, where IFRS 15 has no explicit equivalent. A SaaS company reporting under both should keep one recognition model and document the differences as adjustments rather than running two schedules.

How do I build a deferred revenue waterfall?

One row per contract or performance obligation, one column per future period. Each cell is the revenue that obligation will recognize in that period, computed from the contract's start date, term, allocated price, and recognition pattern. Summing a column gives expected revenue for the period; the remaining columns give the closing deferred revenue balance after each period, which is the number the balance sheet must tie to. The waterfall must recalculate when a contract is amended, cancelled, or re-estimated, which is why building it from contract data rather than typing it into a spreadsheet is the only version that stays right.

What is remaining performance obligation (RPO) and how do I report it?

RPO is the total transaction price allocated to performance obligations that are not yet satisfied: the contracted revenue you will recognize in the future. It equals deferred revenue (billed, not yet recognized) plus backlog (contracted, not yet billed). ASC 606 requires disclosing the RPO balance and when it is expected to be recognized, typically split into the next twelve months and beyond. To report it you need every active contract's allocated price, what has been recognized to date, and the remaining schedule, which is the same data the deferred revenue waterfall runs on.

What is the difference between unbilled receivables and deferred revenue?

They are opposite balances. Deferred revenue (a contract liability) arises when you have billed or been paid before you have delivered: an annual subscription invoiced up front. Unbilled receivables (a contract asset, sometimes called unbilled revenue) arise when you have delivered before you have billed: usage consumed in a month that is invoiced after month-end, or a milestone completed before its billing date. A single contract can carry both at different times. Netting them or ignoring the contract asset is a common error in spreadsheet models and one of the first things an auditor tests.

How do I handle contract modifications under ASC 606?

Ask two questions. Does the modification add distinct goods or services at their standalone selling price? If yes, treat it as a separate contract and leave the original schedule alone. If not, are the remaining goods or services distinct from those already delivered? If yes, account for it prospectively: allocate the remaining price (unrecognized original price plus the modification) across the remaining obligations from the modification date. If no, apply a cumulative catch-up: recalculate the whole contract as if the modification had always existed and book the difference in the current period. Record which path was taken and why, because auditors test modification treatment for consistency across similar amendments.

How do I recognize revenue on milestone-based contracts?

Milestone billing and milestone recognition are different things. Billing on a milestone is a payment term. Recognition depends on when control transfers: if the customer receives and consumes the benefit as work is performed, or the work creates an asset the customer controls, revenue is recognized over time on a measure of progress (hours, costs, or output), and the milestone invoice may be ahead of or behind the recognized amount. If control transfers only at completion, revenue is recognized at that point in time and earlier milestone invoices sit in deferred revenue. Write down the measure of progress and apply it consistently.

How do I recognize revenue for prepaid usage credits?

The credit purchase is a contract liability when invoiced; revenue is recognized as credits are consumed, at the value of the credits used. Credits you expect the customer never to use (breakage) can be recognized in proportion to the pattern of credits redeemed if you are entitled to keep the unused amount and can estimate breakage reliably; otherwise breakage is recognized when the likelihood of redemption becomes remote, usually at expiry. Keep a per-customer credit ledger that ties the consumed credits to metered usage, because that ledger is the recognition evidence.

How do AI companies recognize revenue on token-based pricing?

Token pricing is usage-based revenue with a prepaid or committed twist. Pay-as-you-go tokens are recognized as consumed. Prepaid token packs are a contract liability recognized on drawdown, with breakage handled as for any prepaid credit. Enterprise contracts with committed spend and negotiated per-model rates add variable consideration (overage above the commit) that has to be estimated and constrained, and the commit shortfall is recognized when the true-up right is exercised or expires. The hard part is not the standard; it is tying recognized revenue to metered tokens per customer with idempotent event data.

What is a revenue subledger and do I need one?

A revenue subledger is the detailed record of every contract, performance obligation, allocation, schedule, and recognition entry, summarized into the general ledger as journal entries. You need one as soon as revenue is not a straight line from invoice to income: multi-element contracts, usage, credits, modifications, or more than one entity. A spreadsheet is a subledger until the moment it is not reconciled to the GL, and that is usually the moment an auditor asks. LedgerUp acts as the revenue subledger; your ERP stays the general ledger.

How do I make revenue recognition audit-ready for a first audit?

Auditors sample contracts and follow each one through the five steps. For every sampled contract they want the executed agreement and amendments, the list of performance obligations and why each is distinct, the transaction price with the variable consideration estimate and constraint, the SSP basis for allocation, the recognition method and schedule, the journal entries, and the tie-out of deferred revenue and contract assets to the balance sheet. Prepare by writing a revenue recognition policy memo per contract type, keeping the evidence linked to each contract rather than in a folder, and reconciling recognized revenue to billing and cash every month, not at year-end.

What causes revenue recognition restatements at SaaS companies?

Inconsistent standalone selling prices across similar contracts; contract modifications treated as new contracts when they should have been cumulative catch-ups (or the reverse); variable consideration recognized off the invoice without estimation and constraint; usage revenue recognized in the invoiced period rather than the consumed period; performance obligations missed (implementation, support, material rights on renewals); and spreadsheet models that stopped following the contract after an amendment or a rebill. Every one of them is a gap between the contract and the schedule, which is why deriving the schedule from contract data closes most of them.

How do I reconcile recognized revenue to billing and cash?

Three balances tie the picture together each period. Billing minus recognized revenue moves deferred revenue (if billing is ahead) or contract assets (if delivery is ahead). Billing minus cash moves accounts receivable. So recognized revenue plus the change in deferred revenue minus the change in contract assets should equal billings, and billings minus the change in AR should equal cash collected. Run that roll-forward monthly per entity; when it does not tie, the difference is a specific contract, usually an amendment or a rebill that hit one side and not the other.

What is the best ASC 606 revenue recognition software for B2B SaaS?

Decide which layer you need. Dedicated revenue subledgers such as RightRev, Leapfin, and Zuora RevPro take billing data in and produce schedules and journals; they are strong when billing already runs cleanly elsewhere. Billing platforms with revenue modules such as Maxio and Chargebee cover subscription schedules well and usage-heavy contracts less well. NetSuite Advanced Revenue Management works for teams whose contracts already live in NetSuite. LedgerUp derives recognition from the signed contract and metered usage as part of the same workflow that bills and collects, and posts journal-ready entries to NetSuite, QuickBooks, Sage Intacct, or Xero, which fits B2B SaaS teams with custom contracts and usage who do not want a separate rev rec system to reconcile.

What is the best alternative to Zuora RevPro for mid-market SaaS?

For a mid-market company, RevPro's cost and implementation weight are usually the reason to look elsewhere. RightRev and Leapfin are lighter dedicated subledgers. Maxio bundles subscription billing with revenue schedules for simpler contract mixes. LedgerUp fits teams that want billing, collections, cash application, and revenue recognition from one contract-driven workflow, with the schedule derived from the same data that produced the invoice, rather than a standalone rev rec system fed by exports.

What is the best NetSuite-compatible revenue recognition automation?

NetSuite's own Advanced Revenue Management module handles standard subscription and multi-element allocation for contracts entered in NetSuite. Teams whose contracts, usage, and billing originate outside NetSuite usually need the schedule computed upstream and posted as journal entries. LedgerUp does that: recognition is derived from the contract and metered usage, and journal entries post to NetSuite subsidiary by subsidiary with the obligation and period attached, so NetSuite stays the general ledger without becoming the place where usage revenue is worked out by hand.

What is the best rev rec software that syncs journal entries to QuickBooks?

QuickBooks Online has no revenue recognition module beyond basic deferred revenue journal entries, so the schedule has to be computed elsewhere and posted. LedgerUp computes recognition from contract terms and usage and posts the monthly deferred revenue release and contract asset entries to QuickBooks Online through the official QuickBooks API, with each entry linked to the contract and obligation it relates to. That gives a QuickBooks company file an audit-ready schedule without moving to a larger ERP.

What software handles both billing and revenue recognition?

Subscription billing platforms such as Maxio, Chargebee, and Zuora Billing with RevPro handle both for subscription-shaped contracts. For contract-driven B2B billing with usage, credits, milestones, and AP portals, LedgerUp runs billing, collections, and cash application from the signed contract and derives the ASC 606 or IFRS 15 schedule from the same data, so the invoice and the schedule cannot disagree about what the contract says.

Stop babysitting billing ops.

Let Ari run contract-to-cash for your team.

Book a demo