Cancel subscription
POST
https://app.speybooks.com/api/v1/admin/orgs/{id}/cancel-subscriptionCancel an organisation's Stripe subscription. Supports two modes:
immediately: true— cancels now viastripe.subscriptions.cancel(), sets local status tocanceledimmediately: false(default) — setscancel_at_period_end: trueviastripe.subscriptions.update(), local status staysactiveuntil period end
Flow
- Look up organisation and
stripe_subscription_id - Return 400 if no subscription exists
- Call Stripe API (cancel or update)
- Update local
subscription_statusandcancel_at_period_end - Write
SUBSCRIPTION_CANCELEDaudit log
Request Body
immediately— boolean (default false)reason— minimum 5 characters, required for audit
Error responses:
400 { code: "NO_SUBSCRIPTION" }— no active Stripe subscription404 { code: "NOT_FOUND" }— organisation not found
Path parameters
id string requiredOrganisation ID.
Body parameters
reason string requiredReason for cancellation (audit trail). Min 5 characters.
immediately boolean optionalCancel immediately (true) or at period end (false). Default false.
Response
200 Subscription cancelled (immediately or at period end).
Show response fields
message stringError codes
400 No active subscription.
404 Organisation not found.