Skip to main content

A Customer Disputed Their API Overage Charge: Why Reversing Metered Revenue Isn't the Same as Issuing a Refund

Published 11 min readMike ThriftMike Thrift
A Customer Disputed Their API Overage Charge: Why Reversing Metered Revenue Isn't the Same as Issuing a Refund
On this page

Your biggest usage invoice ever just went out: $12,000 in API overage stacked on top of a $2,000 base subscription. Then the email lands: "We never used that much. We're disputing the charge." If that dispute goes to the customer's bank, the money is pulled out of your account without warning, a non-refundable fee lands on top, and your books are suddenly wrong in three places at once — revenue you already recognized, a receivable that may never convert to cash, and metrics that still claim the sale. What you book in the next 48 hours determines whether this is a one-line correction or a quarter-long reconciliation mess.

This guide walks through the correct accounting for a disputed metered charge: how it differs from a simple refund, where each piece lands under ASC 606, and the bookkeeping pattern that keeps your revenue schedule, AR subledger, and general ledger in agreement.

A dispute is not a refund​

Refunds and disputes get confused because both end with the customer keeping less of your money. Operationally and accounting-wise, they are different events:

FactorRefundDispute / chargeback
Initiated byYour businessCustomer, or their bank
Your controlFull control over timing and amountNone until the evidence phase
Timeline3–7 days45–90+ days through a bank
CostThe transaction amount onlyAmount plus a $20–$100 non-refundable fee
Processor standingNo impactCounts toward your chargeback ratio
DocumentationMinimalContract, usage logs, communications

The accounting difference matters more than the operational one. A refund unwinds a sale you choose to unwind. A dispute challenges whether the sale was valid at all — and under ASC 606 it reopens the variable-consideration question you thought you settled when the meter ran. Metered overage is variable consideration: you may only recognize it to the extent a significant reversal is not probable when the uncertainty resolves. A formal dispute is that uncertainty arriving in writing, which means recognized revenue comes back out now, not when the bank rules two months later.

What your books already say by the time a dispute arrives​

Bill-in-arrears overage runs a three-beat cycle every month: accrue estimated revenue in the month the usage occurred, reverse the estimate when the invoice posts, and record the actual billed amount once it is known. Revenue belongs to the usage period, not the billing period. So by the time a customer disputes October's overage in early November, you have typically done all of the following:

  1. Recognized the overage as revenue in October, when the meter ran.
  2. Invoiced it, creating (or increasing) an accounts-receivable balance.
  3. Possibly collected cash against the invoice already.

Each of those layers needs its own correction, which is why a single "refund" entry always misses something. The cash movement, the receivable, and the recognized revenue each unwind through a different account — and the revenue-schedule entry that ties them together is the one most teams forget.

The correct reversal, step by step​

1. Flag the invoice and freeze collections​

The moment a dispute is raised — by portal ticket, support email, or processor notification — mark the invoice as disputed and pause dunning and collections activity on it. Automated payment reminders chasing a disputed invoice torch the customer relationship and can complicate the evidence timeline if the dispute escalates to the bank.

Segment disputed invoices out of your standard AR aging. Every open dispute distorts AR aging, inflates days sales outstanding, and delays cash collection; lumping disputed balances in with ordinary past-due accounts makes your collections report lie about both populations.

2. Split the disputed amount from the undisputed amount immediately​

The customer in our example disputes the $12,000 overage, not the $2,000 base subscription. Under the variable-consideration constraint, you record only the undisputed portion and hold the rest back until the dispute resolves. The base stays recognized. The overage comes out of revenue now.

This is the step most likely to be skipped, because the invoice is a single document and the instinct is to treat it as a single accounting event. Unbundle it: one performance obligation (platform access for October) is settled, while the consideration for the other (metered usage) is now uncertain. They get different treatment from the dispute date forward.

3. Move the disputed amount to a refund liability — not an expense​

Here is the core entry, shown in plain-text accounting for a $12,000 disputed overage balance:

2026-10-01 open Assets:Cash:Operating USD
2026-10-01 open Assets:Receivable:Customer-Acme USD
2026-10-01 open Income:SaaS:Usage-Overage USD
2026-10-01 open Liabilities:Refund:Usage-Disputes USD
 
2026-10-31 * "Acme" "October API overage — 12,000 over allowance at 1.00 per call"
  Assets:Receivable:Customer-Acme  12000.00 USD
  Income:SaaS:Usage-Overage  -12000.00 USD
 
2026-11-04 * "Acme" "Customer disputes October overage — move 12,000 to refund liability"
  Income:SaaS:Usage-Overage  12000.00 USD
  Liabilities:Refund:Usage-Disputes  -12000.00 USD
 
2026-11-20 * "Acme" "Dispute conceded — credit memo clears refund liability against receivable"
  Liabilities:Refund:Usage-Disputes  12000.00 USD
  Assets:Receivable:Customer-Acme  -12000.00 USD

Walk through the logic. On October 31 you recognized the overage as revenue against a receivable — correct at the time, because nothing suggested the amount would come back. On November 4 the dispute makes reversal probable, so the $12,000 leaves revenue and parks in a refund liability: an obligation to return consideration, not a guess about future costs. On November 20, when you concede the dispute and issue the credit memo, the memo debits the liability and credits the receivable. October's revenue was right when booked, November's revenue is untouched by October's dispute, and the receivable clears without ever touching cash.

