CadelAll Articles
Revenue Recognition

Performance Obligations: When Bundles Become Numbers

Performance obligations are the unit of accounting under ASC 606. Get the count wrong and every downstream number is wrong too.

Cadel Team5 min read
CONTRACT #4819MODIFIEDBEFORE$420kAFTER$680kObligationsASC 606 MODIFIED

Step 2 of the ASC 606 model is the one most senior accountants underweight. The transaction price gets all the attention. The performance obligation count quietly determines how that price gets sliced, when each slice recognizes, and how a modification gets treated. A retainer engagement with quarterly compliance work and a year-end deliverable can be one PO, two POs, or four POs depending on how each promise behaves. Same contract, same dollar value, three different income statement profiles.

The two-step test that defines a performance obligation

Test 1
Capable of being distinct
Can the customer benefit from the good or service on its own, or together with other readily available resources? If yes, the promise has standalone utility. If no, it cannot be separated from the broader bundle.
Test 2
Distinct in the context of the contract
Is the promise separately identifiable from other promises in the contract, or is it an input to a combined output? If yes, the promise is its own PO. If no, the promises bundle into a single PO.

Both tests must be yes for a promise to be a separate PO. The classic example: a software license that requires significant integration with the customer's environment. The license is capable of being distinct in isolation; in the context of the contract, it's an input to a combined output (a working integrated system). Result: one PO, not two.

One contract, four performance obligations

Consider a 12-month professional services engagement worth $200K, scoped as: retainer advisory hours, quarterly compliance filings, year-end audit-prep workpapers, and an unused-hour carryover provision. Decompose it and you find four POs with four different recognition patterns:

Annual engagement, $200K, decomposed into the unit of accounting

01
Retainer hours
A series of substantially-similar services delivered over 12 months. Recognized ratably over the engagement period under the series exception.
Fix:
02
Compliance filings
Quarterly deliverables, each with its own completion event. Recognized as each filing is delivered.
Fix:
03
Year-end workpapers
Single deliverable at engagement end. Recognized at the point in time of delivery.
Fix:
04
Carryover hours
Contract liability for unused hours that don't expire. Recognized as the customer consumes the carried-over hours.
Fix:

Each PO has its own recognition pattern. Quarterly filings land four discrete times. Year-end workpapers land once. Retainer hours amortize ratably. Carryover hours sit as a contract liability until consumed. One engagement, four recognition curves, four ways for the close to break if the PO count is wrong.

The series exception

ASC 606 has a single-PO carve-out for series of distinct goods or services. When the promises are substantially the same and have the same pattern of transfer to the customer, the standard treats them as a single PO under the series guidance. The 12 months of a SaaS subscription are not 12 POs; they're one PO delivered over 12 months. The series exception is what makes subscription revenue tractable.

See it in motion

Cadel decomposing a retainer engagement with carryover hours

Cadel · Retainer carryover demo

Where the PO analysis breaks

The PO count is set at contract inception and never revisited. New goods or services added mid-contract through a modification can create new POs or modify existing ones. If the modification flows only to the GL JE and not back to the PO inventory, every subsequent allocation runs against a stale count.

Free or bundled add-ons get ignored. A free month, a complimentary onboarding session, or a referral bonus are still performance obligations if they're distinct. They must be allocated transaction price even though no incremental cash is collected for them.

Material rights are missed. A discount on a future renewal, a free product on a future order, or a tiered loyalty benefit are POs under ASC 606. Sales teams rarely flag them because they don't feel like deliverables, but they pull allocation from the present contract.

Implementation services are misclassified. A standalone implementation is a PO. An implementation that's required to make the subscription work and can't be sold separately is part of the subscription PO. Many teams default to "always separate" and end up with an allocation that audit pushes back on.

What good looks like

A clean PO analysis runs at contract intake, not at close. Every promise in the body of the contract is surfaced, including material rights and free goods. The PO count drives the rev rec schedule, the allocation, and the audit trail. Modifications re-trigger the PO analysis automatically rather than being routed to a senior accountant for review three months later.

The downstream effects of this analysis show up in the revenue reconciliation rollforward: when the PO count is wrong, the rollforward stops regenerating from source.

See how Cadel handles end-to-end revenue recognition under ASC 606, or get in touch to walk through your PO analysis on a real contract.

#revenue-recognition#ASC-606#performance-obligations#explainer

See it live

See Cadel automate your revenue close

20 minutes. Bring your ASC 606 schedule. We'll show you where Cadel eliminates manual SSP allocations, modification entries, and variance chasing.

Book a Demo
Performance Obligations: When Bundles Become Numbers | Cadel Blog