Skip to main content
Store credit and gift cards

Store credit and gift cards as a native payment method

Admin-issued store credit for refunds, loyalty, and RMA. Customer-purchased gift cards with recipient email and custom templates. Both deduct from the order total at checkout. One ledger, one platform, no third-party reconciliation.

Default paths for store credit
two workarounds · two leaks
Third-party vendorseparate ledger, separate API
Vendure
orders · payments
Vendor
gift-card codes
reconcile?
two systems · reconciled by hand
Discount-code workaroundno balance, no audit row
GIFT-50
$50
used once−$25
remaining $25
lost
one-shot · half goes missing

The third-party gift-card vendor and the faked-discount-code workaround both create reconciliation debt

The default path is a third-party gift-card vendor: a separate ledger, a separate API, a separate invoice, a separate reconciliation spreadsheet. Customer service issues a refund-as-credit and finance has to chase it across two systems.

The other default is worse. Store credit faked as a one-time discount code, no balance, no expiry, no audit trail. It "works" until the customer redeems half of it on one order and asks where the other half went.

This plugin makes both store credit and gift cards native payment methods on a single Vendure balance ledger. Reconciliation is real, not approximate.

What this plugin ships

Two products, one ledger, one payment surface

Five capabilities, all in the dashboard, all on a single underlying entity.

Store credit (admin-issued)

Issue store credit from the order detail view or by API. Use it for refunds, loyalty rewards, RMA compensation, or goodwill. The credit has a balance, a currency, an optional expiry, and an audit trail of every transaction against it.

Gift cards (customer-purchased)

Customers buy a gift card on the storefront, choose a value, a template, a sender name, and a recipient email address. The recipient receives a generated card image with the code. Delivery can be immediate or scheduled.

Native payment method

Both products deduct from the order total at checkout alongside cards, wallets, and purchase orders. Refunds, partial captures, and reporting work the same way as every other tender type.

Custom gift card templates

Upload template images, position the code, value, and message elements, pick fonts and colours. The plugin renders the final card image per purchase. Custom fonts are supported and added once at plugin init.

Tax-aware accounting

Non-taxable sale, pre-tax redemption. Defaults match retail accounting in most jurisdictions. Configurable via getDeductibleTotal for custom tax engines.

One entity · two flowsone ledger
StoreCredit entity
shared by both products
Admin-issuedrefunds · loyalty · RMA
Customer-purchasedgift card on the storefront
StoreCredit
CodeBalanceCurrencyExpiryTransactions
Deducts from order totalat checkout · same as any tender
redeem

One entity, two flows, one deduction at checkout

Store credit and gift cards share one underlying entity. The store-credit row is admin-issued; the gift-card row is storefront-purchased. Each carries:

  • A unique redemption code
  • An initial value and a live balance
  • A currency and an optional expiry date
  • A transaction history of every deduction and adjustment

At checkout the customer enters the code. The payment handler validates it through the StoreCreditRedemptionValidator chain, deducts from the order total, and writes a transaction against the balance.

Redemption rules are extensible. Per-customer limits, channel restrictions, and per-order caps are validators you configure. Custom validators are TypeScript classes that conform to the same interface as the built-in ones.

Three motions · one plugin
in production
D2C holidayscheduled delivery
Holiday card
deliverDec 24
card · Dec 24
B2B refundpartial return → credit
PO-2041−$420
Credit issued+$420
scoped to company
Loyalty milestoneadmin-issued, reasoned
10th ordermilestone
Credit issued+$25
reason on every credit

The motions this plugin was built for

Accounting treatment · default
recognised at redemption
unredeemed liability$50 · then $0
T0T1T2
Sale
non-taxable · no revenue yet
Unredeemed balance
ledger liability · until spent
Redemption
pre-tax deduction · revenue recognised
override via getDeductibleTotal
retail default

The defaults match how retail finance teams already book it

Gift card revenue is recognised at redemption, not at purchase. Standard retail accounting treatment in most jurisdictions. The plugin ships with these defaults:

  • Sale order: non-taxable
  • Redemption: pre-tax deduction against the redeeming order
  • Unredeemed balance: a ledger liability until spent or expired

Finance teams running their own tax engine can override the deductible total via getDeductibleTotal. Chain in loyalty-point deductions, partial captures, or other tender-type interactions before credit redemption applies.

Trusted by complex B2B commerce and enterprise retail.

FAQ

What teams ask before they ship store credit

Real questions from D2C marketing, B2B operations, and engineering teams.

Checkout chain · one platform
three plugins · no glue
runs on
Cart
Checkout
Order
B2B Pricingdecides order total
Store credit & gift cardsdeducts from total
Audit loggingcaptures the transaction
same checkout chain · same RequestContext
one ledger

Store credit lives next to the rest of the commercial surface

Talk to us

See gift cards and store credit on Vendure Platform

Bring a card design and a refund flow. We will walk through the purchase, delivery, and redemption live.