Troubleshooting billing and credits

If a credit charge looks wrong, start with the per-transaction Ledger on the Billing page — every credit movement is logged immutably with the exact action, timestamp, and balance after. This guide walks you through diagnosing a charge, exporting your history, requesting a refund, and reaching the Wassla billing team if you still need help.

Why was I charged X credits?

Every credit deduction in Wassla is tied to a specific event — an AI text reply, a voice minute, a knowledge search, an embedding generation, or monthly knowledge-base storage. There are no hidden fees and no automatic top-ups.

  1. Open Billing from the workspace sidebar, then click the Ledger tab.
  2. Find the transaction in question. Each row shows the timestamp, the credit delta (negative for spend, positive for grants and refunds), the balance after, and a reason field naming the exact metric — for example text_reply, voice_minutes, knowledge_search, kb_storage, or ai_task.
  3. Click the row to expand the metadata. You will see the conversation ID (for chat or voice spend), the channel, and the model used.
  4. Cross-reference the conversation ID with the Inbox to see the actual customer thread that produced the charge.

If the metric is kb_storage, the charge is the once-a-month bill for the gigabytes your knowledge base held during the prior month — it runs on the 1st of every month at 04:00 UTC and is not tied to a single conversation.

If the metric is voice_minutes, the charge represents the full duration of a voice call (rounded up to the minute). Voice is the most expensive metric per unit, so a single long support call can show as a noticeably larger debit than dozens of text replies.

Where do I view my credit transaction history?

The Ledger tab on the Billing page is the canonical, immutable record of every credit movement on your workspace.

  1. Open Billing in the workspace sidebar.
  2. Click the Ledger tab. You will see the most recent transactions first.
  3. Use the date range picker to scope the view (default is the current calendar month).
  4. Use the filter chips to narrow by transaction type — AI spend, top-up, monthly grant, refund, or storage.
  5. Click Export CSV in the top-right to download the filtered view. The export includes every column shown in the UI plus the raw metadata JSON for each row.

The ledger is append-only. Wassla never edits or deletes a transaction after it is written — corrections are always issued as new rows (a refund or an adjustment grant) so the history stays auditable.

If you need a tax-ready invoice rather than the raw credit ledger, see How to view and download invoices. The two views answer different questions: the Ledger shows credit-level events; the Invoices view shows the periodic billed totals you owe Wassla.

How do refunds work?

Refunds in Wassla are issued by the Wassla operations team, never by self-service. This is intentional — every refund touches the wallet ledger and the invoice payment status, so we route them through a controlled approval path with full audit trail.

Small refunds (under the per-call cap)

Refunds at or below the per-call cap of $500 (or 50,000 credits per request) are processed by a single Wassla support agent. The flow:

  1. You email [email protected] with the invoice ID or the credit transaction ID and a brief reason for the refund.
  2. A Wassla support agent looks up the charge in the staff portal, confirms the reason qualifies (duplicate charge, AI outage, billing error, goodwill credit), and issues the refund.
  3. The refund appears in your Ledger within minutes as a positive credit movement with the reason refund_invoice and the original invoice ID in metadata. The corresponding invoice flips to refunded (full) or partially_refunded (partial).
  4. You receive an email confirmation with the refunded amount and the new balance.

Large refunds (dual-control approval)

Refunds above the per-call cap of $500 (or 50,000 credits), or any refund that would push the issuing agent over the rolling daily cap of $5,000 (or 500,000 credits), require a second Wassla owner to approve before the funds move. This is the dual-control rule baked into Wassla's platform — it protects both you and us from a single-agent error or compromised account.

The customer-facing experience is the same: you email [email protected] and we handle the coordination internally. The only practical difference is that a large refund may take a few extra hours while the second approver signs off. Approval requests automatically expire after 24 hours, so you will never be left waiting on a stale ticket.

What refunds will and will not cover

We refund: duplicate charges, charges incurred during a confirmed platform outage, charges caused by a Wassla billing bug, and goodwill credits at our discretion for unusual situations.

We do not refund: AI spend on conversations that ran correctly but produced an answer you disagree with (those are coaching opportunities — see the audit log and retrain the agent), or credit allowances on free tiers that you did not use within the month.

How do I contact support for a billing issue?

Wassla offers two paths for billing questions, depending on urgency.

Email — the primary channel

Send detail-rich tickets to [email protected]. Include:

  • Your workspace slug (visible in the URL when you are signed in).
  • The invoice ID or credit transaction ID if your question is about a specific charge.
  • A screenshot of the Ledger row if it helps.
  • The outcome you are hoping for (refund, explanation, plan downgrade, etc.).

We answer in English and Arabic, typically within one business day during Riyadh business hours.

In-app — for active workspaces

If you are signed in, you can also open the support drawer from the bottom-left of the sidebar and tag the conversation as billing. The ticket lands in the same queue but auto-attaches your workspace context so we can investigate without asking for it.

What to do while you wait

If your workspace is in an out_of_credits state and you have a verified payment method on file, you can top up immediately from the Billing page without waiting on us — the top-up posts a new positive ledger entry within seconds and AI replies resume on the next inbound message.

If you suspect a runaway charge (an integration looping or a misconfigured agent), set a monthly spend cap from the Billing page or pause the affected channel from the Channels page while we investigate. Both actions are reversible and take effect immediately.