Skip to content

Plans and billing

Each workspace has its own plan. A new workspace starts on Free, with no card. An owner can move it to Team or Business from the dashboard.

Free Team Business Enterprise
Price $0 $49 a month $215 a month Set with you
Apps 3 25 200 200
Members 3 25 200 200
Container apps None 1, at lite or basic, 10 units 4, up to standard-1, 40 units 4, up to standard-1, 40 units, more by contract
Requests included 100,000 a month 2,000,000 a month 20,000,000 a month Set in your contract
After that Apps stop at 200,000 $3.78 per million $3.78 per million Apps keep running
CPU time included 50,000,000 ms a month, then apps stop 100,000,000 ms a month 400,000,000 ms a month Set in your contract
Database rows read included 50,000,000 a month, then apps stop 500,000,000 a month 5,000,000,000 a month Set in your contract
Database rows written included 100,000 a month, then apps stop 500,000 a month 5,000,000 a month Set in your contract
Audit log kept 3 months 3 months 12 months 12 months
Usage insights look back 30 days 90 days 365 days 365 days
SSO, SCIM, custom roles, publish policy and audit log CSV None None Early access Included
Support Community Email Priority email Support line

Single sign-on, SCIM, custom roles, the publish policy, the audit log’s CSV and audit streaming are Enterprise features. They’re included on Business for early customers, for a limited time. See Enterprise.

On Free and Enterprise, a month is the calendar month in UTC. On Team and Business, it’s your billing month, which starts on the day you subscribed and renews on that day each month.

Limits lists every limit a plan sets. The pricing page has the same table.

Prices are in US dollars, per workspace, and Stripe bills them monthly. Tax isn’t included: VAT, GST or sales tax is added at checkout where it applies. To have tax reverse charged, enter your VAT, GST or tax ID at checkout.

A subscription started at an earlier price keeps it, usage prices included, until the workspace changes plan. The Billing tab and forculus workspace usage show the prices your subscription pays. That includes what a usage price gives you before it charges.

You pay per workspace, not per person. Each plan includes a number of members.

To see a workspace’s plan:

Terminal window
forculus workspace list
acme owner free Acme

Requests. Every request the edge passes to one of your apps counts, whoever sent it. That includes people who are signed in, bypass tokens, anonymous visitors to a public path and webhook deliveries. Requests the edge refuses don’t count, and neither do requests to the dashboard or the API.

CPU time is the time your Worker apps’ own code runs, as Cloudflare records it for each request. Time spent waiting on a fetch or a database doesn’t count. Container apps and static sites aren’t charged for it. On Free, apps stop for the month at 50,000,000 ms.

Database rows are Cloudflare’s count for each database. Every row a query reads counts, including rows it scans but doesn’t return. So does every row and index entry it writes. forculus db commands and exports count too.

The workspace’s Billing tab shows each of these for the current month.

On Team and Business, usage past what the plan includes goes on that month’s invoice:

Team Business After that
Requests 2,000,000 20,000,000 $3.78 per million
CPU time 100,000,000 ms 400,000,000 ms $0.041 per million ms
Database rows read 500,000,000 5,000,000,000 $2.50 per billion
Database rows written 500,000 5,000,000 $2.25 per million

Database storage over the plan’s database limit costs $1.55 per GB-month, charged by the hour.

If we haven’t finished setting up billing for one of these on your subscription, your apps pause at what the plan includes instead of being charged, and answer 402. We finish it ourselves, usually within the hour, and your apps answer again once it’s done. There’s nothing you need to do.

Usage charges never go past your usage limit, before tax. If you lower it partway through an hour, that hour still counts against the higher limit. A limit raised later doesn’t reach back to earlier usage, and one lowered later doesn’t take back what it allowed.

By default the limit is $0, so nothing beyond the plan’s price is charged unless an owner sets another amount, or none, under Usage limit on the Billing tab. On the default, your apps pause when the plan’s allowances run out, and answer 402 with a paused page until your next billing month. Once an owner sets a limit, they start again straight away. The limit can be raised up to 20 times an hour, and lowered at any time.

