Cancel a scheduled web hosting plan change
DELETE /api/v2/shared-hosting/{accountId}/actions/upgrade
Cancel a plan change that is scheduled for the next billing period. It is shown as scheduledChange by GET /api/v2/shared-hosting/{accountId}/actions/upgrade. The account stays on its current plan. When the scheduled change had already replaced the renewal invoice, a renewal invoice for the current plan is created again and returned in renewalInvoice. No scheduled change returns 404 scheduled_change_not_found. When the renewal payment has started or the change is being applied, the call returns 409 scheduled_change_not_cancellable.
Authentication: An API key with the scope write:billing. About keys and scopes
Request
Path parameters
accountIdstringrequiredacct_…).Example
curl -X DELETE "https://cloud.hostup.se/api/v2/shared-hosting/acct_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/upgrade" \ -H "Authorization: Bearer $HOSTUP_API_KEY"Responses
200 The scheduled change was cancelled.
{ "cancelled": true, "scheduledChange": { "status": "cancelled", "effectiveAt": "2026-12-01T00:00:00.000Z", "invoiceIssueAt": "2026-11-01T00:00:00.000Z", "target": { "productSlug": "webbhotell-start", "billing": { "amount": 99, "currencyCode": "SEK", "billingCycle": "annually" } }, "actions": { "canCancel": { "allowed": false, "reason": "This change has already been cancelled." } } }, "renewalInvoice": null}Response fields
cancelledbooleantrue.scheduledChangeobjectstatusstringpreview, scheduled, awaiting_payment, paid, applying, applied, needs_attention, cancelling, cancelled.effectiveAtstring or nullinvoiceIssueAtstring or nulltargetobjectproductSlugstringresourcesobjectstorageGb can be larger than the new plan’s disk. The primary disk cannot be made smaller.billingobjectamountnumber or nullcurrencyCodestringbillingCyclestringmonthly, quarterly, semiannually, annually, biennially, triennially, free.actionsobjectcanCancelobjectallowedbooleanreasonstring or nullallowed is true.renewalInvoiceobject or nullErrors
Errors are Problem Details with a stable code. Branch on the code, not on the text.
| 400 | Invalid request. The response body is an RFC 7807 Problem Details document. |
| 401 | Unauthorized. Authentication is required. |
| 403 | Forbidden. The caller lacks a required scope or does not own the resource. |
| 404 | No plan change is scheduled (scheduled_change_not_found). |
| 409 | The change cannot be cancelled automatically because its renewal payment has started or it is being applied (scheduled_change_not_cancellable). detail says which. |
| 429 | Rate limited. Retry after the limit resets. 429 responses include Retry-After seconds plus X-RateLimit-* headers. |
| 500 | Internal error. Retry later or contact support if the issue persists. |