Skip to main content
A Service decides whether money changes hands and when. You get three choices: take nothing, confirm the booking and send a pay link afterwards, or hold the slot until the client has actually paid. The mode is a property of the Service, so different services in the same workspace can behave differently: a free consultation takes no payment while a treatment demands payment up front. On top of the mode, a pay-before service can take a deposit instead of the full price, and any service can charge a no-show fee when a client doesn’t turn up.

Two things it needs before any of this works

Payment mode lives in Offerings, not Appointments. You set it on the Service, under Offerings → Services. There is no payment setting on the Appointments screens. A mode without a price does nothing. Payment only ever happens on a service priced above zero. Set Pay before booking on a service priced at 0 and DMLY ignores it completely; the booking behaves exactly as if no payment were required. The editor tells you as much: Set a price above 0 to require payment.
You also need a connected payment gateway. Without one, Pay before booking stops clients booking on the public booking page and Pay after the appointment silently sends no pay link. See Payments and gateways. Connect one before you switch a live service to a paid mode.

Set the payment mode

1

Open the service

Go to Offerings → Services and edit the service you want to charge for.
2

Set a price above 0

A price of 0 makes every payment mode inert.
3

Choose a payment mode

Pick No payment required, Pay after the appointment, or Pay before booking. If no gateway is connected you get a warning here: No payment gateway is connected, so clients won’t be able to pay. Connect one in settings.The payment section of the Edit service window with Payment mode set to Pay before booking and highlighted
Add-ons have no payment mode; they are never bookable and are sold as extras on an order.

The three modes

No payment required

The default. The booking confirms immediately and DMLY never mentions money. Use it for consultations, or when you take payment in person.

Pay after the appointment

The booking confirms immediately, then DMLY sends the client a pay link. The booking is real whether or not they pay.

Pay before booking

The slot is held, not booked. It only becomes a real appointment once the payment clears.

Pay after the appointment

The booking is confirmed first: the client gets their confirmation, the reminders are scheduled, the slot is yours. Only then does DMLY mint a checkout link and message it to the client on their active channel. The message reads 💳 Complete your payment for <service name>: <pay link>. This step is best-effort by design. If no gateway is connected, or the gateway errors, or the message can’t be delivered, the booking stays confirmed and unpaid. Nothing rolls back and nothing warns you. Treat pay-after as an invoice you sent, not as money you collected; check the booking’s paid state rather than assuming.

Pay before booking

The slot is held for 15 minutes while the client checks out, then confirmed by the gateway. During the hold the booking exists but almost nothing else does:
  • No confirmation message to the client.
  • No reminders scheduled.
  • No push to your connected calendar.
  • No appointment_booked trigger, so any Automation hanging off a booking stays quiet.
All of it fires the moment payment clears, not before. This is deliberate: a client who abandons checkout never gets a confirmation for an appointment they don’t have. The held slot is genuinely blocked, so nobody else can take it while the first client pays.
If no gateway is connected, the public booking page refuses a pay-before booking before any hold is created. The client sees: Online payment isn’t available right now. Please contact us to book this service. An AI chatbot booking releases the slot again and hands off to a human; a booking created through the API holds the slot with no pay link until the hold expires. Connect the gateway first.

Take a deposit instead of the full price

A Pay before booking service can ask for part of the price up front. A salon or clinic usually wants a deposit to make a slot cost something to abandon, not to collect the whole fee weeks early.
1

Open the service

Go to Offerings → Services and edit a service set to Pay before booking. The Deposit field only appears on that mode.
2

Enter a percentage

Type a number from 1 to 99. Left blank, the field shows Full price and the whole price is charged up front, as before. Under the field, DMLY works out the split for you: what the client pays to book, and what is left to pay at the appointment.The Deposit field set to 25 percent and highlighted, with the hint showing what the client pays to book and at the appointment
It’s a percentage rather than an amount, so it keeps making sense when you change the price. A 25% deposit on a service costing 60 is 15 to book and 45 at the appointment. The percentage is taken of the full price including tax. The booking page tells the client what they pay now to reserve the slot and what is due at the appointment, and the checkout charges exactly that amount. Everything else works as described above: the slot is held, and the booking confirms when the deposit clears. The balance is yours to collect. DMLY doesn’t send a link for the rest. Take it at the appointment, or send an invoice or payment link yourself. A booking only counts as paid once the full price has been collected, so a deposit-only booking shows as not paid, which is how you spot who still owes you. If you refund a deposit, the full price is owed again.
The deposit applies wherever the booking is made: the public booking page, the Calendar, the AI agent, the mobile app, the REST API and Claude. When the AI agent takes the booking, it also tells the client what’s left to pay at the appointment.

When payment never lands

