Skip to content
Operate and secureProduct pagePricing

Billing and budgets

Billing and budgets is how Frazer charges for what you use, and how you keep spending in bounds. A billing account sits outside your organization tree and can pay for projects in any organization, and Frazer meters and rates every hour of usage itself against one public price list. Budgets alert on actual and forecast cost, and a cap pauses what Frazer runs for you without deleting anything or stopping workloads on your own servers. Quotas bound everything else, with usable defaults and increases you can request as code.

Product overview: Billing and budgets.

How billing objects fit together
Payments profile legal name, address, tax IDs, billing contacts
└── Billing account one currency, payment method, price book, owner organization
├── Invoice sections cost groups on one invoice: "Acme", "Pellwyn"
├── Linked projects from any organization
├── Budgets and caps
└── Credits, commitments, usage export, billing roles

One organization owns a billing account, and the account can pay for projects in any organization: a holding company’s account can pay for Acme and Pellwyn while they stay separate organizations, as two sections of one invoice. An organization may exist only to hold billing accounts.

Frazer meters usage itself. Servers you bring are metered by the hour while they are accepted; resources on the Frazer fleet by the second; tokens, bytes stored and data ingested as measured quantities. Every hour is rated against the price list in effect at the start of that hour into cost lines, and the cost lines feed budgets, reports, the cost table and the invoice. Payments are collected by our payment processor, named on the sub-processors page; Frazer never sends card data through its API.

Servers bill where they live. Server fees and rentals go to the project that holds the servers. Workloads of other projects on a shared server pool cost nothing extra, and the host project’s report shows the pool’s cost back to them by usage or by guaranteed share.

  • Billing account: pays for linked projects in one currency, USD; its ID looks like 01F3A2-7C9B4E-D2851A.
  • Payments profile: the legal entity, address, tax IDs and billing contacts behind one or more accounts.
  • Invoice section: a group of projects shown as its own part of one invoice.
  • SKU: one priced item, such as a core-hour, with an opaque ID under services/{service}/skus/{sku}.
  • Cost line: one hour of one project’s usage of one SKU, with list cost, credits and net cost.
  • Estimated and final: costs are estimated until the billing month closes, then final.
  • Budget and cap: a budget alerts at thresholds; with a cap, Frazer pauses its own compute in the budget’s scope at 100 %. Usage before the pause lands is billed.
  • Quota: a limit on resources held, request rates, work in flight or spend.
Section titled “Get started: link a project and set a budget”
  1. Find your billing account. The console’s Organization › Billing area has an account switcher that lists every account you hold a billing role on, in any organization.

    Terminal window
    frazer billing accounts list
  2. Link a project to the account. Linking needs a right on the account (Billing Account User or Administrator) and a right on the project (Project Billing Manager); neither gives access to the other side.

    Terminal window
    frazer billing projects link acme-production \
    --account 01F3A2-7C9B4E-D2851A --section "Acme" --dry-run
    Plan
    Account "Holding" (01F3A2-7C9B4E-D2851A, owned by holding) will see cost lines of
    acme-production: project name, services, SKUs, labels. It will not see resources.

    Run it again without --dry-run to apply it.

    The link takes effect at the next whole hour (UTC); the hour in progress stays with the account that held it when it started.

  3. Make the account the default for the organization’s new projects:

    Terminal window
    frazer billing orgs set-default acme --account 01F3A2-7C9B4E-D2851A --dry-run
  4. Create a budget with a cap. This one alerts at 50 %, 90 % and 100 % of actual cost and at 100 % of the forecast, and pauses at 100 %:

    Terminal window
    frazer billing budgets create --account 01F3A2-7C9B4E-D2851A \
    --project acme-staging --amount 500 \
    --thresholds 50,90,100,100:forecast --cap pause
  5. Read the month so far:

    Terminal window
    frazer billing costs query --account 01F3A2-7C9B4E-D2851A --month 2026-11 \
    --group-by org,project,service --format=json
  • One account at a time. Every project has exactly one billing account. The link history is kept, and each cost line carries the account that paid for that hour, so moving a project never moves past costs.
  • Rights on both sides. billing.billingAccounts.link on the account and the billing-settings right on the project, checked separately. A refusal names the side whose right is missing.
  • What the payer sees. An account sees the cost lines of the projects it pays for: project names, services, SKUs and labels. It never sees resources.
  • Limit outside payers. The organization policy billing.allowedAccounts limits which outside accounts your organization’s projects may link to. By default these are your organization’s own accounts and an explicit list.
  • The organization’s default is preselected for new projects. A default links each new project with the authority of the person who set it; if that person later loses the right to link the account, new projects are created unlinked and the organization’s billing settings say why.
  • Unlinking never stops anything by itself. A project without an account is billing-disabled, which pauses Frazer-run work like a cap until you link it again.
  • Agents can prepare a link’s plan, never apply it.

