Wavo credits and limits

1 credit = $0.001. MARKUP 1.1× on model costs. credit_balance + monthly_cap. Owner/admin set cap via PUT /credits/cap. Stripe top up.

Written By Salvatore Sinigaglia

Last updated About 1 hour ago

1 credit = $0.001. MARKUP 1.1× on model costs. credit_balance + monthly_cap. Owner/admin set cap via PUT /credits/cap. Stripe top up.

Wavo credits and limits

Wavo usage is metered in credits: 1 credit = $0.001. Each message charged at input_cost + output_cost per 1K tokens (per the mode's model in chat-models.ts) with MARKUP 1.1× applied. Owner / admin set monthly cap via PUT /api/v1/chat/credits/cap. Top up via Stripe (POST checkout → purchase → confirm 3DS). View at /settings/team/billing.

Who is this for

Anyone wondering "how much does Wavo cost?" or "why am I out of credits?". Admins managing team usage caps.

The pricing model

Per-message cost

Each Wavo message charges based on:

  • Input tokens × input_cost_per_1k (model-specific)
  • Output tokens × output_cost_per_1k (model-specific)
  • MARKUP: 1.1× (10% on top of base provider cost)

Formula:

cost_credits = (input_tokens × input_cost + output_tokens × output_cost) × 1.1

Stored in chat_message.credits_used per message.

Mode costs (verified chat-models.ts)

You pick a mode (Fast / Smart / Expert), not a model name — Wevion manages which model powers each mode. Approximate base cost per 1K tokens in credits (input / output), before the MARKUP 1.1× multiplier:

ModeBest forInputOutput
Fast (default)Simple questions, high volume0.140.28
Smart (Plus+)Balanced speed + reasoning0.32.5
Expert (Pro+)Complex analysis, multi-tool chains530

These are credit values per 1K tokens (1 credit = $0.001). MARKUP 1.1× is applied on top when charging.

Why some modes cost more

  • Expert: deepest reasoning, best for complex analysis + long multi-tool chains — the most expensive lane
  • Smart: balanced, everyday analysis
  • Fast: cheapest, best for simple questions at high volume — the default

Pick a mode per task. For most daily mediabuyer questions, Fast (default) is fine; switch to Smart or Expert for heavier analysis.

The credit_balance table

Each team has one credit_balance row:

FieldWhat
owner_id (unique)team owner user_session_id
balancecurrent credits
total_purchasedlifetime purchased
total_usedlifetime used
monthly_capcap for current period (nullable)
monthly_usedused in current period
cap_reset_atwhen monthly_used resets

Same model as Creative Hub credits (ch-112) but separate ledger entries for chat messages.

View balance + history

/settings/team/billing shows:

  • Current balance (in credits + USD equivalent)
  • Monthly usage vs cap
  • Recent chat transactions (per-message cost, model, timestamp)
  • Top up button (opens Stripe)

GET /api/v1/chat/credits returns balance.GET /api/v1/chat/credits/history returns paginated transactions.

Top up via Stripe

For Stripe-enabled workspaces:

  1. /settings/team/billingTop up
  2. Pick amount or custom value
  3. POST /api/v1/chat/credits/checkout → Stripe checkout URL
  4. Complete payment (3DS confirm if required: POST /confirm)
  5. Webhook → credit_transaction credit entry → credit_balance.balance increments

Visible at /settings/team/billing after webhook completes (usually < 1 min).

Monthly cap (admin)

Owner / admin can set a cap to limit per-period usage:

PUT /api/v1/chat/credits/cap body:

  • monthly_cap_credits (integer, in credits)
  • cap_reset_at (typically first of month)

When monthly_used >= monthly_cap: chat messages return 402 with reason monthly_cap_reached.

Reset: at cap_reset_at timestamp, monthly_used resets to 0.

Per-user cap?

Currently: cap is per-team (owner-level), not per-individual-user. All team members draw from the same pool.

For per-user discipline: monitor usage in chat_message aggregations, or use Wevion roles to restrict who can use Wavo.

Cost-saving tips

Use a cheaper mode for iteration

  • Iterate prompts in Fast mode (cheapest)
  • Switch to Smart or Expert for final / important analysis

Per-session mode override via the mode picker in the chat composer.

Use project instructions

Setting context once via project instructions avoids re-typing context per session. Less input tokens = less cost.

Be specific in prompts

Vague prompt → Wavo follow-ups → multiple turns. Specific prompt → single turn, lower total cost.

Avoid unnecessary tool calls

If you already know the data, don't make Wavo re-query. Reference previous answer.

Memory facts persist context

Saving "ROAS target = 3 for ClientA" as a project fact means you don't restate it each session.

Limit output length

"In one sentence" or "Just the number" — reduces output tokens.

What charges, what doesn't

ActionCharges?
User message (input tokens)✅ Charged
Assistant message (output tokens)✅ Charged
Tool call (input + output to model)✅ Charged (Wavo sends tool result back)
Voice transcription (Whisper)✅ Charged (separate, via Whisper pricing)
File upload✅ Charged (file content sent to model as part of prompt)
Creating chat_session / project❌ Free
Searching message history❌ Free
Viewing approval card❌ Free
Approving an action (executes downstream)The action itself doesn't charge Wavo credits, but Creative Hub / Rules / etc. may have their own costs

Failed messages

If a model call fails (provider outage, network):

  • chat_message.status = failed
  • credits_used = 0 (no charge for failed completions)
  • Wavo says "I couldn't complete that — please try again"

Partial outputs may or may not charge depending on what reached the user (typical: charge for tokens streamed).

Compliance + audit

credit_transaction is append-only:

  • Every charge: type + amount (negative) + chat_message_id reference
  • Every top-up: type + amount (positive) + stripe_payment_intent_id
  • Sort by date for monthly reports

For audit: export from /settings/team/billing → CSV.

Common surprises

  • "Used 1000 credits in a day": long sessions with many tool calls in Expert mode add up; check usage breakdown
  • "Monthly cap hit early in month": usage spiked (large project audit); raise cap or wait reset
  • "Credit balance after top-up": Stripe webhook can take 1-2 min; refresh page
  • "Failed messages charged me": typically no charge; if charged, check credits_used on the message + contact support if anomalous

Common issues

  • 402 monthly_cap_reached: cap hit; admin raises cap or wait reset
  • Out of balance: top up via Stripe
  • Top up failed: Stripe 3DS required → use POST /confirm flow
  • Different cost vs expected: model + length + tool calls all affect cost; review per-message breakdown in history

FAQ

How much does a Wavo message cost?

Wavo usage is metered in credits, where 1 credit equals $0.001. Each message charges for input tokens times the model's input cost plus output tokens times its output cost, with a 1.1× markup applied on top. The formula is (input_tokens × input_cost + output_tokens × output_cost) × 1.1, and the result is stored in chat_message.credits_used.

Which Wavo mode is the default, and which is cheapest?

Fast is the default and the cheapest lane — right for most daily mediabuyer questions and high-volume iteration. Smart (Plus and up) adds balanced reasoning at a moderate cost. Expert (Pro and up) is the most capable and most expensive, suited to complex analysis and long multi-tool chains. You pick a mode, not a specific model — Wevion manages the underlying model behind each mode.

How do I top up Wavo credits?

On Stripe-enabled workspaces, go to /settings/team/billing and click Top up, pick an amount, and complete payment via Stripe checkout, confirming 3DS if required. A webhook then adds a credit entry and increments your balance, usually in under a minute. You can view your current balance and recent chat transactions on the same billing page.

Can I set a monthly spending cap for Wavo?

Yes. An owner or admin can set a per-team cap using PUT /api/v1/chat/credits/cap with a monthly_cap_credits value and a cap_reset_at date. When monthly_used reaches the cap, chat messages return 402 with reason monthly_cap_reached, and usage resets to zero at the reset timestamp. The cap is per-team, so all members draw from one pool.

Do failed Wavo messages charge me?

Generally no. If a model call fails due to a provider outage or network issue, the message is marked status = failed with credits_used = 0, and Wavo tells you it couldn't complete the request. Partial outputs may charge for tokens that were streamed to you; if a fully failed message appears charged, check credits_used and contact support.