# How Object Storage is billed

> What your plan's storage allowance covers, how we measure what your buckets hold, and what happens when you go over or change plan.

Source: https://docs.coritan.com/object-storage/usage-and-billing/

In the dashboard:

- /dashboard/storage/…/overview: https://www.coritan.com/dashboard/storage
- /dashboard/storage/…/billing: https://www.coritan.com/dashboard/storage

Each Object Storage service is on a plan. The plan's price covers a storage *allowance*, and you pay that price on the billing cycle you chose when you ordered. We measure what your buckets hold every hour, and the service's **Overview** tab shows it against the allowance.

## What the plan's price covers

The allowance is the storage included in the price. The order page shows it on each plan, followed by the plan's rate for storage above it. On the service's **Overview** tab, the **Service** card shows it as **Included**. A GB is 1024³ bytes.

- The allowance covers all the service's buckets together, in every region they are in.
- Buckets and access keys have no price of their own. A service holds up to 25 buckets.
- A plan without an allowance shows `Unmetered` under **Included**, and the **Storage** figure says `No allowance on this plan`. Nothing on such a plan counts as above the plan.

## How we measure your buckets

Every hour, we list every object in each of the service's buckets and record their total size and their number. We measure only what the buckets hold. Requests, uploads and downloads are not counted.

- The service's figure adds up the buckets it holds now. It appears as **Storage** on the **Overview** tab and in the list of services, and as `used_bytes` in the API.
- Every size and object count comes from the last measurement, so the figures trail uploads and deletions by up to an hour.
- A bucket you delete leaves the figure at once. Objects you delete leave it at the next measurement.
- A new bucket counts from its first measurement, up to an hour after you create it.

The **Stored over time** chart on the **Overview** tab shows the measurements of the last `7d`, `30d` or `90d`, added up across the service's buckets. It includes a bucket you deleted for the hours before the delete, until we remove that bucket's history 7 days later. `No measurements yet` means no bucket was measured in the window you chose ([The usage chart is empty](/object-storage/troubleshooting/#the-usage-chart-is-empty)).

## When your buckets hold more than the allowance

Uploads go on working above the allowance. We do not refuse a request or delete an object because the service is above it.

Each hour, after the measurement, we record how many GB the service holds above its allowance, or zero when it is within it. We keep this record for every active or suspended service that has at least one bucket.

The plan sets a rate per *GB-month* for storage above the allowance. A GB-month is one GB held for a whole month, so 10 GB above the allowance for half a month makes 5 GB-months. The **Service** card shows the rate as **Above the plan**.

While the last measurement is above the allowance:

- A warning at the top of the **Overview** tab gives the amount, such as `12.5 GB above the plan`, and the plan's rate per GB-month.
- On the **Stored over time** chart, the bars above the dashed line that marks the allowance are red.
- `overage_gb` in the API is above zero.

Each invoice lists its charges line by line, as [Read an invoice](/billing/invoices/#read-an-invoice) describes.

## Bring the storage back within the allowance

The warning suggests two ways:

- Delete what you no longer need: objects in the object browser ([Delete objects and folders](/object-storage/objects/#delete-objects-and-folders)), or whole buckets ([Delete a bucket](/object-storage/buckets/#delete-a-bucket)).
- Move to a larger plan, as the next section describes. The warning's **Change plan** button opens the **Billing** tab.

The warning goes once the service's figure is back within the allowance. That happens at once when you delete a bucket, and after the next measurement when you delete objects.

## What a plan change does

Each Object Storage size is a product of its own, with a plan for each billing cycle it comes in. **Change plan…** on the **Billing** tab moves the service to another billing cycle of the same size, and the allowance stays the same. We prorate the switch to the day, and the dialog previews what it costs before you apply it ([Change a service's plan](/billing/change-plan/)). When the size comes in one billing cycle only, the tab says `No other plan to switch to`.

A larger or smaller allowance takes a new service. Order one on the plan you want, copy your objects across, then cancel the old service ([Change the plan](/object-storage/order-object-storage/#change-the-plan)). You pay for both services until the old one ends.

## What the Billing tab shows

The **Billing** tab shows the plan and what you pay for it. The **Current plan** card gives the **Plan**, its **Price** and the **Next renewal** date, and the **Activity** table lists setup, renewals and plan changes. The tab does not show storage, which the **Overview** tab covers. [Manage the plan on the Billing tab](/object-storage/order-object-storage/#manage-the-plan-on-the-billing-tab) describes each card, including **Cancel service**.

The plan renews on the date under **Next renewal**, with an invoice for its price ([How you are billed](/billing/#how-you-are-billed)).

## Limits

- Each service has its own allowance. Spare room on one service does not cover the buckets of another.
- A plan change keeps the allowance.
- We measure once an hour, so no figure is newer than the last measurement.
- The API returns up to 366 days of measurements, and the chart shows up to 90.

## With the API

`GET /api/v1/client/object-storage/{service_id}` returns the service with `quota_bytes`, `used_bytes`, `overage_per_gb_month` and `overage_gb`, as [Object Storage](/object-storage/#with-the-api) describes.

`GET /api/v1/client/object-storage/{service_id}/usage` returns the same figures with the measurements behind the chart. `days` sets the window, from 1 to 366 days, and is 30 when you leave it out.

```bash
curl "https://api.coritan.com/api/v1/client/object-storage/1207/usage?days=7" \
  -H "Authorization: Bearer $CORITAN_TOKEN"
```

```json
{
  "quota_bytes": 268435456000,
  "used_bytes": 281857228800,
  "object_count": 1284,
  "bucket_count": 2,
  "overage_gb": 12.5,
  "days": 7,
  "series": [
    {"measured_at": "2026-09-19T10:00:00", "bytes": 279172874240, "objects": 1270},
    {"measured_at": "2026-09-19T11:00:00", "bytes": 281857228800, "objects": 1284}
  ]
}
```

`series` has one point for each hourly measurement in the window, oldest first, in UTC. Each point adds up `bytes` and `objects` across the service's buckets. `overage_gb` is what the buckets held above `quota_bytes` at the last measurement, in GB of 1024³ bytes, and is `0` on a plan without an allowance. A service ID that is not an Object Storage service on your account answers `404` with `Object storage service not found`.

## API

- `GET /api/v1/client/object-storage/{service_id}`: Get service (https://docs.coritan.com/api/reference/client/object-storage/#op-get-api-v1-client-object-storage-service-id)
- `GET /api/v1/client/object-storage/{service_id}/usage`: Stored bytes and objects over time, as the hourly meter recorded them (https://docs.coritan.com/api/reference/client/object-storage/#op-get-api-v1-client-object-storage-service-id-usage)
