> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dmly.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Sell and redeem gift cards

> Sell a fixed-value gift card, activate it once it's paid for, and let a client spend it against any invoice.

A **gift card** is a fixed amount of money, sold up front and spent later: the studio
voucher a client buys for a friend, or the balance you comp a client as goodwill. It is
managed from **Finance → Gift cards**, alongside Payments, Invoices, Orders and the rest of
Finance, not from the Services/Products/Plans catalogue itself: selling one does not add
anything to your Offerings, it raises a purchase invoice on the spot.

<Note>
  **A gift card is not the same thing as a Plan's credits**, even though both are a balance a
  client draws down. Keep them apart:

  |                    | Gift card                                          | Plan credits                                     |
  | ------------------ | -------------------------------------------------- | ------------------------------------------------ |
  | What it holds      | Real currency value                                | A whole number of sessions                       |
  | What it buys       | **Anything** billed to an invoice                  | Only a service with a **Credit cost** above zero |
  | How it's spent     | A staff member redeems the code against an invoice | Booking the service deducts automatically        |
  | Where it's managed | Finance → Gift cards                               | Offerings → Plans                                |

  If you want a client to prepay for ten specific massages, that's a
  [Plan](/offerings/plans-and-credits). If you want to sell a voucher they (or someone they
  give it to) can put toward whatever they buy from you, that's a gift card.
</Note>

## Sell a gift card

