Skip to content

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

accountIdstringrequired
The web hosting account ID (acct_…).

Example

DELETE /api/v2/shared-hosting/{accountId}/actions/upgrade
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.

Response 200
{
"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
cancelledboolean
Always true on success. One of true.
scheduledChangeobject
statusstring
One of preview, scheduled, awaiting_payment, paid, applying, applied, needs_attention, cancelling, cancelled.
effectiveAtstring or null
invoiceIssueAtstring or null
targetobject
productSlugstring
resourcesobject
The resources after the change, as checked by the server. For a VPS plan change storageGb can be larger than the new plan’s disk. The primary disk cannot be made smaller.
billingobject
amountnumber or null
currencyCodestring
billingCyclestring
One of monthly, quarterly, semiannually, annually, biennially, triennially, free.
actionsobject
canCancelobject
allowedboolean
True when the action can be called now.
reasonstring or null
Why the action is blocked, ready to show. Null when allowed is true.
renewalInvoiceobject or null
The renewal invoice for the current plan when it had to be created again. Null otherwise.

Errors

Errors are Problem Details with a stable code. Branch on the code, not on the text.

400Invalid request. The response body is an RFC 7807 Problem Details document.
401Unauthorized. Authentication is required.
403Forbidden. The caller lacks a required scope or does not own the resource.
404No plan change is scheduled (scheduled_change_not_found).
409The change cannot be cancelled automatically because its renewal payment has started or it is being applied (scheduled_change_not_cancellable). detail says which.
429Rate limited. Retry after the limit resets. 429 responses include Retry-After seconds plus X-RateLimit-* headers.
500Internal error. Retry later or contact support if the issue persists.