Skip to content
Coritan Docs

Change a service's plan

Move a service to another plan of the same product, such as another billing cycle, and see what the switch costs before you apply it.

View as Markdown

A service's plan is its price and how often you pay it. Each product in the catalogue has one plan for each billing cycle it sells, such as RX-2 (Monthly) and RX-2 (Annually), so changing plan moves a service to another billing cycle of the same product. The size, and everything that comes with it, stays the same. Coritan prices the switch for the whole days left in your current billing cycle.

To move to another size, order the new size and cancel the old service once you have moved across. Change an instance's plan or cancel it shows how for a Cloud Compute instance, and Get a bigger server for a game server or a database. A web service or a hybrid site on App Deployment that keeps an older price moves between pay as you go and monthly on its own Billing tab instead (Pay as you go or monthly per location). A service billed by use has no plan price to change, and Switch a service to usage billing moves one that keeps a price.

  • The service must be active. A suspended service changes plan only after you pay its open invoice (Failed payments and suspended services).
  • The service must keep a plan price. A service billed by use answers 409 with the code usage_billed: it has no price to change (How usage billing works).
  • A floating IP or DDoS Shield profile that your account plan pays for costs nothing, so it has no price to change (How account plans work).
  • Your account plan changes its billing period on the plan page, not here. This page does not move Pro or Business between monthly and yearly billing (Choose or change your account plan).
  • A switch can raise an invoice. Coritan pays it from your credit first, so add credit or keep a payment method ready.
  • Read the warning under How the switch is billed before you move to a longer billing cycle or away from hourly billing.
  1. Open the service's Billing tab. On the product's page, such as a server under App Deployment or an instance under Cloud Compute, open the service and select the Billing tab. You can also select Billing in the sidebar, then the Subscriptions tab, and select the service (Where a service opens). A service with no product page of its own, such as snapshot storage or a DDoS Shield profile, opens its own page under Subscriptions, with the same cards.
  2. On the Current plan card, select Change plan…. Snapshot storage also has Change plan… in the menu at the end of its row on the Storage plans card of the Snapshots page. A page opens at /dashboard/services/<id>/change-plan with the heading Change plan and a link back to the service.
  3. In New plan, choose the plan you want. Each plan is a card with its price for one billing cycle. The page shows the plan you move to and the one you are on in the summary beside it.
  4. Read What it costs today. It fills in as soon as you choose a plan, with no button to press. It says whether the switch is an Upgrade or a Downgrade, how many days are left in this cycle, and what the switch costs today (What the preview shows).
  5. Under Pay with, choose how to pay when your credit does not cover Due today. The button says "Apply change" when your credit covers it, and "Pay $X and change plan" when it does not: we add the missing amount to your credit with the method you chose, then apply the change. On a Cloud Compute instance, the dashboard first checks that the host can take the new plan.
  6. Select the button. A message confirms the change and you land back on the service's Billing tab. If a payment is still settling, the page says Your payment is still settling and links the invoice. Select Cancel or the link at the top to leave without changing the plan.
Credit for unused time
The value of the whole days left on your current plan: its price divided by the days in the current billing cycle, times the days left. The day in progress counts as used.
Charge for the new plan
The new plan's price for the same days, divided over the days in the new plan's billing cycle.
Due now
The charge less the credit. It is below zero when the new plan costs less per day.
Credit you receive
Shown for a downgrade. The part of the difference that reaches your credit balance. By default, Coritan keeps back one day, so the preview shows the number of creditable days beside it.

Coritan bills a switch by comparing the two plans' prices for one billing cycle.

The new plan has a higher price
Coritan raises an invoice, due at once, and pays as much of it as your credit covers. The new plan applies when the invoice is paid. The invoice is for Due now when that is above zero. When Due now is zero or less, the invoice is for the new plan's full price, with a line such as Plan upgrade (first 30 days). That happens when you move to a longer billing cycle, which costs less per day, and when less than one day of the cycle is left. The preview shows such a switch as a Downgrade.
The new plan has the same or a lower price
The new plan applies at once. When Due now is below zero, the difference goes into your credit balance, less one day by default (Credit you receive). When Due now is above zero, which happens when you move to a shorter billing cycle, Coritan raises an invoice for it that you pay yourself.

Your renewal date stays the same. From that date, each renewal invoice is for the new plan's price, and the service renews on the new plan's billing cycle.

Warning

Moving to a longer billing cycle, or from hourly billing to a monthly or longer plan, charges the new plan's full price now and leaves the renewal date where it was. The renewal invoice that follows, on the old date, is for the full new price as well. For an hourly service, whose renewal date has already passed, it follows within a day. Contact support before you make such a switch.

A service you move to hourly billing is charged from your credit by the hour from then on (How hourly billing works). It has no monthly cap: Coritan sets a cap only on a service ordered on an hourly plan.

A message confirms the change: Plan changed. when the new plan applies at once, or Pay the upgrade invoice to apply the plan change when an invoice waits for payment. Pay the invoice on the Invoices tab under Billing, and the new plan applies as soon as it is paid.

Once the new plan applies, the Current plan card shows it and the Activity table lists the change.

Important

