Billing
Burrowbox uses prepaid credit, charged by the minute.
| Size | Running | Per 30 days if always on |
|---|---|---|
| tiny | $0.07 / h | $50.40 |
| small | $0.11 / h | $79.20 |
| medium | $0.16 / h | $115.20 |
| large | $0.26 / h | $187.20 |
| Stopped (snapshot) | $0.001 / h | $0.72 |
| VPN add-on | Proxy: +$0.03 / h, $10 / GB · Unlock: +$0.06 / h, $15 / GB, $3 / 1k connections |
#Card and auto-refill
To start machines you need a card on file with auto-refill: when your balance falls below a threshold you choose (default $5), the card is charged a set amount (default $20) and the credit is added right away. This way machines never stop for lack of credit.
- Welcome credit: $1, added once your email is confirmed and your card is saved.
- Saving a card: add or replace it under Billing → Payment method. Cards are stored by Stripe; Burrowbox never sees the number.
- Auto-refill settings: threshold $1–$50 and refill $10–$250 in the dashboard; any value via the API.
- If a charge fails (declined, or the bank asks for authentication): auto-refill pauses and you get an email. Running machines keep going until the balance reaches $0, then they're stopped (state kept). Replacing the card or saving the settings resumes it.
- Without a card: creating or starting a machine returns
402. Top-ups through Stripe Checkout still work.
Admin accounts don't need a card.
#Endpoints
| Method | Path | |
|---|---|---|
GET |
/api/billing |
Balance, burn rate per hour, runway, this month's usage |
GET |
/api/billing/ledger?limit=100&offset=0&kind= |
Every credit and usage entry, newest first (usage is grouped per machine per hour). kind=usage or kind=credit narrows it; offset pages back |
GET |
/api/billing/card |
The saved card (brand, last 4, expiry) and auto-refill settings |
POST |
/api/billing/card |
Returns a Stripe Checkout url to add or replace the card |
DELETE |
/api/billing/card |
Remove the card (stops auto-refill; machines can't be started) |
PUT |
/api/billing/auto-refill |
{"thresholdCents": 500, "amountCents": 2000} |
POST |
/api/billing/topup |
{"cents": 2500} — returns a Stripe Checkout url |
GET |
/api/usage |
Usage per customer or per machine (below) |
Amounts in responses are in micro-dollars (1_000_000 = $1) so per-minute usage stays exact.
#Usage per customer
Tag machines with your customer's id (externalId, see Machines) and Burrowbox reports what each customer cost you, so you can bill them.
GET /api/usage?groupBy=externalId&from=1790000000000&to=1792000000000
| Parameter | Default | |
|---|---|---|
groupBy |
externalId |
externalId or machine |
from, to |
this month so far | Unix time in milliseconds |
{
"from": 1790812800000, "to": 1791400000000, "groupBy": "externalId",
"totalMicros": 4210000,
"groups": [
{ "externalId": "cus_8f2a", "usageMicros": 2980000, "machines": 2 },
{ "externalId": null, "usageMicros": 1230000, "machines": 1 }
]
}
externalId: null is usage from untagged machines, including the idle time of warm pool machines before they're claimed. Usage is attributed to the tag a machine had when the minute was billed. The dashboard shows the same table under Billing → Usage by customer; the platform MCP tool is usage_by_customer.