Quick Answer
Apply all five ASC 606 steps to the customer contract, then assess control of each specified good or service for gross-versus-fee presentation. Keep transaction price, allocation, and satisfaction evidence separate from processor cash settlement. Document mixed judgments and assign an accounting approver before finalizing the affected entry.
Key Takeaways
- Map each contract with a customer to a specific performance-obligation trigger before you finalize revenue entries.
- Run principal vs agent as a documented judgment per selling scenario, and escalate mixed indicators to legal and a CPA.
- Separate cash evidence from recognition evidence so processor settlement timing does not drive Topic 606 outcomes by default.
- Require completeness, cutoff, classification, and exception sign-off checkpoints before month-end close posting.
- Archive one repeatable evidence pack per close cycle so another reviewer can trace contract terms to journal results.
How ASC 606 Applies to Merchant of Record Platforms#
If you run a Merchant of Record flow, cash movement is not your revenue policy. Under ASC 606, the hard part is that customer payment, processor settlement, and the point when revenue is actually earned can sit on different dates and in different records.
Topic 606 separates customer-contract economics from cash movement. Identify the customer, promised goods or services, transaction price, allocation, and satisfaction evidence. The MoR label does not resolve those decisions.
For a Merchant of Record, legal responsibility matters, but it does not answer the accounting question on its own. The red flag is simple: if your contract language, order-to-cash cycle, and settlement data tell different stories, do not force them into one policy just because the operational flow feels familiar. That is especially true when processor data only tells the cash side of the story. In Adyen-based setups, for example, the processor may hold the records needed for the cash portion of the order-to-cash cycle, but you still need separate evidence for recognition timing and journal support.
This guide is for compliance, legal, finance, and risk owners who need a control-first way to handle the ASC 606 revenue recognition problem in a Merchant of Record platform. The goal is not to turn it into a giant accounting project before the basics are stable. It is to help you reach a repeatable close position using records you already own or can reasonably produce.
Before you start#
Before the later steps are useful, make sure you have three things:
- Access to the contract with the customer terms that actually govern the sale
- A clear view of your payment and settlement records across the order-to-cash cycle
- Named owners in finance, legal, and risk for policy calls and exceptions
Start with one recent transaction and ask three questions: what document defines the promise, what event proves that promise was satisfied, and what record supports the cash movement? If those answers come from different places, that is normal. If nobody can connect them, stop and fix that before month end.
The rest of the guide follows a practical sequence: map contracts and performance obligations, set principal versus agent and transaction price rules, build close controls and an evidence pack, then assign ownership and escalation rules. The outcome should be a working structure, not just theory. You want decision steps, approval boundaries, escalation triggers, and a copy-paste month-end checklist tied to operating records that auditors can trace.
What changes under ASC 606 when you are the Merchant of Record#
Under ASC 606, the main change for a Merchant of Record is not the five-step model itself. It is the need to document control, performance obligations, and revenue presentation choices for each arrangement with traceable records.
Evaluate each arrangement on its own facts. Reseller and platform arrangements can produce different accounting outcomes based on specific facts and circumstances, especially when third parties are involved. Identify the specified distinct good or service being transferred, then tie it to the governing contract and your order-to-cash records.
Assess control for each specified promise. Record what the customer receives and whether the platform controls it before transfer. The FASB principal-versus-agent amendment explains the control assessment and gross-versus-fee presentation; the current Codification governs the accounting policy.
Use IFRS 15 alignment for consistency, not as a shortcut. Alignment can help across jurisdictions, but you still need a GAAP-ready Topic 606 rationale and support. If terms change through contract modifications, reassess rather than carrying forward the prior conclusion.
If you want a deeper dive, read ASC 606 for Merchant-of-Record Platforms: Principal vs Agent Revenue Recognition.
What to prepare before month one close#
Before month one close, make your ASC 606 judgments traceable from contract to entry without manual reconstruction.
| Step | Action | Details |
|---|---|---|
| Step 1 | Assemble a minimum evidence set | Keep one compact evidence pack for each contract type or selling motion you expect in month one; include the contract with the customer, a payment flow map, clear performance-obligation definitions, and the rule used to determine transaction price |
| Step 2 | Define system-of-record boundaries | Name authoritative records and corroborating exports for each close question; document scope, cutoff, and reconciliations |
| Step 3 | Create a control log for Topic 606 judgments | Record the owner, approval date, review cadence, related contract template or market, where the conclusion is documented, and the supporting evidence used for that conclusion |
| Step 4 | Pre-agree escalation paths | Name finance, legal, and risk/compliance approvers; define triggers such as new contract language, new markets, pricing-rule changes, or repeated close exceptions |
Step 1: Assemble a minimum evidence set. Keep one compact evidence pack for each contract type or selling motion you expect in month one. Include the contract with the customer, a payment flow map, clear performance-obligation definitions, and the rule used to determine transaction price. If discounts, credits, or variable amounts apply, document how they affect recognized revenue, not just billing display.
Trace one sample order from the governing customer contract through its performance obligations, billing, cash records, and draft recognition entries. A sale date or settlement event alone may not establish when an obligation was satisfied.
Name the authoritative record for each close question and the reconciliation between sources. Use corroborating exports when needed, with their scope and cutoff recorded; one system’s incomplete report should not become the sole truth.
Step 3: Create a control log for Topic 606 judgments. For each judgment, record the owner, approval date, review cadence, related contract template or market, and where the conclusion is documented. Include the supporting evidence used for that conclusion.
That is what lets you react when terms or pricing logic change. You can quickly identify which conclusion is affected and who must review it.
Step 4: Pre-agree escalation paths. Name finance, legal, and risk/compliance approvers before month one starts. Define what triggers escalation, such as new contract language, new markets, pricing-rule changes, or repeated close exceptions. If legal terms and operational evidence diverge, pause and escalate before finalizing policy.
If you use automated revenue reports, treat them as operational output, not evidence on their own. Automation can help with accrual accounting and ASC 606/IFRS 15 reporting, but it does not replace the evidence pack or control ownership.
You might also find this useful: A Guide to Revenue Recognition for SaaS Companies.
Step 1 map contracts and performance obligations to the order-to-cash cycle#
Map all five steps: identify the customer contract, identify performance obligations, determine transaction price, allocate it to those obligations, and recognize revenue when or as they are satisfied. Distinguish the end-customer sale from any separate platform-service contract with a seller; each can involve different promises and consideration.
If one contract template supports different product motions, split recognition logic by obligation type instead of forcing one rule across all flows. The legal paper may be the same, but the satisfaction event may not be.
Build a contract-to-event map#
For each contract type or selling motion, capture the same fields:
- contract template name and version
- performance obligation in plain English
- your conclusion: point in time or over time
- the exact order-to-cash event tied to satisfaction
- the evidence retained for that event
- the transaction-level ID linking contract, billing line, and journal output
- any transaction price note that affects recognized amount
Document proof, not just labels#
Do not stop at labeling an obligation. Record the specific evidence for the recognition trigger and make sure it aligns to when control transfers to the customer.
Use one sample order per contract type as a trace check: accepted terms, billed item, trigger event record, journal line. If that path depends on manual reconstruction, the map is not ready.
Related: Subscription Revenue Recognition for Bundles and Discounts: ASC 606 Allocation Rules.
Step 2 set principal vs agent and transaction price rules#
Assess control of each specified good or service before customer transfer. A principal reports the consideration for that promise gross; an agent reports its arranging fee or commission. MoR status, cash collection, or a processor’s net deposit does not determine the presentation.
Build the principal versus agent table#
Use one decision table per selling motion, market, or contract variant when operating facts differ. Pair contract terms with operating evidence so the conclusion is based on how the flow actually works.
| Indicator | Principal-leaning evidence | Agent-leaning evidence | Evidence to retain |
|---|---|---|---|
| Fulfillment responsibility | You control the specified good or service before transfer; suppliers may perform fulfillment on your behalf | Your promise is to arrange another party’s provision rather than control the specified good or service | Customer terms, support obligations, fulfillment logs, service records |
| Inventory risk | Your entity bears risk before transfer or around returns or nonperformance | Another party bears the underlying risk | Commercial terms, refund or return responsibility notes, exception handling records |
| Pricing authority | Your entity sets the final customer price | Another party sets the final price and you earn a fee or commission | Pricing approvals, rate cards, marketplace settings, order records |
Use the indicators to support the control assessment, not as a weighted scorecard. Third-party fulfillment can still occur on a principal’s behalf; contracting out delivery alone does not make the entity an agent.
For illustration, a $100 customer sale and $90 owed to a supplier could produce $100 gross revenue with the supplier amount accounted for separately if the platform is principal, or $10 fee revenue if it is agent. The same $10 cash remainder does not decide the result. This assumes no tax, refunds, processor fees, or other obligations; document the actual control analysis.
Define transaction price rules before exceptions show up#
Determine the transaction price with supported estimates and the applicable variable-consideration constraint. Then generally allocate it using relative standalone selling prices, applying any relevant discount or variable-allocation exception. Record returns, credits, and changes separately from processor fee deductions.
| Case | Routing |
|---|---|
| Preapproved commercial discounts | Can stay with the business only when finance has already defined allowed terms and accounting treatment |
| Nonstandard discounts or credits | Should route to finance because they can change transaction price and affect timing or amount of revenue |
| Changes to customer terms, market structure, or seller responsibilities | Should route to legal; novel cases should go to CPA review before final policy sign-off |
For a simple allocation example, assume two distinct obligations have standalone prices of $80 and $20, with a $90 package price and no allocation exception. Allocate $72 and $18, then recognize each amount as its own obligation is satisfied. Do not treat the invoice total or cash receipt as the allocation method.
- For preapproved commercial discounts, document the allowed terms and the accounting treatment finance approved.
- For nonstandard discounts or credits, retain the approval and note how they changed the timing or amount of revenue.
- For changes to customer terms, market structure, or seller responsibilities, route the issue to legal and capture CPA review before policy sign-off.
Tool settings can support processing, but they do not establish the ASC 606 conclusion by themselves.
Escalate mixed indicators and preserve the judgment memo#
Use a hard if-then rule: if control indicators are mixed, or facts are inconsistent across markets for the same flow, escalate and pause policy finalization until legal and CPA review.
Keep a separate judgment memo for each scenario. Include the ASC 606 logic, the GAAP position, operating facts, evidence reviewed, approvers, and effective date, then revisit the memo when contracts or business models change so the audit trail stays current.
This pairs well with our guide on What is a Merchant of Record (MoR) and How Does It Work?.
Step 3 build the month-end close controls and evidence pack#
Reconcile processor cash activity, subledger balances, and revenue entries with documented timing and classification bridges. Some recognized revenue will have no current-period settlement, and collected cash may remain deferred. Record known cash movement in the appropriate clearing or liability account while investigating an allocation gap.
Assemble one close pack from source to journal#
Create one month-end pack per material selling motion or processor setup. Include processor exports, subledger outputs, final revenue journals, and the reconciliation tying them together. If you run multiple processors, reconcile each one separately before rolling up to the general ledger.
Build a gross-to-net settlement bridge using actual gross collections, refunds, taxes, provider fees, transfers, and bank deposits. Use contracted rates for fee checks. Net cash received is not the same as agent revenue, and paying a processor fee does not by itself make the platform an agent.
Require posting checkpoints before revenue journals go final#
Use explicit sign-off gates before final posting:
| Checkpoint | What you test | Evidence to retain |
|---|---|---|
| Completeness | Cash activity is complete and bridged to subledger/journals; deferred and accrued revenue differences are explained | Processor exports, control totals, reconciliation workbook |
| Cutoff | Transactions are recognized in the correct close period | Period-end exception list, timestamp/fulfillment support |
| Classification | Gross/net presentation, fees, and deductions follow approved policy | Journal detail, account mapping, policy memo reference |
| Exception sign-off | Nonstandard items are approved before posting | Finance approval records, legal/CPA review where required |
Hold the affected unapproved recognition entry while resolving the gap, with materiality and close ownership documented. Continue recording known cash and other supported entries through the appropriate clearing or liability process; uncertainty in recognition is not permission to leave cash unrecorded.
Add a monthly variance review for performance-obligation mix, transaction price adjustments, and reversal patterns. Large shifts can be commercial, but they can also indicate mapping breaks or policy drift.
Automation can help at scale (for example, Stripe Revenue Recognition), but keep manual review checkpoints for high-risk judgments and exceptions. Archive the same audit bundle each close cycle: source reports, reconciliations, journal support, exception approvals, and final reviewer sign-off.
We covered this in detail in Merchant of Record for Platforms and the Ownership Decisions That Matter.
Step 4 assign ownership and escalation across finance legal and risk#
ASC 606's five-step model tells you what to assess, but it does not assign decision owners. Your team still needs an internal governance layer across finance, legal, and risk. Keep that layer explicit and documented so contract, pricing, and revenue-policy decisions are reviewed before they create close noise.
Anchor ownership to the ASC 606 steps#
Finance owns the accounting policy, allocation, recognition schedule, and posting review. Legal confirms the actual promises and rights in the contracts; risk or compliance supplies operating facts relevant to those promises. These are suggested internal responsibilities, not department assignments prescribed by ASC 606.
Define escalation in policy, not in hindsight#
Set escalation criteria in writing for changes that could alter your ASC 606 conclusion, contract interpretation, or control execution. Keep the criteria visible to teams that ship contract and pricing changes so accounting review happens before go-live, not after month-end exceptions.
Keep a durable decision record#
Track each escalated decision in a consistent log with the issue, conclusion, approvers, and decision date. That record helps prevent policy drift and makes your month-end evidence easier to trace back to the underlying ASC 606 judgment.
Common mistakes that create audit surprises and how to recover#
Most audit surprises in this area come from repeatable control failures, not unusual accounting edge cases. Use these four checks to recover before you finalize close.
Mistake: treating payment receipt as recognized revenue.
Recovery: Tie recognition to satisfaction of the relevant obligation. For a point-in-time promise, retain transfer evidence; for an over-time promise, retain the approved progress measure and satisfaction-to-date evidence. Cash receipt alone does not establish either result.
Mistake: using one global policy when contract or control patterns differ.
Recovery: Segment policy by scenario, then retest your close outputs against those scenarios. If market setup, terms, or control patterns changed, do not assume legacy mapping still applies.
Mistake: assuming automation equals compliance.
Recovery: Use automation to improve accuracy and reduce manual effort, but keep explicit judgment reviews in your close process. Add specialist sign-off points when facts change, indicators are mixed, or outputs cannot be explained from the contract and recognition logic.
Mistake: finalizing journals with incomplete close evidence.
Recovery: Check current terms, recognition support, point-in-time transfer or over-time progress evidence, reconciliations, and required approvals. Hold only the affected unsupported recognition entry and assign its resolution; continue recording supported cash, clearing, liability, and other entries.
For a step-by-step walkthrough, see How to Choose a Merchant of Record Partner for Platform Teams.
Final takeaway and copy-paste checklist#
Use all five ASC 606 steps in the close record, including transaction price and allocation. Add principal-versus-agent presentation and applicable disclosure support, then reconcile the revenue result to the separate cash records.
- Confirm the contract is identified and current. For each customer contract, keep the version you relied on for the period.
- Map obligations to recognition. Document each performance obligation and the point at which revenue is recognized when or as it is satisfied.
- Determine and allocate the price. Retain estimates, constraints, standalone-price support, and any allocation exception before applying the recognition schedule.
- Document key judgments in writing. Keep the reasoning, support, and approvals together so the conclusion is reviewable.
- Keep records traceable end to end. Your close file should let another reviewer follow the path from contract terms to the recorded revenue outcome.
- Reassess when facts change. If contract terms or operating facts shift, reopen the analysis before carrying the prior conclusion forward.
- Archive a repeatable file. Retain the full support so the same conclusion can be reproduced in a future period.
Related reading: Building Subscription Revenue on a Marketplace Without Billing Gaps.
Frequently Asked Questions
What changes in ASC 606 when a platform is the Merchant of Record?
ASC 606 does not create a separate MoR standard. The guidance still runs through the same five-step model, starting with identifying the contract with a customer.
Does receiving customer cash mean revenue can be recognized immediately?
No. Recognition follows satisfaction of the relevant performance obligation. Cash received beforehand may create a contract liability; settlement timing supplies cash evidence rather than a substitute recognition rule.
How do we decide principal vs agent when indicators are mixed?
Start with the specified good or service and whether the platform controls it before transfer. Use fulfillment responsibility, inventory risk, and pricing discretion as supporting indicators, not a vote count. Document mixed facts and refer the unresolved conclusion to the technical-accounting owner.
What is the minimum control set we need before scaling to new markets?
As an internal starting point, retain current contracts, obligation and allocation decisions, satisfaction evidence, cash-to-ledger reconciliations, and exception approvals. Reassess market-specific contracts and operating facts before expansion; this is a control design, not a universal ASC 606 checklist.
What should finance, legal, and risk each own in Topic 606 execution?
Finance owns recognition and presentation decisions; legal confirms contractual promises and rights; risk or compliance supplies relevant operating facts. Name an accounting approver and a change-review path rather than splitting final accountability across a committee.
When should we escalate to a CPA or technical accounting specialist?
Escalate unresolved control judgments, uncertain variable consideration or allocation, novel contract modifications, and unexplained material recognition differences. Set the thresholds and decision owner in the accounting policy before close.
Can tools like Stripe Revenue Recognition replace manual review controls?
No. Automation can generate schedules and reports from configured rules, but someone must validate the underlying contracts, obligations, allocation, and exceptions. Retain the evidence and approval that support high-risk judgments.
Try a related tool
Researched and edited by the Gruv editorial team. Gruv builds cross-border billing, payouts, and finance-operations software for global businesses.
Sources
Includes 2 external sources outside the trusted-domain allowlist.
Educational content only. Not legal, tax, or financial advice.
Related Posts

ASC 606 Principal vs Agent Decisions for Merchant-of-Record Platforms
For merchant-of-record teams, the **ASC 606 principal vs agent merchant of record** call is a high-stakes judgment, not a presentation preference. It can move revenue from gross to net and raise the level of judgment finance, audit, and compliance teams need to defend.

Subscription Revenue Recognition for Bundle Discounts Under ASC 606
A discounted subscription bundle can put one amount on an invoice while producing several revenue schedules. The invoice total does not tell finance how much belongs to software access, a distinct training service or another promised deliverable. Start with the actual promises and supported stand-alone selling prices, then calculate the allocation and recognize each amount when or as its obligation is satisfied.

Revenue Recognition for SaaS Companies Under ASC 606
Under ASC 606, revenue follows the transfer of promised goods or services rather than the date money arrives. A customer prepayment for future service creates a contract liability, commonly called deferred revenue. Cash, billings, receivables and recognized revenue therefore need separate records.

