Overcharge Reconciliation
While a ride is running, Levy charges the rider's wallet as they go (a small debit every minute). When the ride ends, the system recalculates the final fare from scratch. Occasionally the running meter collected a few cents more than the final fare works out to. When that happens, Levy automatically credits the difference back to the rider's wallet. We call this overcharge reconciliation.
The rider always pays the correct fare
This is a self-correcting safeguard for small live-meter differences. The rider is automatically made whole — they end up paying the final calculated fare. Usually no action is required from the rider or the operator.
Why it happens
Two different systems price a ride, and they can disagree by about one minute around a pause:
- Live billing (during the ride) charges minute-by-minute. It uses the cheaper pause rate only for the minutes when it checks in and finds the ride paused.
- The final fare (at ride end) takes the total paused time, rounds it to whole minutes, and prices those at the pause rate.
On a short pause — say 95 seconds — the final fare rounds that up to 2 pause minutes, but the live meter may only have caught the pause once while it was running. That one extra minute the final fare counts as "pause" was billed live at the higher active rate. The difference between the two rates (plus tax) is the overcharge that gets credited back.
A few other things can cause a small difference too (daily caps, promo codes, or loyalty discounts that are only finalized at ride end). All of them are handled by the same reconciliation step.
Example
A ride with a ZAR 5.00/min active rate and a ZAR 2.00/min pause rate, with a ~95-second pause:
| Amount | |
|---|---|
| Live meter collected | ZAR 358.80 |
| Final fare (correct) | ZAR 355.35 |
| Auto-credited to wallet | ZAR 3.45 |
The ZAR 3.45 = one minute priced at the active rate (ZAR 5) instead of the pause rate (ZAR 2) = ZAR 3.00, plus 15% VAT = ZAR 3.45.
What each role sees
Rider
The difference is credited to their in-app wallet automatically. They are never overcharged on net.
Operators and most dashboard roles
These reconciliations are hidden on the ride page. Because they are an internal rounding correction (not a customer-initiated or operator-initiated refund), showing them as a "Refund" caused confusion. They no longer appear in the ride's refund list or "Total Refunded" total.
Super admins
Super admins still see everything — the reconciliation appears in the ride's refund history and in the admin Stripe fee / net-deposited breakdown — for full transparency and auditing.
How it's recorded
Even though it's hidden from most views, every reconciliation is fully recorded:
- A row is written to
ride_refundswithrefund_type: wallet,status: succeeded, and the reason "Overcharge reconciliation: per-minute billing exceeded final fare." - The rider's wallet balance is credited (never a card refund — wallet credits are instant and fee-free).
- Internal financial records are updated so the correction remains auditable.
Identifying one
In the data, these refunds carry metadata.type = "overcharge_reconciliation". They are always wallet credits and almost always a few cents to a couple of dollars.
How common and how large
These are small and infrequent — on the order of a couple percent of rides, typically cents each, most often on rides that were paused. Because they self-correct at ride end, they usually require no monitoring or intervention.
When to be concerned
Escalate only if the amount is unusually large, if the same rider or subaccount shows repeated large corrections, or if a rider believes they were overcharged by a meaningful amount. For those cases, see Understanding Ride Charges and its "Customer Says I Was Overcharged" troubleshooting steps, which cover pause time, dynamic pricing, benefits, and promo codes.
Related
- Automatic Refunds — the separate system that refunds failed or very short rides
- Understanding Ride Charges — how the final fare is calculated
- Wallet Payments — how the rider wallet works