Billing & subscriptions
import { Aside } from ‘@astrojs/starlight/components’;
ShareOut billing is workspace-scoped: each workspace can have its own subscription. The workspace owner’s account tier is derived from the highest active plan across workspaces they own — that tier gates Teams-only features (subdomains, connectors, publish governance, and more).
The whole flow, end to end
Section titled “The whole flow, end to end”- Sign up with Google. You land on the Free plan with a personal workspace and starter examples — no card.
- Start a plan. Pick Pro or Teams at pricing → checkout. A 15-day free trial begins immediately, no card required.
- Add a card any time on
/billing(embedded Rebill checkout). With a card saved, the trial converts to paid automatically when it ends. - Active. You’re billed each period — Pro a flat price, Teams per active member.
- Add teammates → upgrade Pro → Teams. A Pro workspace is single-user; upgrading to Teams unlocks members immediately (billing catches up at renewal).
- Renewals. Teams recomputes the charge from your live member count before each renewal (seat true-up). Pro is flat.
- If a charge fails the plan goes
past_due; update the card on/billingto retry and restore access. - Cancel any time — you keep access until the period end. Admins can issue refunds.
Each step is detailed below.
| Plan ID | Name | Price | Min seats | Tier unlocked |
|---|---|---|---|---|
plan_pro_monthly | Pro | $12/mo | 1 | pro |
plan_pro_annual | Pro | $100/yr (~$8.33/mo) | 1 | pro |
plan_teams_monthly | Teams | $15/active member/mo | 2 (minimum billed) | team |
plan_teams_annual | Teams | $120/active member/yr (~$10/mo) | 2 (minimum billed) | team |
List available plans (public):
GET /v1/billing/plansStart a subscription
Section titled “Start a subscription”In the app
Section titled “In the app”- Open shareout.site/teams/pricing and pick a plan.
- Checkout at
/checkout?plan={plan_id}— choose the workspace (Teams bills per active member; see below). - 15-day free trial starts immediately. No credit card required on day one.
- Manage billing at
/billing?workspace_id={id}— add a card via embedded Rebill checkout, view invoices, cancel.
Workspace owners and admins can subscribe and manage payment methods.
Via API
Section titled “Via API”POST /v1/billing/subscribeAuthorization: Bearer {token}Content-Type: application/json
{ "workspace_id": "ws_abc123", "plan_id": "plan_teams_monthly", "seats": 3}Response includes subscription_id, status (trialing), trial_ends_at, and
has_card.
Trial rules:
- One free trial per workspace, ever — a cancelled or expired subscription still counts.
- After the trial, a saved card is charged automatically. Without a card, paid access lapses until you add one.
Payment method
Section titled “Payment method”Add or update a card on /billing. ShareOut uses Rebill v3 embedded checkout
in the browser — the <rebill-checkout> web component for new subscriptions and
<rebill-save-card> during trial. Card data stays on Rebill’s PCI scope; ShareOut
only stores Rebill customer/subscription IDs.
The billing page calls these session endpoints after a successful checkout:
POST /v1/billing/rebill-activate{ "subscription_id": "sub_xyz789", "rebill_subscription_id": "…", "rebill_customer_id": "…" }
POST /v1/billing/rebill-save-card{ "subscription_id": "sub_xyz789", "rebill_card_id": "…", "rebill_customer_id": "…" }A legacy POST /v1/billing/card token path remains for older dLocal subscriptions
being migrated off.
Once a card is on file, the billing page shows the saved brand and last four digits.
Subscription lifecycle
Section titled “Subscription lifecycle”| Status | Meaning |
|---|---|
trialing | Free trial active. Card optional until trial ends. |
active | Paid and current. |
past_due | Last charge failed — update the card to restore access. |
cancelled | Cancelled; access continues until current_period_end. |
expired | Trial or subscription ended without payment. |
Check status:
GET /v1/billing/subscription?workspace_id={id}Authorization: Bearer {token}Teams: per-member billing
Section titled “Teams: per-member billing”Teams is billed per active workspace member, not a fixed seat pool you pre-purchase:
- Checkout and the billing page show the current member count (minimum 2).
- Add or remove members anytime — each renewal charges the live headcount.
- Before renewal, Rebill adjusts the recurring amount to match (seat true-up).
Pro is always one seat. The seats field on POST /v1/billing/subscribe is
still accepted for API compatibility but Teams billing follows member count.
External members are free. People you invite as Clients (external sharing) never count toward seats or renewal charges. The billing page shows them on a separate “External members — included” line. See External sharing.
Convert Pro → Teams (add people)
Section titled “Convert Pro → Teams (add people)”A Pro workspace is single-user. To bring teammates in, upgrade the workspace
to Teams. On /billing, the Change plan section shows the other tiers at
your current billing interval:
- Upgrade (Pro → Teams) applies immediately — members, the workspace subdomain, and governance unlock the moment it succeeds. Your next renewal bills the new plan (Teams: active members × per-seat price); the current partial period is not prorated.
- Switch (Teams → Pro, a downgrade) is deferred to your next renewal, so you keep what you paid for until the period ends.
PATCH /v1/billing/subscription/plan{ "subscription_id": "sub_xyz789", "plan_id": "plan_teams_monthly" }The response says which path was taken: { "applied": "immediate" } for an
upgrade, or { "applied": "next_renewal", "pending_plan_id": "…" } for a
deferred downgrade. Enterprise is sales-led — contact us.
Change seats
Section titled “Change seats”Manual seat changes take effect at the next billing cycle (stored as
pending_seats). For Teams, add/remove members instead — the renewal true-up
bills the live headcount automatically.
PATCH /v1/billing/subscription/seats{ "subscription_id": "sub_xyz789", "seats": 5 }Recover a failed payment (dunning)
Section titled “Recover a failed payment (dunning)”If a renewal charge fails, the subscription becomes past_due and paid features
are held. The /billing page then shows an Update payment method form — even
with a card already on file — so the owner can enter a fresh card. A successful
checkout retries the charge and restores active.
Cancel
Section titled “Cancel”DELETE /v1/billing/subscription{ "subscription_id": "sub_xyz789" }Returns access_until — the date paid features remain available.
Invoices
Section titled “Invoices”GET /v1/billing/invoices?workspace_id={id}Authorization: Bearer {token}Returns payment history (amount_cents, currency, status, invoice_number,
paid_at).
Refunds
Section titled “Refunds”A ShareOut admin can refund a paid invoice (full or partial). The refund is
issued on the payment processor and the invoice status becomes refunded;
refunded invoices are excluded from revenue. Refunds made directly in the
processor reconcile back automatically (via the payment.updated → refunded
webhook). There is no self-serve refund endpoint — contact support.
Complimentary plans
Section titled “Complimentary plans”ShareOut admins can grant a workspace a complimentary paid plan — full Pro or Teams access with no card or charges. The billing page shows a complimentary badge instead of payment controls.
Account tier vs subscription
Section titled “Account tier vs subscription”GET /v1/account/tier still returns the user’s effective tier and feature
flags (driven by active subscriptions). For production upgrades, use checkout
or POST /v1/billing/subscribe — not the legacy POST /v1/account/upgrade
endpoint (dev/testing only).
See Teams overview for how tier maps to feature gates.
Included AI credit
Section titled “Included AI credit”Platform-key AI usage (workspace assistant, in-artifact visitor chat, Page Pilot, crew runs on ShareOut’s key) draws from a monthly included credit per workspace, reset each UTC calendar month. BYO provider keys are unlimited and do not consume this pool.
| Tier | Included credit |
|---|---|
| Free | $0.50 / month |
| Pro | $5 / month |
| Teams | $10 × active members / month |
| Complimentary / Enterprise | Unlimited (exempt) |
When credit is exhausted, new AI sessions return HTTP 402 with code
AI_CREDIT_EXHAUSTED until the next month, you upgrade, or you add a bring-your-own
provider key under workspace AI settings. Continuing an already-open conversation
is still allowed.
Spend and remaining balance appear on the workspace Usage page
(GET /v1/workspaces/{id}/llm-config includes aiCreditUsd,
aiCreditRemainingUsd, aiCreditAllowed).