Stripe | Financial Infrastructure to Grow Your Revenue

Stripe | Financial Infrastructure to Grow Your Revenue

4466 articles

Gift card payments


Private preview

Gift card payments Private preview

Learn about closed-loop gift cards, a stored-value payment method.

Private preview

Request access to the Gift card private preview by contacting your Account Executive or by sending an email to with the following information:

  • Use case for in-person and/or online gift card acceptance
  • Terminal device and integration type
  • Gift card provider
  • Country/countries where gift cards will be accepted
  • Estimated annual gift card transaction volume

Closed-loop gift cards are stored-value instruments that customers can redeem only with a single business or a related group of businesses. Unlike open-loop gift cards, such as Visa or Amex gift cards, closed-loop gift cards settle off Stripe, so no fund movement occurs on Stripe at redemption time.

You can use the Stripe API to accept gift card payments and perform operations such as activation, balance inquiries, reloads, cash out, and voids.

  • Customer locations United States
  • Presentment currency USD
  • Payment method family Gift card
  • Supported gift card providers SVS (Stored Value Solutions)
  • Recurring payments No
  • Payout timing Not applicable
  • Connect support Yes, with caveats (see details under Connect)
  • Dispute support No
  • Manual capture support No
  • Refunds / Partial refunds No—reload or activate a new card instead. See details under Refunds

Prerequisites

Before you can accept gift card payments, you must:

  1. Onboard to a gift card provider : You must have an existing agreement with a gift card provider and provide Stripe with the relevant credentials during onboarding. Contact your sales team to onboard your gift card provider.
  2. Understand limitations :
  • You can’t attach gift card payment methods to a Customer object or save them as stored payment methods.
  • If you call the refunds endpoint on a gift card PaymentIntent , Stripe returns an error. See Refunds for the supported approach.
  • You can’t list gift card operations. [Retrieve a gift card operation](/the relevant part of the product#retrieve) to look up an individual operation by ID.

Get started

To accept gift card payments, use the Direct API integration:

Payment flow

The gift card payment flow differs from typical payment methods because there’s no redirect or customer-side authentication step:

  1. Create a gift card object by providing the card number and PIN (optional for supported cards) to Stripe.
  2. Create a PaymentIntent with gift _ card as the payment method type.
  3. Confirm the PaymentIntent by passing the gift card ID as a token in payment_method_data .
  4. Stripe contacts the gift card provider to authorize the redemption and returns a PaymentRecord (not a Charge , because no funds move on Stripe).

Connect

Gift card payments work differently with Connect because gift card redemptions don’t involve fund movement.

  • Use on _ behalf _ of to specify the account that has the gift card provider credentials.
  • If your platform uses destination charges or application fees, include ignore _ transfer _ data and ignore _ application _ fee in the payment method options. Stripe can’t transfer funds to a connected account at settlement time for a gift card redemption, so confirmation fails without these parameters when gift _ card is the payment method.
  • Because a redemption doesn’t move money on Stripe, move funds separately when your platform needs to settle with the connected account. If you hold the underlying funds on Stripe, create a transfer to the connected account. If the funds are held outside Stripe, the movement happens out of band and your platform manages it.
  • Use Account Debit to collect fees for gift card usage from the connected account.

Command Line

cURL

Disputes

Gift card payments don’t support disputes. Because no funds move on Stripe during a gift card redemption, chargebacks don’t apply. If a customer has an issue with a gift card transaction, handle it through your customer support process.

Refunds

Gift card redemptions don’t move funds, so refunds work differently than for card payments.

Calling POST /v1/refunds on a gift card PaymentIntent isn’t supported and returns an error. To issue a refund, manually reload the original gift card or activate a new gift card.

Gift card program constraints

Your gift card provider and program define the rules that govern each card, including:

  • Load amounts : The minimum and maximum amount you can add in a single activation or reload.
  • Maximum balance : The highest balance a card can hold.
  • Denominations : Any fixed or incremental amounts the program allows.
  • Expiration : Whether cards expire and when. The provider enforces expiration. Stripe doesn’t enforce it on the provider’s behalf, so a card with a past expiration date can remain usable if the provider still honors it.

Stripe doesn’t define the rules for each card. Stripe forwards each operation to the provider, which validates it against these rules, so an operation with an unsupported amount or other invalid input can fail when the provider processes it. To avoid surprises, make sure your integration only sends values that your program supports.

Gift card provider constraints

SVS (Stored Value Solutions)

  • Balance checks on inactive cards return a successful operation with a zero balance. All other operations on inactive cards fail with the card _ not _ activated decline code.
  • Payments will always authorize for the available balance on the card if the amount of the payment is greater than the remaining balance. Always set payment_method_options.gift_card.request_partial_authorization to if _ available when accepting SVS gift cards.
  • SVS returns previous _ balance only for cashout operations.
  • In a sandbox , the payment_reference on the PaymentRecord isn’t unique per transaction.

Error handling

Gift card provider errors—such as card not activated, insufficient balance, and invalid PIN—return a decline error with code: "gift_card_declined" and a decline_code indicating the specific reason. The response includes a gift_card_operation field so you can trace the logged operation even when the request fails.

{
 "error": {
 "type": "card_error",
 "code": "gift_card_declined",
 "decline_code": "invalid_account",
 "message": "The card, or account the card is connected to, is invalid.",
 "gift_card_operation": {
 "id": "giftcardop_77777",
 "object": "gift_card_operation",
 "gift_card": "giftcard_12345",
 "type": "balance_check",
 "status": "failed",
 "failure_code": "card_not_activated"
 }
 }
}

See a full list of possible decline codes for gift cards.

Maximum balance constraints

Gift card providers enforce maximum balance limits on activation and reload. Stripe doesn’t impose its own balance cap. If an activation or reload amount exceeds the provider’s maximum, the request fails with decline_code: "invalid_amount". Contact your gift card provider to confirm their balance limits.

Network decline codes

When a PaymentIntent for a gift card redemption fails, the error response might include a network_decline_code containing the raw decline reason from the gift card provider. This code is provider-specific and not normalized by Stripe. Check with your gift card provider for the meaning of specific network decline codes.

For non-payment operations (activate, reload, check balance, cashout), the error response uses decline_code with a Stripe-normalized reason instead of a provider-specific network decline code.

See also

Last verified 2026-09-24

Is this helpful?