Cancel a scheduled plan change
Drops the change waiting for the end of the term (subscription.scheduled_change); the subscription goes on as it is. While billing is switched off, it answers 409 conflict. Without a scheduled change, 409.
- Scopes
billing:write - Rate classwrite
- Idempotency-Key required
/v1/billing/subscription/scheduled-change/cancelDrops the change waiting for the end of the term (subscription.scheduled_change); the subscription goes on as it is. While billing is switched off, it answers 409 conflict. Without a scheduled change, 409.
Authorization
apiKey An API key (fo_live_… / fo_test_…) as a bearer token
In: header
Header Parameters
Dated API version; pinned per organisation on first use and overridable per request
Value in
- "2026-10-01"
- "2026-10-04"
The data the request acts on: test is the organisation's sandbox. An OAuth token picks it (live by default); an API key's mode is fixed, and naming the other one is refused
Value in
- "live"
- "test"
Unique key for this operation, reused on retries (24 h)
1 <= length <= 257This operation cannot be previewed (Changes the subscription at Stripe): 422 preview_unsupported, nothing changes
Value in
- "true"
- "explain"
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X POST "https://example.com/v1/billing/subscription/scheduled-change/cancel" \ -H "Idempotency-Key: string"{ "status": "incomplete", "plan": "string", "current_period_end": "2019-08-24T14:15:22Z", "cancel_at_period_end": true, "interval": "month", "cancel_at": "2019-08-24T14:15:22Z", "discount": { "name": "string", "percent_off": 1, "amount_off": 0, "ends_at": "2019-08-24T14:15:22Z" }, "scheduled_change": { "plan": "string", "interval": "month", "effective_at": "2019-08-24T14:15:22Z" }}Read the month's usage GET
Every meter's usage in a calendar month (UTC), in the caller's mode, against its quota. Counts add up over the month; a level (products tracked) is its highest reading. Quotas cap live mode only: at 80% the organisation receives `usage.threshold_reached`, and at 100% the metered action answers 429 `quota_exceeded` until the month ends. API calls are counted as they happen and may lag by a few seconds.
Cancel at the period's end POST
The subscription ends when the fee's term does (the year, for an annual plan); the plan stays until then and returns to the free plan after, leaving live mode. Resume it any time before. While billing is switched off, it answers 409 `conflict`. Without a subscription, 409.