How to win a Stripe deposit dispute as a solo beauty pro
You collected a deposit. The client no-showed or cancelled outside your window. You kept the deposit. Three weeks later, Stripe emails you: "A dispute has been opened." The client filed a chargeback. Now you have 7 to 10 days to respond before Stripe forwards your case to their bank. This post is the evidence-packaging playbook for that window — what to submit, how to write the response, and the single factor that decides whether you win or lose before you type a word.
Why beauty deposit disputes are not product disputes
Stripe's dispute resolution framework was built around commerce — products shipped, subscriptions renewed, services rendered in full. A beauty deposit dispute fits none of those categories cleanly, and that mismatch is where most operators lose ground when they try to apply generic dispute advice to a no-show situation.
In a product dispute, the client's argument is typically one of three things: item not received, item significantly not as described, or unauthorized transaction. All three turn on whether something was delivered. In a beauty deposit dispute, delivery is almost never the question. The client received the booking confirmation. They had access to the time slot. The question is whether they forfeited the right to a refund by failing to cancel within the agreed window — and whether they agreed to that window in the first place.
This is why the winning argument in a beauty deposit dispute is not "I provided the service" — you didn't, that's often the whole problem — but "the client contracted for a held chair, the terms of that contract were disclosed and accepted before payment, and the client breached the cancellation clause." That argument requires different evidence than a product dispute, and it requires you to frame it precisely in those terms.
The solo beauty Stripe glossary covers chargeback, dispute, and compelling evidence in their Stripe-specific definitions. This post focuses on packaging evidence to win the specific dispute type a beauty deposit creates: a "services not received" or "credit not processed" filing from a client who no-showed or cancelled late.
The five pieces of evidence that win a beauty deposit dispute
Stripe asks for "compelling evidence" and lists categories. For a beauty deposit dispute, five specific pieces move the outcome — and the first one matters more than all four others combined.
1. The Stripe Checkout policy disclosure (the deciding piece)
This is the single most important piece of evidence in a beauty deposit
dispute. Before the client entered a card number, they saw your
policy_text displayed on the Stripe Checkout screen — a line
that named the service, stated the deposit amount or percentage, specified
the cancellation window, and declared the deposit non-refundable outside
that window.
When you submit a screenshot of the Checkout screen showing that disclosure — with the client's booking details visible and the policy text readable — you have demonstrated that the client was informed of the forfeiture terms before they chose to pay. A client who pays after seeing those terms has accepted them. That is a contractual act under cardholder agreement terms, not a surprise charge.
Banks reviewing disputes are looking for two things: did the merchant disclose the terms, and did the cardholder have an opportunity to decline? If your Checkout screen shows the policy and the client paid anyway, the answer to both is yes. That is the case you want to make before anything else.
If you do not have a Checkout-screen policy disclosure — if your policy lives only in your Instagram bio, a DM conversation, or a Highlights slide — this piece is absent. The dispute becomes much harder to win, because you cannot demonstrate pre-payment informed consent. This is the most common reason operators lose beauty deposit disputes, and it is the single thing worth fixing before the next dispute arrives. See how to write a no-show policy for the full policy_text requirements.
2. The Stripe payment record with service description
The second piece is the Stripe payment record itself — not as a duplicate of what Stripe already has, but as context-annotated evidence. Pull the payment detail page from your Stripe dashboard. It shows the charge amount, the timestamp, the card last four, and the description field you set when you created the payment link.
What matters here is the description. If your payment description reads "deposit" or "booking" with no service detail, it is weaker evidence than a description that reads "lash full set deposit — held appointment 2026-06-14 at 2:00 PM." The description connects the money to the specific appointment the client failed to attend. It preempts the "I don't know what this charge is for" argument, which is a common framing in "unauthorized transaction" disputes even when the card was legitimately used.
For deposit receipts and how to generate service-description invoices that double as dispute evidence, see deposit receipts and invoice generation for solo beauty pros.
3. The booking confirmation record
The third piece is evidence that an appointment was scheduled and communicated. This is typically a confirmation email or SMS sent to the client at the time of booking — showing the date, time, service name, and any cancellation policy reminder.
If your booking system sends a confirmation, export or screenshot it. The key details to surface: the client's contact information (email or phone number matching the dispute card), the appointment date and time, the service booked, and any policy reminder included in the message. If your system sends a 24-hour SMS reminder before the appointment, include that too — it is additional evidence that the client was informed of the appointment and had a second opportunity to cancel within the window.
This piece matters because it closes the "I forgot" and "I never confirmed" arguments. A client who disputes on the basis of not knowing they had an appointment runs into a confirmation email or SMS with their name, their appointment time, and a timestamp that predates the no-show by days or weeks.
4. The no-communication record
The fourth piece is often the most decisive in cases where the Checkout disclosure is in place but the client disputes anyway: evidence that no cancellation was communicated before the refund window closed.
This is a negative — you are proving the absence of a message, not the
presence of one. Screenshots of your DM inbox, text thread, or email
inbox showing no cancellation communication from the client before the
refund_window_hours cutoff are the standard format. If
your cancellation window is 48 hours and the appointment was at 2:00 PM
on June 14, the cutoff was 2:00 PM on June 12. Screenshots showing an
inbox with no cancellation message before that time, combined with the
first message you received (if any — often a no-show produces no message
at all), complete this piece.
Make the timestamps visible. Screenshot the full conversation thread, not just the most recent messages. If you use Instagram DMs as your booking communication channel, screenshot the thread from the booking date through the appointment date. If the client sent a message after the appointment cancelling or asking for a refund, include that too — it establishes that they knew they had an appointment and chose not to cancel within the window.
5. The service and window matching statement
The fifth piece is a brief written statement connecting all four pieces and explaining the service category, the cancellation window policy, and why it applies to this service type specifically. One paragraph is enough. The purpose is to give the bank reviewer a plain-language summary before they page through the exhibits.
Structure it simply: (1) what service was booked and at what price; (2) that a non-refundable deposit of [amount/percent] was collected at booking via Stripe Checkout with the policy disclosed at payment time; (3) that the client did not cancel before the [N]-hour window; (4) that the deposit was retained per the agreed terms; (5) that you have attached the Checkout policy screen, payment record, booking confirmation, and communication log as evidence.
Keep it factual and brief. The bank reviewer is not reading a story — they are matching your evidence to categories. Your job is to make the match as obvious as possible.
How to write the dispute response
Stripe gives you a response window of 7 to 10 days from the dispute notification. The response consists of a written statement and supporting documents you upload as attachments. Here is the structure that works for a beauty deposit dispute.
The opening statement (2–3 sentences)
State the nature of the transaction and the dispute in plain terms. Example: "This charge is a non-refundable appointment deposit for a lash full set scheduled for June 14, 2026. The client received and acknowledged the cancellation policy before paying via Stripe Checkout. The deposit was retained per the terms accepted at payment because the client did not cancel within the 48-hour cancellation window."
Do not lead with emotion or context about the client relationship. Bank reviewers process high volumes of disputes — a clear, direct statement of what happened and why the charge stands gets read; a narrative of frustration does not.
The evidence summary (one sentence per exhibit)
After the opening, list your exhibits and what each one shows. Example:
- Exhibit A: Stripe Checkout screen showing cancellation policy displayed to client before payment, including the 48-hour cancellation window and non-refundable deposit language.
- Exhibit B: Stripe payment record showing charge amount ($45), timestamp (June 1, 2026 at 10:23 AM), and service description (lash full set deposit — appointment June 14, 2026 at 2:00 PM).
- Exhibit C: Booking confirmation message sent to client at time of booking, showing appointment date, time, and service.
- Exhibit D: DM conversation thread from June 1 to June 14, showing no cancellation received before the 48-hour window (cutoff: June 12 at 2:00 PM).
Label your uploads to match: "Exhibit-A-Checkout-Policy.png", "Exhibit-B-Payment-Record.png", and so on. Labeled files tell the reviewer which document corresponds to which exhibit without requiring them to match screenshots to statements manually.
The closing line
End with a one-sentence request: "We request that this dispute be resolved in our favor based on the pre-payment policy disclosure and the absence of a cancellation within the agreed window." That is the entire response. Total length: typically 150 to 250 words plus the exhibit list. Longer responses do not improve outcomes.
What makes a dispute winnable vs. unwinnable
Not every beauty deposit dispute is winnable, and understanding why is more valuable than the evidence-packaging process itself. The outcome is largely determined before you open the Stripe dispute response form.
Winnable disputes
A dispute is very likely winnable when all three of the following are true:
- Your
policy_textwas displayed on the Stripe Checkout screen before the client paid — you can screenshot it and it clearly states the cancellation window and forfeiture terms. - You have a booking confirmation record (email or SMS) that was sent to the client at or near the time of booking.
- You have a communication log showing no cancellation before the window closed.
With all three, you have pre-payment disclosure, post-booking confirmation, and evidence of breach. Banks uphold these disputes at high rates because you have documented each step in the causal chain: informed consent → confirmed appointment → no cancellation → retained deposit per agreed terms.
Disputes that are hard to win
A dispute becomes difficult when the pre-payment disclosure is absent. If your only record of the client "agreeing" to your cancellation policy is a DM conversation where you mentioned it, an Instagram Stories slide they may or may not have seen, or a verbal agreement with no written record — you cannot demonstrate informed consent at the time of payment. The client's bank will likely ask: where in the transaction did the client agree to forfeiture? If you cannot point to the Checkout screen, you have no answer.
The second category of difficult disputes is where the service description is absent or generic. "Deposit" as a payment description with no service detail opens the "I don't know what this charge is" argument. It also makes it harder for a bank reviewer to connect the retained deposit to the specific appointment breach — they have to infer it from your narrative, which is weaker than showing it directly.
The third category is genuinely ambiguous cancellations — where the client did send a cancellation message, but you dispute whether it was within the window. If the timestamp on their message is close to the cutoff, the bank will often rule in the client's favor on ambiguity grounds. This is why setting refund windows conservatively (48 hours for most services, 72 hours for PMU and high-ticket work) matters: a 24-hour window leaves almost no cushion for timezone differences or message delivery delays.
High-ticket disputes: PMU and extensions
Permanent makeup, microblading, and tape-in extension appointments create a specific dispute profile that deserves separate treatment. The deposits are larger (30–40% of $350–$600+, often $120–$200), the chair block is longer (2–4 hours), and the pre-session material costs are real ($60–$100 in pigments, needles, or extension hair consumed regardless of whether the client shows).
For high-ticket disputes, the service and window matching statement (Piece 5) gains importance because the deposit amount is large enough that the bank reviewer needs context for why a $150 deposit is non-refundable. Include the chair-block duration and materials cost in your statement: "A 3-hour chair block was held and pre-session materials ($80 in pigments and supplies) were prepared. The deposit of $150 represents 30% of the $500 service price, consistent with industry practice for appointments of this type and duration."
PMU and microblading operators should also include the 72-hour cancellation window explicitly in their policy_text with a business-justification clause. The 72-hour window gives you a more defensible cutoff — a client who cancels 25 hours before a 3-hour PMU session had 47 hours of window available and did not use it. That framing is stronger than "they cancelled 25 hours out."
For PMU and extension appointments, the materials cost is also available to you as a separate argument if you ordered client-specific supplies (custom pigment match, specific extension hair ordered to spec). If you have a purchase receipt for materials ordered for this client's appointment, include it as a sixth exhibit. It turns an abstract "forfeiture" into a documented cost the merchant actually incurred.
Pattern analysis: what losing disputes tell you
A dispute you lose is a diagnostic signal, not just a loss. The pattern of why you lost tells you what to fix to win future disputes — or, better, to prevent them from being filed.
Pattern: no Checkout policy disclosure
If you lost because you had no pre-payment policy disclosure, the fix
is a single configuration change: add the correct
policy_text to your booking system so it appears on the
Stripe Checkout screen for every appointment. This is the highest-ROI
fix available. A single won dispute recoups months of the time you
spend on evidence gathering. The policy_text templates in
the no-show policy guide
are copy-paste ready.
Pattern: generic payment description
If you lost because your payment description gave the bank reviewer nothing to connect to a specific appointment, update your payment description field to include the service name and appointment date. This should be a template you set once: "[Service name] deposit — held appointment [date] at [time]." If your booking system sets the description automatically, check whether you can configure the template to include appointment details.
Pattern: no confirmation message
If you lost because you had no booking confirmation record to submit, enable automated confirmation messages in your booking system. Email or SMS — either works. The confirmation exists for the client's benefit too (reduces honest no-shows from genuine forgetting), but its dispute value is the timestamped record proving the appointment was communicated before the day of service.
Pattern: window too short, ambiguous cancellation
If you lost because the client's cancellation message was close to the window cutoff and the bank ruled on ambiguity, lengthen the cancellation window. A 24-hour window for a 2-hour appointment is not defensible when the client cancels at 23 hours. Recalibrate to 48 hours for most services, 72 hours for high-ticket work where you need slot-recovery time and have materials costs. See setting the cancellation window by service type for the vertical-by-vertical logic.
Pattern: same client, multiple disputes
If the same client has filed or threatened to file disputes across multiple bookings, the pattern is different — you are dealing with abuse of the dispute mechanism rather than a genuine misunderstanding. Document the full history: all payment records, all DM threads, all prior bookings. If you have won a dispute with this client before, include the prior evidence bundle as context. Banks track dispute patterns on accounts; serial disputors are identifiable. You can also block the client at the booking system level and decline future bookings.
Review the no-show glossary's "chargeback" and "dispute deterrence" entries for definitions and system-level prevention options.
The week after: win or lose
Stripe resolves most disputes within 30 to 90 days after you file a response. You will receive an email when the outcome is determined.
If you win
The disputed amount is returned to your account and the dispute fee (typically $15) is refunded. Log the win in your records — the payment ID, the dispute ID, the outcome, and the date. If you filed a strong evidence bundle, note which exhibits were most central to your argument. That bundle is now your template for the next dispute.
Do not contact the client to tell them you won. The dispute is resolved. Further communication creates a new surface for escalation. If the client books again in the future, that is a decision you make separately, but the dispute is closed.
If you lose
The disputed amount remains with the client and the dispute fee is not refunded. Log the loss and identify the pattern — which of the evidence gaps above applied. Fix the gap before the next booking session, not after the next dispute.
You cannot appeal a Stripe dispute outcome through Stripe itself — the decision comes from the card network (Visa, Mastercard) via the issuing bank. If the amount is significant and you believe the evidence was strong, you can request a review of Stripe's case handling (separate from the bank's dispute decision) through Stripe support, but this is a different channel and has a different success profile.
A loss is expensive — the deposit amount plus the $15 fee. But the
fix cost is almost nothing. One configuration change (adding
policy_text to Checkout) converts most future disputes
from coin flips into wins. The ROI on that one change is measured
in the next dispute you don't lose.
Prevention: the dispute that never gets filed
The best outcome in a dispute process is never entering it. The Checkout-screen policy disclosure does double duty here: it is the most important piece of evidence if a dispute is filed, but it is also a deterrent against filing in the first place. A client who has seen the forfeiture terms before paying is much less likely to claim they didn't know — both because they did know, and because they understand that evidence exists.
The deposit itself is also a deterrent at the filing stage. A client who has paid a $45 deposit and is considering whether to file a dispute knows that (1) they are disputing a charge they chose to make after seeing the terms, (2) they will have to provide a reason to their bank, and (3) the merchant has records. The bar to filing is meaningfully higher than it is for a client who paid nothing and is reacting to a "no-show fee" charged after the fact.
This is part of why deposit-first booking changes the dispute landscape entirely — not just by winning more disputes, but by reducing the number of disputes that reach Stripe in the first place. Operators who move from post-hoc no-show fees to pre-paid deposits typically report a significant drop in dispute volume even as they continue retaining cancelled-appointment revenue.
For the full picture of how no-show rates, deposit deterrence, and revenue recovery interact, see 2026 no-show economics for solo beauty and no-show rates by beauty vertical.
How ChairHold sets up the win
ChairHold's booking flow is built around the evidence chain that wins deposit disputes. Three configuration fields directly affect your dispute position:
policy_text — the text displayed on the
Stripe Checkout screen before card entry. This is Exhibit A in every
dispute response you file. The Checkout screen is generated from your
configured policy_text and displayed automatically to every
client at payment — you do not need to write it manually into each booking
or copy it into DMs. It is always there, always timestamped, always
visible before the charge.
refund_window_hours — the cancellation
window that defines when the deposit becomes non-refundable. This appears
in your policy_text and governs automatic refund behavior
if a client cancels within the window vs. outside it. Having a configured
window (not a verbal one, not a bio description) means your Checkout
disclosure and your actual refund behavior are in sync — a consistency
that matters when a bank reviewer is checking whether the policy you
disclosed is the policy you applied.
Appointment confirmation messages — ChairHold sends booking confirmation at the time of booking and a 24-hour SMS reminder before the appointment (via the Solo plan's 10 SMS/month allocation or the Pro plan's unlimited BYO Twilio). Both are timestamped records. Both appear in your evidence bundle as Exhibit C when a dispute is filed.
Together, these three outputs — Checkout policy disclosure, consistent refund window application, and timestamped confirmation messages — generate the first four pieces of evidence automatically, before a dispute is ever filed. The fifth piece (the service and window matching statement) is the one paragraph you write when you respond. That is the full evidence bundle for a winnable beauty deposit dispute.
See the Stripe chargeback response guide for the mechanics of what Stripe asks for and how the dispute timeline works. This post covers evidence packaging; that post covers the process.
Dispute evidence checklist
Before you file your response, check that you have each of these:
- Screenshot of the Stripe Checkout screen showing
policy_textwith cancellation window and forfeiture language (Exhibit A) - Stripe payment record with service-specific description field (Exhibit B)
- Booking confirmation email or SMS sent to the client, with timestamp (Exhibit C)
- Communication thread screenshots showing no cancellation before
refund_window_hourscutoff, with visible timestamps (Exhibit D) - Written statement: 150–250 words summarizing the four exhibits and explicitly stating the timeline of consent → confirmation → no cancellation → retention (body of response)
- For high-ticket services ($200+ deposit): materials purchase receipt if available (Exhibit E)
If any of the first four exhibits is missing, note why and what you have instead. A partial evidence bundle is better than no response. But if the Checkout policy screenshot is missing — if you cannot show pre-payment disclosure — lead your written statement with context about how your policy was communicated, even if it was not via Checkout. A DM thread showing the client acknowledging the policy, or a bio screenshot time-stamped before the booking date, is weaker than Checkout disclosure but is not nothing.
Then fix the gap. The next dispute starts from a better position.
Hold the chair. Win the dispute.
ChairHold's Checkout-screen policy disclosure is your Exhibit A in every deposit dispute — generated automatically before the client pays, timestamped, and retrievable any time you need it. $9/mo flat. Early access is 90 days free.