as_of and computed_at.
A subscription is the agreement between one customer and one product. It is what recurring revenue is counted per, and what a renewal date hangs on.
The names, types and availability below are fixed. No read interface or MCP tool serves them yet — this page publishes the shape ahead of the doors.
subscription. The collection name is not published yet — it lands with the API reference rather than being fixed here.
Example payload
Attributes
Where a subscription comes from, and where Beacon has to make one
If you bill through a subscription platform, this object is read. The platform holds subscriptions as first-class records and Beacon takes them as they are. If you bill out of your accounting system, there is no subscription record to read — a ledger holds invoices and items, not agreements. So Beacon creates one for each customer-and-product pairing it sees recurring on your invoices. That is stated plainly because it has two consequences worth knowing before you meet them:- The identifier is Beacon’s, not yours. It will not match anything in your accounting system, because your accounting system has nothing to match it to.
billing_intervalwill usually be empty on this path. Where Beacon created the subscription, the contracted billing cycle was never recorded anywhere for it to read. The product’s declared billing cycle carries the answer instead, which is exactly why that value is asked for during setup.
Two places a billing cycle can live, and why that is deliberate
The product’s billing cycle says how the product is normally sold. This one says what this customer actually contracted. Most of the time they are the same and only one of them is populated. When a customer negotiates a different billing cycle — an annual product billed quarterly, say — the difference belongs to the customer, not to the catalogue, and overwriting the catalogue to record it would mis-describe every other customer on that product. Where both are present and they disagree, Beacon surfaces the disagreement rather than resolving it silently.Availability
Nothing on this object is served on any door today, and which values will be available on the read interface, in MCP tools, on events and as CRM properties has not been settled for this object yet. It is left unstated here rather than guessed at, and it lands with the same act that publishes the collection. What is settled is the audience ceiling: every value on this object sits atoperational. There is no money on this object; the amounts live on the invoice line.
Freshness
A subscription that ends does not disappear. It stays readable with
active_flag false and its end date set, because the periods it contributed to still need it to reproduce.