An invoice from a plan change counts as any other unpaid invoice. If you leave it unpaid, the service is suspended one day after the invoice date by default, and later deleted (Failed payments and suspended services). Pay it, or ask support to cancel it.

No other plan to switch to
The product has no other plan on sale, so Change plan… does not appear. To move to another size, order it as a new service.
Your account plan pays for this service
Your account plan pays for this DDoS Shield profile, so Change plan… does not appear. When the plan stops paying for it, it renews at its own price, and you can change its billing cycle again (Order and use a custom profile).
Service is not active
The service is suspended, still being set up, or has ended. Pay its open invoice to lift a suspension, then try again.
This service is billed by what it uses, so it has no plan price to change.
The service is billed by use, so Change plan… has nothing to change. How usage billing works explains what it pays for.
Could not price the change
The preview failed. The message under it gives the reason, such as Pricing tier not found when the plan is no longer on sale. Choose another plan.
Could not change the plan
The change failed. The message under it gives the reason. Already on this plan means the service is on that plan now. On a Cloud Compute instance, The host cannot apply this plan: followed by a reason means the host refused the size, and Could not check that the host can take the new plan. Try again in a moment. means the check did not get an answer.
The preview shows a credit, but applying raises an invoice
The new plan has a higher price for one billing cycle, so Coritan bills it as described under How the switch is billed.
You paid the invoice, but the plan did not change
The service was suspended when the payment arrived, so the plan stayed as it was. Contact support with the invoice number.

service_ref is the service ID, or the UUID of the instance, server or floating IP behind it. The plans a service can move to are the other entries in its product's pricing list: read product_id from GET /services/{service_ref}, then read the product with GET /products/{product_id}. Each entry's id is a new_pricing_id.

GET /services/{service_ref}/upgrade-preview takes the plan as the query parameter new_pricing_id:

Shell
curl "https://api.coritan.com/api/v1/services/311/upgrade-preview?new_pricing_id=42" \
  -H "Authorization: Bearer $CORITAN_TOKEN"

This service is on a $4.99 monthly plan with 15 of 30 days left, and plan 42 is the same size at $13.47 a quarter:

JSON
{
  "credit_amount": 2.49,
  "charge_amount": 2.2,
  "net_amount": -0.29,
  "credit_estimate": 0.27,
  "creditable_days": 14,
  "days_remaining": 15,
  "days_in_cycle": 30,
  "change_type": "downgrade"
}

credit_amount, charge_amount and net_amount are Credit for unused time, Charge for the new plan and Due now. credit_estimate is the credit a downgrade pays out over creditable_days. change_type follows the sign of net_amount, so it can say downgrade for a switch that is billed as an upgrade, as it does here.

POST /services/{service_ref}/change-plan takes new_pricing_id in the body:

Shell
curl -X POST https://api.coritan.com/api/v1/services/311/change-plan \
  -H "Authorization: Bearer $CORITAN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"new_pricing_id": 42}'

The quarterly plan has the higher price, so Coritan raised an invoice for its full price, $13.47, and the account's credit did not cover it:

JSON
{
  "change_type": "upgrade",
  "net_amount": -0.29,
  "credit_amount": 2.49,
  "charge_amount": 2.2,
  "credit_issued": 0.0,
  "days_remaining": 15,
  "invoice_id": 5120,
  "status": "payment_required",
  "message": "Pay the upgrade invoice to apply the plan change"
}

status is applied when the new plan applies now, and payment_required when it waits for the invoice in invoice_id. Read the amount owed from GET /billing/invoices/{invoice_id} and pay it as Pay an invoice describes. credit_issued is the credit a downgrade added to your balance, in US dollars.

While a plan-change invoice is open, asking again for the same plan returns that invoice. Asking for another plan with a higher price cancels it and raises a new one.

Status detail Cause
400 Service is not active The service is not active.
400 Already on this plan new_pricing_id is the current plan.
400 New pricing must belong to the same product The plan belongs to another product.
400 Plan changes must stay within the same hardware tier The plan belongs to a product on another hardware tier.
404 Pricing tier not found No plan has that ID.
404 Target product not found The plan's product no longer exists.
409 Your account plan pays for this service, so it has no price to change. Your account plan pays for this floating IP or DDoS Shield profile. The preview answers the same.
409 {"code": "usage_billed", "message": "This service is billed by what it uses, so it has no plan price to change."} The service is billed by use. The preview answers the same.
409 Your account plan changes its billing period on the Plan page, or with POST /api/v1/account/plan. The service is your account plan, and the price is on the other billing period. The preview answers the same. Switch between monthly and yearly billing.

Before your account moves to a smaller account plan, POST /account/plan/preview counts the floating IPs and DDoS Shield profiles that the new plan would stop paying for, in renew_at_own_price as {entitlement, limit, used}. Once the plan stops paying for one, its plan can change again, and it renews at its own price from its next renewal (Moving to a smaller plan).

API operations on this page

MethodPathWhat it does
GET/api/v1/services/{service_ref}/upgrade-previewWhat changing the service to another price would cost now
POST/api/v1/services/{service_ref}/change-planChange the service to another price, prorated