Payments
Customer Credits (Store Credit)
Last updated 19 May 2026
Customer Credits (Store Credit)
Hold money on a customer account for future visits — issued from a deposit refund, given as goodwill compensation, redeemed from loyalty, or added manually by an owner or manager. Credits auto-apply at checkout in FIFO-by-expiry order so nothing expires unused.
Where to find them — Web: Customer profile → Store Credit section. Checkout: appears automatically when the customer has a balance. Mobile: not yet supported — credit management and issuance are web-only.
TL;DR
- Stored as money on a customer account; auto-applies at checkout.
- Four sources: refund (auto), compensation (manual), loyalty (auto), manual (operator-issued).
- Owner/Manager can issue or void; staff can use credits at checkout but can't add them.
- Available on every plan.
Where credits come from
| Source | When it's created |
|---|---|
| Refund | Automatically when a deposit is refunded with refundAction: "credit" on the deposit rule, or when a booking is cancelled with credit-refund mode. |
| Compensation | Issued manually via the Issue credit form — for goodwill ("Sorry for the wait — here's $20 toward your next visit"). |
| Loyalty | Created when a loyalty reward is redeemed for store credit. |
| Manual | Owner/Manager adds via the customer profile Issue credit form. |
Each credit carries an amount, source label, optional notes, optional expiry, and the creator.
Issuing credit manually
- Open the customer's profile.
- Scroll to the Store Credit section (Owner/Manager only).
- Tap Issue credit.
- Enter:
- Amount (required, dollars + cents — capped at $100,000)
- Notes (optional, up to 500 characters — appears on the credit history line and the receipt when applied)
- Expires in (optional days; blank = no expiry)
- Save.
The credit appears in the history list with source Manual and an editable status. Balance updates immediately.
Redemption at checkout
When a customer with a balance reaches checkout, a Store credit card auto-appears:
| State | What it shows |
|---|---|
| Available | "Store credit available · {balance}" with an Apply button |
| Applied | "Store credit applied" or "Credit covers this visit" (full cover) with a Remove link |
| Expiring soon (≤14 days) | "Expires {date}" warning under the balance |
Apply uses min(balance, amount due) — credit covers as much as it can without overcharging. Remove reverses the application and frees the credit back to balance.
Credits are consumed FIFO by expiry: the credit expiring soonest is used first. Credits with no expiry are used last. This prevents expiring credits from going unused while non-expiring credits sit on the account.
Viewing credit history
The customer profile Store Credit section shows:
- Balance card — total available credit (large number, muted if zero)
- Issue credit button (Owner/Manager only)
- History list — every credit ever issued, with:
- Source icon (refund / compensation / loyalty / manual)
- Source label
- Amount
- Date
- Optional notes
- Status badge: Available, Used, Expired, or Voided
Each available credit has a trash icon to void.
Voiding a credit
Click the trash icon on any available credit. The confirmation dialog says:
"Void this store credit? The {amount} credit will be cancelled and cannot be reused."
After void:
- Balance drops by the voided amount
- The credit shows Voided status in the history list
- The credit can no longer be applied at checkout
- The history row stays for audit — it's not deleted
Concurrency & integrity
Applying and reversing credits uses row-level locks (FOR UPDATE) on the credit rows to prevent double-debit when two operators try to use the same credit at the same time. Reversal restores the credit's original balance and clears any used-booking / used-order links.
Idempotent: applying credit twice to the same order is a no-op — the first application is reversed and re-applied.
Customer-facing view
Customers don't currently have a portal view of their credits — they see credits applied on receipts ("Store credit applied: -$20.00") and confirmation emails after a checkout that consumed credit.
If a customer asks about their balance, look it up on their profile and tell them — there's no self-service surface today.
Role access
| Action | Owner | Manager | Stylist |
|---|---|---|---|
| View credit balance on customer profile | Yes | Yes | Yes |
| Issue credit | Yes | Yes | No |
| Apply credit at checkout | Yes | Yes | Yes |
| Void credit | Yes | Yes | No |
Stylists can use credit at checkout (customer reaches the till, credit auto-applies) but can't add or void.
Tier
All plans. Credits work on FREE and PRO.
Mobile parity
Mobile shows credit balance on the customer profile, but issuing credit, voiding credit, and the credit history list with full statuses are web-only today. Mobile customers benefit from auto-application at checkout (credit applies regardless of which surface the operator uses to ring up).
Customer identifier resolution
When applying credit, the system resolves the customer by any of: email, phone, or customer ID. This means credits follow a customer even if a booking is created under a different identifier (e.g. they entered email at booking but you have phone on file in their main profile).
Common mistakes
| Problem | What to check |
|---|---|
| Credit didn't auto-apply at checkout | Customer might not be matched. Confirm the booking's customer is the same as the customer with credit. Edit the customer on the booking if needed. |
| Credit applied for wrong amount | The system applies min(balance, amount due). If the order total is lower than the balance, only the order amount uses credit. |
| Voided a credit by mistake | Voiding is irreversible — you'll need to issue a new credit with the same amount and add a note explaining. |
| Customer has expired credits | Expired credits show Expired status and don't apply at checkout. If you want to reinstate, issue a new credit with the same amount and a "Reinstating expired credit" note. |
| Balance shows $0 but I just issued credit | Refresh the page. Balance recomputes on every load. |
| Want to set up auto-refund-to-credit on cancellations | Configure your deposit rule with refundAction: "credit" — refunds become credits automatically. See Deposits. |
FAQ
How do credits get on a customer's account?
Four sources: refund (auto-credit on deposit refund), compensation (manual goodwill), loyalty (from loyalty redemption), or manual (issued by owner/manager via the Issue Credit form on the customer profile).
How does redemption work at checkout?
When a customer with credit reaches checkout, a Store credit card appears with Apply / Remove buttons. Apply auto-uses up to the order amount. Credits are consumed FIFO by expiry (soonest-expiring used first) so nothing expires unused.
Can I void a credit I've issued?
Yes. Each available credit has a trash icon — confirms via dialog, then zeros the balance and marks the credit voided. Voided credits can't be reused but stay in history for audit.
Do credits expire?
Optionally. When issuing manually, you can set 'Expires in N days' or leave blank for no expiry. Credits with an expiry within 14 days surface a warning at checkout so they get used.
Can the customer see their own credit balance?
Not in a self-service portal today. They see credit applied on receipts and emails after checkout. Ask support if you want this added.
Does Customer Credit overlap with Gift Cards?
Different things. Gift cards are a transferable, code-based product the customer can buy or be given — see Gift Cards. Store credit is operator-managed money on a specific customer account, typically issued from refunds or as goodwill.