Billing#
Laver has one paid plan, Pro, charged per seat, monthly or annually. A card is required up front, and a workspace's first subscription comes with a 14-day free trial — the trial starts when the card is entered at Checkout, not when the workspace is created. A workspace that has not subscribed yet is locked.
Only the workspace owner can start, change or cancel a subscription. Admins and
everyone else can read the billing summary — plan, seats, renewal date — but any
attempt to act on it answers
403 {"error": "Only the workspace owner can manage billing."}.
Everything to do with money is in Billing in the app. Payments, cards, invoices and tax are handled by Stripe; Laver never sees or stores a card number.
What it costs#
| Interval | Price |
|---|---|
| Monthly | £2.49 per seat per month |
| Annual | £19.99 per seat per year |
Prices are exclusive of VAT. Stripe Checkout collects a billing address and works out the tax, and a business can enter a VAT number there to reverse-charge rather than pay VAT it would have to reclaim. Checkout is the authority on what you will actually be charged, and shows it before you confirm.
Your next invoice is the seat price multiplied by your billable seats, which the Billing page shows you.
What counts as a seat#
A billable seat is an active membership in a billable role: owner, admin or member.
- Viewers are free. They never count and never appear on an invoice.
- Outstanding invitations to admins and members hold a seat from the moment they are sent, until they are accepted, revoked or expired. Viewer invitations do not.
- Deactivated and removed people do not count.
Seat changes go to Stripe as they happen, and are prorated: adding someone mid-cycle charges for the days they will use, removing someone credits the rest.
The free trial#
- 14 days, on the Pro plan with Pro limits.
- A card is taken at Checkout, before the trial starts. Nothing is charged until the trial ends, and Stripe bills automatically at the end of it.
- One trial per workspace, ever. Cancelling and coming back does not earn a second one — a workspace that has subscribed before is charged straight away at its next Checkout. The Billing page tells you which of the two applies before you start.
- The owner gets a reminder email 3 days before the trial ends.
Plan limits#
| Free | Pro | |
|---|---|---|
| Seats | 3 | Unlimited |
| Boards | 2 | Unlimited |
| Storage | 1 GB | Unlimited |
A workspace on trial gets the Pro limits.
There is no free tier you can sign up for. A workspace that has never
subscribed is locked, not degraded — see the states below. The free limits above
apply only to workspaces that have been given complimentary access.
When a limit is hit, the action is refused with 402 and a message naming the plan, the limit and the current usage, along with the current prices, so the way out is offered at the point of refusal.
Billing states#
The Billing page shows one of six states. What a workspace can do depends entirely on which:
| State | What it means | Reads | Writes | Adding members, boards, uploads |
|---|---|---|---|---|
unsubscribed |
Signed up, never subscribed. The starting state of a new workspace. | No | No | No |
trialing |
Inside the 14-day trial. | Yes | Yes | Yes, at Pro limits |
active |
Paid and current. | Yes | Yes | Yes, at Pro limits |
past_due |
An invoice failed; Stripe is retrying. | Yes | Yes | No |
read_only |
Unpaid past the grace period. | Yes | No | No |
canceled |
Subscribed once, no longer. | No | No | No |
unsubscribed and canceled are the same lock. In both, opening a board, a
ticket or the wiki answers:
{
"error": "This workspace does not have an active subscription. Start one in Billing to get back in.",
"subscription_required": true
}
The status is 402. Billing itself stays reachable — the owner has to be able to get to the page that sells them the way back in — and the owner can still rename or delete a workspace they are locked out of. Your other workspaces are unaffected.
Cancelling therefore locks the workspace rather than dropping it to a free tier. Nothing is deleted, and paying again restores everything, but the boards are shut in the meantime. Plan accordingly before you cancel.
What past_due and read_only allow#
These two are deliberately gentler than the lock, because losing access to your own data is not a good reason to churn.
past_due — the workspace keeps working. People read and write as normal. What
stops is growth: inviting anyone, creating a board, and uploading a file are all
refused with
{
"error": "This workspace has an unpaid invoice. Update the payment method in Billing to add anything new."
}
read_only — the workspace is fully readable and fully exportable, and nothing
can be written. Every write answers 402 with
{
"error": "This workspace is read-only because an invoice has not been paid. Settle it in Billing to start writing again.",
"billing_frozen": true
}
This applies to everyone regardless of role — an owner in a read-only workspace cannot write either.
The non-payment ladder#
| When | What happens |
|---|---|
| A payment fails | The workspace moves to past_due and the owners are emailed. Stripe keeps retrying. |
| 14 days still unpaid | The workspace moves to read_only. Owners are emailed. Reads and exports continue; writes stop. |
| 90 days read-only | Owners get a final warning email. |
| Any point an invoice is paid | The workspace returns to active immediately, and the clocks reset. |
Nothing on that ladder deletes anything. The 90-day warning is the last automated step; closing a workspace for good is a human decision, never a timer.
To recover, update the payment method in the Stripe billing portal. The moment the
outstanding invoice is paid the workspace is active again — you do not have to
wait for anything to catch up.
The billing portal and invoices#
Billing → Open billing portal takes the owner to Stripe's hosted portal, where you can:
- update or replace the card
- pay an outstanding invoice
- download past invoices and receipts
- change or cancel the subscription
Invoices live in the portal rather than in Laver, so Invoices on the Billing page opens the same portal.
The portal is only available once a workspace has been billed at least once.
Before that it answers
409 {"error": "This workspace has never been billed. Start a subscription first."}
— start the subscription from the Billing page instead.
If Stripe is unreachable, both Checkout and the portal answer
502 {"error": "Stripe is unavailable. Try again shortly."}. Nothing has changed;
retry.
Cancelling#
Cancel in the Stripe billing portal. A cancellation scheduled for the end of the
period is shown on the Billing page along with the date, and until then the
workspace carries on normally. When it takes effect the workspace moves to
canceled and locks.
Deleting a workspace cancels its subscription immediately, so a closed workspace does not keep billing. See Exports and deletion.
Using the API#
Session tokens only.
| Action | Call |
|---|---|
| Read the billing summary | GET /billing/<workspace-uuid> — any active member |
| Start a subscription | POST /billing/<workspace-uuid>/checkout with {"interval": "monthly"} or "annual" — owner only, returns a Stripe Checkout URL |
| Open the portal | POST /billing/<workspace-uuid>/portal — owner only, returns a Stripe portal URL |
The summary includes billing_status, plan, seats, active_members,
trial_available, current_period_end, cancel_at_period_end and the limits for
the effective plan — enough to render your own billing banner.