No-show policy playbook

How to write a no-show policy for your solo beauty business

You already know deposits reduce no-shows. But a deposit without a written policy is just a charge — it doesn't tell the client what they agreed to, it doesn't give you a defense in a Stripe dispute, and it doesn't prevent the situation where a client calls forty minutes after their missed appointment asking for their deposit back. This post is the policy-writing playbook: what every no-show policy needs, how to write the policy_text field in ChairHold, how to set your cancellation window, and what mistakes to avoid across fixed-price, variable-scope, and high-ticket services.

Why a written policy matters more than the deposit amount

A no-show policy serves three distinct purposes, and most solo pros only think about the first one. The three purposes are: deterrence (the client knows there are consequences and books seriously), dispute defense (you have documentation that the client was informed of the terms before paying), and communication clarity (both sides have the same understanding of what "cancel" means and when the deposit is at risk).

Deterrence is mostly a function of the deposit amount and the existence of any policy at all. A client who has paid $35 toward an appointment is substantially more likely to show up than a client who paid nothing — the behavioral economics research on commitment-consistency is well-established, and the data for solo beauty specifically confirms it: no-show rates drop from the 15–22% range without deposits to the 2–4% range with deposit-gated booking, a reduction of roughly 80–90%. See the 2026 no-show economics post for the vertical-by-vertical breakdown of what that reduction is worth in annual revenue terms.

Dispute defense and communication clarity are entirely a function of what you wrote. A Stripe chargeback filed by a client who claims "I didn't agree to this charge" is much harder to defend without a written policy that was displayed before payment. The same chargeback is much easier to defend when you can point to the exact policy text that appeared on the checkout screen, below the payment amount, which the client read before entering their card number. Stripe's dispute resolution process gives significant weight to pre-payment disclosure — it is the difference between winning and losing the majority of "I didn't authorize this" disputes.

Communication clarity reduces the "but I thought" conversations that drain your energy even when you win them. A client who cancels 36 hours out and says "but I didn't know the deposit was non-refundable" is a client who either didn't read the policy or read it and hoped you'd let it slide. With a clear written policy, the conversation is short: "the policy you agreed to at booking says non-refundable within 48 hours — here's the confirmation email with the terms." Without it, you're negotiating.

The five elements every no-show policy must have

A complete no-show policy has five elements. Every element has a job. Missing any one of them creates a gap that a determined client — or a Stripe dispute reviewer — can exploit.

1. What service the deposit is for

Name the service. "Deposit for balayage appointment on [date]" is more defensible than "deposit." This connects the payment to a specific service in a way that Stripe's dispute process can match against the charge. It also prevents the scenario where a client pays a deposit, books a different service, and then disputes the original charge as unrecognized.

In practice, ChairHold's policy_text field carries this automatically — the service name is displayed on the Stripe Checkout page alongside the policy text. But your policy_text should also name the service type so the text stands alone as a complete document if it appears in a dispute response submission.

2. The deposit amount or percentage

State it explicitly. "A 25% deposit is required to hold this appointment" is better than "a deposit is required." Stating the amount removes any ambiguity about what "the deposit" refers to and prevents a client from arguing that they expected a smaller or symbolic hold rather than an actual charge.

For fixed-price services, stating the percentage is sufficient because the dollar amount is deterministic. For variable-scope services, state both: "A 25% deposit on the minimum quoted price of $X is required to hold this appointment." This makes explicit that the deposit is not 25% of the maximum possible price — a clarification that prevents the checkout abandonment that comes from high-end anchoring. See the post on pricing deposits for variable-scope services for the full minimum-quote method.

3. The cancellation window

The cancellation window is the number of hours before the appointment during which the client can cancel and receive a full deposit refund. In ChairHold, this is the refund_window_hours field. Your policy text must state this number explicitly: "Cancellations made more than 48 hours before the appointment receive a full deposit refund. Cancellations within 48 hours are non-refundable."

"Within 48 hours" is a complete and defensible statement. "Last minute" is not. Stripe dispute reviewers, client communications, and your own consistency in enforcement all benefit from having a number you can point to.