Every 15-minute hold ends one of three ways. A background sweep runs every minute and releases holds past their deadline, so a freed slot comes back on the booking page within about a minute. Either way, any reminders queued for that booking are skipped; they never fire for a booking that fell through. Expired and payment-failed are both final. DMLY does not re-hold the slot, chase the client, or reopen the booking. If they still want the appointment, they book again.
A payment that arrives after the slot was released is not applied to the booking. The slot may already have been re-booked by someone else, so DMLY refuses to resurrect it. Instead it flags the booking for manual refund or review and writes a timestamped note on it: Payment succeeded after the slot was released — needs refund/review. The client still gets the standard payment receipt (if your Payment receipt setting is on), thanking them for a booking they no longer have, and your team gets an ordinary Payment received bell. Nothing tells the team this money needs a refund. You have taken the client’s money without giving them an appointment, so refund or rebook them by hand.

What the client is charged

The charge is priced off the booking’s own price snapshot, taken at the moment the slot was held, not the service’s live price. Editing the price in Offerings → Services while someone is mid-checkout cannot change what their gateway charges. Tax comes from the service’s own Tax rate (%) field in Offerings → Services, applied to that snapshotted price. Leave the field blank and the booking uses the workspace default tax from Finance settings, as the field’s hint says (Leave blank to use the default tax rate). Invoices use the same fallback, so a booking and its invoice are taxed the same way. A deposit is a percentage of this taxed total.

Charge a fee when someone doesn’t show

A No-show fee charges the client when their appointment is marked as a no-show. It works on any service, whatever its payment mode, including No payment required. Set it in either or both of two places:
  • On a service: in Offerings → Services, the No-show fee field, in the service’s currency. Its hint reads Charged when someone is marked as a no-show. Leave blank to use the workspace default.
  • As the workspace default: in Appointments → Settings, under Booking policy. It applies to every service that doesn’t set its own. Left blank, it shows No fee.
A service’s own fee wins over the default. To exempt one service from the default, set its fee to 0.

When it’s charged

Only when somebody marks the booking as a no-show: from the Appointments screens, the mobile app, the API, an automation step that marks a no-show, or class attendance. An appointment nobody marks is never charged. To make sure no-shows get marked, set Appointments nobody marked to Wait for review; see Past bookings close themselves. The fee comes on top of the usual no-show handling: the appointment_no_show trigger still fires, so your automations run as before.

How the money is taken

  • A saved card is charged. The client is then messaged that a missed appointment has been charged, and invited to reply if they think it’s wrong.
  • Otherwise they’re sent a payment link on the channel they use.
Cards are only saved when a client sets up automatic payment for a subscription, so for most clients the fee arrives as a payment link. A declined card falls back to a link too, rather than being recorded as money you collected. A few rules worth knowing:
  • Once per booking. Correcting the status and marking the no-show again doesn’t charge a second time. Changing the status back doesn’t refund it either.
  • Separate from any deposit. DMLY doesn’t subtract a deposit the client already paid. If you want the deposit itself to be the penalty, leave the fee blank.
  • Charged in the booking’s currency. The workspace default has no currency of its own.
A no-show fee needs a connected payment gateway. If none is connected when the no-show is marked, nothing is charged and your team gets a No-show fee not collected alert. Connect a gateway within 30 days and DMLY sends the client the payment link by itself, as long as the booking is still marked as a no-show.If a saved card was tried and failed and no link could be sent either, DMLY doesn’t try the card again on its own, because a timed-out charge can still have gone through. You get the same alert: check your gateway before you charge the client again.
Classes follow the same three modes, set on the class Service. Two differences worth knowing:
  • A pay-before class seat is held the same way, and released the same way. Releasing it frees the place in the session.
  • When a paid seat is released, the next person on the waitlist is promoted into a pay-before hold of their own: a promoted place still has to be paid for, it is not a free seat. See Classes.

Bookings your team or the API makes

Booking someone in yourself from Appointments → Calendar on a Pay before booking service works like the booking page, with one difference: there’s no checkout page to send the client to, so DMLY holds the slot and messages them a payment link, for the deposit if the service takes one. The booking confirms once they pay. The hold lasts two hours rather than 15 minutes, because a client booked over the phone needs time to see the message. If you’re taking the money yourself (cash, a card machine, a package they already hold), tick Payment taken in person. The appointment is confirmed straight away and no link is sent. The box only appears for a single confirmed booking: booking several slots at once, or a repeating series, confirms them without taking payment, so collect for those yourself. Payment modes do apply to bookings made from the public booking page and by an AI chatbot taking the booking in chat. Through the API, only Pay before booking is honoured; the response carries payment_required and payment_url. A Pay after the appointment service booked through the API is confirmed with no pay link, so send one yourself.
Almost always a hold that expired before the payment webhook arrived. Check the booking: if it is expired or payment failed, and their card was charged, the payment landed after the 15-minute deadline. The booking carries a note saying it needs refund/review. Refund them, or rebook them manually from Appointments → Calendar and settle the payment yourself. See Logs if you need to trace the gateway’s side.