
Unbilled revenue in SaaS is revenue you have recognized for work already delivered but have not yet invoiced. Under US GAAP it lands in one of two places: a receivable if the right to payment is unconditional, or a contract asset if something other than time still stands in the way.
You can make that call contract by contract, post the right journal entry, and know when the balance should move to accounts receivable. This article gives you the test, three worked entries, a rollforward control and a classification worksheet you can use as printed below.
The unbilled revenue SaaS contract assets question looks like a labeling issue. It is a classification issue, and it changes what your balance sheet says about risk.
Key takeaways
- The dividing line is the right to consideration: if only the passage of time is required before payment is due, it is a receivable; if anything else is required, it is a contract asset.
- "Unbilled" describes invoice status. It does not decide classification. Unbilled amounts can sit in either bucket.
- Billing milestones and contract wording decide when a balance moves, not the invoice date alone.
- A contract-level rollforward that ties to the general ledger is the control that catches misclassification.
- This is a ledger and contract reporting topic. It is separate from collections, which starts after the right to bill is unconditional.
The test is whether only time stands between you and payment
ASC 606 separates two kinds of right to payment. ASC 606-10-45 defines a receivable as a right to consideration that is unconditional, meaning only the passage of time is required before payment is due.
A contract asset is the right to consideration for goods or services already transferred when that right depends on something else, such as future performance. The same paragraph requires you to present unconditional rights separately as a receivable.
The label "unbilled revenue" is not an ASC term. Deloitte's roadmap notes that "unbilled receivables" is a common practice label for contract assets, and ASC 606 allows alternative descriptions as long as readers can tell receivables and contract assets apart.
So the label does not settle anything. The condition on payment does.
| Term | What it means | Balance sheet position | What moves it |
|---|---|---|---|
| Unbilled receivable | Revenue earned, right to payment depends only on time, invoice not yet issued | Receivable | Invoice issued, then cash collected |
| Contract asset | Revenue earned, right to payment depends on something other than time | Contract asset | Condition met, then reclassified to receivable |
| Accounts receivable | Unconditional right to payment, typically invoiced | Receivable | Cash collected or credit loss |
| Contract liability (deferred revenue) | Customer paid or payment is due before you perform | Contract liability | Revenue recognized as you deliver |
Source basis: ASC 606-10-45-1 to 45-5 and PwC's presentation guide. Verify against the current codification before you write policy.
Why the distinction matters: a receivable carries credit risk only. A contract asset carries performance risk as well as credit risk, per Deloitte's receivables guidance. Your board and your auditor read those two lines differently.
How to classify a balance in four questions
Run every contract with a gap between revenue and invoicing through the same four questions. Treat the answers as the audit trail.
- Has control transferred? If the service has not been delivered, there is no revenue and no unbilled balance. Stop here.
- What does the contract say must happen before you can invoice? List every condition: time, a milestone, customer acceptance, delivery of another performance obligation.
- Is the only remaining condition the passage of time? If yes, the balance is a receivable even though no invoice exists. If no, it is a contract asset.
- Is the same contract also carrying deferred revenue? Contract assets and contract liabilities are netted per contract, while receivables stay separate. PwC's summary of the FASB implementation Q&A and Deloitte's unit of account discussion both frame the contract as the unit for that netting.
Journal entries for the three situations you will actually book
The figures below are illustrative. They show mechanics, not benchmarks.
Entry 1: revenue ahead of invoice, time is the only condition
A customer signs a 12-month subscription for $120,000. You invoice quarterly in arrears. Each month you deliver $10,000 of service.
| Event | Debit | Credit | Amount |
|---|---|---|---|
| Month 1 revenue recognized | Unbilled receivable | Subscription revenue | $10,000 |
| Quarter-end invoice issued | Accounts receivable | Unbilled receivable | $30,000 |
| Cash collected | Cash | Accounts receivable | $30,000 |
Nothing but time separates you from the invoice, so the balance is a receivable from the day you deliver. The invoice only changes its status.
Entry 2: revenue ahead of a conditional right, contract asset
A customer signs a $36,000 contract: a $6,000 implementation and a $30,000 annual subscription. Assume both are distinct performance obligations and the implementation fee is payable only if the platform passes go-live acceptance testing. You complete the implementation in month 1.
| Event | Debit | Credit | Amount |
|---|---|---|---|
| Implementation delivered, acceptance pending | Contract asset | Implementation revenue | $6,000 |
| Acceptance signed, right becomes unconditional | Accounts receivable | Contract asset | $6,000 |
The acceptance condition is not the passage of time, so the first entry sits in contract assets. The second entry is a reclassification, not new revenue. A contract asset is also assessed for credit losses under Subtopic 326-20, per ASC 606-10-45-3.
Whether a given acceptance clause is a formality or a condition that delays revenue itself is a technical accounting judgment. Document it in your policy rather than deciding it at close.
Entry 3: the mirror image, contract liability
You invoice an annual $24,000 prepayment in January and collect it the same month.
| Event | Debit | Credit | Amount |
|---|---|---|---|
| Invoice issued and cash received | Cash | Contract liability (deferred revenue) | $24,000 |
| Each month of service | Contract liability | Subscription revenue | $2,000 |
Per ASC 606-10-45-2, you present a contract liability when payment is made or due, whichever is earlier. For the full recognition mechanics, see Fiscallion's guide to deferred revenue in SaaS.
Billing milestones decide when a balance moves
Contracts with milestone, acceptance or usage-true-up billing generate most of your contract assets.
"The invoice schedule in your billing system is not the test. The contract wording is."
— Aleksandar Stojanovic, CEO & Founder at FiscallionPwC's presentation guide states that the point at which a contract asset becomes a receivable may be earlier than the point at which an invoice is issued. A balance can become a receivable on day 30 and still sit uninvoiced until day 45.
Two traps follow:
- A refund right does not defeat a receivable. ASC 606-10-45-4 says a receivable can exist even when the amount may be subject to refund in the future.
- Practice varies for over-time performance. Deloitte records that FASB staff observed diversity in how and when receivables are recorded when performance occurs over time. Your policy has to state your approach and apply it consistently.
Write the trigger for each billing milestone into a register: contract, milestone, condition, owner, expected date. That register is what lets finance reclassify on the day the right becomes unconditional.
How public SaaS filers present the two balances
Disclosures show how the same distinction looks in practice. They do not set your policy.
| Company | Unbilled treatment disclosed | Period |
|---|---|---|
| Freshworks | Unbilled receivables of $9.8 million, up from $6.3 million, presented within accounts receivable, net | As of December 31, 2025 and 2024 |
| Progress Software | Unbilled receivables where the right depends only on time; contract assets where it depends on something else, such as completing a related performance obligation; no net contract assets | As of November 30, 2025 and 2024 |
Freshworks describes its unbilled receivables as revenue recognized in excess of billings from non-cancellable multi-year arrangements. Progress draws the same line this article draws and reports no net contract assets in the periods shown.
For a practitioner's view of how unbilled receivables and RPO sit inside a working revenue recognition model, see the walkthrough below.
The pattern is useful for a $5-100M ARR company: multi-year, annually billed deals usually create the unbilled receivable. True contract assets tend to come from milestones, acceptance clauses and bundled obligations.
What the balances mean for cash, runway and the board
"Unbilled revenue is recognized revenue, not cash."
— Aleksandar Stojanovic, CEO & Founder at FiscallionA growing balance means revenue recognized ahead of an unconditional right to collect, or ahead of the invoice, and your cash forecast has to wait for both.
Use the classification to answer three founder questions:
- Cash timing. Unbilled receivables convert on a billing calendar you control. Contract assets convert only when a condition is met, so they belong in the forecast with an owner and a date.
- Revenue quality. A rising contract asset balance with no matching conversion to receivables signals delivery or acceptance friction, not a billing delay.
- Board reporting. Show billings, recognized revenue and the change in contract assets and deferred revenue together. See the revenue recognition guide for how that bridge fits the wider reporting set.
Keep this separate from collections. Collections work starts once an invoice is due. This article is about whether the balance should be a receivable at all.
Rollforward controls that catch misclassification
A contract-level rollforward for each balance is the control. It should tie to the general ledger every month and be reviewed by someone who did not prepare it.
| Rollforward line | Unbilled receivable | Contract asset |
|---|---|---|
| Opening balance | $40,000 | $12,000 |
| Add: revenue recognized, not yet invoiced or billable | $90,000 | $6,000 |
| Less: invoiced or reclassified to accounts receivable | ($85,000) | ($10,000) |
| Less: credit loss | $0 | ($500) |
| Closing balance | $45,000 | $7,500 |
The numbers are illustrative. The structure is what matters.
Build these checks into the monthly close:
- Every contract with a balance carries a condition tag: time only, milestone, acceptance, or other performance.
- Reclassifications from contract asset to receivable reference the event that satisfied the condition.
- The closing balance ties to the ledger, and any contract showing both a contract asset and deferred revenue is netted.
- Aged balances in either bucket get a review note. A contract asset that never converts needs an explanation.
- Credit loss assessment covers contract assets as well as receivables.
Your written policy should live alongside these controls. Fiscallion's SaaS revenue recognition policy template covers the structure.
Common mistakes and the replacement moves
| Mistake | Why it hurts | Replacement move |
|---|---|---|
| Calling every uninvoiced balance a contract asset | Understates the strength of a receivable that only needs time | Test the condition, not the invoice status |
| Calling every uninvoiced balance a receivable | Hides performance risk on milestone and acceptance deals | Tag each contract with its payment condition |
| Waiting for the invoice to reclassify | Delays the receivable and distorts ageing | Reclassify when the right becomes unconditional |
| Presenting a contract asset and deferred revenue for the same contract | Breaks the contract-level netting | Net by contract, keep receivables separate |
| Ignoring credit loss on contract assets | Skips a required assessment | Include contract assets in the allowance review |
| Treating billing-system status as the policy | The system reflects the invoice schedule, not the contract terms | Write the conditions into a billing milestone register |
Contract asset classification worksheet
Use this worksheet for each contract with a revenue and billing gap. Copy it into your close checklist. It is printed in full here and needs no sign-up.
| # | Question | If yes | If no |
|---|---|---|---|
| 1 | Has control of the good or service transferred to the customer? | Go to 2 | No revenue and no unbilled balance yet |
| 2 | Is revenue recognized greater than amounts invoiced? | Go to 3 | Check for contract liability instead |
| 3 | Does the contract require anything other than time before payment is due? | Contract asset | Go to 4 |
| 4 | Is the right to payment unconditional, even if not yet invoiced? | Unbilled receivable (presented as a receivable) | Re-read conditions; likely a contract asset |
| 5 | Is there a refund or price-adjustment clause? | Assess variable consideration; the receivable may still stand | No further step |
| 6 | Does the same contract carry deferred revenue? | Net contract assets and liabilities for the contract | Present as is |
| 7 | Has the credit loss assessment covered this balance? | Document it | Complete it before close |
| 8 | Which event will reclassify the balance, and who owns it? | Record in the milestone register | Add owner and expected date |
Complete the worksheet at contract inception for the billing terms, then update it at each close for balances that changed.
If you want the accrual-basis revenue schedules behind this worksheet reviewed by a senior finance lead, see how Fiscallion approaches accrual accounting for B2B SaaS. Fiscallion is not a bookkeeping firm. It works above the ledger, turning reliable accounting data into forecasts, reporting cadence and board decisions, with FP&A leadership experience gained through the growth of a SaaS company to €100M ARR. Every client works directly with Aleksandar Stojanovic at the CFO layer, with senior-partner ownership on every engagement and no account-manager handoff.
Frequently asked questions
Is unbilled revenue a contract asset or accounts receivable?
It can be either. The test is whether the right to payment is unconditional. If only the passage of time is required before payment is due, it is a receivable, even if you have not issued the invoice. If payment also depends on something else, such as acceptance or performance of another obligation, it is a contract asset. ASC 606-10-45-1 requires unconditional rights to be presented separately as receivables.
What is the difference between a contract asset and accrued revenue in SaaS?
"Accrued revenue" is a practice label, not an ASC 606 term. The codification uses contract asset and receivable. If your team says accrued revenue, check the condition on payment: time only means a receivable, anything more means a contract asset. ASC 606-10-45-5 allows alternative descriptions if readers can still distinguish receivables from contract assets.
How do you record unbilled revenue journal entries for SaaS contracts?
For a time-only condition, debit unbilled receivable and credit revenue as you deliver. When you invoice, debit accounts receivable and credit unbilled receivable. For a conditional right, debit contract asset and credit revenue, then debit accounts receivable and credit contract asset when the condition is met. The worked entries above show both with amounts.
When does unbilled revenue convert to accounts receivable on a SaaS contract?
It becomes a receivable when the right to payment becomes unconditional, meaning only time is required before payment is due. That can be earlier than the invoice date. PwC's guide says so directly. Reclassify when the milestone or acceptance condition is satisfied, and record the event in your register.
Decide the condition first, then the entry
Classification is a contract-reading exercise before it is an accounting entry. Name the condition on payment, post the entry that matches it, and let the rollforward prove the balance every month.
Start with the contracts that carry milestones, acceptance clauses or bundled obligations. Those hold your contract assets, and they are where a clear policy pays back first.








