A SaaS company that resells third-party AI services for $100 (and pays the provider $80) can report $100 of revenue or $20 of revenue under ASC 606. Same cash. Same gross profit. Wildly different top line. The choice is not a discretionary policy. It is the principal vs agent test, and ASC 606 has a specific framework for making the call: who controls the good or service before transfer to the customer. That single answer decides whether revenue is reported gross or net, and the gap can be 5x or 10x at the top line.
This is the gross vs net revenue decision the five-step model leaves to Step 5, and one of the recognition calls that most often surprises mid-market finance teams (see ASC 606 revenue recognition for mid-market).
Gross vs net revenue, side by side
- Revenue (gross)
- $100,000
- Cost of revenue
- ($80,000)
- Gross profit
- $20,000
- Gross margin
- 20%
- Revenue (net commission)
- $20,000
- Cost of revenue
- $0
- Gross profit
- $20,000
- Gross margin
- 100%
The economic profit is identical. The narrative the income statement tells is not. A $100M business reporting gross looks like a $100M business; the same business reporting net looks like a $20M business with a 100% gross margin. Investors, lenders, and acquirers read them very differently, and auditors care about which one is the right answer.
The three indicators of principal status
The customer looks to the entity, not a third party, if the good or service fails to meet specifications, needs repair, or needs replacement.
The entity bears inventory risk before transfer (it has purchased or committed to buy the good) or after transfer (it accepts returns and bears the resale loss).
The entity has discretion in setting the price the customer pays. The more pricing is fixed by the third-party provider, the more likely the entity is an agent.
No single indicator is determinative. Per ASC 606-10-55-37A through 55-39, the entity weighs all three alongside the overarching control assessment. An entity with pricing discretion but no inventory risk and no fulfilment responsibility is probably an agent; an entity with all three is almost certainly a principal.
Two worked examples
- Customer pays for ride
- $30
- Driver receives
- $24
- Platform commission
- $6
- Fulfilment responsibility
- Driver
- Inventory risk
- None
- Pricing discretion
- Limited
- List price to customer
- $100K
- Cost from vendor
- $80K
Same product, same vendor. The control structure, not the product, changes the answer: the marketplace never controls the ride, so it is an agent, while the reseller flips from agent to principal the moment it takes on inventory risk and pricing discretion.
See it in motion
Cadel applying the principal vs agent test to a reseller arrangement
Where the call goes wrong
Three patterns that flip the gross vs net answer in the wrong direction
What good looks like
A clean principal vs agent assessment runs at contract inception with the three indicators evaluated and the control test concluded in a documented memo. The conclusion drives the recognition pattern, the gross vs net presentation, and the disclosure. When the arrangement changes (a new fulfilment partner, a pricing-model change, an inventory-risk shift), the assessment re-runs and any change in conclusion is documented with its effective date. Investors and auditors can trace any line of revenue back to the principal vs agent conclusion that drove it.
At Cadel, the principal vs agent assessment runs as a structured workflow at contract intake. The three indicators are scored against contract terms, the conclusion drives the journal entries automatically (gross vs net), and any later change in the arrangement triggers a fresh assessment with the prior conclusion preserved in the audit trail.
See how Cadel automates revenue recognition under ASC 606, or get in touch to walk through a gross vs net arrangement (marketplace, reseller, revenue-share, or drop-ship) you're unsure about.