Invoices, reconciliation & disputes
This page explains how billing records are generated, how to reconcile your usage, and how to handle disputes.
Billing cycle
Routic bills based on actual token consumption, recorded per request. Here's how the pipeline works:
- Request — You call the API with your key.
- Gateway processing — The gateway routes to a model provider and logs the spend.
- Usage sync — A sync job (every ~5 minutes) pulls gateway spend logs into
usage_records. - Billing debit — A billing job (every ~1 hour) deducts the cost from your account balance.
This means:
- Usage appears with a short delay — up to 5 minutes after the actual request.
- Balance deduction is not instant — it happens within the next billing cycle (up to 1 hour).
- Your dashboard shows near-real-time data — the usage and balance views refresh automatically.
Viewing your usage
In the dashboard
The Routic console provides:
- Usage overview — token consumption by model, by day.
- Balance — current account balance and recent transactions.
- API Key usage — per-key breakdown of spending.
Via the API
Use the usage endpoints to query your consumption programmatically. See Models, SKUs & usage for details.
Reconciliation
What is reconciliation?
Reconciliation means comparing what you expect to be charged against what was actually charged. This is important for:
- Budget tracking — ensure spending stays within expected bounds.
- Audit — verify that every request was billed correctly.
- Dispute resolution — identify specific requests where the charge is incorrect.
How to reconcile
- Export your request logs — from your application, export logs containing
request_id, model, and timestamp. - Compare with usage records — match each
request_idagainst the usage data in your dashboard or via the API. - Check totals — sum up token counts and costs for a time period and compare with the billed amount.
Common discrepancies
| Discrepancy | Likely cause | What to do |
|---|---|---|
| Missing usage record | Sync delay (up to 5 min) or the request failed before logging | Wait 5 minutes, then check again. If still missing, contact support. |
| Token count mismatch | Different tokenization between your count and the model provider | Token counts are determined by the model provider's tokenizer. Use the usage field in the response as the source of truth. |
| Cost seems wrong | Markup applied to the model provider's base price | The charge includes a markup over the model provider's cost. Check the cost comparison for pricing context. |
| Double charge | Retry was not idempotent — two requests were processed | The chat completions endpoint is not idempotent. Avoid retrying on non-rate-limit errors. See Errors & retries. |
Invoices
Current status
Electronic invoices are not yet available in the self-service portal. Invoice issuance follows these rules:
| Invoice type | How to request |
|---|---|
| Local statutory invoice | Contact support with your billing period and company details. |
| USD receipt | Available in your dashboard under billing history. |
| Proforma / Commercial Invoice | Contact support for cross-border documentation. |
Upcoming features
The following invoice capabilities are planned:
- Self-service invoice application from the console
- Automated invoice generation for monthly billing cycles
- Download history and status tracking
Disputes
If you believe a charge is incorrect:
- Collect the evidence — note the
request_id, timestamp, expected vs. actual charge. - Contact support — provide the details above. Include your account ID.
- Resolution timeline — disputes are reviewed within 1–3 business days.
Common valid disputes:
- You were charged for a request that returned a 500 error (tokens may not have been consumed).
- The same
request_idappears twice in your usage records. - The token count in the usage record doesn't match the
usagefield in the original response.