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).
| Plan | Monthly | Yearly | Max projects | Max environments | Max team seats | Max feature flags | Max monthly MAUs |
|---|---|---|---|---|---|---|---|
| Free | $0 | $0 | 3 | 2 | 5 | 100 | 1,000 |
| Basic | $25 | $200 | Unlimited | Unlimited | 20 | Unlimited | 10,000 |
| Business | $250 | $2,000 | Unlimited | Unlimited | Unlimited | Unlimited | 100,000 |
| Enterprise | $650 | $5,000 | Unlimited | Unlimited | Unlimited | Unlimited | Unlimited |
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.idoremail; anonymous traffic shares oneanon:unidentifiedslot). 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.