Skip to content

Billing & plans

Dezycro is sold per-seat with a monthly AI token allowance that scales with your seat count. All paid tiers ship with the full product surface — what differs is the price model, seat structure, monthly token budget, and a few high-touch features (SSO, BYOK, priority queue).

Plans

Free Pro Team Enterprise
Price $0 / month $20 / month (1 billable user) $39 / user / month (min 3) Custom (target $150–300 / user)
AI tokens / billable user / month 2M 15M 40M Unlimited or BYOK
Daily token cap 200K
Workspaces 1 5 Unlimited Unlimited
Projects per workspace 1 Unlimited Unlimited Unlimited
Features per project 3 Unlimited Unlimited Unlimited
Billable users 1 1 (Owner only) Unlimited, subject to cap Unlimited, subject to cap
Viewers Unlimited, free Unlimited, free Unlimited, free
SSO
BYOK (your own LLM keys)
Audit log retention 30 days 90 days 1 year (or custom)

Public pricing: dezycro.ai/pricing.

Tokens reset monthly. Your tenant's monthly budget is paidSeats × monthlyTokensPerSeat — e.g. a Team plan with 4 seats has a 160M token allowance pooled across the tenant. The 200K daily cap is a Free-tier anti-abuse measure only.

Roles, seats, and what counts

Dezycro has two role hierarchies and one billing concept that ties them together.

Tenant role

Organization-wide — applies across every workspace.

Tenant role Billable? What they can do
Owner Everything, including billing & cap management
Admin Everything except billing
Member Create + edit content in any workspace they belong to
Viewer Read-only across the tenant. Does not consume a seat.

Workspace role

Per-workspace — Admin / Editor / Viewer. Workspace roles are a finer-grained permission set inside a single workspace; they don't affect billing on their own.

A user with tenant role Viewer is constrained to workspace role Viewer in every workspace — you can't promote them to workspace Editor without first promoting them to tenant Member.

Billable user

A user whose stored tenant role is Owner, Admin, or Member. Stored — not effective. (See Pro role facade for why that distinction matters.) Viewers are not billable.

Your Stripe subscription quantity is kept in sync with the billable count automatically (see Auto-seat below) — there is no manual "add seat" / "remove seat" flow.

Pro role facade

The Pro plan supports one billable user — the Owner — but doesn't force you to delete or demote other members. The way this works at runtime:

  • Stored roles are never mutated by plan changes. When you upgrade Team → Pro, every existing member keeps their stored Member / Admin / workspace role in the database.
  • At request time, when tenant.tier == PRO, every non-Owner user is treated as Viewer — both tenant role and workspace role — regardless of what's stored. The transformation runs at the central auth layer (every service sees the same view) and on the user's /me endpoint (so the UI shows what they can actually do).

This makes Pro fully reversible:

  • Upgrade Team → Pro → other members go view-only, no data lost.
  • Downgrade Pro → Team → every member's stored role becomes their effective role again, instantly. No migration step.

On the billing page, Pro tenants with more than 1 stored billable user see:

"N members are stored as Member/Admin but are view-only on Pro. Upgrade to Team to restore their roles."

Auto-seat (Team only)

Pro is a flat plan: quantity is always 1, regardless of how many users exist. Auto-seat applies to Team:

  • Adding a billable user (invite a new Member, or promote a Viewer to Member/Admin):
    • If billableUserCount > 3 → Stripe quantity is incremented by 1, prorated immediately.
    • If billableUserCount ≤ 3 → no Stripe change. You're already paying the 3-seat floor.
  • Removing a billable user (delete, or demote to Viewer):
    • If billableUserCount (after) ≥ 3 → Stripe quantity is decremented by 1, effective at the end of the current period (no immediate refund).
    • If billableUserCount (after) < 3 → no Stripe change. Quantity stays at the 3-seat floor.

In short: Team always pays for at least 3 seats. Below that, you have paid-for headroom you can use any time without changing your bill.

Stripe quantity sync is atomic per-tenant (Postgres row lock + Temporal workflow), so rapid invites are coalesced into a single Stripe call and concurrent role changes can't race past the cap.

Billable-user cap (Team & Enterprise)

To protect against an over-eager admin doubling your monthly bill, the Owner can set a maxBillableUsers cap — a hard upper bound on the billable user count. Independent of Stripe quantity: the cap controls consumption, not payment.

  • Owner-only. Only users with BILLING_MANAGE permission can set or change it — by default, just the tenant Owner.
  • Applies on Team and Enterprise only. Setting a cap on Free or Pro returns CAP_NOT_SUPPORTED (Pro is structurally capped at 1 by the facade; Free is single-user).
  • Lower bound = max(currentBillableUserCount, tier.seatFloor). We never auto-demote — you can't shrink the cap below what's already used. (CAP_BELOW_USAGE if you try.)
  • Upper bound = none. Set to null for unlimited.
  • Stripe quantity is unaffected by cap changes.

What happens when the cap is reached?

