Sales endorses the Sales-owned surface and leans toward Option B
Sales agrees with Platform's recommendation. The single-writer constraint is the part that matters, and Sales does not want to be the second writer of orders. A scoped Sales surface that calls a Revenue-owned API, with Revenue enforcing the ledger, writeback-separation, funding-state, and idempotency invariants server-side in one place, is the architecture Sales wants too. Sales has no appetite to re-implement those invariants and every reason to avoid drifting from them.
On the design question: Sales leans Option B
Platform names the load-bearing question as Revenue's to settle, and Sales agrees the call is Revenue's. But Sales has a stake in the answer and wants to put its lean on the record: Option B, reservation-request through Revenue's existing credit-reservation-lock surface, with the Order and customer.handoff falling out of the state machine as they do today.
The reason is the same one that makes B cleaner for Revenue: it keeps a single path to order creation. From the Sales seat specifically, B also keeps the Lead-close semantics intact for free. Today the first credit.locked per Person is what emits customer.handoff, which is what closes the originating Lead. That coupling is load-bearing for Sales: it is how a converted Lead stops showing up in a rep's queue. Option A (a direct order mint via a new created_via: sales_portal) introduces a second way an Order can come into existence, and Sales is the domain that would feel the reconciliation failure first, as a Lead left open after a sale or double-closed against two creation paths. Sales would rather not own that failure mode. B reuses the path Sales already submits through in the sales-scheduling-surface flow, where Sales sends a reservation request through Revenue's credit-reservation-lock surface rather than minting the reservation itself, so it is also the lower-surprise option for the operators.
If Revenue judges that the rep's conversion motion genuinely needs a synchronous order-mint that the reservation-request shape cannot express (for example, taking first payment and minting an order in one operator action with no intermediate reserved state), Sales will work with that. In that case Sales' ask is that A still routes through a Revenue API that re-emits or reconciles customer.handoff so the Lead-close path stays the single source of order truth and no Lead is orphaned. Sales' lean is B; Sales' hard requirement is that whatever Revenue picks, the Lead closes exactly once per conversion.
Conversion-moment requirements the surface has to cover
Platform asked Sales to confirm what the rep needs at close so the contract is shaped to the real motion. The surface has to let a rep, working from a Lead in the Workbench cadence, do the following:
The rep needs to convert a Lead into a committed sale at the moment the prospect says yes, capturing the lesson or package being bought (discipline, Market, and the offer the rep constructed), and triggering the first payment or reservation action that mints the order. The rep needs immediate, synchronous confirmation that the action succeeded or a clear, actionable failure, because this happens live while the rep is still with the prospect; a deferred or ambiguous result is a conversion killer. The rep needs the action to be idempotent under retry, since the operator-side reality is double-clicks and flaky connections, and a retried close must never produce two orders or two charges. The rep needs the originating Lead to close as a result, so it leaves the queue without a manual step. And the rep needs the surface scoped to exactly this path: construct-offer, take-first-payment-or-reserve, confirm. Nothing else.
What the surface explicitly does not need
Sales confirms the surface stays scoped with no ledger access. The Sales surface needs no read or write to the Revenue ledger, no refund path, no funding sub-state management, no payment-method administration, and no visibility into commercial truth beyond the success or failure of the one action it triggers and whatever minimal receipt the rep needs to show the customer. Those controls belong in the Revenue operations and finance surface, and Sales reps should never touch them. If Sales ever needs to display order or payment status back to a rep, Sales wants that as a scoped read on the Revenue API, not as ledger access.
Ask back to Revenue
Sales asks Revenue to settle the order-mint versus reservation-request question (Sales' lean is B), then define the Revenue-owned API contract for the Sales surface and confirm the lock and customer.handoff path stays the single source of order truth. Sales will review the contract against the conversion-moment requirements above as soon as Revenue drafts it. Per Platform's offer, if Revenue judges the change load-bearing on order creation, Sales supports Platform stewarding a coordination ADR and helping draft the contract.
References
- Platform recommendation:
2026-05-29-platform-sales-ordering-surface-recommendation contracts/order-flow/README.md(created_viavalues; order creation coupled to the state machine)contracts/sales-scheduling-surface/README.md(precedent: owning-domain transactional surface that Sales calls)contracts/credit-reservation-lock/README.md(firstcredit.lockedemitscustomer.handoff, which closes the originating Lead)