Disputes are inevitable. Even great shops get one or two a year. Most are resolvable — but only if you act in the first 7 days, document like a lawyer, and resist the urge to argue with the customer over text.
This article walks through exactly what to do from the moment a dispute lands.
Day 0 — A dispute hits your dashboard
You'll see it in two places: the Stripe email ("Disputed transaction for $X — respond by [date]") and in SalesThumb under /app/disputes. Stripe gives you 7-10 business days to respond. After that the funds are gone and you've lost the dispute by default. Treat it as a hard deadline.
Open the dispute in /app/disputes. You'll see:
- The disputed amount
- The reason code (e.g., "Product not received," "Fraudulent," "Service not as described")
- A countdown to the response deadline
- A draft evidence package SalesThumb auto-assembles from the linked job
Read the reason code carefully. It tells you exactly what you need to prove.
The four reason codes that cover 90% of shop disputes
1. "Product / service not received." Customer claims they paid but didn't get the work. Defense: signed work authorization, completion photos with timestamps, the customer's pickup signature, post-completion SMS thread.
2. "Service not as described." Customer says the work didn't match what they paid for. Defense: the original quote with itemized services, the customer's quote-approval timestamp, before/after photos demonstrating the work matched the spec.
3. "Fraudulent — I didn't authorize this charge." Card was used, customer says it wasn't them. Defense: physical card swipe or chip-read at the shop, signed pickup, ID match if you captured one, security camera footage of the pickup.
4. "Credit not processed." Customer says you owed them a refund and didn't process it. Defense: refund records, refund attempt logs, communication with the customer about the refund.
The reason code shapes your entire response. Don't write a generic "the customer is wrong" defense — write one that addresses the specific code.
Day 1-2 — Assemble the evidence
In /app/disputes, click "Build defense package." SalesThumb auto-attaches:
- The linked invoice or work order
- All photos from the appointment
- The customer's signature (work auth + pickup)
- The full SMS/email thread with the customer
- The original quote and approval timestamp
- Any warranty registration on the work
You can add: a written narrative (200-500 words), additional photos from your phone, screenshots of any external conversation (Instagram DMs, etc.), and security camera stills if relevant.
Two rules for the written narrative:
Be factual, not emotional. "The customer arrived at 9am, signed the work authorization at 9:14am, the vehicle was completed at 2:47pm, and the customer signed pickup at 3:02pm." Don't write "the customer is being unreasonable" — Stripe doesn't care about your read on the customer's intent.
Address the reason code directly. If the code is "Service not as described," your narrative should walk through: this is what was quoted, this is what was approved, this is what was delivered, here are the photos demonstrating the match.
Day 3-4 — Don't argue with the customer
Resist the urge to text the customer and try to resolve it directly. Three reasons:
1. Anything you say can be screenshotted and attached to their side of the dispute. 2. Pressure tactics can backfire — Visa and Mastercard take customer protection seriously, and a "you should drop the dispute" message looks bad. 3. The dispute is already in motion; you can't pull it back by texting.
There's one exception: if the customer is open to a refund as a peace gesture, you can offer it through SalesThumb's refund flow. Stripe then closes the dispute as resolved. This makes sense for small ticket sizes (<$500) where the cost of fighting outweighs the chargeback hit.
Day 5-7 — Submit the response
In /app/disputes, click "Submit evidence." Stripe gets the package within minutes. You'll get a confirmation in the dispute log.
After submission:
- Stripe reviews within 60-75 days (sometimes faster).
- You can't add evidence after submission, so be sure before you send.
- The funds remain held until resolution.
While you wait, don't keep messaging the customer about it. Don't post about it on social media. Don't leave a negative review of the customer on Yelp (yes, shops do this — it always backfires). Move on.
What happens at resolution
You'll get an email from Stripe with the outcome: dispute reversed (you win), dispute upheld (customer wins), or partial reversal.
If you win: funds are returned to your Stripe balance within 1-3 business days. The dispute is closed. Note that you'll still see a $15 dispute fee on your Stripe statement — that fee is charged regardless of outcome.
If you lose: the funds are permanently gone, plus the $15 fee. You can appeal once if you have new evidence, but appeals rarely succeed without truly new information.
Reducing future disputes
Three operational habits cut your dispute rate dramatically:
1. Always get a signature. Both at work auth and at pickup. SalesThumb captures these on the customer-portal flow — make sure the customer signs at both points.
2. Always take completion photos. Before, during (for visible-progress steps), and after. The auto-photo prompt at job completion makes this a 10-second habit.
3. Send a post-completion SMS recap. "Hi [name], your job is complete — here are the photos: [link]. Let us know if anything looks off." This timestamps customer acknowledgment and reduces "I never agreed to this" disputes by ~70%.
A shop running these three habits typically sees fewer than 1 disputed transaction per 500 paid jobs. The shops without them see 5-10x that rate.