#14629·spree

Loyalty: Gift Cards, Store Credits and Purchasable Gift Card Products

Author: damianlegawiecCreated Sep 13, 2026Updated Sep 16, 2026

Gift cards are filed under Promotions in the dashboard nav and in the user docs, and store credits are only visible one customer at a time. Neither placement matches what the records are: a promotion is marketing, while a gift card or a store credit is prepaid money the store owes. This plan gives stored value its own top-level Loyalty group holding Gift Cards and a new cross-customer Store Credits list, backed by a read-only admin endpoint with per-currency outstanding totals, so a merchant can answer "how much do we owe, to whom, and why" without opening every customer. Phase 2 (Spree 6.1) adds gift cards as a product a shopper can buy, issued and emailed to a recipient when the order is paid.

Phase 1 (6.0)

  • Loyalty nav group with Gift Cards and Store Credits; gift cards leave Promotions in the dashboard and the docs
  • gift_cards and store_credits permission keys grouped under Loyalty (key names unchanged)
  • Admin API: GET /api/v3/admin/store_credits (index, show) across customers, with filters, per-currency meta.totals, and a read-only events ledger per credit
  • Dashboard: store credits list with filters, outstanding balance per currency, and a detail sheet with the ledger; issuing a credit stays on the customer profile

Phase 2 (6.1)

  • gift_card flag on products; variants are denominations; no tax, promotions, inventory, shipping or balance payments on such products
  • Recipient email, name, message and send date captured per line item
  • Cards issued one per unit when the order is paid, emailed to the recipient, cancelled with the order when unused

Plan: https://github.com/spree/spree/blob/main/docs/plans/6.0-6.1-loyalty-gift-cards-store-credits.md

Tracked in Linear as V-3629