Skip to main content

Billing

RedPennon bills subscriptions through Stripe (USD). Plan names, limits, and list prices are defined in the application and synced when you run manage.py seed from repos/admin (or ./dev.sh seed locally); the tables below match that source of truth.

Plans and limits

Prices are per organisation, billed monthly or annually (yearly totals below match the marketing site: Basic $200/yr, Business $2,000/yr, Enterprise $5,000/yr).

PlanMonthlyYearlyMax projectsMax environmentsMax team seatsMax feature flagsMax monthly MAUs
Free$0$03251001,000
Basic$25$200UnlimitedUnlimited20Unlimited10,000
Business$250$2,000UnlimitedUnlimitedUnlimitedUnlimited100,000
Enterprise$650$5,000UnlimitedUnlimitedUnlimitedUnlimitedUnlimited

The Free plan is free forever and requires no credit card. It is the default plan for new organisations and the plan an organisation drops to when a paid subscription is cancelled.

How limits are counted

  • Environments — Counted per project when creating environments or seeding dev+prod on project create. Plan-limit emails use the highest environment count on any single project in the org.
  • Team seats — The count includes the organisation owner plus pending (unaccepted) invites (owner + memberships + outstanding invites must stay within max_users).
  • Feature flags — Counted per project when enforcing max_features. Plan-limit emails use the highest feature count on any single project (Free only; higher tiers are unlimited in seed data).
  • Monthly MAUs — Distinct users per calendar month (identified by SDK user.id or email; anonymous traffic shares one anon:unidentified slot). Enforced on the evaluation API; owners receive a latch email when the cap is reached.

Roles

On Free, Basic, and Business, allows_roles is off in seeded data: every member is treated as a publisher for access checks (simplified experience). Only Enterprise turns on allows_roles for differentiated Publisher / Member / Viewer behaviour.

Free plan

New organisations start on the Free plan (no trial window, no credit card) — the organisation is active indefinitely within the Free limits. Upgrading to a paid plan goes through Stripe Checkout; cancelling a paid subscription returns the organisation to the Free plan.

Subscription management

Organisation owners manage billing from Settings → Billing in the app.

From there you can see the current plan, set invoice email, start change plan (Stripe Checkout via /billing/plan/ and related routes), and—once a Stripe customer exists—open the Stripe Customer Portal for payment method and invoice history.

Webhooks at /billing/webhook/ keep subscription state in sync with Stripe. In production, sync_stripe_subscriptions runs on a schedule to reconcile Stripe with the database.

See also

  • Environments — how environments relate to projects and API keys.