40 multi-element contracts — platform, support, implementation, usage credits, and a partner add-on — allocated by relative standalone selling price and recognized per obligation. Companion to the Revenue Recognition project, which owns the deferred and RPO roll-forwards. Synthetic, seeded data.
| Obligation | SSP | Invoice line | Allocated (606) | Alloc / SSP |
|---|---|---|---|---|
| platform | $600.0K | $590.9K | $550.4K | 91.7% |
| support | $120.0K | $118.2K | $110.1K | 91.7% |
| implementation | $75.0K | $0.0K | $68.8K | 91.7% |
| usage credits | $300.0K | $295.4K | $275.2K | 91.7% |
| Total | $1,095.0K | $1,004.5K | $1,004.5K | 91.7% |
Sales invoiced implementation at $0 — a concession that looks free on paper. Relative-SSP allocation reassigns transaction price to it anyway, at exactly the contract's overall discount ratio. You can discount an invoice line; you cannot discount the accounting. The pro-rata column is a validation check, not a hope: any obligation whose ratio deviates from the contract's fails the build — a discount parked on one line is the classic manual-workaround error.
| ASC 606-10-55 indicator | This arrangement | Points to |
|---|---|---|
| Primary responsibility for fulfillment | Partner delivers and supports the add-on | Agent |
| Inventory risk before transfer | None — we never hold or commit to capacity | Agent |
| Pricing discretion | Partner sets list; we pass through at partner's price | Agent |
Conclusion: agent — net presentation. The arithmetic proof is check 5: profit is identical to the cent under either presentation ($0.13M), which is precisely why the control-of-the-good indicators — not the invoice total — make the call. Gross would have added $0.72M of pass-through to the revenue line. For a marketplace or reseller business this single judgment swings reported revenue by multiples.
SSP bases: platform and support are
observable (standalone renewals and attach); implementation is
cost-plus-margin; usage credits use an adjusted market assessment —
the hierarchy stated, as a policy memo would. Synthetic, seeded
(random.seed(606)). Source:
github.com/Lumimama/finance/revenue-allocation.