- Shipped
- November 11, 2026 at 6:12 AM UTC
- Author
- Kamo
- Commit
- cfbee29
- Mailbox/PBX controllers and reconcilers, LicenseUsageService, OrgPlanService: the CORE subscription via CorePlans (never a flat product's Stripe sub); flat plans stay out of seat totals, ceilings, seat rows and assignment. - resolveBillingMarketId: the market holding the business Free plan, else the lowest SUBSCRIPTION market selling seats — never display order alone. - AccountSubscriptionService: row persisted before the setup-fee and Subscription idempotency keys (was "null:..."); ONE_TIME add-ons charged once as an invoice item or refused; fallbackToFree only from the subscription's own market; a first payment by bank debit is kept INCOMPLETE until it clears. - Per-market agreements in SetupFeeBiller, SelfPlanService, ConsumerCheckout and the agreement admin (marketId). - Opt-in grace periods: seller endpoints **************** AUTO start on invoice.payment_failed, StripeGraceSweep, payment lifts it. - billing.subscription.paid (purchase / invoice.paid) and .ended (Stripe canceled). - Invoice checkout takes card + us_bank_account, counted only when paid; SetupIntents accept us_bank_account; async_payment_* webhook events.
