The Billing object
Billing status for an organisation, covering plan, grace and trial state, and live Stripe subscription detail. This endpoint is always reachable: an organisation with no active subscription, trial, or grace is refused on other tenant routes and directed here to read its situation and convert.
Attributes
planstringCurrent plan identifier: trial, sole_trader, or limited_company.
planNamestringHuman-readable plan name, resolved from the plan catalogue. Reads "Unknown" if the stored plan identifier is not in the catalogue.
hasStripeCustomerstringWhether a Stripe customer record exists for this organisation. The customer is created at registration or at first checkout, so this can be true before any subscription exists.
hasSubscriptionstringWhether a Stripe subscription pointer exists for this organisation. A cancelled subscription pointer persists through the retention window, so true does not imply an active subscription. Live status lives in subscription.status.
isTrialActivestringTrue only while the organisation is in its grace window: registered, not yet subscribed, grace not expired. This is grace state, not Stripe trial state; Stripe-side trial state lives in subscription.status. The field name is retained for client compatibility.
subscriptionStatusstringThe organisation's mirrored subscription status, Stripe's value verbatim within the supported vocabulary. Statuses outside that vocabulary are refused at the webhook and never reach the mirror. Null means never subscribed.
seatNumberstringFounder seat number assigned by rank over first subscription date. Present while it carries meaning (the first 50 seats); null once the founder seats are filled, and null before the organisation has subscribed.
trialDaysRemainingstringWhole days remaining in the grace window, computed by the database as the time authority. Zero once grace has lapsed or the organisation has subscribed.
trialEndsAtstringISO 8601 timestamp when the grace window expires, or null.
subscriptionstringLive Stripe subscription detail when a subscription pointer exists, otherwise null. Carries: status; currentPeriodEnd, read from the subscription item's billing period with a mirror-column fallback; cancelAtPeriodEnd, the derived pending-cancellation state (true whenever a cancellation is scheduled for the period end, regardless of which Stripe field carries it, and false again on reactivation); trialEnd; amountPence (the recurring price in pence); card (brand, last4, expMonth, expYear of the default payment method); and nextPaymentAttempt (the next dunning retry when past_due).
variantstringThe precomputed billing-page state for a single render, computed by the API and never re-derived by the client. The discriminant is kind; each kind carries only its own payload fields, and fields belonging to other kinds are absent. See getBillingStatus for the behaviour of the two payload-bearing kinds.