DevStride uses Stripe for subscription billing. The ds stripe CLI (cli/commands/stripe.ts) wraps three commands for provisioning Stripe products and customers and for auditing seat-count drift between DevStride and Stripe. It is a thin operational tool, not a sync engine — each command does one specific thing, and none of them run on a schedule.
ds command, ds stripe goes through the standard AWS SSO gate before running. The commands themselves call the Stripe API directly using STRIPE_SECRET_KEY, one of the values you fill in by hand in .env and push up with ds script set-config — see Getting Started.ds stripe add-products
Creates three Stripe products, each with a monthly and a yearly price, and a matching DevStride product record (via CreateProductCommand) with its default usage limits:
| Product | Monthly / Yearly price | Default | Notes |
|---|---|---|---|
| Professional | $9.00 / $90.00 | — | 100 smart suggestions, 1,000 actions, 1 GB storage |
| Business | $24.00 / $240.00 | Default product | 1,000 smart suggestions, 300,000 actions, 5 GB storage |
| DevStride Free | $0 / $0 | Marked custom | Same limits as Business; the plan create-customers subscribes new orgs to |
add-products always calls stripe.products.create — it does not check whether a product with that name already exists. Running it twice creates duplicate products in Stripe. Run it once per Stripe account/stage, not as a routine sync.When to run:
In practice you rarely need to run this directly — create-customers calls it automatically the first time it finds no products, so a fresh stage bootstraps itself.
# Every organization that doesn't have a Stripe subscription yet
ds stripe create-customers
# A single organization
ds stripe create-customers -o <organization-id>
For each organization (or just the one passed with -o/--organization):
add-products first, so a completely empty Stripe account bootstraps itself on the first create-customers run.When to run:
ds data copy)# Audit every organization
ds stripe find-subscription-quantity
# Audit a single organization
ds stripe find-subscription-quantity -o <organization-id>
Compares DevStride's active member count against the seat quantity on the organization's live Stripe subscription:
@devstride.com accounts are excluded unless the organization has devStrideUsersSupport enabled.subscription_quantity.csv in the current working directory, sorted with mismatches first, then by DevStride quantity descending.| Column | Meaning |
|---|---|
organizationId | Organization UUID |
organizationName | Organization name |
devstrideQuantity | Active member count in DevStride |
stripQuantity | Seat quantity on the Stripe subscription |
correct | true if the two counts match |
When to run:
-ofind-subscription-quantity only reads from DevStride and Stripe — it never corrects a mismatch. If a discrepancy shows up, follow up with create-customers -o <organization-id> or a manual Stripe adjustment as appropriate.ds script one-off and maintenance commandsSTRIPE_SECRET_KEY and other .env valuesGolden Dataset
The ds golden CLI: a scoped, generator-driven demo/test fixture built around the Acme org — what each subcommand does and where the deep-dive docs live.
Maintenance & Codebase Checks
Codebase wiring audits, data cleanup and repair scripts, operational toggles, and historical one-off migrations available via ds script.