> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vmarea.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Billing and lifecycle

> How charges, backups, snapshots, missed payments, deletion and restore work.

## Charges

VMArea is prepaid. Charges come out of your wallet.

* **Create** charges the first billing period, plus any add-ons, at once. If the balance is too low the API returns `402`.
* **Renewal** is charged on the due date. A late payment does not move the next due date.
* **Upgrade** (`POST /vms/{id}/upgrade`) charges the prorated difference for the rest of the current period at once. Downgrades are rejected.
* **Prices are locked** when you buy. A later catalog change does not alter an existing server or add-on.

Unused time is not refunded when you delete a server, cancel it or let it lapse. To stop paying, cancel at the end of the period. The server runs until then. See the [Refund Policy](https://vmarea.com/legal/refund) for the limited exceptions.

Read your balance and history with `GET /wallet` and `GET /wallet/transactions`, and invoices with `GET /invoices`. Top-ups are made in the dashboard.

## Daily backups

Daily backups are an add-on, priced per server.

* A backup runs every night.
* We keep 7 daily and 4 weekly restore points.
* With the add-on on, you can also take up to 5 manual backups per server with `POST /vms/{vmId}/backups`.
* `POST /vms/{vmId}/backups/enable` turns the add-on on. A new enablement charges the prorated rest of the current period.
* `POST /vms/{vmId}/backups/disable` cancels it at renewal. Backups stay active until then.
* `POST /vms/{vmId}/backups/{id}/restore` overwrites the server's disks with that backup.

A server without the add-on has no backups, and nothing can be restored after a deletion.

## Snapshots

A snapshot is a point-in-time copy kept next to the server. It is not a backup. You can keep up to 5 per server.

Snapshots are charged by the space they use. Each snapshot accrues its own cost at the per-GB price locked when it was created. The accrued amounts are added up and charged as one line on the server's next renewal. There are no separate daily charges to your wallet.

Roll a server back with `POST /vms/{vmId}/snapshots/{id}/rollback`.

## Missed payments

If the wallet cannot cover a renewal, days count from the due date.

| Day | Cloud server |
| - | - |
| 3 | Powered off. The disk and IP address are kept. Paying turns it back on. |
| 7 | Final warning email. |
| 10 | Deleted and the IP address released. |
| 24 | Gone, if it was in Recently deleted. |

Servers with deletion protection are powered off but not deleted automatically. These timings can change, and the `lifecycle` object on `GET /services` always shows the dates that apply to a service.

## Deleting and restoring

`DELETE /vms/{id}` removes a server.

* **With the Daily backup add-on**, the server moves to Recently deleted for 14 days. Its newest nightly backup is kept. Changes made after that backup are lost.
* **Without the add-on**, the deletion is final.
* Pass `permanent=true` to delete with no restore either way.
* A protected server returns `409`. Remove protection first with `PATCH /vms/{id}`.

To restore:

1. `GET /vms/recently-deleted` lists servers that can still be restored, with `restorableUntil` and `restorePrice`.
2. `GET /vms/{id}/restore-quote` breaks down the price: one billing period at the locked price, the add-on, and any unpaid invoices of the old server.
3. `POST /vms/{id}/restore` creates a replacement server from the final backup and charges the wallet. Pass `expectedTotal` from the quote. If the price changed you get `409` with `QUOTE_CHANGED`. A low balance returns `402` with the shortfall.

The replacement has a new id and a new IP address. It keeps the name and hostname. The restore price is a new charge, not a reversal of the earlier one.

## Services

`GET /services` and `GET /services/{id}` return every service on the account with its `status`, `billing` and a `lifecycle` object. `lifecycle.state` is one of `ACTIVE`, `ENDING`, `SUSPENDED`, `RECENTLY_DELETED` or `GONE`. `nextStep` and `nextStepAt` tell you what happens next and when.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.