<Steps>
  <Step title="Open Finance → Gift cards">
    Go to **Finance** and select the **Gift cards** tab, then **New gift card**.
  </Step>

  <Step title="Choose the purchaser">
    Pick the contact who is paying with **Purchaser**. This is who the purchase invoice goes
    to.
  </Step>

  <Step title="Add a recipient (optional)">
    **Recipient** decides who actually gets the code once the card activates. DMLY's own
    hint: *"Who receives the code. Leave empty to send it to the purchaser."* Set it when a
    client is buying a card as a gift for someone else.
  </Step>

  <Step title="Set the value and expiry">
    Enter the **Value**. **Expires** is optional: leave it blank and the card never lapses on
    its own; set a date and see [When a gift card expires](#when-a-gift-card-expires) below.
    There's no currency picker here: a gift card is always issued in your workspace's default
    currency, from your business details.
  </Step>

  <Step title="Sell it">
    Select **Sell**. DMLY mints the card's code, creates a purchase invoice with a single
    "Gift card" line for the value you set, and sends that invoice to the purchaser, on
    WhatsApp by default. The tip page never appears on a gift-card purchase.
  </Step>
</Steps>

The card is created **Pending**. It has a code already, but it isn't spendable yet: the whole
point of a gift card is that it only turns real once someone has actually paid for it.

### Issuing a card for free

Toggle **Issue as a comp** instead of filling in a purchaser, and DMLY skips the sale
entirely: no purchase invoice, and the card is **Active** the moment you save it, with the
code delivered to the recipient right away. Use this for a goodwill gesture or a promotional
giveaway rather than a sale.

## Activation

A card goes from **Pending** to **Active** the moment its purchase invoice is paid, however
that happens: the purchaser pays the online link, or you record cash or a bank transfer
yourself. The instant it activates, DMLY delivers the code by WhatsApp and email to the
recipient (or the purchaser, if no recipient was set), using a message built from the
`dmly_gift_card` WhatsApp template: the recipient's name, the value, the code, and your
business name.

<Warning>
  **This delivery isn't the one you toggle in Notification settings.** "Gift card delivery"
  does appear as a card under **Workspace Settings → Notification settings → Finance
  notifications**, but switching it off there has no effect; the code still goes out over
  WhatsApp and email every time a card activates. Don't rely on that toggle to silence it.
</Warning>

<Note>
  As with any DMLY WhatsApp notification, delivery needs the `dmly_gift_card` template
  approved by Meta. If a recipient says they never got their code, check the template's status
  under [Message templates](/broadcasts/message-templates) before anything else. The invoice
  itself still shows the code as its line-item description even while unapproved, so you can
  always read it out or forward it yourself.
</Note>

## The code, and the card's status

A code looks like `GC-XXXX-XXXX`, a fixed prefix plus two random blocks, unique per
workspace. You'll see it on the card in the **Gift cards** list, on the purchase invoice line,
and in the delivery message.

| Status        | Meaning                                                              |
| ------------- | -------------------------------------------------------------------- |
| **Pending**   | Sold, purchase invoice not yet paid. Not spendable.                  |
| **Active**    | Paid (or comped) and spendable.                                      |
| **Used up**   | Balance drawn down to zero.                                          |
| **Expired**   | Lapsed past its expiry date with balance left unspent.               |
| **Cancelled** | Voided by a staff member, or by a refund of its full purchase price. |

Select **View** on any card to open its detail drawer: balance, purchaser, recipient, expiry,
and its full redemption history.

## Redeeming a gift card

There's no self-checkout field where a client types their own code; a gift card is redeemed
by a staff member, the same way you'd record a cash payment or a bank transfer.

<Steps>
  <Step title="Open the invoice it's paying for">
    The client can redeem a gift card against **any** invoice: a service, a product order, a
    plan, anything you've billed them. Open that invoice and select **Record payment**.
  </Step>

  <Step title="Choose Gift card as the method">
    **Gift card** only appears as a payment method when you're recording against an invoice;
    it settles that invoice's balance, so it makes no sense as a free-standing payment.
  </Step>

  <Step title="Enter the code">
    Type the code the client gives you (they'll typically have it from the delivery message,
    over WhatsApp most often). The amount pre-fills to the invoice's outstanding balance;
    leave it as-is to draw everything the card can cover, or reduce it to make a partial
    redemption and save the rest of the balance for later.
  </Step>

  <Step title="Redeem">
    DMLY draws whichever is smaller: what you asked for, the card's remaining balance, and
    what's actually still due on the invoice. If the card can't cover the whole invoice, the
    balance still owed stays open for another payment method.
  </Step>
</Steps>

A card can be redeemed across as many separate invoices as it takes to spend it down; there's
no one-redemption limit. Each draw is recorded, and once the balance hits zero the card moves
to **Used up**.

<Warning>
  **The card's currency must match the invoice's exactly.** DMLY does not convert between
  currencies, so a card sold in one currency cannot be redeemed against an invoice in
  another; the redemption is rejected outright rather than converted at some rate.
</Warning>

## Cancelling a card

Select **Cancel gift card** on a **Pending** or **Active** card to void it. DMLY says exactly
what it does: *"Cancel gift card `<code>`? Any remaining balance is voided."* There is no
undo, and no cash comes back to anyone through this action.

If the card was still **Pending** (its purchase invoice unpaid), cancelling also voids that
invoice, so the purchaser can't pay it later and accidentally bring the card back to life.

## Refunds, and how gift cards appear in your revenue

Gift cards touch your books at two different moments, and DMLY is careful to count the money
only once.

* **Selling the card is the real income.** The moment the purchase invoice is paid, that
  amount is collected revenue, exactly like paying for anything else.
* **Redeeming it is not a second sale.** When a client spends the card against another
  invoice, DMLY settles that invoice's balance, but the draw itself is left out of your
  revenue totals and out of that client's lifetime-value figure. It has to be: the money was
  already counted once, when the card was sold, and counting it again at redemption would
  overstate what you actually took in.

That split also governs what a refund does:

<Columns cols={2}>
  <Card title="Refund the purchase" icon="rotate-left">
    Refunding the invoice someone paid to **buy** the card hands their money back, so DMLY
    takes the same amount off the card. A full refund cancels the card outright; a partial
    refund just shrinks its remaining balance while it stays active.
  </Card>

  <Card title="Refund a redemption" icon="ban">
    Not possible. A redemption never took new money in; there's nothing to hand back. DMLY
    blocks a cash refund on a gift-card redemption outright.
  </Card>
</Columns>

<Warning>
  **There's no built-in way to put value back on a card after a redemption.** If you need to
  undo one (you voided the invoice it paid, or the client didn't get what they redeemed it
  for), DMLY has no "re-credit the card" action. The practical workaround is to issue a fresh
  comp card for the amount owed.
</Warning>

## When a gift card expires

Set an **Expires** date and DMLY sweeps for it once a day: an **Active** card past that date
moves to **Expired**, whatever balance was left on it. This isn't the same claw-back logic as
[Plan credits](/offerings/plans-and-credits#when-credits-expire), which only takes back what a
client provably didn't use; a gift card's expiry is all or nothing. Leave **Expires** blank
at sale and the card is good indefinitely.

<Accordion title="Redeem says the gift card has not been paid for yet">
  The card is still **Pending**: its purchase invoice hasn't been paid. Check the purchase
  invoice under **Finance → Invoices** and either collect payment on it or record it yourself;
  the card activates automatically once that lands.
</Accordion>

<Accordion title="A teammate can't sell, redeem or cancel a gift card">
  Selling and redeeming are ordinary Finance actions, available to any Member. Cancelling is
  gated the same way as changing Finance settings, so a regular Member can't do it: only an
  Admin, the workspace owner, or a custom role explicitly granted that permission. See
  [Roles and permissions](/account/roles-and-permissions).
</Accordion>

<Accordion title="The Gift card option doesn't appear when recording a payment">
  It only shows up when you're recording a payment against an invoice. Recording a
  free-standing payment (not tied to one) never offers it, because a redemption has to settle
  something.
</Accordion>

## Next

<Columns cols={2}>
  <Card title="Plans and credits" icon="credit-card" href="/offerings/plans-and-credits">
    The other kind of prepaid balance: sessions, not currency.
  </Card>

  <Card title="Invoices" icon="file-invoice-dollar" href="/finance/invoices">
    Create the invoice a gift card gets redeemed against, and record payments on it.
  </Card>

  <Card title="Payments and gateways" icon="money-bill-transfer" href="/finance/payments-and-gateways">
    Connect a gateway so a purchase invoice can be paid online.
  </Card>

  <Card title="Notifications" icon="bell" href="/account/notifications">
    Where WhatsApp templates like the gift-card delivery message are approved and tracked.
  </Card>
</Columns>
