Skip to content
Operating / Billing

Billing

The one plan, the trial, and what happens when a payment fails.

Billing runs through Stripe. A card is collected at signup, before anything is provisioned, and the first week is a trial.

The plan

There is one plan, KamalCloud, at $29 a month, billed monthly. It has everything KamalCloud does, for every server and everyone on your team: no tiers, no server cap, no seat count and no charge per extra server.

  • Unlimited servers, apps and deploys
  • Unlimited people, with roles
  • Push-to-deploy from GitHub, GitLab, Gitea or Bitbucket
  • Domains with automatic SSL
  • Databases and services with one-click backups
  • Environments across several servers
  • Live logs, a browser terminal and scheduled tasks
  • Email, Slack, Discord and webhook alerts
  • Metrics and a cost dashboard
  • Server hardening and firewalls
  • Volume backups to your own bucket
  • Approvals, API tokens and an activity history
  • The hoster CLI and AI apps (MCP)
  • Priority email support

The trial is seven days. Nothing is charged until it ends, and you can cancel any time. Current prices are on the pricing page.

There are no limits to outgrow: adding servers or inviting people never changes the price.

Your provider bill is separate

KamalCloud charges for KamalCloud. The machines are in your own provider account and billed by that provider directly. The financial dashboard estimates what those machines cost; it is not an invoice and does not pass through KamalCloud.

Statuses

KamalCloud keeps a local copy of Stripe’s view, so the gate is a column read rather than an API call on every request. Webhooks keep it current, and an event older than what is already recorded is ignored rather than applied – Stripe does not promise they arrive in order.

A subscription is trialing for the free week and active once the first invoice is paid.

past_due still admits you. That is deliberate: locking an account out of its own servers over a failed renewal is the worse answer. It is tolerated for about a fortnight, which is roughly how long Stripe retries a failed invoice, and the billing.payment_failed notification fires at critical severity so it is not a surprise.

Fixing it

The Billing page is reachable while the account is locked out of everything else, because it is where being locked out is fixed. From there: the Stripe portal for cards and invoices.

Cancelling

Cancelling stops the subscription. Your machines are yours: they are in your provider account, they keep running, and nothing about them is KamalCloud’s to take away.

Self-hosting KamalCloud

An install with no Stripe keys configured admits every account. Billing is optional machinery, not a hard dependency.