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.
- Open Billing from the workspace sidebar, then click the Ledger tab.
- 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
reasonfield naming the exact metric — for exampletext_reply,voice_minutes,knowledge_search,kb_storage, orai_task. - Click the row to expand the metadata. You will see the conversation ID (for chat or voice spend), the channel, and the model used.
- 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.
- Open Billing in the workspace sidebar.
- Click the Ledger tab. You will see the most recent transactions first.
- Use the date range picker to scope the view (default is the current calendar month).
- Use the filter chips to narrow by transaction type — AI spend, top-up, monthly grant, refund, or storage.
- 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:
- You email [email protected] with the invoice ID or the credit transaction ID and a brief reason for the refund.
- 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.
- The refund appears in your Ledger within minutes as a positive credit movement with the reason
refund_invoiceand the original invoice ID in metadata. The corresponding invoice flips torefunded(full) orpartially_refunded(partial). - 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.