Billing & Plans

Understand Praxiom AI's plans, credit system, compute boosts, trial milestones, and billing management.

Overview

Praxiom AI uses a credit-based billing system where credits map directly to the real cost of AI model usage. Every plan includes a monthly credit quota, and credits are consumed proportionally to what each operation actually costs — no flat per-run charges.


User-Scoped Billing

Subscriptions are tied to your user account, not to individual workspaces. This means:

  • One subscription covers all workspaces you are a member of
  • Credits are aggregated across all your workspaces
  • Upgrading your plan upgrades access everywhere

When you create a new workspace, it inherits your account-level plan and credit balance automatically.


Plans

Praxiom offers three paid plans plus a free trial tier. The pricing page displays them as cards with credits as the hero metric.

PlanMonthly CreditsPrice (Monthly)Price (Yearly)
TrialMilestone-based (up to 25)FreeFree
Pro100$29/mo$319/yr (1 month free)
Growth300$89/mo$979/yr (1 month free)
Power500$149/mo$1,639/yr (1 month free)

Toggle between monthly and yearly billing on the pricing page. Yearly billing saves you one full month.

Fetch full plan details with GET /api/billing/plans. Pass a workspace_id to see which plan is currently active.

What Each Plan Includes

Pro — For individual PMs getting started:

  • 100 credits/month, 50 research sources, 20 documents/month
  • 30-day chat history
  • Skills library, integrations, research graph
  • PDF and Notion export

Growth (most popular) — For teams with active research workflows:

  • 300 credits/month, 200 research sources, unlimited documents
  • 90-day chat history
  • API access (100 calls/day), GitHub integration
  • Up to 5 custom skills, priority execution, custom memory
  • Continuously optimized agent prompts

Power — For power users and autonomous research:

  • 500 credits/month, 500 research sources, unlimited documents
  • 1-year chat history, unlimited API calls
  • Multi-agent synthesis swarm, autonomous web research
  • Overnight research cycles (nightly experiments at 2 AM UTC)
  • Unlimited custom skills

Feature Gates

Higher-tier plans unlock additional capabilities. The backend enforces these via require_feature() (returns 403) and require_usage() (returns 402):

FeatureProGrowthPower
has_integrationsYesYesYes
has_research_graphYesYesYes
has_skillsYesYesYes
has_export_pdfYesYesYes
has_export_notionYesYesYes
has_api_accessNoYesYes
has_custom_skillsNoYes (5 max)Yes (unlimited)
has_priority_executionNoYesYes
has_custom_memoryNoYesYes
has_optimized_promptsNoYesYes
has_synthesis_swarmNoNoYes
has_fs_researcherNoNoYes
has_overnight_cyclesNoNoYes
has_ssoNoNoYes
has_audit_logsNoNoYes

Usage Limits

LimitProGrowthPower
Research sources50200500
Documents/month20UnlimitedUnlimited
Chat history30 days90 days365 days
Custom skills35Unlimited
API calls/day0100Unlimited
Cost target/month$10$25$60
Token budget2M5M10M

Compute Budget

Each plan has a monthly cost target and token budget. The feature gate warns at 80% utilisation and blocks new runs at 100%. The budget resets at the start of each billing period.


Cost-Proportional Credit System

Credits map directly to AI API cost. 1 credit = $0.08 USD of model API spend.

Credit Conversion Formula

credits = ceil(cost_usd / 0.08, nearest 0.5)

Where cost_usd is the actual Anthropic API cost of the operation (input tokens + output tokens at model-specific rates).

Model pricing used for conversion:

ModelInput (per 1M tokens)Output (per 1M tokens)
Claude Haiku$0.80$4.00
Claude Sonnet$3.00$15.00
Claude Opus$15.00$75.00

Credit Floors

Run StatusMinimum Charge
Success0.5 credits
Failed (with cost)0.25 credits
Failed (no cost)0 credits
Cancelled / partial0.25 credits

Failed or cancelled runs are charged at 25–50% of their actual cost, not zero. This reflects model API usage that occurred before the failure.

Chat Message Floor

Every chat message is charged a minimum of 0.25 credits, regardless of the model or response length.

Pre-Run Estimation

Before running an agent, fetch a credit estimate:

GET /api/billing/estimate?workspace_id={id}&model={model}&effort={effort}

Response:

{
  "estimatedCredits": 2.5,
  "creditRangeLow": 1.0,
  "creditRangeHigh": 4.0,
  "remainingCredits": 45.5,
  "warning": "This may use most of your remaining credits",
  "blocked": false
}

