Step 1 — Identify the contract: confirm the agreement has commercial substance, approved by both parties, and collection is probable
Step 2 — Identify performance obligations: determine whether promises in the contract are distinct (capable of being distinct and distinct within the context of the contract) and thus separate obligations
Step 3 — Determine the transaction price: include fixed consideration and estimate variable consideration (constrained to the amount not probable of significant reversal)
Step 4 — Allocate the transaction price: allocate to each performance obligation based on relative standalone selling prices (SSP); use observable prices or reasonable estimates if SSP is not directly observable
Step 5 — Recognize revenue: recognize revenue when (or as) each performance obligation is satisfied — either at a point in time (customer obtains control) or over time (criteria in ASC 606-10-25-27)
Document judgments for each step in accounting policy memos and disclosure workpapers, as ASC 606 requires both quantitative and qualitative disclosures
Known gotchas
The 'distinct' assessment for Step 2 is frequently the most complex and judgment-intensive; SaaS licenses, implementation services, and support bundled in one contract often require careful separation analysis
Variable consideration (discounts, rebates, usage fees, refunds) must be estimated and constrained; the constraint is a risk-of-reversal test, not a certainty test — over-constraining leads to delayed recognition
Modifications to contracts (price changes, scope changes) require assessment of whether to treat them as separate contracts or modifications to the existing contract, which changes the accounting significantly
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp