Gift Cards
Sell and redeem gift cards on the storefront. Cards can also be issued manually by admins.
Where to find it
Storefront purchase: /gift-cards (if enabled)
Storefront account: /account/gift-cards
Admin: /commerce/giftcards
Enable flag: tenant.enable_gift_cards
Customer purchase flow
- Customer goes to
/gift-cards - Picks an amount (preset or custom)
- Enters recipient email, name, and an optional message
- Pays via Stripe
- On successful payment, a gift card is generated and emailed to the recipient
Admin-issued cards
Create cards manually from /commerce/giftcards:
- Set amount, optional recipient, optional expiry
- Card code is generated and shown; an email is sent if recipient provided
Redeeming at checkout
Customers enter their code at checkout:
- Code validated server-side
- Balance applied against the order total
- Remaining balance stays on the card
- If balance < order total, customer pays the difference via their chosen payment method
Ledger
Every gift card has a full transaction ledger showing:
- Initial purchase
- Each redemption (with order ID)
- Admin adjustments (+/-)
- Refunds
View the ledger from the admin detail view of a card.
Statuses
| Status | Meaning |
|---|---|
| active | Valid and has balance |
| redeemed | Balance hit zero |
| expired | Past expiry date |
| disabled | Manually revoked by admin |
Security
- Card codes are 16 characters, alphanumeric, unambiguous (no I/O/0/1)
- Rate-limited validation to prevent enumeration
- Redemption is atomic — concurrent redemption attempts can't overdraw