Billing and credits
Three plans from $25/month with one memory pool each, one prepaid credit balance per account for every extra, and a ledger that refuses to go below zero.
Camplax keeps money boring. A plan pays for hosting your apps, and one prepaid credit balance for your whole account pays for anything past it — AI, extra memory, more email, build minutes and the rest. There is no free tier; a card is required at signup.
Honest status: the prices and limits below are decided and the payment flow is built, but Camplax's own Stripe account is not switched on yet. Until it is, starting a plan or buying credits says "Camplax isn't taking card payments yet" and project creation asks for a plan that cannot be bought; early-access accounts are exempt.
The plans
Every plan has hosting, a Postgres database, authentication, object storage, deploys, preview deployments, custom domains and environment variables. Plans only change how much you run:
| Indie | Pro | Scale | |
|---|---|---|---|
| Price | $25/month | $50/month | $100/month |
| Memory, shared by your apps | 3 GB | 8 GB | 20 GB |
| Apps | up to 5 | up to 15 | up to 40 |
| Preview hours a month (awake time, all previews together) | 100 | 300 | 1,000 |
| Previews awake at once | 3 | 10 | all |
| Postgres database storage, shared | 10 GB | 50 GB | 200 GB |
| Object storage (files) | 10 GB | 50 GB | 200 GB |
| Restore to any moment | last 7 days | last 14 days | last 30 days |
| Build minutes a month | 1,000 | 3,000 | 10,000 |
| Builds at once | 1 | 1, first in line | 2 |
| Monthly active sign-in users | 250,000 | 500,000 | 1,000,000 |
| Emails sent a month | 10,000 | 25,000 | 75,000 |
| Emails received a month | 25,000 | 75,000 | 200,000 |
| Cron jobs | 100 per project | 100 per project | 100 per project |
| Cron runs a month | 100,000 | 300,000 | 500,000 |
| History: sent mail, analytics, webhook deliveries, activity feed, old deploys | 7 days | 14 days | 30 days |
| Team members | no per-user fee | no per-user fee | no per-user fee |
Bandwidth is 1 TB a month on every plan, team members have no per-user fee, and there is no daily cap on deploys. Deploys and previews are not counted one by one: builds are counted in minutes, and previews in the hours they are awake. A monthly active sign-in user is someone who signed in to your app that month.
Sign-in emails count as email. Verification emails, magic links and password resets your app's sign-in sends count toward your plan's emails sent a month, like any other mail.
History follows the plan. The sent-mail log, analytics, webhook deliveries, the activity feed and the old deploys you can roll back to keep 7, 14 or 30 days. Moving to a smaller plan removes history older than that plan keeps, the next time it is trimmed.
Memory is one pool, and Camplax sizes each app. Your plan's memory is shared by all your apps and their databases, and you never set it by hand. Previews do not use it: a preview runs with the same memory limit as its live app, and is paid for in preview hours instead. The Usage page shows your pool.
Previews sleep, live apps never do. A preview sleeps after 15 minutes without a visit and wakes on the next one in a few seconds. Your plan sets how many previews are awake at once; when one more wakes, the one idle longest goes to sleep. The hours a preview is awake count toward your plan's preview hours.
Preview hours. Your plan includes 100, 300 or 1,000 hours of preview time a month: the time your previews are awake, all of them added together, so two previews awake for an hour use two hours. A sleeping preview uses none, and Camplax's own uptime checks, cron calls and screenshots never wake one. Past the included hours, awake time is paid from prepaid credits at 0.7¢ per GB-hour of the preview's memory limit — a preview of a 2 GB app costs 1.4¢ for each hour it is awake. When the credits run out, previews stay asleep until you add credits or the 1st; production apps keep running. The Usage page shows the hours used against the plan's.
Extras past a plan: memory $5 per GB a month (extra memory), database $1 per GB, files $0.05 per GB, email $0.40 per 1,000 sent and $0.05 per 1,000 received, bandwidth $0.05 per GB past 1 TB, preview time 0.7¢ per GB-hour of the preview's memory, build minutes $5 per 1,000, cron runs 50¢ per 10,000, and sign-in users $50 per 100,000 active in a month.
When credits run out, each extra stops in its own way:
| Past the plan, at zero credits | What happens |
|---|---|
| Sign-in users | New sign-ups stop; people who already have an account keep signing in |
| Preview hours | Previews stay asleep until the 1st; production apps keep running |
| Build minutes | New builds wait for the 1st; rollbacks and restarts still work |
| Cron runs | Jobs pause until the 1st |
Cron jobs are not sold in blocks: for more than 100 in one project, ask Camplax support, who review the request.
Everything past the plan is prepaid, never billed later. Anything past your plan comes out of your account's prepaid credits, a block at a time before you use it: 1,000 emails sent for $0.40, 10,000 received for $0.50, 10 GB of bandwidth for $0.50, 1,000 build minutes for $5, 10,000 cron runs for 50¢, 100 GB-hours of preview time for 70¢, and 100,000 monthly active sign-in users for $50. What a block does not use by the end of the month is not carried over. You get an email when your account passes 80% of the emails it can send or the cron runs it includes, and the first time in a month that paying from credits starts. When the credits run out, the extra stops as the table above says and you get an email; sending is refused, received mail is held back by the sender's server, and past 1 TB of bandwidth your apps pause and show visitors a "paused" page (build minutes). Add credits on the Billing page and everything starts again within a few minutes; otherwise it starts again on the 1st. Nothing is ever charged to your card after the fact.
Paying for your plan
- Card at sign-up. Pick Indie, Pro or Scale on the pricing page (or on your first visit to New project), and pay by card on Stripe's page before your first project. Stripe's page also asks you to accept the Terms, works out sales tax or VAT from your billing address, and takes a business tax ID if you have one. Your card is saved for the monthly renewal and offered again when you buy credits.
- Manage billing on the Billing page opens Stripe's billing portal: change the card, download invoices, or cancel. A cancelled plan runs to the end of the month you paid for.
- Change plan on the Billing page. Moving up starts once the difference for the rest of the month is paid, straight away from your saved card (or on Stripe's page if your bank wants to confirm it). Moving down starts at once, and the unused part of the month comes off your next bill; you need to be within the smaller plan's app count first, and history older than it keeps is removed on the next trim.
- If a payment fails, your apps stop at once. There is no grace period. Visitors see a "paused" page, and deploys, API keys, email and cron jobs pause too. You get an email, and every console page says what stopped and shows Pay now, which opens the unpaid invoice on Stripe's page; once it is paid everything starts again within a few minutes. When a plan ends (cancelled, or never paid), the apps stop the same way and Start a plan brings them back.
- Stopped apps are kept 30 days, then deleted. Code, databases, backups, files, domains and settings all stay for 30 days after the apps stop, and the email and the console notice give the exact date. You get a reminder a week before and again the day before. Pay at any point before then and everything comes back. Paying means a running plan: money that reaches a plan after it stopped, or one that has already ended, buys nothing, so it is refunded to your card, and an email says how much and until when your apps are kept. While Camplax still owes you a refund, your apps and data are never deleted. On the day, the plan is cancelled and every project goes through the same teardown as deleting it yourself; your account stays, so you can sign in and start again. One final copy of each database is kept 30 more days, and support can restore it if you ask.
- Deleting your account cancels the plan straight away, with no refund for the rest of that month.
- At most 5 credit checkouts an hour. Starting more than that is refused for the rest of the hour, which stops stolen cards being tried one after another. Ask Camplax support if you need more sooner.
The Billing page lists every project you can see, each one's monthly cost, and the workspace total. Seats in the billing role can see this page without touching anything else.
Credits
Everything past your plan — AI calls, extra memory, email, bandwidth, build minutes, cron runs, preview time and sign-in users — spends from one prepaid balance for your whole account, in dollars. Credits you buy are not tied to a project: $10 bought while looking at one app pays for another app's builds just the same.
- Top up on the Billing page through Stripe Checkout, in any whole-dollar amount from $5 to $10,000. A purchase costs its amount plus a platform fee of 10% + 30¢ — $5.80 for $5 of credits, $110.30 for $100 — and the full amount lands in your balance. That fee is Camplax's only margin on credits: AI, web search and the other extras are drawn at cost.
- New accounts add up to $1,000 a day. That is $1,000 in any 24 hours, all purchases together. After 30 days of paid use (counted from your plan or your first purchase) the daily limit goes away, and one purchase can be up to $10,000.
- To add more sooner, you have to ask. Press Request more on the Billing page and tell us what you are building: what your app does, what the credits pay for, roughly how much you expect to spend a day, and a link to it if it is live. Camplax reviews each request and emails you the answer; an approval raises your daily amount straight away. If two checkouts are paid at once and together go over your daily amount, the one that does not fit is refunded in full, fee included.
- Purchases over $100 ask your bank to confirm it is you (3D Secure), usually a tap in your banking app.
- A disputed payment pauses purchases. If your bank reports one of your payments as disputed or not made by you, adding credits is paused on the account and the credits that payment bought come back out of your balance, as far as they are not spent. Support lifts the pause once it is sorted out.
- Only a verified payment adds credits. The payment lands on a signature-verified webhook and posts a
stripe_checkoutcredit to the ledger — deduplicated by Stripe payment id, so a retried webhook cannot double-credit. Live Stripe money only credits a live account; test money only a test instance. Abillingseat on someone else's project can buy credits for that project's owner. - Spend happens through a single-writer ledger. Every debit is one atomic statement that reads the account's balance and refuses if it cannot cover the charge.
- At zero, it stops. Debits fail closed — no overdraft, no surprise invoice at the end of the month. The error says your credits have run out and to add credits on the Billing page.
- Refunds work the same way. A reserved-but-unspent hold posts back as a positive delta on the same ledger.
- Every row carries an idempotency key. Replaying a call returns the original row instead of moving the balance twice.
The balance is just dollars: you type the amount you want, and nothing you add expires.
Deleting a project keeps your credits and the record of every purchase; its spending rows go with it. Handing a project to someone else does not move any credits: they stay with your account.
Extra memory
Your plan's memory (3, 8 or 20 GB) is one pool for all your apps. When they need more, add it on the Billing page: $5 per GB for a month, paid from your credits.
- The whole $5, whatever the day. There is no part-month price: a GB bought on the 20th costs $5 and lasts until the 20th of next month.
- It renews on the day you bought it, each month, from your credits — not on the 1st. Bought on the 31st, it renews on the last day of shorter months.
- When your credits won't cover a renewal, you get an email 7 days before, then two the day before (24 hours and 3 hours ahead), and a large notice on every console page that day.
- If they still don't cover it, the memory is removed at the renewal and your pool goes back to your plan's size. An app that needs more than its share then restarts when it runs out, and its users may see errors for a few seconds. Add credits and buy it again to get it back.
- Stop renewing any time from its ⋯ menu: you keep it until the month you paid for ends, and can change your mind until then.
- Up to 8 GB of extra memory per account from the Billing page. For more, ask Support — we check your server has room first.
Your apps get new memory at their next deploy, or overnight.
Reading the ledger
GET /v1/billing/wallet → { "balance": 12.40, "ledger": [ …last 50 rows… ], "purchase": { "minUsd": 5, "maxUsd": 1000 }, "memory": { "extras": [ … ] } }
POST /v1/billing/wallet/checkout { "amountUsd": 20 } → { "url": "https://checkout.stripe.com/…" }
POST /v1/billing/memory { "gb": 2 } + Idempotency-Key → { "extra": { … }, "balance": 2.40 }
POST /v1/billing/memory/:id/cancel → stop renewing (…/resume to undo)
GET /v1/billing/credits/:slug → the balance a project spends from, and that project's rows
GET /v1/billing/summary → { "projects": [ … ], "totalMonthlyCost": 40 }
GET /v1/projects/:slug/credits/balance → { "balance": 12.40 }
The wallet and memory routes are your own account's, from a console session. /v1/billing/credits/:slug is for a billing seat on someone else's project: it shows that owner's balance and only that project's rows. Your app reads the balance it spends from with credits.balance() from @camplax/sdk — it calls the last route with the CAMPLAX_PROJECT_TOKEN Camplax already injected, so there is no key to create. Nothing that token can reach adds or spends credits.
The only way to add credits is paying for them. Nobody on a project — owner included — can grant credits; a goodwill credit from Camplax support shows up in the project's audit log.
What you will never see
- No overdraft. Balance hits zero, the billable feature stops, and the API says so plainly.
- No surprise metering. Top-ups are explicit; nothing silently charges the card mid-month.
- No cross-account leakage. Each balance belongs to one account, and the Stripe webhook ignores events it cannot tie to a real account or project.
Related docs
- Teams and roles — the
billingseat. - AI gateway — where credits actually get spent.
- API keys — which credentials can reach billing routes (none of the project-scoped ones).