Billing documentation.
One price per contributing developer per month, billed monthly through Stripe. Every hosted organization starts with a 14-day trial that needs no card. Your console shows the exact developer count Stripe bills for the current cycle, alongside the trial, subscription, and seat state. For the marketing overview see pricing.
What you are billed for.
You are billed for unique non-bot git authors whose work the platform touched, counted over a trailing 90 days and measured at each monthly billing cycle. At each cycle the platform takes an immutable snapshot of that count; the billed quantity for the cycle never changes after the snapshot is taken.
Read-only console users, bots, and service accounts are not git authors, so they are never counted and cost nothing. A cycle with zero contributing developers invoices €0 and leaves the subscription and all entitlements active — access does not stop just because a cycle was quiet.
When your developer count grows or shrinks past a volume band, the new band takes effect at the next monthly cycle, in both directions. Nothing blocks or warns you mid-cycle when the count grows: work keeps running, and the change is reflected at the next cycle.
One price per developer, per month.
The platform is €35 per contributing developer per month, with volume bands that lower the per-developer rate as your team grows. There is no minimum developer count.
| Developers | Monthly rate per developer |
|---|---|
| 1–99 | €35 / dev / month |
| 100–249 | ≈ €33.33 / dev / month |
| 250–499 | ≈ €28.33 / dev / month |
| 500+ | €25 / dev / month |
The amount for a cycle is the snapshot developer count multiplied by the rate for the band that count falls in. These are the deterministic figures the console computes; Stripe remains the invoicing authority for what you actually pay.
The 14-day trial.
Start with no card
A new organization gets a 14-day trial with no card required. The term is a fixed 14 days from activation.
One trial per GitHub organization, ever
A single stable GitHub organization receives one trial, once. Re-signing up does not grant a second trial, and subscribing later never rewrites your trial history.
Watch the days remaining
The billing panel reports
trial.days_remaining— whole days left, rounded up — andtrial.expires_at, the exact end of the term.What happens on day 14
A trial has no grace period. When the term ends, entitlement is honored only strictly before the end, so access stops until you subscribe. Subscribing from an expired trial works and moves you straight to a paid subscription; it does not restart the trial.
Start a subscription from the console.
Open Billing in the console
Everything below happens in the console — there is no public subscribe URL to call yourself. Open the Billing panel for your organization.
Start the subscription
Choose to start a subscription. The console opens a Stripe Checkout session in subscription mode for the single platform price.
The seat count must be fresh
Starting a subscription needs a seat-count snapshot whose cutoff is within the last 48 hours. While one is being produced the console tells you the seat count is being computed — the platform reports the count daily while an organization is unsubscribed — so try again once it is ready.
Complete Stripe Checkout
Complete the Stripe Checkout session and return to the console. There is one open attempt per organization at a time, and duplicate completions converge to the same subscription.
Manage your subscription.
Open the Stripe billing portal
In the console, Billing → Manage billing calls
POST /console/v1/billing/portal-sessionwith an empty body ({}) and returns an ephemeral Stripe billing portal URL. From the portal you can update your card, view and download invoices, and cancel the subscription. The request needs your session cookie and the same-origin request header the console sends for you.If you see a 409
A
409means the organization has no live billing binding yet — you are still on a trial, so there is nothing to manage in Stripe. Subscribe first.Paid grace after a lapse
A paid subscription has a 14-day grace window after a term ends. The panel reports
in_grace: truewhileactivestays true through that window. After grace, access is fail-closed until the subscription is reactivated.
The billing panel, field by field.
GET /console/v1/billing reads the billing state for the session organization and returns the fields below. The trial block is present only while you are on a trial, and the seats block only once a per-cycle snapshot has been reported.
| Field | Meaning |
|---|---|
plan | The active contract plan id, or empty when there is no active contract. |
active | Whether an entitlement is honored right now. This is fail-closed: it is only true while access is genuinely in effect. |
in_grace | Whether a paid contract is inside its 14-day post-term grace window. active stays true during grace. |
subscription.state | One of trial, paid, or none. |
subscription.source | Where the entitlement came from — trial, manual, or stripe. Empty when there is none. |
subscription.status | The live Stripe binding lifecycle state, or "none" when there is no live binding. |
subscription.collection_method | The Stripe collection method for the live binding. |
subscription.current_period_start | Start of the live binding's current period. |
subscription.next_invoice_at | End of the live binding's current period. Null when it is unavailable. |
trial.is_trial | Whether the organization is currently on a trial. |
trial.days_remaining | Whole days left in the trial, rounded up. 0 once the trial has expired, and 0 when the organization is not on a trial. |
trial.expires_at | When the trial term ends. |
seats.reported | Whether a per-cycle seat-count snapshot exists yet. |
seats.contributing_developers | The billed developer count for the cycle — the immutable snapshot Stripe is billed against. |
seats.cycle_id | Identifier of the monthly billing cycle the snapshot belongs to. |
seats.unit_price_cents | The per-developer band price for the cycle, in euro cents. |
seats.amount_cents | The deterministic control-plane figure for the cycle, in euro cents (count times unit price). Stripe remains the invoicing authority. |
Status codes for GET /console/v1/billing:
| Code | Meaning |
|---|---|
200 | Billing state returned. |
400 | Malformed request. |
401 | No valid session. |
429 | Rate limited — retry later. |
500 | Internal error. |
503 | Temporarily unavailable — retry later. |
Status codes for POST /console/v1/billing/portal-session:
| Code | Meaning |
|---|---|
200 | An ephemeral portal URL is returned; open it to manage billing. |
400 | Malformed request (the body must be the empty object). |
401 | No valid session. |
409 | The organization has no live billing binding yet — you are still on a trial, so there is nothing to manage in Stripe. |
429 | Rate limited — retry later. |
500 | Internal error. |
502 | Stripe could not be reached — retry later. |
503 | Temporarily unavailable — retry later. |
Closing your account.
POST /console/v1/org/deletion requests deletion of your organization, and GET /console/v1/org/deletion reports the state of that request. Deletion is a request that we process — it is not automatic and not immediate.
Cancel any billable Stripe subscription first: a deletion request will not complete while a subscription is in a billable state (incomplete, trialing, active, past_due, unpaid, or paused). Use the billing portal to cancel, then request deletion.
What billing does not include.
There is no availability SLA and no high availability guarantee for the hosted platform. We do not offer BYOK or bring your own key billing.
We do not expose an invoice-PDF API — invoices come from Stripe and the billing portal. Billing is monthly only: there is no yearly or fixed-term prepayment, and no price other than the volume-band table above applies.
Get early access to the platform.
Every product is included in one platform subscription. Request early access and we'll onboard your team hands-on — free while we build toward launch.