Understanding AI credits
Last updated: May 19, 2026
Understanding AI credits
AI generation is metered by credits deducted from your team's credit_balance. Each creative_job records cost_cents (integer cents). Three tables: credit_balance (current balance per session), credit_transaction (debit / credit ledger), team_credit_cap (per-team caps to prevent runaway). View balance + transactions at /settings/team/billing. Top up via Stripe (see acc-* billing cluster).
Who is this for
Anyone wondering "what does this cost?" + admins managing team budget for AI generation.
How credits work
Every successful generation deducts cost from the team's credit balance:
You submit a generation (
POST /api/v1/creative-hub/generate/{type})Worker performs the generation — pays the upstream provider (Flux, Runway, HeyGen, ElevenLabs, etc.)
Worker records
cost_centson thecreative_jobrowA
credit_transactiondebit entry is writtencredit_balancedecrements bycost_cents
Failed generations do not charge. cost_cents stays at 0 for failed jobs.
The three tables
credit_balance
One row per session. Fields:
user_session_idbalance_cents(current balance, Int)updated_at
Read by /settings/team/billing for the headline number.
credit_transaction
Append-only ledger. Fields:
id,owner_id,user_idamount_cents(positive = credit, negative = debit)reason(top_up_stripe / generation_image / generation_video / etc.)metadata(JSON — references to creative_job_id or Stripe charge_id)created_at
Use case: audit "where did our credits go this month?" — sort by amount_cents descending of debits.
team_credit_cap
Optional per-team cap to prevent runaway spend. Fields:
team_id,user_session_id(member of team)monthly_cap_centscurrent_month_usage_centseffective_until
When current_month_usage_cents >= monthly_cap_cents: generation requests for that member return 403 with reason team_credit_cap_reached. Admin must raise cap or wait for next month reset.
Cost varies by provider + type + duration + resolution
Wevion doesn't publish fixed per-generation credit prices because:
Provider pricing changes (Flux, Runway, HeyGen update prices independently)
Cost depends on parameters (1024×1024 image cheaper than 2048×2048; 5s video cheaper than 10s)
Workspace plan may include credit bundles + overage rates
For the current cost of a specific generation: see the cost estimate in the generation form before submitting OR check cost_cents in the resulting creative_job row.
Where to view + manage credits
/settings/team/billing shows:
Current balance in credits / dollars
Monthly usage broken down by generation type
Recent transactions (paginated; filter by date / type)
Team caps (if set) with current usage vs cap
Top up button (opens Stripe checkout for credit purchase)
Top up via Stripe
For Stripe-enabled workspaces:
/settings/team/billing→ Top upPick amount or custom value
Stripe checkout opens
Confirm payment
credit_transactioncredit entry written via Stripe webhookcredit_balanceincrements
For Enterprise customers: credit bundles often included in plan; overage billed separately. See acc-108 pricing tiers.
Team credit caps (admin)
Owners / super_admin can set per-member caps to prevent one member from burning team budget:
/settings/team/billing→ Member capsPer-member input: monthly cap in credits / dollars
Save → enforced going forward
Existing usage in current month preserved. Cap applies to month-to-date usage only.
To remove a cap: clear the value + save.
Credits in generation flow
Before submitting a generation, the form may show an estimated cost based on your parameters. Final cost recorded after generation completes (small variance possible due to upstream provider pricing).
After completion:
Generation card shows actual
cost_centschargedLinked to the
credit_transactionentrySubtracted from
credit_balance
Failed jobs are free
If a generation fails (provider error, content moderation rejection, network):
creative_job.status = failedcost_centsremains 0No
credit_transactiondebitNo charge to balance
Same logic for partial completions (e.g. requested 3 image variants, only 2 succeeded — typically charged for 2 with explicit cost_cents per variant).
Compliance + audit
credit_transaction is append-only. Every charge has a metadata link to the creative_job_id or Stripe charge_id.
For monthly audits: export transactions from /settings/team/billing → review largest debits → identify cost drivers (specific providers, specific users).
Best practices
Set team caps before runaway
Don't wait until a member burns the budget. Set conservative caps + raise as needed.
Top up in bundles
Stripe bundles often offer volume discounts. Top up in larger chunks (with budget approval).
Review monthly usage
Quarterly trend on /settings/team/billing tells you whether AI generation is paying off (campaign performance vs cost).
Prefer cheaper providers for iteration
Iterating on prompts: use cheaper providers (openai_tts over elevenlabs, baseline image providers over high-end). Switch to premium when concept locked.
Common mistakes
Surprised by bill: didn't set team caps, member generated freely. Cap is the fix.
Topping up small amounts repeatedly: less efficient than bundle top-ups. Plan ahead.
Ignoring failed jobs: they cost nothing — but their existence may indicate content issues (prompt rejections); review patterns.
Mixing personal + team credits: Wevion's credits are team-scoped, not user. Member usage debits team balance.
Related
AI generation overview — what triggers charges
Pricing tiers — credit bundles in your plan
Manage AI jobs — per-job cost details