With a limit set, your apps answer 402 when the estimated charges reach it, until the next billing month or until an owner raises it. Usage is measured a little after it happens, so some can run past the limit before the apps stop, and that usage is on us. The Billing tab lists it as usage we won’t bill.

If an owner sets the usage limit above $100 on Team, or removes it, Stripe invoices usage charges as soon as they reach $100 in a month. On Business, that happens at $400. Otherwise they wait for the monthly invoice. If an early invoice fails, your apps answer 402 until it’s paid.

Owners get an email when:

  • usage reaches 80% of an allowance, and again at 100%
  • usage charges pass $10, then the plan’s price, then each multiple of the price
  • charges reach 80% of the usage limit, and again when they reach it. These come again for each new limit an owner sets, up to five times a month.
  • an invoice during the month fails
  • we give you a credit

The Billing tab shows each meter against its allowance, how much came from public paths and webhooks, and your usage charges so far, before tax. forculus workspace usage acme prints the same.

Stripe’s invoice is what you pay, and it can differ from the estimate:

  • Usage we couldn’t measure exactly, or couldn’t send to Stripe in time, isn’t billed. The tab says how much and why.
  • Usage that ran past the usage limit before your apps stopped isn’t billed either. It’s on us, and the tab says how much.
  • If we billed more than Cloudflare’s exact figure, you get the difference back as a credit on the next invoice. The tab lists it.
  • Stripe counts usage a little after we send it. Usage it counts after the invoice for that month is made goes on the next invoice, as its own line, at the price it would have had.

Usage by app on the Billing tab splits the month’s usage by app. forculus workspace usage acme --previous does the same for the month before, with the apps you had then. It leaves out database sizes, because we only know today’s.

Requests counts every request the app served, and every one counts toward your plan’s requests. From public paths shows how many of them came from public paths and webhooks. The CLI’s table has the same columns. A deleted app keeps its own row, marked (deleted).

Reading the table and its JSON
  • With --json, each app’s dispatched is that Requests column, the count your plan uses. public is From public paths. requests counts only the requests sent by someone signed in or with a bypass token, so a script adding up what you’re billed for should read dispatched.
  • The table can show more than the meters. It counts whole hours, so it includes all of the hour your billing month started in. The meters split that hour. Requests from before the start are on the previous invoice, and after an upgrade, so are database rows measured before it. After an upgrade from Free, what Free used in that hour isn’t billed at all.
  • A billing month that starts and ends in the same hour has an empty table, because that hour counts in the next month. Its charges are still on its own invoice, except CPU time measured after it ended, which goes on the next.

Free is never charged. When a Free workspace runs out, its apps stop instead.

Your apps keep running past the 100,000 requests Free includes, up to twice that: 200,000 in the calendar month, in UTC. After that, every request to your apps gets 402 and a page that says “Paused for the month”. They start again when the month ends, or as soon as an owner upgrades.

Apps also stop for the month at 50,000,000 ms of CPU time, 50,000,000 database rows read or 100,000 rows written, with the same page.

Owners get an email when the workspace goes past what Free includes, and another if its apps stop. See Limits.

When a workspace moves to Free after a cancellation, a downgrade or a failed payment, its count starts from the hour it moved.

Enterprise is for companies that want a contract: a price set with you, single sign-on, SCIM, custom roles, a publish policy, the audit log’s CSV and streaming to your SIEM, apps that reach your private network from fixed outbound addresses, a support line and a DPA negotiated with your company. Write to sales@forculuslabs.tech.

  • It starts with every limit Business has, and more of two: 3 audit log streams, and 1,000,000,000 ms of CPU time a month where your contract doesn’t set another amount. It keeps the audit log for 12 months. We raise the limits you need, custom domains included.
  • Single sign-on, SCIM, custom roles, the publish policy, the audit log’s CSV and audit streaming come with Enterprise, with no time limit, and so does your own encryption key.
  • Private networks and fixed outbound addresses are Enterprise only.
  • There’s no checkout. We put the workspace on Enterprise ourselves once the contract is signed. A workspace with a subscription moves to Enterprise once the subscription has ended, so nobody pays twice.
  • When a contract ends, the workspace goes back to the plan its own subscription pays for, or to Free if it has none. Free’s limits then apply from that moment.

