Skip to content

Billing

Usage-based: every request costs Compute Units, your plan sets the price per CU, and the bill is CU × price − credits (+ VAT where applicable). The free plan meters usage but bills nothing.

Pricing

PlanCU price (USD)Included limits
free$0rate limits
standard$0.001
premium$0.0005
enterprise$0.0002

Worked example: 1M requests/day averaging 5 CU ≈ 5M CU/day; on premium that's 5,000,000 × $0.0005 = $2,500/day — heavy eth_getLogs scans (75 CU) shift this fast, so check the per-method weights.

What's metered — the short version:

  • Every HTTPS call, by method weight; cache hits are metered too (X-Cache: HIT) — the weight pays for the API call.
  • Batches: per inner call.
  • WebSocket streams: the handshake is rate-limited but frames are free — an open subscription costs 0 CU.
  • Meta methods (eth_chainId, net_version, …) cost 0 CU.

Watch spend before it happens

  • Dashboard → Usage — CU and requests per project/chain/day, with a per-method breakdown.
  • Notifications fire at 80 / 95 / 100 % of the daily request allowance and on 429 spikes (details).
  • API — same numbers as the dashboard:
bash
# per project: last 24 h (or ?period=month for 30 days)
curl "https://api.au.ro/api/v1/projects/$PROJECT_ID/usage?period=day" \
  -H "Authorization: Bearer $TOKEN"

# tenant-wide billing view: rolling 30 days
curl https://api.au.ro/api/v1/tenants/$TENANT_ID/billing \
  -H "Authorization: Bearer $TOKEN"

The billing view returns per project/chain/day CU entries plus the money summary:

json
{
  "tenant_id": "…",
  "tier": "premium",
  "period": "30d",
  "total_cu": 12480230,
  "total_usd": 6240.11,
  "credits_usd": 500.0,
  "vat_rate_percent": 0,
  "net_usd": 5740.11,
  "total_due_usd": 5740.11,
  "entries": [ {"project_id":"…","chain":"btc","day":"2026-07-13","cu":81230,"cost_usd":40.61},  ]
}

credits_usd are manual credits granted by the operators (SLA gestures, migration credits) — they offset the same 30-day window. VAT appears with the deployment's configured rate and label when applicable.

Paying & upgrading

  • Card (Stripe) — self-service plan subscription: Dashboard → Billing → pick a plan, or

    bash
    curl -X POST https://api.au.ro/api/v1/tenants/$TENANT_ID/billing/checkout \
      -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
      -d '{"tier":"premium"}'
    # → {"url":"https://checkout.stripe.com/…","session_id":"cs_…"}

    Open the returned hosted-checkout URL; the plan switches once payment completes. Card details never touch the platform. (tier is one of standard, premium, enterprise.)

  • Without a card / other railsrequest a tier change (POST /api/v1/limit-requests) or open a billing support ticket; operators apply the change and arrange invoicing.

Rate limits and CU price switch with the tier. The 30-day billing view prices the window at your current tier's rate.

Suspension & reactivation

Unpaid accounts can be suspended: every RPC request then returns HTTP 402 (account suspended — contact your administrator) while keys, projects and history stay intact. Settle the balance (or resolve the dispute via a billing ticket) and service resumes immediately — no re-provisioning, no new keys.

Cost-control checklist

  • Scope projects per environment so a runaway staging job can't spend the production budget (projects as bulkheads).
  • Watch eth_getLogs (75 CU + heavy budget) — narrow ranges beat retries.
  • Poll cached methods (eth_blockNumber, getblockcount) instead of heavy ones; the platform cache makes them cheap and fresh.
  • Keep the daily CU quota (default 100,000/day per project) as your spending fuse — it turns a leak into -32005 instead of a bill.