Billing plans in the console
Teams can review plans and manage Stripe-backed subscriptions from a dedicated billing area.
From the changelog: Billing plans in the console
Authdog Team

Gating features on a Stripe subscription usually means a second catalog in your app and a webhook farm to keep seats in sync. Teams can now review plans and manage Stripe-backed subscriptions from a dedicated billing area in the Authdog console.
This is the longer note behind the July 23 changelog entry.
How it works
Billing in the console is the catalog your application sells — plans, features, and subscriptions — not the Authdog invoice for the organization. Plans are billed through the Stripe connection under Authentication > Add-ons > Stripe. That connection charges the subscriptions you define, syncs seat counts for per-seat billing, and lets Authdog stamp entitlements into access tokens.
A plan carries a name and identifier, a Stripe price mapping, and the features it grants. Features are what application code checks. Once a user is subscribed, entitlements are available from the session so a feature check is a local read rather than a round trip to Stripe.
Plan features stay synchronized with Stripe. Syncing creates or refreshes the plan's Stripe Product and Prices. Stripe Prices are immutable, so changing an amount mints a new Price; existing subscribers stay on the Price they bought until they change plans.
Identity-origin APIs cover browse, create, and cancel:
GET /billing/:environmentId/plans— publicly visible plans and the Stripe publishable keyGET /billing/:environmentId/subscription— the caller's current subscription (session)POST /billing/:environmentId/subscriptions— start a subscription; returns a client secretPOST /billing/:environmentId/subscriptions/cancel— cancel the caller's subscription
Plans are per environment, so dev can carry test-mode prices while prod carries live ones.
Set it up
- Connect Stripe under Authentication > Add-ons. Use a Stripe test account in development and the live account in production.
- Open Billing > Plans for the environment.
- Add features (slugs your app will check), then create a plan and attach those features.
- Select Sync to Stripe. An unsynced plan has no Stripe Price and cannot be checked out.
- Use the documented subscribe and cancel APIs — or the React billing components — from your app.
See Billing for checkout and entitlement checks, and Billing in the console for the catalog UI.
Trust boundaries
This module is not your Authdog organization invoice. Organization subscription tier still lives on the organization record.
Client-side gates (Protect, hasBillingAccess) decide what the interface shows. Enforce the same feature on the server before doing paid work. The public plans endpoint returns only plans marked visible, plus the publishable key — never a Stripe secret.
Card details confirm through Stripe Elements. They do not touch Authdog. A cancelled subscription follows Stripe's period rules; do not assume access drops on the same request.
Try it
Connect Stripe in a development environment, create a plan, sync it, and run a test subscribe then cancel. Setup is in Billing. The original release note is in the changelog.