Committed-use drawdown
Enterprise buyers typically sign a monthly spend commitment in exchange for a discounted per-unit rate: you promise to spend at least X per billing period, and in return your unit prices drop. Your metered usage then draws down against that commitment over the period, and at period end the gap is trued up:- If your consumption falls short of the commit, you still owe the floor — the unmet remainder is the minimum-commit true-up charge (“use it or pay it”).
- If your consumption exceeds the commit, the commitment is fully drawn down and the excess is billed on top as overage.
Where the commitment is configured
The commitment itself is a negotiated contract term, and it lives ops-side — not as a tenant setting. Platform ops stores it on your organization atsettings.billing.committedUse, following the same posture as other
contract-level billing terms (such as your self-credit ceiling): the API
offers no tenant-writable PATCH for it. You cannot set, raise, or lower
your own commitment from the dashboard or the API — changes go through your
account contact, same as renegotiating the contract.
The commitment object looks like this:
monthlyCommitCents (the committed spend per billing period, in wallet
cents) is required, and it must be a positive whole number. Everything else
is optional: discountPercent (0–100) is the negotiated rate discount,
informational for the meter; currency is a display hint; termStart /
termEnd are the ISO dates of the contract term. A malformed or missing
object is treated as no commitment, defensively — a typo in the ops
configuration never fabricates a phantom commit.
Reading the meter
The meter is one read-only endpoint:commitment: null — with the period bounds and your
period-to-date spend for context:
commitment: null
means self-hide — an org without a commit never sees an empty or
broken-looking meter, and you never have to distinguish “no contract” from
“a zeroed contract.” Treat commitment: null the same way in your own
integration: it is the expected steady state for orgs without a committed-use
contract, not an error. A moved organization (missing or soft-deleted) is the
one case that answers an error instead — a consistent 404 like the other
org-scoped billing reads.
Drawdown math
The projection is deliberately transparent — a linear run-rate, not an ML forecast, the same no-magic approach the cost-forecast surfaces elsewhere in the dashboard use:projected_shortfall_cents = max(0, committed_cents − projected_spend_cents)— the minimum-commit true-up you would owe if the current pace held.projected_overage_cents = max(0, projected_spend_cents − committed_cents)— the excess you would bill on top of the commit.
shortfall_cents / overage_cents pair answers the same question
as of right now (period ending today), while the projected_* pair
extrapolates to period end. The status field condenses the comparison into
the three states the meter colour-codes:
exhausted— consumption has already met or exceeded the commit.on_track— the run-rate projection reaches the commit by period end.under_pace— the projection falls short; a true-up is likely at the current pace.
Behavior guarantees
Two guarantees make the meter safe to poll from an always-on dashboard:- It moves no money. The endpoint is a pure read against the metered spend your billing paths already record. It issues no charges, creates no ledger rows, and never triggers the true-up itself — minimum-commit true-ups are settled through your contract invoicing, not this meter.
- It degrades to hidden, never to an error storm. If a transient
infrastructure failure hits before the handler can even run (for
example while resolving your tenant), the billing routes degrade the
would-be 503 into the same
commitment: nullenvelope the “no commitment” case returns. A dashboard poll during an infrastructure blip renders the panel-hidden state and recovers on the next poll, instead of surfacing a hard error on an always-on widget. Your integration should key oncommitment: null(poll hidden), not on the period fields.
API contract
What this is not
- Not a payment method. A commitment does not fund usage; your wallet still needs balance for sends to pre-flight. Auto-top-up and balance alerts work exactly as before.
- Not a spend cap. Reaching 100% drawdown never blocks sending — the meter reports, it does not gate. Tenant-owned caps live in Spend caps.
- Not self-service. Setting or changing the commitment is an ops action tied to your contract; there is intentionally no API to write it.
See also
- Billing and wallet overview — the prepaid wallet this meter sits on top of.
- Wallets, credits, and charges — the ledger the drawdown reads from.
- Spend alerts and the velocity-anomaly model — proactive spend protection that complements contract metering.
- Usage anomaly alerts — threshold alerts you configure yourself.
- Cost-center chargeback — attribute the same metered spend to internal cost centers.