Sign Up

Billing

Overview of your organization's billing, wallet, and usage details.

Daytona provides an overview of your organization's wallet and spending. Daytona uses a pay-as-you-go billing model where you are charged for the resources your sandboxes use, with the guaranteed resources you reserve as a floor. For information on sandbox resource limits and rate limits, see limits. Billing is scoped to the organization.

Sandbox billing

Sandboxes are billed per minute for three resources while a sandbox is running or transitioning.

ResourceUnitBilled quantity
CPUcore-hourThe greater of measured CPU time and the guaranteed cpu reservation over the same window
MemoryGiB-hourThe greater of measured memory and the guaranteed mem_mib reservation over the same window
DiskGiB-hourMeasured disk in use

CPU and memory usage within the guarantee is billed at the guarantee; usage above it, up to the sandbox's resource limits, is billed as measured. A sandbox with a fixed shape, where every limit equals its request, is billed for its full CPU and memory reservation, since usage never exceeds it. Disk is always billed as measured.

Stopped, paused, and deleted sandboxes are not metered. Bucket volume traffic is billed per uploaded GiB, downloaded GiB, and 1,000 requests, independent of sandbox class.

Pricing dimensions

The price of each resource depends on what you requested at create time. Each dimension applies a multiplier to the base price; the multipliers compound.

DimensionParameterValues
Region scoperegionGlobal (1.0), geo (1.1), macro (1.21), pinned to a single region (1.331)
Spotspotfalse (1.0), true (0.7)
CPU typecpu_typeNot requested, zen3, arrowlake1, graviton, graviton3 (1.0); zen4, arrowlake2, graviton4 (1.15); zen5, zen5c (1.3)

A sandbox that omits a hardware preference is billed at the baseline for that dimension, even if placement lands on premium hardware. Forked and restored sandboxes inherit the preferences of their source. See Linux sandbox parameters for how to set these values.

Plan

Get the plan

Get the plan: the organization's current plan, any pending change, and the plan catalog.

curl 'https://api.daytona.com/orgs/ORGANIZATION_ID/billing/plan' \
  --header 'Authorization: Bearer YOUR_OIDC_TOKEN'

Change the plan

Change the plan. Self-serve changes move an organization between the Starter and Team plans; the Enterprise plan is arranged with sales. A change to Team applies immediately; a pre-paid organization needs a payment method on file first. A change from Team to Starter takes effect at the end of the billing period and shows as pending until then.

curl 'https://api.daytona.com/orgs/ORGANIZATION_ID/billing/plan' \
  --request POST \
  --header 'Authorization: Bearer YOUR_OIDC_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{ "plan": "team" }'
FieldTypeDescription
planstringAccepts starter or team. The value enterprise returns HTTP 400 with contact_sales. A change to team for a pre-paid organization needs a payment method.

Wallet

Daytona Wallet ↗ is the central hub for managing your organization's wallet, including balances, credit consumption, and payment methods. New organizations are provisioned with the billing provider within a few minutes of creation; until then the wallet shows a provisioning notice.

Balance

Balance displays the credit balances available to your organization.

FieldDescription
Total balanceThe sum of free and paid credits.
Free creditsThe amount of granted credits, such as coupons or card-connected credits.
Paid creditsThe amount of purchased credits.
Spent this monthUsage charged in the current billing period.
Amount due this monthThe open amount of the current invoice, shown only when non-zero.

Daytona consumes free credits before paid credits. When both balances are exhausted, the paid balance shows the amount due as a negative number.

  1. Go to Daytona Wallet ↗
  2. Navigate to the Balance section
daytona billing wallet --org ORGANIZATION_ID

Credit balances

Credit balances itemizes every credit grant and top-up.

FieldDescription
NameThe grant or top-up.
TypeFree or paid.
RemainingThe unspent amount.
GrantedThe original amount.
ExpiresThe expiration date, if any.
Applies toThe products the credit can pay for.
  1. Go to Daytona Wallet ↗
  2. Navigate to the Credit Balances section
  3. Click Show