Set blocked: true means insufficient credits — the run will be blocked before execution.


Trial Milestone System

Trial workspaces earn credits progressively through 3 milestones:

MilestoneTriggerCredits Granted
signupAccount created5.0
first_runFirst successful agent run5.0
engagement3+ total agent runs5.0

Total trial credits available: 15.0

Track milestone progress via GET /api/billing/milestones?workspace_id={id}. Each milestone can only be granted once per workspace.


Daily Soft Cap

To prevent a single user from consuming the entire workspace quota in one day, Praxiom calculates a per-user daily soft cap:

daily_soft_cap = (monthly_quota / active_members / 30) × 2

The 2× multiplier provides burst headroom for intensive sessions. Workspace admins can see the daily cap in the Usage section of Settings.


Credit Balance

GET /api/billing/credits?workspace_id={id}

FieldDescription
monthly_quotaCredits included in your plan
monthly_usedCredits consumed this billing period
monthly_remainingRemaining plan credits
bonus_creditsCredits from active compute boost packs
total_availablemonthly_quota + all boosts ever granted
total_usedMonthly + boost credits consumed
total_remainingAvailable credits before you are blocked
is_blockedtrue when total_remaining ≤ 0

Compute Boost Packs

When you need more capacity without changing plans, purchase a one-time boost pack:

PackPriceCreditsValidity
Starter$1240 credits30 days
Plus$30100 credits30 days
Max$65215 credits30 days

Boost credits are consumed after your monthly plan quota is exhausted. Packs expire after their validity window regardless of usage.

Purchase a Boost

POST /api/billing/boost/checkout
{
  "workspace_id": "your-workspace-uuid",
  "pack_type": "starter"
}

Returns a checkout_url — redirect the user to Stripe to complete payment.

View Active Boosts

GET /api/billing/boosts?workspace_id={id}

Each boost shows credits_added, credits_used, credits_remaining, expires_at, and is_active.


Credit Depletion Screen

When is_blocked becomes true, users see a Credit Depletion screen summarising what was accomplished with the credits consumed:

  • Count of each work type (research briefs, recommendations, documents, conversations)
  • Total runs and credits used
  • CTAs: Upgrade Plan and Buy a Credit Pack

Fetch the accomplishments data via GET /api/billing/accomplishments?workspace_id={id}.


Subscription Management

View Current Subscription

GET /api/billing/subscription?workspace_id={id}

Returns your current plan, status, period dates, and the full limits object.

Subscription statuses: active · trialing · past_due · cancelled

Upgrade or Change Plan

POST /api/billing/checkout
{
  "workspace_id": "your-workspace-uuid",
  "plan": "growth",
  "interval": "monthly",
  "success_url": "https://praxiomai.xyz/?billing=success",
  "cancel_url": "https://praxiomai.xyz/?billing=cancelled"
}

Returns a checkout_url for Stripe Checkout.

Manage Billing

POST /api/billing/portal

Generates a Stripe Customer Portal URL for managing payment methods, invoices, and cancellations.

Sync After Checkout

POST /api/billing/sync?workspace_id={id}

Call immediately after a Stripe checkout redirect to sync subscription state before webhooks fire.


Usage Dashboard

GET /api/billing/usage?workspace_id={id}

Returns a usage breakdown for the current billing period:

Usage TypeDisplay Name
file_uploadResearch Sources
agent_runCredits consumed
document_draftDocuments
synthesisDaily synthesis operations
recommendationMonthly recommendation generations
chat_messageChat messages
integration_syncIntegration sync operations

Each item shows current, limit, and percentage usage.


Monthly Summary Emails

At the end of each billing period, workspace admins receive a summary email describing what was accomplished:

"5 research briefs, 8 conversations, 2 documents drafted — 142 credits used of 300"

The summary groups work by type using plain-language names (synthesis → "research briefs", full_pipeline → "deep research reports", etc.).


Stripe Webhooks

Praxiom processes the following Stripe webhook events at POST /api/webhooks/stripe:

  • checkout.session.completed — Provisions subscription or boost
  • customer.subscription.created — Activates new subscription
  • customer.subscription.updated — Syncs plan changes
  • customer.subscription.deleted — Marks subscription cancelled
  • invoice.payment_succeeded — Confirms payment, resets billing period
  • invoice.payment_failed — Sets subscription to past_due

The webhook endpoint has no JWT authentication — it is verified exclusively by Stripe's webhook signature. Never expose your STRIPE_WEBHOOK_SECRET.


What's Next

Was this helpful?