Skip to main content
A coupon is a discount you attach to an invoice or an order. It is either a Percentage off or a Fixed amount off, and DMLY checks it is still valid before it takes anything off the bill. Loyalty sits on top of the same mechanism: your clients earn points for qualifying activity, and when a client has enough points DMLY mints a coupon for them automatically. Every loyalty reward is just a coupon; there is no second discount system to learn. Both live under Finance → Settings: coupons on the Coupons tab, loyalty on the Loyalty tab.

What a coupon takes off

A coupon comes off the subtotal before tax, and tax is then worked out on what is left. A 10% coupon on a bill of 100 with 20% tax takes off 10, not 12: the tax drops to 18 and the client pays 108.
A discount never takes off more than the subtotal. A large fixed-amount coupon on a small bill brings it down to zero (plus any shipping) rather than producing a negative balance. An invoice being built with a coupon code entered in the Coupon code field, highlighted, above the subtotal, discount, tax and total

The limits you can set

Each coupon carries its own rules, and all of them are checked at the moment it is applied: Outside its window, below the minimum, or past a limit, the coupon is refused and the bill is issued at full price. The New coupon window with a code, a percentage type and value, and the minimum subtotal, usage limit, per-contact limit and date fields highlighted Watching a limit fill up: the coupons list has a Usage column that counts redemptions against the cap: 3 / 10 for a coupon with a usage limit of 10, or a plain 3 when the coupon is unlimited. That counter is the total across everyone; how many times one particular client has redeemed it isn’t shown anywhere, even though the per-contact limit is still enforced.
Redemption is first-come. If two invoices try to claim the last remaining use at the same moment, one gets the discount and the other is issued without it. There is no queue and no error to catch, so check the invoice total before you send it if a coupon was meant to apply.
An automation can apply a code to an invoice that has already been posted, with the Apply Coupon node. It does nothing if the invoice is void, already paid, or already carries a coupon, or if the code is invalid, expired or used up. The node has a Failed output: when the coupon does not apply, the run takes that branch if you have wired it, and otherwise carries on down the normal path. Either way the failure is logged as an error in the run, so wire Failed if you need to react to it.

How loyalty points become a coupon

Loyalty only runs once Enable loyalty programme (under Loyalty programme) is switched on. It is off for every workspace until you turn it on, and while it is off no points are awarded at all.
1

A client earns points

You pick one Earning method, not both. Earn per amount spent scales points with the bill, and the field below is labelled Points per unit spent. Earn per activity gives a flat number of points per qualifying activity regardless of the amount, and the same field becomes Points per activity. The form defaults to Earn per activity, so out of the box points do not scale with spend.
2

They cross the threshold

Points needed to redeem is the balance a client has to reach. The setting describes itself plainly: The number of points a client must reach before they can redeem a reward coupon.The Redeem points card in Finance settings with Points needed to redeem highlighted, above the coupon name, coupon code and discount
3

DMLY mints their coupon

As soon as the balance crosses the threshold, a coupon is created for that client and the threshold’s worth of points is spent. The code carries a suffix unique to that client, so it belongs to them and cannot be passed around. A coupon is only minted when Points needed to redeem is above 0, the Discount is above 0 and a Coupon code is filled in.
You do not issue the reward yourself and you do not need to watch for clients hitting the threshold. Two qualifying purchases landing at once cannot mint two coupons or push a balance below zero.

When points are actually awarded

This trips people up, so it is worth being exact. The trigger is not fixed. Under Earning conditions you choose the status that earns for each kind of activity: Nothing is awarded unless the activity reaches the status you configured. On the defaults that means:
  • A paid invoice earns points when it is paid. If you switch orders to Confirmed, a paid invoice earns nothing.
  • A confirmed order earns points in its own right, independently of any invoice.
  • An invoice for an appointment is one of two exceptions. Its points are awarded when the appointment is completed, not when the client pays. A client who pays up front and then no-shows earns nothing.
  • An invoice that sells a gift card is the other. Buying the card earns nothing. The points come later, from the invoice the card is eventually spent against, so the same money never earns twice.
  • A class booking earns too, when the booking is attended.
  • A connected store order (Shopify, WooCommerce) earns nothing on the default of Never. Set it to Paid or Fulfilled to award points for store orders.

Undoing a sale takes the points back

These claw back loyalty points: voiding an invoice, refunding a payment on a paid invoice, cancelling a confirmed order, a refunded or cancelled store order, and reverting a class attendance when classes earn on Attended. That is deliberate (a sale that did not happen should not leave a client closer to a free reward), so a client’s balance can drop after any of them. The claw-back goes further than the points. It also deactivates one still-unredeemed loyalty coupon for that client, so a reward minted from points you have just reversed stops working. The one thing it will not touch is a coupon the client has already redeemed: reversing that would corrupt a settled sale, so it is left alone.
DMLY messages the code to the client automatically the moment a loyalty coupon is minted, on their active channel, and records it to the inbox, so you do not need to pass it on yourself. Delivery is best-effort, though: if the channel send fails, the coupon still exists but the client never heard about it. That is when you would tell them on WhatsApp yourself. Either way it is an ordinary coupon and will be honoured on their next bill as long as it is still inside its window.

Invoices

Where a coupon is applied and what it changes on the bill.

Finance settings

Currency, due days, numbering and tax defaults.

Client profile

A client’s spend, statement balance and history.

Finance overview

How invoices, orders, subscriptions and payments fit together.