The Billing tab shows owners and admins the contract’s terms: what it comes to a month, whether it’s invoiced monthly or yearly, how many days each invoice gives you to pay, and when the contract runs from and to. Nothing on the tab changes the plan, and there’s no card to add. To change anything, write to sales@forculuslabs.tech.

We invoice a contract one of two ways, and the tab says which:

  • Through Stripe. Stripe emails each invoice. The tab lists them too, newest first, each with a link to Stripe’s page for it, where you can read it, download a PDF and pay it.
  • Ourselves. We email each invoice. The tab doesn’t list them.

forculus billing show <workspace> prints the same terms and invoices.

Your contract sets how many requests, how much CPU time and how many database rows read and written each calendar month includes, in UTC. Where it doesn’t set one, it’s what Business includes.

Going past an allowance doesn’t pause your apps, and there’s no usage limit. Your contract says how usage over it is settled. The Billing tab shows each allowance against what’s been used this month, and so do forculus billing show and forculus workspace usage. See Enterprise past its allowances.

Storage covers site files, apps’ own files and databases together: 1 GB on Free, 10 GB on Team and 100 GB on Business and Enterprise. Over it, nothing new deploys, and once any app keeps files, every app with a place for files answers 507 until there’s room. Your databases together can use part of it: 1 GB on Free, 2 GB on Team and 10 GB on Business and Enterprise. When they’re over that, apps with a database answer 507 to everyone except the workspace’s owners and admins. See Limits.

Only an owner can change the plan, from the dashboard.

  1. Open the workspace and go to Billing.
  2. Under Plans, select Upgrade to Team or Upgrade to Business.
  3. Read the dialog, then select Continue to checkout. The dialog gives the plan’s price, what it includes, every price past what it includes and the usage limit it starts with. Checkout shows the usage prices only as “Price varies”, so check them here.
  4. Pay on the Stripe Checkout page.

The new plan starts as soon as Stripe confirms the payment, and so do its allowances. The charge repeats on the same day each month.

Nothing used on Free is billed. We measure CPU time and database rows a few minutes after they’re used, though, so what Free used in its last few minutes can count in your first paid month.

If you last signed in more than 15 minutes ago, the Billing tab asks you to sign in again. If you haven’t accepted the current terms of service, you’re asked to before you start a plan or move to a bigger one. Cancelling, moving to a smaller plan and the Stripe portal never ask.

On a paid plan, the Plans table on the Billing tab offers Switch to Business or Switch to Team. You can’t switch a subscription you’ve cancelled. Renew it in the portal first, then switch.

Moving up to Business starts a new billing month on Business as soon as it’s paid.

  1. Select Switch to Business. The dialog shows the amount before you confirm. You pay Business’s full price, less a credit for the time left on Team. If Team’s usage so far is well ahead of the time that has passed, there’s no credit, and the dialog says so.
  2. Confirm. The switch usually completes within a minute or two. Until then the Billing tab says Switching to Business.
  3. Team’s usage so far goes on the upgrade’s invoice, at Team’s prices. Every allowance starts again.

While it switches, usage measured from the moment you confirm is billed on Business. Business’s limits apply from then too, and Team’s come back if the switch doesn’t go through. If the switch can’t be made, for example because the subscription was set to cancel in the meantime, the Billing tab says why and you aren’t charged.

If the card is declined or your bank asks you to confirm, the Billing tab shows a link to pay the invoice, and the plan changes once it’s paid. Team’s limits apply until then. Usage measured while it waits is billed on Business once it’s paid, or on Team if it isn’t paid within 23 hours.

