# Gift card payments

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

> Request access to the Gift card private preview by contacting your Account Executive or by sending an email to [terminal-gift-cards@stripe.com](mailto:terminal-gift-cards@stripe.com) 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.

#### Payment method properties

- **Customer locations**

  United States

- **Presentment currency**

  USD

- **Payment method family**

  Gift card

- **Supported gift card providers**

  [SVS](https://www.storedvalue.com/) (Stored Value Solutions)

- **Recurring payments**

  No

- **Payout timing**

  Not applicable

- **Connect support**

  Yes, with caveats (see details under [Connect](https://docs.stripe.com/payments/gift-cards.md#connect))

- **Dispute support**

  No

- **Manual capture support**

  No

- **Refunds / Partial refunds**

  No—reload or activate a new card instead. See details under [Refunds](https://docs.stripe.com/payments/gift-cards.md#refunds)

#### Business locations

Stripe accounts in the following countries can accept gift card payments:

- US

#### Product support

- Connect
- Terminal

## 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](https://docs.stripe.com/payments/gift-cards.md#refunds) for the supported approach.
   - You can’t list gift card operations. [Retrieve a gift card operation](https://docs.stripe.com/payments/gift-cards/operations.md#retrieve) to look up an individual operation by ID.

## Get started 

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

- [Accept a gift card payment](https://docs.stripe.com/payments/gift-cards/accept-a-payment.md): Create a gift card, then accept a payment using the PaymentIntents API.
- [Non-payment operations](https://docs.stripe.com/payments/gift-cards/operations.md): Activate, reload, check balance, and cash out gift cards. Use void to undo a successful operation.
- [Accept gift card payments on Terminal](https://docs.stripe.com/terminal/features/gift-cards.md): Accept and manage gift cards using a physical Terminal reader (card-present).

## 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](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-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](https://docs.stripe.com/connect/separate-charges-and-transfers.md) 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](https://docs.stripe.com/connect/account-debits.md) to collect fees for gift card usage from the connected account.

```curl
curl https://api.stripe.com/v1/payment_intents \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Version: 2026-08-26.preview" \
  -d amount=3000 \
  -d currency=usd \
  -d "payment_method_types[]=gift_card" \
  -d "on_behalf_of=acct_..." \
  -d "transfer_data[destination]=acct_..." \
  -d application_fee_amount=100 \
  -d "payment_method_options[gift_card][ignore_transfer_data]=yes" \
  -d "payment_method_options[gift_card][ignore_application_fee]=yes"
```

## 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](https://docs.stripe.com/payments/gift-cards/operations.md#reload) or [activate a new gift card](https://docs.stripe.com/payments/gift-cards/operations.md#activate).

## 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](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-gift_card-request_partial_authorization) to `if_available` when accepting SVS gift cards.
- In a *sandbox* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes), the [payment_reference](https://docs.stripe.com/api/payment-record/object.md#payment_record_object-processor_details-svs-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.

```json
{
  "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](https://docs.stripe.com/payments/gift-cards/decline-codes.md) 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](https://docs.stripe.com/api/payment_intents.md) 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 

- [Accept a gift card payment](https://docs.stripe.com/payments/gift-cards/accept-a-payment.md)
- [Non-payment operations](https://docs.stripe.com/payments/gift-cards/operations.md)
- [Accept gift card payments on Terminal](https://docs.stripe.com/terminal/features/gift-cards.md)
- [Payment Intents API reference](https://docs.stripe.com/api/payment_intents.md)
- [Payment Records API reference](https://docs.stripe.com/api/payment_records.md)