# Paginated; pass the returned next_page as --cursor for more rows
daytona billing balances --org ORGANIZATION_ID --limit 25
FlagTypeDescription
--limitintAccepts 1 to 100; the billing service rejects other values.

Payment method

Payment method connects your wallet to a card, allowing you to add funds to your balance and pay invoices. Payment methods are managed through the hosted billing portal. Personal organizations receive a one-time grant of free credits when the first card is connected.

  1. Go to Daytona Wallet ↗
  2. Navigate to the Payment methods section
  3. Click Add payment method, or Edit if a card is already on file
  4. Follow the prompts in the billing portal
daytona billing payment-methods --org ORGANIZATION_ID

# Hosted billing portal URL for managing payment methods and billing details
daytona billing portal-url --org ORGANIZATION_ID

Automatic top-up

Automatic top-up adds credits to your wallet when the balance drops below a threshold. Amounts are in dollars: the threshold must be at least $10, and the target must exceed the threshold by at least $10. Automatic top-up is available for pre-paid organizations and is disabled automatically after a failed payment; update the payment method and enable it again.

  1. Go to Daytona Wallet ↗
  2. Navigate to the Automatic top-up section
  3. Add or update the when balance is low and bring balance to values
  4. Click Save
# Amounts in dollars
curl 'https://api.daytona.com/orgs/ORGANIZATION_ID/billing/wallet/automatic-top-up' \
  --request PUT \
  --header 'Authorization: Bearer YOUR_OIDC_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{ "threshold_amount": 20, "target_amount": 100, "disabled": false }'

One time top-up

One time top-up buys wallet credits by card on a hosted checkout page. The minimum is $10 (1000 cents) and the maximum $999,999.99. A payment method must be on file.

  1. Go to Daytona Wallet ↗
  2. Navigate to the One-time top-up section
  3. Select a preset amount or enter a custom amount
  4. Click Top up
  5. Complete the payment on the checkout page
# Amount in cents; returns a checkout URL
daytona billing top-up 5000 --org ORGANIZATION_ID

Redeem coupon

Redeem a coupon to add free credits to your wallet. Each coupon can be redeemed once per organization. Coupon credits may carry an expiration date, shown in credit balances.

  1. Go to Daytona Wallet ↗
  2. Navigate to the Redeem coupon section
  3. Enter the coupon code
  4. Click Redeem
curl 'https://api.daytona.com/orgs/ORGANIZATION_ID/billing/redeem-coupon/COUPON_CODE' \
  --request POST \
  --header 'Authorization: Bearer YOUR_OIDC_TOKEN'

Balance notification

Balance notification emails the organization's billing email address when the wallet balance drops below a threshold, or the creator's email when no billing email is set.

  1. Go to Daytona Wallet ↗
  2. Navigate to the Balance notification section
  3. Enable the notification and set the threshold in dollars
  4. Click Save
# Threshold in dollars
curl 'https://api.daytona.com/orgs/ORGANIZATION_ID/billing/balance-notification' \
  --request PUT \
  --header 'Authorization: Bearer YOUR_OIDC_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{ "enabled": true, "threshold_amount": 10 }'

# Billing email address for notifications and receipts
curl 'https://api.daytona.com/orgs/ORGANIZATION_ID/billing/email' \
  --request PUT \
  --header 'Authorization: Bearer YOUR_OIDC_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{ "billing_email": "finance@example.com" }'

# Read the current rule: { "enabled": true, "threshold_amount": 10 }
curl 'https://api.daytona.com/orgs/ORGANIZATION_ID/billing/balance-notification' \
  --header 'Authorization: Bearer YOUR_OIDC_TOKEN'

# Read the billing email. effective_email is the address mail goes to: billing_email, or the creator's email when unset
curl 'https://api.daytona.com/orgs/ORGANIZATION_ID/billing/email' \
  --header 'Authorization: Bearer YOUR_OIDC_TOKEN'

Billing information

Billing information displays the name, email, phone number, and address on file with the payment provider. It is read-only in the dashboard; edit it through the billing portal.

  1. Go to Daytona Wallet ↗
  2. Navigate to the Billing info section
  3. Click Edit to open the billing portal
