Billing#
Laver has a free plan and one paid plan, Pro, charged per seat, monthly or annually. A new workspace starts on free with no card: one workspace, three boards, 100 MB of storage and up to three billable people. Guests from outside the workspace, published pages and private pages are on Pro.
A card is required for Pro, and the subscription starts as soon as it is entered at Checkout — there is no trial period, because the free plan is the way to try Laver and it has no deadline.
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 | Before VAT |
|---|---|---|
| Monthly | £2.99 per seat per month | £2.49 per seat per month |
| Annual | £23.99 per seat per year | £19.99 per seat per year |
The prices we publish include UK VAT at 20%; the right-hand column is the same price before it. For a UK customer that inclusive figure is the total at Checkout — the VAT is inside it rather than added to it, and the invoice breaks it back out into the net amount, the rate and the VAT. Stripe Checkout collects a billing address and works the tax out from it, and a business can enter a VAT number there to reverse-charge rather than pay VAT it would have to reclaim, in which case the total is the before-VAT column instead. 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, with tax worked out from your address. The Billing page shows you the seat count it is working from, and says under the total whether the seat price it is showing includes VAT or has it added.
Workspaces that subscribed before 19 August 2026 are on the previous before-VAT prices, where VAT is added at Checkout instead of being included. Nothing about that changes on its own: the gross amount a UK customer pays is the same either way, and the Billing page says which of the two applies.
VAT numbers and reverse charge#
If your business is VAT-registered, give us the number: it goes on the invoice, and outside the UK it changes what you are charged.
Where it goes. Either place works, and you only need one of them.
- At Checkout, before you pay. Under the billing address there is an Add tax ID link — choose the scheme (UK VAT, EU VAT, and so on) and type the number. The total on the page updates once it is accepted, so you can see the effect before you confirm.
- In the billing portal, at any time afterwards. Billing → Open billing portal → Billing information, then add or edit the tax ID. It applies to invoices issued from then on; an invoice that has already been issued is not reissued with it, so add it before the first payment if you can.
What it does to the total.
- UK business. UK VAT is charged either way — a UK supply to a UK customer cannot be reverse-charged — so the total is the inclusive price above. You reclaim the VAT as input tax in the normal way, and your number and the VAT amount both appear on the invoice.
- VAT-registered business elsewhere in the EU. The supply reverse-charges: no VAT is added, the total is the before-VAT column above, and the invoice is marked as a reverse charge with your number on it. You account for the VAT yourself, at your own country's rate, on your own return.
- No VAT number. VAT is charged at the rate for your billing address, and the price you were quoted stands.
Stripe validates the number against the EU's VIES service and the UK's equivalent. If it comes back invalid the tax is charged as though you had not given one — so if a total looks wrong, check the number in the portal first.
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.
Plan limits#
| Free | Pro | |
|---|---|---|
| Seats | 3 | Unlimited |
| Boards | 3 | Unlimited |
| Storage | 100 MB | 10 GB per billable seat, pooled |
The Pro storage figure is a pool, and it is enforced. It is pooled across the workspace, so five billable seats is 50 GB rather than 10 GB each. Only billable seats count — owners, admins and members. Viewers are free and add no headroom, or the figure could be inflated by inviting read-only accounts.
Billing shows what the workspace has used against that pool, next to the seat count. You are warned twice on the way: an in-app notice and an email at 80%, and another email once the pool is full.
Once the pool is full, new uploads are refused with a 402 — on both Pro and
Free. Nothing else changes:
- Nothing is deleted. Every file already in the workspace stays there.
- Reading, editing, commenting and exporting carry on as normal.
- Deleting still works — that is the point. The way out of a full pool must not itself be blocked, so clearing space is always available.
There are two ways to make room: delete attachments you no longer need, or add a billable seat, which raises the pool by 10 GB.
The free plan is what you sign up to. A workspace that has never subscribed
runs on free — with the limits above — rather than being locked; no card, no
deadline. Subscribing lifts the limits and adds guests and wiki publishing, and
cancelling puts the workspace back on free. Only read_only freezes a
workspace, and that is a non-payment state a subscription falls into — not where
a new workspace starts, and not where a cancellation lands. See the states below.
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 five states. What a workspace can do depends on which — but no state shuts a workspace, and only one of them stops writing:
| State | What it means | Reads | Writes | Adding members, boards, uploads |
|---|---|---|---|---|
unsubscribed |
Signed up, never subscribed. The state a new workspace starts in. | Yes | Yes | Yes, at free 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. Back on the free plan. | Yes | Yes | Yes, at free limits |
unsubscribed and canceled are both simply the free plan. Neither is a lock:
boards, tickets and the wiki open, everyone writes as normal, and what applies is
the free limits above — so growth stops at three boards, three billable seats and
100 MB rather than access being refused outright. Subscribing lifts them again.
A workspace that grew on Pro therefore lands over the free limits when it cancels rather than under them, and that is deliberate. Nothing is deleted; everything stays readable, writable and exportable. What stops is adding anything new — a board, a billable member, an upload — until the workspace is back under the free limits or subscribed again, and the refusal is the same 402 any limit gives, naming the plan, the limit and the current usage.
Cancelling therefore drops the workspace to free rather than locking it. Your other workspaces each carry their own state.
What past_due and read_only allow#
These are the only two states that take anything away, and both are deliberately gentle, 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, which is the free plan: everything is still there and still
writable, within the free limits above.
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,
current_period_end, cancel_at_period_end and the limits for
the effective plan — enough to render your own billing banner.