Three details worth getting right. First, the debit on dispute day goes to revenue (directly, or through a contra-revenue account like sales returns and allowances) — never to an expense. Amounts payable to a customer that are not for a distinct good or service received in return reduce the transaction price; a credit for usage the customer says they did not consume buys you nothing distinct. Second, the refund liability is separate from deferred revenue: deferred revenue is for service you have not delivered yet, while the refund liability is for delivered service you may have to give back. Netting them together hides both stories. Third, if you win the dispute instead, you re-recognize — debit the liability, credit revenue — with the evidence package logged alongside, not a restatement of the prior period.

4. Book the bank's fee as an expense — the one piece that is an expense​

If the dispute runs through the card networks, the $20–$100 dispute fee is non-refundable whether you win or lose. Unlike the disputed amount itself, the fee is a cost of the payments dispute process, so it debits a bank or merchant-fee expense account and credits cash. Never net it against revenue, and never fold it into the credit memo: it is your cost of fighting (or losing), and burying it in contra-revenue understates both your revenue and your true cost of payment disputes. The beancount documentation on structuring expense accounts covers the general chart-of-accounts shape this fits into.

5. Resolve, true up, and reconcile all three ledgers together​

Whatever the outcome, the adjustment must flow through your revenue schedule and transaction-price reallocation, not just the AR subledger. The classic failure is posting the credit memo to AR while the revenue schedule still shows the original recognized amount: the ledger falls out of sync, ARR reads too high, and a gap opens between cash, receivables, and revenue that auditors specifically hunt for.

If your estimate and the outcome differ, the difference adjusts revenue in the period the uncertainty resolves. Reserved the full $12,000 but settled for a $4,000 credit? The remaining $8,000 returns to revenue. Concede the full amount after reserving half? The extra half reduces current-period revenue. And the refund-liability account should hold only unresolved estimates — anything older than your dispute window that has not been released or applied means true-ups are being skipped.

Three mistakes that compound the damage​

Mistake 1: Booking the reversal as an expense. Recording a $12,000 disputed overage as a debit to support expense or concessions leaves revenue overstated by $12,000 and invents $12,000 of expense that never occurred. Gross margin, revenue growth, and every ratio built on revenue all read too high. Disputed consideration reduces the transaction price — full stop.

Mistake 2: Leaving recognized revenue up until the bank rules. With 45–90-day resolution timelines, waiting for the final decision misstates two or three monthly closes in a row: each month too high while the dispute pends, then a cliff when the reversal lands. Worse, the error concentrates in your metrics — net revenue retention looks fine until the month the dispute resolves, then drops for reasons nobody can explain without the backstory. The constraint exists precisely to prevent this: reverse when reversal becomes probable, which is the dispute date.

Mistake 3: Forgetting the revenue schedule. The credit memo clears AR, the cash clawback clears the bank feed, and the revenue schedule quietly keeps the original $12,000 — because nobody tied the dispute back to the contract it came from. Until everything is reconciled, previously recognized revenue is not actually safe. Tie every dispute to its original contract and revenue schedule at intake, or the three systems drift and misstated ARR is the least of your findings.

What disputes do to the metrics buyers and lenders read​

  • MRR and ARR should be net of expected dispute losses. If 1–2 percent of overage billings historically come back through disputes and credits, a headline ARR built on gross overage is overstated by exactly that share. Overage-heavy businesses should carry a small standing dispute reserve sized from trailing loss rates, trued up monthly.
  • Net revenue retention absorbs dispute credits as contraction. A customer who paid $144,000 last year and $132,000 this year after a conceded overage dispute retained at about 92 percent, not 100 percent — even if they never downgraded a seat.
  • DSO and AR aging inflate while disputes sit unresolved, which is why disputed balances get their own aging bucket rather than rotting inside the 60–90-day column.
  • Chargeback ratio is the existential metric. Dispute rates above roughly 1 percent of transactions draw fines, higher processing fees, and placement in the card networks' monitoring programs. A rising ratio is also a fraud-and-abuse signal: weak meter transparency invites "friendly fraud" disputes over legitimate usage, and each one costs the fee even when you win.

A dispute-response checklist for the next 48 hours​

  1. Flag the invoice and pause dunning. Mark it disputed in billing and AR the day the dispute arrives, and move it to a disputed-AR aging bucket.
  2. Pull the evidence package now. Contract terms, usage and meter logs for the disputed period, pricing rules, and the communication history. Bank evidence deadlines are strict, and meter logs are much harder to reconstruct in week six than in day two.
  3. Split disputed from undisputed and book the liability. Recognized revenue keeps only the undisputed portion; the rest moves to the refund liability the same day.
  4. Issue fast credits when you are wrong. Slow refund handling is one of the top reasons invoice disputes escalate to bank chargebacks. A prompt credit memo costs you the amount; an escalated chargeback costs you the amount plus the fee plus the ratio hit.
  5. Fight with records when you are right. Submit the contract, the meter data, and the usage evidence as one package, and log the submission against the dispute for the audit trail.
  6. True up all three ledgers on resolution. Credit memo or re-recognition posts to the AR subledger, the revenue schedule, and the GL together — never one without the others.
  7. Feed the loss back into prevention. Customer-visible usage dashboards, spend caps with alerts before the overage lands, clear billing descriptors, and renewal notifications each remove one common dispute trigger. Most metered-billing disputes start as surprise; surprise is a product problem you can fix before finance ever sees it.

Pull your largest unpaid usage invoice today and ask one question: if the customer disputed it tomorrow, could you produce the meter logs, the contract clause, and the pricing rule before lunch? If the answer is no, that evidence gap — not the accounting — is your real exposure, and closing it is the highest-return bookkeeping-adjacent work on your list this week.

Source: https://beancount.io/blog/2026/11/09/disputed-api-overage-charge-metered-revenue-reversal-asc-606-guide

Published: November 9, 2026