Path Behavior
Admin invite / role promotion (POST /api/manage/users, PUT /api/manage/users/{id}/role) Hard block — HTTP 400 BILLABLE_CAP_REACHED. Admin must re-invite with Viewer role.
User self-join (OAuth callback, invitation acceptance, domain auto-join) Soft fallback — user is shown a dialog explaining the cap is reached and offered to join as a Viewer instead. Requires explicit consent.

Cap state is read and mutated under a Postgres SELECT ... FOR UPDATE lock on the tenant row, so concurrent self-joins can't squeeze past it.

Setting the cap

Organization Settings → Billing → Billable user cap.

UI shows current cap (or "Unlimited") with a hint like "You're using N of M cap". Admins (non-owner) see the value but can't edit. Members and Viewers don't see this section.

Upgrade & downgrade

Free → Pro

Billing page shows: "$20/mo for 1 billable user. Unlimited free Viewers." If you already have more than 1 billable user, you also see a warning that the others will become view-only via the Pro facade until you upgrade to Team.

Free / Pro → Team

Billing page shows a per-seat cost preview computed at checkout:

  • billableUserCount ≥ 3 → "You have N billable members. Starts at N × $39/seat/mo = $(N × 39)/mo."
  • billableUserCount < 3 → "Team requires a minimum of 3 seats. You have N billable members. Starts at 3 × $39 = $117/mo. You can invite up to (3 − N) more members without increasing your bill."

You must acknowledge the line item before checkout.

Team → Pro

Stored roles are not touched. Other members go view-only at runtime via the facade. Stripe quantity drops to 1.

  • Tenant tier flips to FREE; subscription stops.
  • Free's limits apply: 1 workspace, 1 project per workspace, 3 features per project, 1 user total, 2M tokens / mo, 200K daily cap.
  • Existing resources above those limits are preserved but read-only. You can't create more or invite new users until you upgrade.
  • Any maxBillableUsers cap is cleared (it doesn't apply on Free).
  • The admin sees a warning summarizing what's now past the limit and prompting an upgrade.

Stripe portal

Organization Settings → Billing → Manage subscription opens the Stripe customer portal: update payment method, download invoices, change plan (upgrades prorate immediately; downgrades apply at next renewal), or cancel.

The "Manage subscription" link is gated by BILLING_MANAGE permission — Owner-only by default.

What counts toward your AI token allowance

Your monthly budget is paidSeats × monthlyTokensPerSeat, pooled across the tenant — anyone in the tenant draws from the same bucket.

Operation Typical tokens / call
Test case generation (from TRD) 20,000–50,000
AI chat messages (PRD editing) 1,000–5,000
AI autocomplete (in-editor) 500–2,000
/dezycro:author PRD/TRD authoring 5,000–30,000
Workbook sweeps (Companion) 2,000–8,000

What does NOT count

  • Document upload + ingestion (embeddings run on shared infra)
  • Vector search retrievals
  • Reading the workbook, listing features, navigating the UI
  • Verifier binary execution (runs locally; no LLM)

Hitting the cap

  • The in-flight LLM call is allowed to complete.
  • Subsequent LLM-gated actions return: "Monthly AI token allowance exhausted. Upgrade to continue."
  • Non-LLM features (workbook editing, test runs, verifier, document upload, navigation) keep working.

Upgrade or add seats at any time from the Stripe portal — the new allowance applies immediately.

Subscription status API

For programmatic access, GET /api/billing/subscription-status returns:

Field Meaning
tier FREE / PRO / TEAM / ENTERPRISE
paidSeats Stripe quantity (Pro=1, Team=max(billableMembers, 3), Free=0)
billableMembers Stored Owner + Admin + Member count
viewerCount Stored Viewer count
pricePerSeatCents 2000 (Pro), 3900 (Team), custom (Ent), null (Free)
seatFloor 1 (Pro), 3 (Team), null (Free)
monthlyTokensPerSeat 2_000_000 / 15_000_000 / 40_000_000 / null (Ent BYOK)
dailyTokenCap 200_000 (Free), null otherwise
maxBillableUsers The Owner-set cap, or null if uncapped
currentPeriodEnd ISO timestamp for the renewal date

Audit trail

Every billing-affecting action lands in the audit log:

Action When it fires Key metadata
SEAT_ADDED Billable user created or promoted into a billable role user, new quantity, prorated amount, floorHeadroomUsed
SEAT_REMOVED Billable user deleted or demoted to Viewer user, new quantity, flooredAtMinimum
PLAN_UPGRADED checkout.session.completed webhook old tier, new tier, billable count, starting quantity, users affected by facade
PLAN_DOWNGRADED Subscription cancelled or payment failure old tier, new tier, reason
BILLING_CAP_CHANGED Owner edits maxBillableUsers oldCap, newCap, current billable count, paidSeats

Enterprise / BYOK

Enterprise tenants can avoid Dezycro's token meter entirely by configuring BYOK — all AI calls go to your own provider account and are billed there. Your Dezycro invoice becomes just the seat fee.

Enterprise contracts are set up by sales: Stripe subscription quantity and price are negotiated upfront. Auto-seat still runs (role changes adjust quantity within the negotiated bounds), but pricing is not enforced by the application.

Contact sales for Enterprise pricing.