You can’t switch from 10 minutes before your renewal until the renewal’s invoice is final, which takes up to a day. A switch still waiting when that starts doesn’t go through.

How usage is split between Team's invoice and Business's
  • Usage from before you confirm that we hadn’t sent to Stripe yet is billed on Business too. We send requests every minute, CPU time about two hours after it’s used, and rows read 1,000 at a time.
  • Until the switch completes, each meter on the tab shows Team’s usage, with a note under it of how much is held for Business: for requests, what came since you confirmed, and for the other meters, what we’ve measured but not yet sent.
  • The dialog’s amount doesn’t include usage we’ve measured but not yet sent to Stripe. The dialog shows that separately.
  • The upgrade’s invoice has only what Stripe has counted, and Stripe counts a little after we send. So the switch is made once Stripe has counted the usage sent before you confirmed, and the minute it was sent in is over.
  • Usage Stripe’s meter refused goes on the upgrade’s invoice too, as its own line at Team’s prices.
  • CPU time from about the last two hours, and database storage over the limit in the current hour, are measured after the upgrade. They count in the new billing month.

Moving down to Team happens at your renewal, and the renewal invoice is at Team’s price. Nothing is charged or refunded now. Until then the workspace stays on Business, the Billing tab shows the change as waiting, and Undo cancels it.

You can’t move down while the workspace has more than Team allows:

  • more container apps than it allows
  • a container app at a size it doesn’t offer
  • a container app running more containers than it allows, or container apps using more container units together
  • more data in its databases than its database limit

The message says what to delete first. Other limits, such as apps, members or tokens, don’t block the move, and nothing is removed. You keep what’s there, but you can’t add more until you’re back under the limit.

Business keeps the audit log for 12 months, and Team for 3. After a move from Business to Team, audit entries older than 3 months are deleted 30 days later. An owner can export the workspace first if you need them.

Select Manage subscription on the Billing tab. It opens Stripe’s customer portal, where you cancel.

Your plan runs to the end of the month you paid for, then the workspace goes back to Free. Container apps and apps with key-value storage or a queue stop, and Postgres connections and log drains turn off. Everything else keeps running within Free’s limits.

Usage past the allowances in your last month goes on that month’s invoice. Stripe keeps that invoice open for a day after the month ends, so late usage still reaches it. There’s no refund for the rest of a month. See the refund policy.

If the workspace was on Business, audit entries older than 3 months are deleted 30 days after it goes back to Free.

Manage subscription also opens Stripe’s portal to change the card and download invoices and receipts. Every invoice comes from Stripe. forculus billing open <workspace> opens the Billing tab in your browser.

On Enterprise there’s no portal. See Your contract on the Billing tab.

Stripe retries a failed payment for up to 14 days and emails you each time. We email the workspace’s owners 3 days before the retries run out, and again when they do.

After that, the workspace moves to Free. Container apps and apps with key-value storage or a queue stop, and Postgres connections and log drains turn off. Everything else keeps running within Free’s limits. Update the card in the portal, and the plan comes back when the payment goes through.

Member Admin Owner
See the plan Yes Yes Yes
See usage and the Billing tab’s numbers No Yes Yes
See usage by app No Yes Yes
Upgrade, switch plans, cancel, change the card No No Yes
Change the usage limit No No Yes

forculus workspace show shows the plan and what it allows. forculus billing show shows owners and admins what the plan costs, when it renews or changes, and on Enterprise the contract and its invoices. forculus workspace usage shows them usage. Paying and changing the plan, the card or the usage limit happen on the Billing tab, in a browser: a CLI session can’t.

Deleting the workspace stops its apps at once and cancels its subscription. There’s no refund for the rest of the month. The final invoice follows within two hours, once we’ve measured usage up to the deletion. Usage we can’t measure by then isn’t billed. Stripe creates it as a draft and sends it a day later. The dashboard tells you this before you confirm.

A workspace restored within its 30 days comes back on Free, since its subscription has ended. Upgrade again from the Billing tab. See Backups and restore.