- Shipped
- November 11, 2026 at 6:09 AM UTC
- Author
- Kamo
- Commit
- 185198f
Generic for every org selling through the Subscription line of business: - CorePlans: the core-plan subscription is picked deterministically; a flat product (max_seats 1, flat-priced, not FREE — e.g. Marketing Website) is never a seat: no seat rows, not seated, not "licensed" (seat-only licence query). - OrgBillingAgreement.market_id + OrgBillingAgreements.live: agreements are per market and priced from the BUYER (POS calculatePrice no longer reads the seller's). - Opt-in grace periods (grace_mode OFF|MANUAL|AUTO DEFAULT OFF, grace_days 60, grace_until, grace_expired_at) on account_subscriptions and commerce_subscriptions; SubscriptionLifecycleService: auto start on past due, expiry stops service like a manual pause, payment lifts it. - POS cancel/term end now end the customer's access (CANCELED, seats lapse); cancel defaults to the end of the paid period, immediate=true ends now. - billing.subscription.paid / ended / grace events, relayed to NATS after commit. - ONE_TIME add-ons bill on the first invoice only.
