How Billing Works

Bahriya charges based on the actual compute resources your containers consume. Billing is per minute, per region, with a 60-second minimum and rounding up to the next whole minute for every runtime period and every cron execution.

Updated 8 Jun 20263 min read

Bahriya charges based on the actual compute resources your containers consume. Billing is per minute, per region, with a 60-second minimum and rounding up to the next whole minute for every runtime period and every cron execution.

What you are billed for

Billing is based on two resources:

ResourceUnitMeasured from
CPUMillicore-minutes (priced as fractional millicore-hours)Your container's min CPU × replicas running
MemoryGigabyte-minutes (priced as fractional GB-hours)Your container's min memory × replicas running

These are billed per region. A container running in 3 regions is billed 3× for the same resource configuration.

How usage is tracked

Bahriya tracks runtime periods — contiguous windows of time when your container is in the running state. A period opens when a successful deployment completes and closes when the container is redeployed, fails, or is deleted.

Runtime is metered per minute:

  • Every period is rounded up to the next whole minute with a 60-second minimum.
  • A 5-second run is billed for 60 seconds.
  • A 65-second run is billed for 120 seconds.
  • A long-running container that has been up for 8 hours is billed for 8 hours.

A rollup job runs every hour and writes a usage record for each completed hour bucket your container overlapped. Each record captures:

  • The resource (CPU or memory)
  • The quantity consumed (in fractional hours, derived from billed minutes)
  • The unit price for that region class
  • The total amount for that hour

Usage records are idempotent — if the rollup runs multiple times for the same hour, it will never double-count.

Autoscaling and billing

If autoscaling is disabled, you are billed for your configured min replicas at all times the container is running.

If autoscaling is enabled, every replica is billed per minute for the time it is actually running. A 90-second burst of extra replicas is billed for 120 seconds, not for a full hour. There is no charge for replicas that the autoscaler scales away.

Region class pricing

Each region has a class (standard or premium) that determines the per-unit price. Premium regions have higher infrastructure costs and therefore higher rates. You can see the region class on the pricing page and in the console.

Cron jobs

Cron job executions are billed under exactly the same per-minute model. Every execution is rounded up to the next whole minute with a 60-second minimum. There is no charge between executions, and suspending a cron job stops billing immediately.

Billing cycle

Usage accumulates continuously and is rolled up every hour. Invoices are generated monthly and cover all usage within the billing period. The invoice includes a breakdown by container, region, and SKU (CPU and memory separately).

Pricing transparency

You can preview the estimated monthly cost of a container configuration on the pricing calculator before deploying. The estimate uses your chosen regions, CPU class, CPU and memory values, replica counts, autoscaling settings, and cron cadences to show a cost breakdown.