Most companies leak cash through tiny holes: duplicate SaaS seats, “mystery” fees, auto-renewals you meant to cancel, and refundable taxes that never got claimed. Receipt Mining is a one-week audit that turns your inbox and statements into refunds and permanent savings. Below is a complete, copy-paste system: what to pull, how to sort it fast, where the money hides, and the exact scripts to get credits back.
Receipt Mining: Hidden Credits, Duplicate Charges, Misc Fees — Step-by-Step Audit
A one-week, copy-and-paste system to recover refunds and cut recurring spend.
Tip: If your card provider lets you export Level 3 data, include line items and tax fields—that’s refund gold.
- Day 1 — De-dupe sweep: Sort by merchant+amount+date. Flag same-day duplicates and same-amount recurring patterns. Mark Duplicate? = Yes.
- Day 2 — Recurring map: Filter for monthly/annual keywords in descriptors (e.g., “SUBSCRIPTION,” “AUTO-RENEW”). Add Next Renewal from the receipt footer or portal.
- Day 3 — Seat vs. user reality (SaaS): Compare seats billed vs. active users. Mark idle seats and redundant tools.
- Day 4 — Travel & events: Look for unused/cancelled credits, resort fees not provided, parking overcharges, duplicate baggage.
- Day 5 — Taxes & exemptions: Identify misapplied sales tax/VAT (non-taxable services, reseller or nonprofit exemptions).
- Day 6 — “The Nuisance Nine” fees: Statement fees, paper billing, processing surcharges, rounding errors, expedited shipping you didn’t get, warranty double-charge, fuel surcharge on digital items, cross-border FX padding, support plan add-ons no one uses.
- Day 7 — Recover & lock savings: Send refund/credit requests, cancel/resize subscriptions, add contract guardrails, and set alerts.
$ recovered this audit
$ monthly reduced
# eliminated
# resolved
Goal: 1–3% of annual card/bank spend recaptured on first pass.
| Signal | Where to Look | What It Means | Action |
|---|---|---|---|
| Same merchant, same amount, same day | Card CSV (sort by merchant+amount) | Accidental double swipe or retry | Open ticket for duplicate reversal; include both auth IDs |
| Odd pennies (.04, .09, .94) | Statement line items | Processor pass-through or FX padding | Request fee schedule + refund, switch to fee-free plan |
| “Seat” count higher than staff | SaaS admin → billing | Zombie licenses, role mismatch | Right-size seats; ask for back-dated credit |
| “Annual” renewed early | Invoice dates vs. contract | Auto-renew or term misalignment | Pro-rate refund; align to fiscal month |
| Baggage/seat charged after cancellation | Airline receipts vs. flight status | Service not rendered | Claim credit with cancellation proof |
| Sales tax on exempt items | Line-item tax field | Misapplied tax | Submit exemption/ resale cert; request refund |
| Two tools doing same job | SaaS inventory | Redundant spend | Consolidate; negotiate price-match |
| Scenario | Evidence to Attach | Target Outcome | Script (email/chat) |
|---|---|---|---|
| Duplicate charge | Two auth IDs, timestamps, receipt screenshots | Full refund to original method |
Hi Billing Team—We were charged twice on [date] at [amount] (Auth IDs: [A], [B]). Same merchant and reference. Please reverse one charge to the original payment method. Thanks! |
| Unused SaaS seats | Seat count vs. SSO last-login report | Back-dated credit + seat reduction |
Hi [Vendor], we show [X] seats billed but only [Y] active users in the past 60 days (attached). Please credit the overages back to [start date] and reduce our license count to [Y]. Also confirm new MRR. |
| Misapplied sales tax | Invoice, tax line, exemption/resale proof | Tax refund + profile updated |
Hello, this service is tax-exempt for us under [reason]. Please refund the sales tax charged on Invoice #[#] and mark our account tax-exempt going forward (certificate attached). |
| Auto-renew without notice | Contract clause, notice window, timestamps | Pro-rated refund or cancellation |
Hi, our agreement requires renewal notice [X] days prior. We received none. Please cancel and pro-rate any charges after [date]. |
| Travel service not delivered | Flight/hotel cancellation, policy, receipt | Full/partial credit |
Hi, service on [date] wasn’t provided (docs attached). Please issue a refund to the original payment method. |
- Duplicate detector: concatenate Merchant+Amount+Date and count occurrences; filter >1.
- Recurring detector: group by Merchant, count charges per month; merchants with 3+ sequential months = subscription.
- Odd-cent fees: filter Amount where MOD(Amount*100,5)≠0 to find processor oddities.
- Seat mismatch: VLOOKUP seat list vs. HR roster to find unassigned licenses.
Keep a “Disputed?” column and date every outreach; follow up at 3 and 7 business days.
- App-store business subscriptions billed to personal cards.
- Annual plans that billed early or at old seat counts.
- Duplicate baggage/seat fees after itinerary changes.
- Sales tax on software or out-of-state services.
- Event tickets with fee waivers for nonprofits/education.
- Courier “fuel surcharges” on digital documents (misapplied).
| Guardrail | Why It Works | How to Implement |
|---|---|---|
| Unified card for subscriptions | Easy to audit & cancel | Issue a “SaaS card” with low limit and merchant alerts |
| Renewal calendar | Prevents surprise auto-renews | Add 30/60-day reminders in a shared calendar |
| Seat owner of record | Accountability for each tool | One manager per vendor; quarterly seat check |
| Price-rise cap in contracts | Blocks 10–20% jumps | “Max annual increase 5%, CPI-linked, with 30-day notice” |
| Vendor | Issue | Amount | Evidence | Contact | Opened | Status | Outcome |
|---|---|---|---|---|---|---|---|
| ExampleCorp | Duplicate charge | $248.00 | Auth IDs, receipt | billing@example.com | 2025-09-15 | Awaiting response | – |
Status options: Open • Vendor investigating • Approved • Credited • Denied (escalate) • Closed.
- Reply once with evidence and a simple ask: refund or account credit.
- Escalate to card dispute within 60 days (attach your thread).
- For SaaS, ask for extended term credit if cash refund isn’t possible.
- Re-export last 90 days; run duplicate/recurring filters.
- Review “Next Renewal” in next 60 days; renegotiate or cancel.
- Update seat owners; archive ex-employees’ licenses.