4. The forfeiture sentence

One clear sentence about what happens when the client cancels inside the window or doesn't show. This is the most legally and operationally important element of the policy. The forfeiture sentence must be unambiguous: "The deposit is non-refundable for cancellations within [N] hours of the appointment or for no-shows." Do not soften it with hedges ("typically," "generally," "may be") unless you intend to negotiate it case-by-case — and if you negotiate it case-by-case, you don't have a policy, you have a starting position.

The forfeiture sentence is also where you prevent the "but I rescheduled, I didn't cancel" dispute. If you allow rescheduling and want to treat it differently from cancellation, say so explicitly: "Same-day rescheduling within 48 hours is treated as a cancellation — the deposit is forfeited but may be applied toward a future appointment at the operator's discretion." If you don't include this, you will eventually have a client who "rescheduled" to three weeks out at 11pm the night before and expects the deposit to follow.

5. Optional: rebooking terms

Whether a forfeited deposit applies toward a future appointment is your call — there is no industry standard on this. Some operators forfeit the deposit entirely on no-show (clean break, no ambiguity, no mechanism for clients to game the system by booking intent-to-forfeit). Others apply a forfeited deposit as a credit toward a future booking made within 30 or 60 days (reduces the total loss if the client does rebook, and softens the policy's severity in a way that reduces objection frequency).

If you include rebooking terms, make them specific: "A forfeited deposit may be applied as credit toward a future appointment booked within 30 days." If you don't include them, the absence of any rebooking mention reads as clean forfeiture — which is also a defensible position. Just be consistent.

How the policy_text field becomes dispute defense

ChairHold surfaces your policy_text directly on the Stripe Checkout page — below the payment amount, before the client enters their card number. This placement is deliberate. It means the client sees the policy as part of the payment act, not as a buried terms-of-service link they can claim they never read.

When a Stripe dispute is filed, you submit evidence — a response packet that includes the booking confirmation, the communication history, and crucially, documentation of what the client agreed to before paying. A screenshot of the Checkout page showing the policy text alongside the charge is strong evidence of pre-payment disclosure. It answers the most common dispute reason in solo beauty ("I didn't authorize this charge") with: here is exactly what the client saw on screen before they entered their card and clicked Pay.

This is why "deposit policies" written in your IG bio, or stated verbally at a prior appointment, or buried in a booking confirmation email that the client "might not have read" are weak — they create plausible deniability. Policy text that appears on the actual payment screen, at the moment the client is actively completing a financial transaction, does not.

For more on building the full dispute defense stack — Stripe Radar, 3DS authentication, and the evidence you submit in a chargeback response — see the Stripe chargeback response guide for solo beauty.

Setting the cancellation window by service type

The right refund_window_hours for your business depends on three variables: how long the service takes (which determines how much chair time is at stake if the slot goes empty), how much materials cost is consumed before the appointment begins, and how likely you are to fill a last-minute cancellation slot. These three variables combine differently across verticals.

24 hours: cuts, nail services, and short appointments

Services under 90 minutes with minimal pre-appointment materials cost — a men's cut, a gel fill, a basic manicure — can reasonably use a 24-hour window. The fill probability for last-minute slots (cancellations inside 24 hours) is low enough that the window closing earlier doesn't significantly improve slot recovery, and 24 hours gives the client a reasonable opportunity to cancel without a last-minute emergency becoming a financial penalty.

For solo barbers and nail techs, the no-show rate data suggests 24 hours is the industry standard and broadly effective with deposits — you don't need 72 hours for a $60 haircut because the deposit at 25% ($15) already filters most low-intent bookings.

48 hours: color services, lash sets, and 2-hour appointments

Color services, full lash sets, and any appointment that blocks the chair for 2+ hours benefit from a 48-hour window. The rationale is slot recovery: a 2-hour block that opens at the 48-hour mark has a meaningful chance of being filled by a client on a short wait (a repeat client who wants to move up, a new client who just discovered you, a cancellation from another operator's waitlist). The same block opening at 24 hours rarely fills because there isn't time to notify, confirm, and prep.

Color corrections specifically warrant 48 hours because there are also materials costs to consider — pre-mixed color and bleach pre-ordered for a specific appointment are not recoverable. While most color is not pre-mixed days in advance, the chair time is substantial enough (3–4 hours for a full correction) that a 48-hour window costs the client nothing meaningful (they have to cancel two days out rather than one) while giving you materially better slot-recovery odds.

72 hours: PMU, microblading, tape-in extensions, and high-ticket

Permanent makeup, microblading, and tape-in extension installs have the highest combination of materials cost and appointment duration in the solo beauty vertical. PMU and microblading block 2–4 hours and consume $60–$100 in pre-appointment materials (numbing agents, single-use needles, pigment pre-mixing) regardless of whether the client shows. Tape-in extensions block 3–4 hours and the hair itself may have been ordered specifically for the client.

For these services, 72 hours is the appropriate window — and many PMU artists and extension specialists use even longer windows (5–7 days) because the pre-appointment prep is substantial. The no-show glossary covers the deposit-deterrence-effect research on why higher deposits for high-ticket services proportionally reduce no-shows without a corresponding increase in booking abandonment.

If you're unsure where your service falls, the three-variable calculation looks like this: estimate the daily lost revenue from an unfilled cancellation slot (your average service price × your average number of same-type services per day). If that number is above $200, use 48 hours. If it's above $400, use 72 hours. If you also have materials that must be ordered or prepped in advance, add 24 hours to whichever baseline applies.

Three policy templates you can use today

The following templates are designed for the ChairHold policy_text field. Each template is complete — it covers all five required elements — and can be pasted directly into the field with your specific numbers filled in. Keep them under 250 characters to ensure they display cleanly on the Stripe Checkout page without truncation.

Template 1: Fixed-price service (cut, gel fill, lash extension)

"[SERVICE NAME] deposit ([DEPOSIT_PERCENT]% = $[AMOUNT]) holds your appointment. Cancellations more than [N] hours before the appointment receive a full refund. Cancellations within [N] hours or no-shows forfeit the deposit."

Example with real numbers — gel fill, $50 service, 25% deposit, 24-hour window:

"Gel fill deposit (25% = $12.50) holds your appointment. Cancellations more than 24 hours before the appointment receive a full refund. Cancellations within 24 hours or no-shows forfeit the deposit."

This template is 196 characters — short enough to display without truncation and complete enough to stand alone in a Stripe dispute response.

Template 2: Variable-scope service (color corrections, balayage, extensions)

"[SERVICE TYPE] deposit ([DEPOSIT_PERCENT]% of minimum price $[MIN]) holds your appointment. Final price confirmed at consultation; range $[MIN]–$[MAX]. Cancellations more than [N] hours before the appointment receive a full refund. Cancellations within [N] hours or no-shows forfeit the deposit."

Example — color correction, $120 minimum, $380 maximum, 25% deposit ($30), 48-hour window:

"Color correction deposit (25% of $120 minimum = $30) holds your appointment. Final price confirmed at consultation; range $120–$380. Cancellations more than 48 hours before the appointment receive a full refund. Cancellations within 48 hours or no-shows forfeit the deposit."

At 248 characters, this is the maximum recommended length for clean display on most Stripe Checkout layouts. For longer variable-scope policies, shorten the service type name and trim the range to "range confirmed at consultation" without the dollar values — the key elements are the deposit calculation basis and the forfeiture sentence.

Template 3: High-ticket service (PMU, microblading, tape-in extensions)

"[SERVICE NAME] deposit ([DEPOSIT_PERCENT]% = $[AMOUNT] of $[SERVICE_PRICE]) holds your appointment. Due to pre-appointment materials and extended chair time, this deposit is strictly non-refundable within [N] hours of the appointment or for no-shows. Deposit applies toward service balance."

Example — microblading, $450 service, 30% deposit ($135), 72-hour window:

"Microblading deposit (30% = $135 of $450) holds your appointment. Due to pre-appointment materials and extended chair time, this deposit is strictly non-refundable within 72 hours of the appointment or for no-shows. Deposit applies toward service balance."

The phrase "due to pre-appointment materials and extended chair time" performs an important function: it explains the business reason for the non-refundable window. Clients who understand why a policy exists are less likely to dispute it. Stripe dispute reviewers who see a clear business justification are more likely to side with the operator. The explanation doesn't need to be elaborate — one clause is enough.

Note that the high-ticket template explicitly includes "deposit applies toward service balance" even though Template 1 does not. For high-ticket services where the deposit amount is significant (a $135 deposit on a $450 service is 30% of a meaningful dollar amount), stating that the deposit is applied toward the total reduces friction at checkout. The client understands they're not paying an extra fee — they're pre-paying part of the service.

Vertical-by-vertical policy text examples

The templates above are starting points. Here are refined examples across the main solo beauty verticals, incorporating vertical-specific language and the deposit percentages recommended in the deposit sizing playbook.

Lash extensions — full set

"Full set deposit (25% = $[AMOUNT]) holds your 2-hour appointment. Cancellations more than 48 hours before the appointment receive a full refund. Cancellations within 48 hours or no-shows forfeit the deposit. Deposit applies toward service balance."

Lash full sets warrant 48 hours (not 24) because they block 2–2.5 hours of chair time and use perishable single-use tray materials that are pulled specifically for each appointment. The 2026 no-show rate for lash artists without deposits runs 18–22%; with deposit-gated booking it drops to the 2–4% range — see the no-show rate data by vertical.

Hair color — single process

"Hair color deposit (25% = $[AMOUNT]) holds your appointment. Cancellations more than 48 hours before the appointment receive a full refund. Cancellations within 48 hours or no-shows forfeit the deposit."

Color correction

"Color correction deposit (25% of $[MIN] minimum = $[AMOUNT]) holds your appointment. Final price confirmed at consultation; range $[MIN]–$[MAX]. Cancellations more than 48 hours before the appointment receive a full refund. Cancellations within 48 hours or no-shows forfeit the deposit."

Color corrections are the highest-variance service in the hair vertical. The 25%-of-minimum deposit handles the variable-scope problem; the 48-hour window handles the slot-recovery problem. The policy_text should always name the range so the client cannot claim price surprise — "final price confirmed at consultation; range $X–$Y" is the one sentence that converts the consultation from an ambush into an agreed-upon part of the process.

Nail services

"Nail appointment deposit (25% = $[AMOUNT]) holds your slot. Cancellations more than 24 hours before the appointment receive a full refund. Cancellations within 24 hours or no-shows forfeit the deposit."

Nail services have the lowest no-show cost in the beauty vertical (shorter appointments, lower per-service revenue, minimal pre-appointment materials). A 24-hour window and 25% deposit is the standard; operators with high repeat-client volume sometimes reduce to 20% for returning clients, but this adds policy-management complexity that rarely justifies the booking-friction reduction.

PMU and microblading

"PMU/microblading deposit (30% = $[AMOUNT] of $[PRICE]) holds your appointment. Pre-appointment materials and 2–3 hour chair time are non-recoverable — deposit is strictly non-refundable within 72 hours of the appointment or for no-shows. Deposit applies toward your balance."

PMU and microblading operators deal with the highest per-slot cost in the industry when a no-show occurs: 2–4 hours of blocked chair time, $60–$100 in consumed pre-appointment materials (needles, numbing, pigment), and a rebook cycle measured in weeks rather than days. The 30–35% deposit range (higher than other verticals) is justified by this cost structure and widely understood within the PMU client base as an industry norm. The 72-hour window is not punitive — it is the practical minimum for any meaningful slot recovery.

Mobile grooming

"[BREED/CATEGORY] grooming deposit (25% of $[MIN] minimum = $[AMOUNT]) holds your appointment. Final price may include condition surcharges disclosed at service start. Cancellations more than 48 hours before the appointment receive a full refund. Cancellations within 48 hours or no-shows forfeit the deposit."

Mobile grooming has a variable-scope element similar to color corrections — the condition surcharge for matted coats, heavy shedding breeds, or anxious dogs is not determinable at booking. Include the "condition surcharges disclosed at service start" line in your policy text so that surcharges are positioned as part of the agreed-upon policy structure rather than a surprise addition at the end. This converts a potential dispute ("you charged me more than the deposit said") into an expected disclosure ("the policy I read said surcharges may apply").

The most common policy mistakes

These are the policy errors that lead to avoidable disputes, DM arguments, and enforcement inconsistency.

Mistake 1: Too vague

"Deposits are non-refundable" is the most common form of this mistake. It states the consequence but not the trigger, the window, the basis, or the service. A client who reads "deposits are non-refundable" and cancels 10 days out may reasonably believe they are entitled to a refund — nothing in those four words told them otherwise. In a Stripe dispute, "deposits are non-refundable" is not a complete policy; it is a fragment that an aggressive client or dispute reviewer can frame as ambiguous. The full five-element structure eliminates the ambiguity.

Mistake 2: Missing the deposit basis statement

Saying "a deposit is required" without stating what percentage or amount creates a version mismatch between what you charge and what the client expected. Even if Stripe Checkout shows the exact charge, clients who did not read the checkout amount carefully can claim the charge was different from what was described. Including "25% deposit" or "$37.50 deposit" in the policy text creates a paper trail that the amount was disclosed.

Mistake 3: The wrong window for the service type

A 24-hour cancellation window on a 3-hour color correction effectively means you can never fill that slot — a 24-hour gap for a premium 3-hour appointment is not enough lead time for any practical slot-recovery mechanism. Conversely, a 72-hour window on a 45-minute gel fill is unnecessarily punitive for a service with low slot-recovery difficulty and low per-slot stakes. Match the window to the service; see the vertical-by-vertical guidance above.

Mistake 4: Inconsistency between policy_text and DM communication

The most common source of policy disputes is the gap between what the written policy says and what you communicated in DMs. If your policy_text says 48-hour cancellation window and you then send a DM to a client saying "just let me know if you need to reschedule and we'll figure something out," you have undermined your written policy. The DM conversation becomes evidence of a verbal modification to the written terms — and in a Stripe dispute, the most recent written communication wins.

The solution is not to be inflexible — exceptions are your call and sometimes the right call. The solution is to be deliberate: if you decide to waive the policy for a specific client, that's a choice you make knowing it creates an exception rather than a modification. Keep your DM language consistent with your policy by default. For the DM scripts that handle deposit questions and cancellation requests while staying consistent with a written policy, see DM scripts for deposit conversations and DM scripts for deposit objection handling.

Mistake 5: No forfeiture sentence for rescheduling

Clients who cancel last-minute don't always say "I need to cancel." They often say "I need to reschedule." If your policy says "cancellations within 48 hours forfeit the deposit" but says nothing about rescheduling, you have a gap that a determined client will use. "I didn't cancel — I asked to reschedule" is a real dispute. Close it by including same-day or short-notice rescheduling in the forfeiture clause: "Same-day rescheduling within [N] hours is treated as a cancellation."

Mistake 6: An apology where a policy should be

"I'm so sorry, but I do have to charge a deposit because I've been burned by no-shows" is not a policy — it's a confession that the policy is soft and negotiable. The client who hears this now knows that if they push back on a deposit charge, they are likely to get it waived. Policies work when they are stated as matter-of-fact operational requirements, not as personal apologies for an inconvenience.

The right framing, in a DM and in your bio copy, is neutral and businesslike: "I hold appointments with a deposit — here's the link." Not "I hope you don't mind, I've started doing deposits because…" The cancellation fee vs deposit comparison covers this framing difference and why deposit-first booking removes the apology-for-policy friction structurally rather than through better communication skills.

How to communicate the policy without a long DM conversation

The most efficient policy communication is the Stripe Checkout screen itself. When a client follows your booking link, selects a service and time slot, and arrives at the payment page, your full policy_text is displayed below the payment amount. The client reads it (or doesn't — but either way they've seen it), enters their card information, and clicks Pay. The deposit is collected, the booking is confirmed, and the policy has been communicated without a single DM.

This is why deposit-first booking with a written policy is more efficient than DM-based payment with a verbal policy explanation. The former scales to every booking without requiring your attention. The latter requires you to re-explain the policy to every new client who asks.

Pre-booking: your IG bio and story highlights

Your policy doesn't need to appear in your bio — the bio is for the booking CTA, not a terms summary. But it should appear in your "Book" highlight (the permanent Instagram story highlight that walks clients through the booking process). One slide that shows what the checkout screen looks like — including the deposit amount and the policy text — reduces the "I didn't know there was a deposit" question before it becomes a DM.

The one-sentence DM script

When a client asks about the deposit via DM before booking, the right response is one sentence that answers the question and directs them to the checkout: "Appointments are held with a 25% deposit collected at booking — you'll see the exact amount and full cancellation policy when you book at [link]."

This script does three things: it answers the deposit question (25%), it normalizes the policy (presented as a standard operational fact), and it directs the client to the checkout screen where the full policy is displayed. You don't need to recite the policy in a DM — the checkout screen does it for you.

The confirmation SMS

ChairHold's 24-hour reminder SMS is the right place for a brief policy reminder — not a full re-recitation, but a single sentence that reinforces the cancellation deadline: "Reminder: your [SERVICE] appointment is tomorrow at [TIME]. To cancel with a refund, contact before [CUTOFF TIME]." This converts the reminder from a passive scheduling note into an active policy reinforcement — and gives the client one final opportunity to cancel ahead of the forfeiture window rather than discovering it has passed when they try to cancel on the morning of the appointment.

Connecting your policy to ChairHold's configuration

The full deposit policy in ChairHold is driven by two fields in your service configuration: deposit_percent (the percentage of the service price collected as a deposit) and refund_window_hours (the number of hours before the appointment during which a cancellation qualifies for a refund). Your policy_text field is the human-readable version of these two numbers — it is not a separate policy, it is the customer-facing language for the same rules that drive the system's behavior.

This means keeping your policy_text in sync with your configuration is important. If you change refund_window_hours from 24 to 48, update the policy_text to match. A policy text that says "24 hours" while the system enforces "48 hours" creates a gap — clients who rely on the text and cancel at the 26-hour mark expecting a refund will get one if your text said 24 hours, regardless of what the system would otherwise do.

For full definitions of every deposit-related field in ChairHold — including deposit_percent, refund_window_hours, policy_text, and time_to_live — see the ChairHold booking glossary and the no-show and deposit-policy glossary.

The one-paragraph policy that covers most solo pros

If you offer a menu of fixed-price services (cuts, fills, color, lash fills — not corrections or extensions), one policy paragraph covers the full menu with minimal per-service customization:

"A 25% deposit is required to hold all appointments. For appointments of 1 hour or less, cancellations more than 24 hours before the appointment receive a full deposit refund. For appointments over 1 hour, cancellations more than 48 hours before the appointment receive a full refund. Cancellations inside these windows and no-shows forfeit the deposit. Same-day rescheduling is treated as a cancellation."

This covers 80% of the bookings for a solo stylist, nail tech, or barber with a standard menu. It handles both short and long appointments, states the deposit percentage clearly, defines the cancellation window for each tier, and closes the rescheduling gap. It runs 297 characters — slightly over the 250-character recommendation for a single service, so for most operators it's better deployed as two separate per-service policy_text entries rather than a single universal text.

The most important thing about the policy you write is not that it is sophisticated — it is that it exists, it is clear, and it is displayed at the moment the client pays. A simple five-element policy consistently enforced is worth more than an elaborate policy that gets waived in every DM conversation. Write it, post it at checkout, enforce it.

Set up your no-show policy in ChairHold

One booking page with your policy text on the Stripe Checkout screen. Deposits straight to your account. $9/mo flat — no per-booking fee, no marketplace cut. Early access is 90 days free.