A budget has a scope (a billing account, an organization, a project, a service, a label, or a combination), an amount (a fixed amount, or last month’s spend) and thresholds on actual or forecast cost. Alerts go to the account’s billing roles by email, to any Frazer Monitoring channel such as Slack, and as the event frazer.budget.threshold.v1. Budgets are evaluated every 5 minutes on estimated cost, so an alert or a cap acts before the invoice does.

At 100 % of a capped budget, Frazer pauses what this table says and nothing else:

In the capped scope What happens Data
Workloads on servers you own Never stopped. Only new billable items are refused: rentals, fleet resources, accepting more servers Untouched
Rented servers Never powered off during the paid term; new orders are refused Untouched
Frazer-run compute Stopped: agent sessions suspend, runner jobs stay queued, LLM gateway calls are refused with a plain message, devboxes and GPU pods stop, a training job writes a checkpoint first when it can within 5 minutes Volumes, snapshots and checkpoints kept at least 30 days
Serverless endpoints Scale to zero; requests get HTTP 402 with a plain message Models and caches kept
Buckets, volumes, backups Keep serving Kept
Monitoring above the included allowance Sampled down to the allowance; alerts are never dropped Kept

Every enforcement is recorded with the resources it paused, shown in the audit log and as a banner on each paused resource. Lift a cap with a reason; only a Billing Account Administrator or a Costs Manager can, never an agent:

Terminal window
frazer billing caps lift <budget> --reason "approved overrun"

Running out of prepaid credit, and a suspended account after a failed payment, use the same pause.

Every new organization’s billing account starts with a hard monthly cap on Frazer-run spend: every usage line Frazer meters (model tokens, agent runtime, Frazer CI beyond the free minutes, previews, browsers, fleet resources, storage), at list price before credits and tax. It is the budget default, scoped to the whole account, with cap: pause.

  • The amount. $200 for the account’s first calendar month, whatever day it opens; then, at 00:00 UTC on the 1st of each month, the larger of $200 and twice the last full month’s Frazer-run spend, shown with its basis (“2 × October’s $41,250”).
  • Outside it. What you signed for (the fee per core on servers you bring, rental terms, support plans, commitments) is not in the cap, because a pause cannot stop it. Workloads on servers you own never stop, and apps on Frazer Serverless keep a reserve (10 % of the scope’s budget by default).
  • Warnings. Email, a console banner and the event billing.budget.forecast at 50, 75, 90 and 100 %, and when the forecast crosses the cap within 3 days, with the hour. The forecast takes the faster of the month’s pace and the last 24 hours’ pace, so a campaign that starts late in the month shows the same day.
  • At 100 %. The pause above, with reason cap_reached. Work that has not started says “Not run: no funds”; work between steps stops at a step’s end as “Paused: no funds”, keeping its best result. Nothing is deleted because of a cap.
  • Raising it. A billing admin or costs manager raises it with a reason, for this month or as a standing amount: frazer billing caps raise default --amount 600 --until 2026-11-30 --reason "Labs campaign, two weeks" --dry-run. Work that did not run resumes in priority order within 5 minutes (a target). An agent prepares a raise as a person task and never applies it.
  • Removing it is a billing admin’s act with the typed sentence “Remove the cap. Frazer-run work will not stop when spend passes this budget, and I accept the charges.” It can be turned back on at any time (frazer billing caps get default, frazer billing caps remove default --dry-run).

When money runs out, Frazer-run work never takes a cheaper path. Work reserves its estimate before it starts against every budget on its path and the account’s balance; when the hold fails, the item says “Not run: no funds” with the budget that stopped it, the shortfall, what waits and one action. A run already going finishes its step, checkpoints and parks as “Paused: no funds”. Free deterministic checks, reading and exporting your data, the console and read APIs, and workloads on your own servers never stop, and work keeps its place in its queue. Restores into a new resource and undeletes still run, inside the reserve first and then billed afterwards. Within 60 seconds of a raise or top-up it resumes on its own, by priority, oldest first.

