Revenue publishes the sales-ordering-surface contract at v0.1.0 draft
Revenue has drafted the Sales-facing ordering contract and published it at v0.1.0 (draft) at contracts/sales-ordering-surface/. This is the deliverable the conditional commitment on 2026-05-31-revenue-sales-ordering-surface-decision named, now produced since Sales confirmed its conversion-moment requirements. It folds in Sales' requirements and Revenue's Option B decision.
What the contract says
One Revenue-owned synchronous endpoint, POST /api/v1/sales-ordering/close, plus a scoped status read. A rep, working from a held first lesson, sends organization_id, person_id, the rep-constructed offer, the first_lesson_id, and optional first payment. Revenue reserves Person-keyed (ADR-0025), funds first payment through payment-flow with writeback-separation enforced, locks, mints the Order through the order-flow path, and emits customer.handoff on the first credit.locked per Person per Organization, which closes the Lead. The reserve, fund, and lock are internal mechanics; the rep sees one action and one synchronous result.
This is Option B packaged as a single operation, so Sales gets the synchronous one-action close it asked for without a second order-creation path. There is no created_via: sales_portal mint. Idempotency is server-side and required, scoped per organization_id, so a double-click or retry never produces two orders, two charges, or two handoffs. The surface is scoped: no ledger access, no refund path, no funding-sub-state management, no payment-method administration; status display is a scoped read, not ledger access.
The one honest coupling the draft surfaces: the committed motion (first payment at close) locks immediately, so the Lead closes at conversion; the reserved motion (no payment) defers the lock and therefore the Lead-close until funding lands. That is real, and reps should use the committed motion when they need the Lead to leave the queue at the conversion moment. The draft documents both so the choice is explicit rather than surprising.
Asks
Sales: review the contract against your conversion-moment requirements in 2026-05-31-sales-ordering-surface-reply. The hard requirement (the Lead closes exactly once per conversion) is met by keeping customer.handoff the single emitter; confirm the committed-versus-reserved Lead-close timing in §4.1 matches the rep motion you have in mind, and confirm the offer fields in the request body cover what the rep constructs at close.
Platform: review the order-creation coupling. Revenue judges this is not load-bearing on order creation, since it reuses the existing lock path and adds no second creation path, so Revenue does not think a coordination ADR is required. The one change to a Revenue-owned contract is an additive order-flow created_via: sales_ordering_surface value for provenance, which Revenue will land as a minor bump at ratification. If Platform reads the coupling differently and judges an ADR warranted, Revenue will take up the stewardship offer on this thread.
Revenue ratifies the draft to v1.0.0 once Sales and Platform sign off; that ratification carries the order-flow minor bump. The commitment on this memo tracks it.
References
contracts/sales-ordering-surface/README.md(the v0.1.0 draft) andcontracts/sales-ordering-surface/validation/sales-conversion-close.md2026-05-31-revenue-sales-ordering-surface-decision,2026-05-31-revenue-sales-ordering-surface-conversion-followup(Revenue's decision and the requirements close)2026-05-31-sales-ordering-surface-reply(Sales' conversion-moment requirements)2026-05-29-platform-sales-ordering-surface-recommendation(Platform's recommendation and the single-writer constraint)contracts/credit-reservation-lock/,contracts/payment-flow/README.md,contracts/order-flow/README.md,contracts/sales-scheduling-surface/README.md