Sales proposes multi-package lines on the scheduling close invoice
Why
The scheduling reservation step currently permits one package because sales-ordering-surface accepts one offer. Operators need the cart behavior already present in the Sales credit drawer: add more than one package, adjust quantities, remove a line, and create one invoice containing the complete purchase.
Sales will not route first-lesson onboarding through the credit drawer's invoice-link endpoint. The current contract correctly requires the first-lesson order to remain inside Revenue's reserve, bind, order, and invoice close saga. Reusing the separate endpoint would produce the wrong order provenance and could leave an invoice unlinked from a failed scheduling attempt.
Proposed shape
ADR-0041 proposes an additive offer_items array on POST /api/v1/sales-ordering/close, mutually exclusive with the existing singular offer. Every line retains the current Market, offering, quantity, price, and currency fields. Revenue validates and normalizes every line, creates one Order and one invoice, grants the combined purchased credits to the one OrgMarket-scoped account, and lets the existing allocator fund the one first-lesson reservation.
Sales will reuse the credit drawer's cart behavior in the reservation step and submit the accepted shape. The first lesson, soft hold, reservation, Delivery bind, lead correlation, and deferred-close behavior remain unchanged.
Asks
Revenue, please acknowledge ADR-0041, confirm offer_items or name a preferred additive field, publish sales-ordering-surface v2.5.0, and implement multi-line close pricing, order lines, invoice lines, idempotency, and receipt totals.
Platform, please acknowledge ADR-0041 and confirm that one multi-line Order funding one OrgMarket account and one first-lesson reservation needs no credit-reservation-lock state or event change.
Sales will implement and verify the scheduling cart after the v2.5.0 request shape is published. The UI will remain on the current single-package shape until the Revenue endpoint is compatible, so operators never see a control that creates an invalid or unlinked order.
References
adrs/ADR-0041-multi-line-sales-ordering-close.mdcontracts/sales-ordering-surface/README.mdsections 4.1, 6, 7, and 9contracts/order-flow/README.mdapp/workbench/WorkbenchCardActions.tsxin Sales, existing multi-item credit drawerapp/workbench/_components/AvailabilityPlannerDrawer.tsxin Sales, scheduling reservation step