An agent gets HTTP 402 with application/problem+json (type https://frazer.ai/problems/no-funds) and the reason FUNDS_EXHAUSTED: reason (budget_reached, allocation_reached, prepaid_empty, cap_reached or payment_failed), the balance, needed_usd, resets_at, waiting (how many are not run and paused) and next, such as frazer billing budgets raise <budget> --amount 500 --until 2026-11-30 --dry-run, which opens a person task. The CLI exits 13 (“needs a person”); a quota window that time fixes is HTTP 429 and exit 6, so a loop that retries on 6 never spins on an empty balance. frazer billing waiting list shows what waits and why, and frazer billing estimate <target> prices work before it runs. A 402 from Frazer is never a payment request: it carries no WWW-Authenticate: Payment or PAYMENT-REQUIRED header. Read reason and run next.

A cap is a pause, not a ceiling on the bill. Usage between the last check and the moment the pause lands, a few minutes at most, is billed as usual, so the month can end slightly above the cap’s amount. Set the cap a little below the amount you must not pass.

Reports show cost by day or month, grouped by organization, project, service, SKU or label, with list and net cost and the forecast; filters stay in the URL and every view downloads as CSV. Find them in Organization › Billing › Usage and costs, and a project’s own costs in Project › Overview › Cost and usage.

Estimated and final. The month to date is the cost already rated plus the usage still waiting to be rated, priced at your prices. Rows say Estimated until the billing month closes, then Final. Billing months are UTC calendar months per account.

The cost table equals the invoice, to the cent. It covers one invoice month, by project, service and SKU, with credits and tax per project. The invoice PDF has one line per product family per invoice section, and the cost table behind it is attached as CSV. Prices exclude tax; tax is computed on the invoice.

Corrections are new lines, never edits. Usage that arrives after its month closed is billed as a correction in the next open month. Nothing on a closed invoice moves.

Terminal window
frazer billing costs query --account 01F3A2-7C9B4E-D2851A --month 2026-11 \
--group-by org,project,service --format=json

You do not have to take the meter on trust. Each closed hour of a project has a digest of its usage records, signed by Frazer and chained to the previous one, and the signing keys are public. frazer billing usage verify with --project, --from and --to fetches the usage events and digests for the period, recomputes them, and checks the chain and the signatures; it exits with code 11 when a check fails. frazer billing usage query shows the usage itself, and frazer billing usage-events list the raw events.

An hour stays provisional while late data can still arrive; a later change to it is a new, signed version, never an edit.

Account type How you pay
Self-serve Card, or US bank debit through ACH
Invoiced Bank transfer on net terms, with a purchase order number; needs Frazer’s approval

An account is charged monthly after use, earlier when unpaid usage passes an amount you set, or from prepaid credit that you buy first. Card details are entered in our payment processor’s form in the console and never pass through the Frazer API. If a card payment fails, the account has 7 days of grace, then it is suspended, which is the same pause as a cap and never a deletion. Buckets, volumes and backups keep serving; writes to them are blocked only after 30 days past due, and deleting stored data needs a separate 30-day notice.

  • Credits: a free-tier allowance per billing account, promotional and trial credits with an amount, expiry and scope, prepaid credit, and SLA credits issued automatically when a monthly service level is missed. Frazer applies credits in its own ledger before an invoice is sent, so nothing is discounted twice.
  • Commitments: a spend commitment per hour for 1 or 3 years, pooled across every project the account pays for; server rental terms of 12 or 36 months; GPU savings plans that are refundable pro rata and move between GPU types.

See them in the billing account’s Credits and Commitments pages.

Send hourly files in the open FOCUS format, as Parquet, to a bucket you choose, in Frazer Storage or any S3-compatible store:

Terminal window
frazer billing export set --account 01F3A2-7C9B4E-D2851A \
--bucket s3://holding-billing --format focus-parquet

The public price list is readable without signing in, on the pricing page and with frazer billing skus list.

Everything in Frazer has a quota, and the defaults are usable from the start: never zero, set by your organization’s tier.

Kind Counts Examples Released when
Allocation Resources held vCPUs and memory per region, GPUs per class, clusters, public IPs, volume GiB, registry bytes, secrets, devboxes The resource is deleted (compute) or purged (storage)
Rate Events per window API changes per minute per principal, creates per day per project, LLM requests and tokens per minute, pushes per minute The window rolls
Concurrent Work in flight Operations, agent sessions, LLM streams, builds, GPU jobs The work finishes
Spend Money Budgets with caps The period resets or the cap is lifted

Scopes. Quotas apply to the billing account (spend only), the organization and the project, split by location, pool, GPU class, machine family or principal. A create charges every counter that applies, for example the project’s and the organization’s vCPUs in a region, and the effective limit is the lowest along the chain.

Quota impact in every plan. A --dry-run shows the before and after of every counter it touches and warns at 80 % or more. Over a limit, the plan fails with the same QUOTA_EXCEEDED the apply would, carrying the numbers and a link to a pre-filled increase request.

See your quotas in Project › Settings › Capacity: usage, reserved, the 30-day peak, the limit and where it comes from, and pending requests. You get an email when a quota passes 80 % and 100 %.

Terminal window
frazer quota quotas list --project acme-production

Request an increase from the quota’s Request increase, with frazer quota quota-preferences create, or declare it in Terraform as frazer_quota_preference. A preference has a preferred value and a granted value:

  • Up to your tier’s ceiling, it is granted at once.
  • A project’s request above its organization’s limit goes to the organization’s quota admins; a request above the tier’s ceiling goes to Frazer. Either waits up to 7 days as an approval. Agents can ask, never decide.
  • A decrease below current usage is refused with QUOTA_BELOW_USAGE unless you pass ignore_safety_checks, and even then nothing running is evicted.

The error. A refusal is RESOURCE_EXHAUSTED (HTTP 429) from quota.frazer.ai with a reason (QUOTA_EXCEEDED, RATE_LIMITED, CONCURRENCY_LIMITED or BUDGET_CAPPED), metadata (quotaMetric, quotaId, scope, location, limit, usage, reserved, requested), a QuotaFailure detail and a help link to the request page. Rate and concurrency refusals also say when to retry. The CLI and MCP clients show the numbers and the link. Every quota reason, with its fix, is in the errors reference. Placing work on a shared server pool has its own refusals, described in Servers and pools.

Billing roles are granted on the billing account itself, not inherited from the organization that owns it; when you create an account, the console offers to add the organization’s owners.

Role Granted on Can Cannot
Billing Account Administrator (roles/billing.admin) Account Payment methods, payments profile, invoices, export, budgets and caps, link and unlink projects, roles on the account Touch any project resource
Costs Manager (roles/billing.costsManager) Account Budgets, caps and lifting them, reports, export Payment methods, links
Billing Account User (roles/billing.user) Account Link projects, together with Project Billing Manager See costs of projects they do not manage
Billing Account Viewer (roles/billing.viewer) Account Read costs, credits, invoices and prices Change anything
Project Billing Manager (roles/billing.projectManager) Organization or project Link or unlink the project Use the account for other projects
Project Costs Viewer (roles/billing.projectCostsViewer) Project The project’s costs and budgets Account-wide data
Usage Viewer (roles/billing.usageViewer) Project Usage events, usage and digests; included in Viewer Costs
Agents Any Read-only billing tools Lift caps, change payment methods or link accounts, ever

Quota preferences need quota.quotaPreferences.create (roles/quota.admin); quotas are readable with roles/quota.viewer and the Viewer role.

What is logged. Every link and unlink, with the account that paid each cost line; every cap enforcement with the resources it paused, who lifted it and why; every budget change. A price book other than the public list price needs two Frazer staff approvals and is in the audit log.

Item Default
Budget alert thresholds 50 %, 90 % and 100 % of actual cost, and 100 % of the forecast
Budget evaluation Every 5 minutes, on estimated cost
Link changes Take effect at the next whole hour (UTC)
Currencies per billing account One (USD)
Data kept while a cap pauses compute At least 30 days
Failed card payment 7 days of grace, then the same pause as a cap
Storage writes when past due Blocked only after 30 days; deletion needs a separate 30-day notice
Quota alerts 80 % and 100 %
Quota increase requests Pending up to 7 days
Projects per organization 50

Billing accounts, budgets, caps and quotas have no line of their own on the price list. Every price Frazer rates is public and readable without signing in:

Billing and budgetsOn your serversOn the Frazer fleet
PriceIncluded: budgets, alerts, caps, reports and exportsIncluded

Every line, with the estimator: pricing.

Symptom Cause Fix
A link is refused with PERMISSION_DENIED naming the account You lack a link right on the billing account Ask a Billing Account Administrator for Billing Account User
A link is refused with PERMISSION_DENIED naming the project You lack Project Billing Manager on the project Ask the project’s owner
New projects are created unlinked The person who set the organization’s default lost the right to link the account Set the default again as someone who holds it
Agent sessions suspended, runner jobs queued, serverless returns HTTP 402 A capped budget reached 100 %, the project has no billing account, or a payment failed Lift the cap with a reason or raise the budget; link the project; update the payment method
A create fails with QUOTA_EXCEEDED, even with --dry-run The change would pass a quota Free capacity, or follow the error’s link to request an increase
This month’s costs show Estimated The billing month has not closed Wait for the month to close; costs become Final
A charge for last month appears on this month’s invoice Late usage after a month closed is billed as a correction in the next open month Nothing to fix: the line names the line it corrects
frazer billing usage verify exits with code 11 A digest did not verify, or is not signed yet Run it again later; if it still fails, contact Frazer support with the output

CLI

CommandWhat it does
frazer billing accounts listList the billing accounts you hold a billing role on, in any organization.
frazer billing accounts getShow a billing account with its currency, type and state.
frazer billing accounts get-iam-policyShow who holds which billing role on an account.
frazer billing accounts set-iam-policyReplace the billing roles on an account.
frazer billing projects linkLink a project to a billing account; needs a right on the account and one on the project.
frazer billing orgs set-defaultSet the billing account new projects of an organization are linked to.
frazer billing settings getShow a project's or an organization's billing settings.
frazer billing project-links listList every project an account pays or paid for, with the link history.
frazer billing budgets createCreate a budget with alert thresholds and an optional cap.
frazer billing caps liftLift a cap that paused work, with a reason.
frazer billing caps raiseRaise a cap for this month (--until) or as a standing amount, with a reason; --dry-run first.
frazer billing caps getRead the account's default monthly cap, its amount and its basis.
frazer billing caps removeRemove the default cap, a billing admin only, with the typed sentence; --dry-run first.
frazer billing waiting listWhat did not run or paused for funds, by scope and reason, and the action that resumes it.
frazer billing estimateThe cost of a run before it starts, with its p90.
frazer billing costs queryQuery costs of an account or a project, grouped and as estimated or final.
frazer billing export setSend hourly usage and cost files in the FOCUS format to a bucket.
frazer billing skus listList the public price list, without signing in.
frazer billing usage queryQuery metered usage of a project or an organization.
frazer billing usage-events listList the raw usage events of a project.
frazer billing usage verifyRecompute a project's usage for a period and check the signed hourly digests.
frazer billing usage-digest-chain getShow the head of a project's chain of signed usage digests.
frazer quota quotas listList quotas with their limit, usage and where the limit comes from.
frazer quota quota-preferences createRequest a different limit for a quota.

All of them: CLI reference.

Terraform and OpenTofu

ResourceWhat it manages
frazer_billing_budgetA budget with thresholds and an optional cap on a billing account.
frazer_quota_preferenceA requested limit for a quota on a project or an organization.

All of them: Terraform and OpenTofu reference.

MCP tools

ToolWhat it does
usage_digest_chain_getGet the head of a project's chain of signed usage digests.

All of them: MCP tools reference.

Events

Event typeWhen it is sent
frazer.budget.threshold.v1A budget crossed one of its thresholds, on actual or forecast cost.
frazer.budget.cap_reached.v1A budget with a cap reached 100 % and Frazer paused work in its scope.
frazer.invoice.created.v1An invoice was issued.
frazer.invoice.paid.v1An invoice was paid.
frazer.invoice.payment_failed.v1A payment for an invoice failed.

All of them: Events reference.

Errors

ReasonWhat it meansHow to fix it
BILLING_ACCOUNT_CLOSEDThe billing account is closed and cannot be linked.Link the project to an active account.
CURRENCY_NOT_SUPPORTEDThe account's currency is not supported.Use USD.
ACCOUNT_TYPE_NOT_SUPPORTEDThe requested billing account type is not available for this request.Choose a self-serve or invoiced account.
USAGE_DIGEST_NOT_SIGNEDThe hour's usage digest exists but is waiting to be signed.Retry later.
USAGE_DIGEST_MISSINGA usage digest that should exist is gone.Contact Frazer support with the project and the hour.
QUOTA_BELOW_USAGEThe requested limit is below current usage.Reduce usage first, or pass ignore_safety_checks; nothing running is evicted.

All of them: Errors reference.