daytona billing info --org ORGANIZATION_ID

Invoices

Invoices are generated per billing period and for each top-up.

FieldDescription
NumberThe invoice identifier.
DateThe date the invoice was issued.
Due dateThe date the invoice is due.
TotalThe amount of the invoice.
StatusThe status of the invoice.
TypeThe type of the invoice.

An unpaid invoice shows a warning with a Pay button. If a pre-paid organization leaves an invoice unpaid past the grace period, the organization is suspended until it is paid. Post-paid organizations with a contract are never suspended for unpaid invoices.

  1. Go to Daytona Wallet ↗
  2. Navigate to the Invoices section
  3. Click View to open the invoice PDF, or Pay for an open invoice
daytona billing invoices --org ORGANIZATION_ID

daytona billing unpaid-invoices --org ORGANIZATION_ID

daytona billing invoice pdf INVOICE_ID --org ORGANIZATION_ID --out invoice.pdf

# Payment URL for an open invoice
daytona billing invoice payment-url INVOICE_ID --org ORGANIZATION_ID

Charges

Charges displays all payment attempts on your organization, including failed attempts. A receipt PDF is available for each successful charge.

FieldDescription
DateThe date the charge was attempted.
DescriptionThe description of the charge.
AmountThe amount of the charge.
StatusThe status of the charge.
daytona billing charges --org ORGANIZATION_ID

Spending

Daytona Spending ↗ provides a summary of resource usage for the selected project and the organization's billing periods. Reading usage requires the spending read permission.

Resource usage

Resource usage summarizes the selected project's measured usage over a date range.

MetricDescription
CPUTotal CPU time, in core-seconds.
MemoryTotal memory, in GiB-hours.
NetworkTotal bytes sent and received.
Disk (peak)The highest disk usage observed.
  1. Go to Daytona Spending ↗
  2. Select a project and a date range
# Hourly usage for the project over the last day (default)
curl 'https://api.daytona.com/usage/report' \
  --header 'Authorization: Bearer YOUR_API_KEY'

# Daily usage for a date range
curl 'https://api.daytona.com/usage/report?start=2026-09-01T00:00:00Z&end=2026-09-08T00:00:00Z&resolution=d' \
  --header 'Authorization: Bearer YOUR_API_KEY'
FieldTypeDescription
startstringSets the inclusive start of the window as an RFC 3339 timestamp. The default is one day before end. A value that does not parse falls back to the default.
endstringSets the exclusive end of the window as an RFC 3339 timestamp. The default is now. A value that does not parse falls back to the default.
resolutionstringSets the resolution, h for hourly or d for daily. Any other value is treated as hourly. The default is h.

Usage timeline

Usage timeline charts one metric over the selected range: CPU, memory, or network.

Per-sandbox usage

Per-sandbox usage displays the same measurements broken down by sandbox: Sandbox, CPU core-s, Memory GiB-h, Network, and Disk (peak).

# Live usage for one sandbox
daytona sandbox usage SANDBOX_ID

# Usage history for one sandbox, per minute; the CLI has no hourly resolution
daytona sandbox usage SANDBOX_ID --history

Billing period

Billing period shows the amount owed per product for the current and past periods.

  • Metric, Product, Units, Cost: the current period's charges per resource and sandbox class
  • Period, Issued, Total: the closed past periods
# Current billing period
daytona billing usage --org ORGANIZATION_ID

# Past billing periods
daytona billing usage --org ORGANIZATION_ID --past --periods 3
FlagTypeDescription
--periodsstringDefaults to 12. Accepts 1 to 60. Applies only with --past. The CLI rejects --periods without --past.

Suspension

Daytona suspends a pre-paid organization when its balance is depleted or when an invoice stays unpaid past the grace period. While suspended, creating, starting, resuming, restoring, and forking sandboxes fails with HTTP 402 and an organization suspended error; already running sandboxes are not affected. The suspension lifts automatically once its cause is resolved: a top-up or coupon that restores the balance, or payment of the unpaid invoice. The dashboard shows the suspension and its reason on the wallet page.