---
title: "Gift cards for API only"
description: "Add gift card payments to an existing API-only integration."
url: "https://docs.adyen.com/payment-methods/gift-cards/api-only"
source_url: "https://docs.adyen.com/payment-methods/gift-cards/api-only.md"
canonical: "https://docs.adyen.com/payment-methods/gift-cards/api-only"
last_modified: "2023-02-23T12:39:00+01:00"
language: "en"
---

# Gift cards for API only

Add gift card payments to an existing API-only integration.

[View source](/payment-methods/gift-cards/api-only.md)

![](/user/pages/reuse/development-resources/additional-info-resources/postman-logo-vertical-orange-2021.svg?decoding=auto\&fetchpriority=auto)  [Postman collection](https://www.postman.com/adyendev/workspace/adyen-apis/collection/25716737-46ad970e-dc9e-4246-bac2-769c6083e7b5)

**Implementation examples**\
![](/user/pages/reuse/development-resources/additional-info-resources/java-original.svg?decoding=auto\&fetchpriority=auto)  [Java Spring](https://github.com/adyen-examples/adyen-java-spring-online-payments/tree/main/giftcard-example)\
![](/user/pages/reuse/development-resources/additional-info-resources/dot-net-original.svg?decoding=auto\&fetchpriority=auto)  [.NET](https://github.com/adyen-examples/adyen-dotnet-online-payments/tree/main/giftcard-example)\
![](/user/pages/reuse/development-resources/additional-info-resources/nodejs-original.svg?decoding=auto\&fetchpriority=auto)  [Node.js](https://github.com/adyen-examples/adyen-node-online-payments/tree/main/giftcard-example)

Accept gift card payments using our APIs, and build your own payment form to have full control over the look and feel of your checkout page.

## Requirements

These instructions explain how to add gift cards to your existing API-only integration. The API-only integration works the same way for all payment methods. If you haven't done this integration yet, refer to our [API-only integration guide](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=API%20only\&version=71).

Before starting your integration make sure you:

1. [Set up your back end implementation](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=API%20only\&version=71#get-available-payment-methods).

2. [Added each gift card variant that you want to test in your Customer Area](/payment-methods/add-payment-methods).

   You can [test](#test-and-go-live) a limited number of gift card variants and simulate gift card payments. When testing, you use a simulator that tries to behave and respond in the same way as an end-to-end connection with a gift card provider. Before you go live, you must onboard with a gift card provider and add the gift card variant to your live [Customer Area](/payment-methods/add-payment-methods).

## Build your payment form for gift cards

You must build a separate integration for each gift card provider.

You can process payments for [supported gift cards](/payment-methods/gift-cards#supported-gift-cards) or [manage other transactions](/payment-methods/gift-cards/stored-value-api) like adding to the balance of a gift card.

If you are using the [/paymentMethods](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods) request to show the available payment methods to your shopper, specify the following in your request:

* [countryCode](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods): Country where that gift card is supported, for example, **NL**.
* [amount.currency](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods#request-amount): Any supported currency, for example, **EUR**.
* [channel](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods#request-channel): Set to **Web**.

In the response, you receive the gift cards available to your shopper as elements in the `paymentMethods` array, for example:

```bash
    {
        "name": "VVV Giftcard",
        "brand": "vvvgiftcard",
        "type": "giftcard"
    }
```

Render [logos](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=API%20only#downloading-logos) and names of the available brands for the shopper to choose. When the shopper selects a type of gift card, show the payment form.

## Check the balance

After the shopper enters the gift card details, check if the balance is enough to make a full payment.

1. Make a [/paymentMethods/balance](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods/balance) request including:

   | Field                  | Required                                                                                    | Description                                                                                                                                       |
   | ---------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
   | `paymentMethod.type`   | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The `brand` from the [/paymentMethods](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods) response. For example, **givex**. |
   | `paymentMethod.number` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The gift card number.                                                                                                                             |
   | `paymentMethod.cvc`    | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The card verification code or security code.                                                                                                      |
   | `merchantAccount`      | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Your merchant account.                                                                                                                            |

   **/paymentMethods/balance request**

   #### curl

   ```bash
   curl https://checkout-test.adyen.com/v72/paymentMethods/balance \
   -H 'x-api-key: ADYEN_API_KEY' \
   -H 'content-type: application/json' \
   -d '{
    "paymentMethod": {
      "type": "givex",
      "number": "6364530000000000",
      "cvc": "737"
    },
    "merchantAccount": "ADYEN_MERCHANT_ACCOUNT"
   }'
   ```

   #### Java

   ```java
   // Adyen Java API Library v27.0.0
   import com.adyen.Client;
   import com.adyen.enums.Environment;
   import com.adyen.model.checkout.*;
   import java.time.OffsetDateTime;
   import java.util.*;
   import com.adyen.model.RequestOptions;
   import com.adyen.service.checkout.*;

   // For the live environment, additionally include your liveEndpointUrlPrefix.
   Client client = new Client("ADYEN_API_KEY", Environment.TEST);

   // Create the request object(s)
   BalanceCheckRequest balanceCheckRequest = new BalanceCheckRequest()
     .merchantAccount("ADYEN_MERCHANT_ACCOUNT")
     .paymentMethod(new HashMap<String, String>(Map.of(
       "number", "6364530000000000",
       "cvc", "737",
       "type", "givex"
     )));

   // Send the request
   OrdersApi service = new OrdersApi(client);
   BalanceCheckResponse response = service.getBalanceOfGiftCard(balanceCheckRequest, new RequestOptions().idempotencyKey("UUID"));
   ```

   #### PHP

   ```php
   // Adyen PHP API Library v19.0.0
   use Adyen\Client;
   use Adyen\Environment;
   use Adyen\Model\Checkout\BalanceCheckRequest;
   use Adyen\Service\Checkout\OrdersApi;

   $client = new Client();
   $client->setXApiKey("ADYEN_API_KEY");
   // For the live environment, additionally include your liveEndpointUrlPrefix.
   $client->setEnvironment(Environment::TEST);


   // Create the request object(s)
   $balanceCheckRequest = new BalanceCheckRequest();
   $balanceCheckRequest
     ->setMerchantAccount("ADYEN_MERCHANT_ACCOUNT")
     ->setPaymentMethod(
       array(
         "number" => "6364530000000000",
         "cvc" => "737",
         "type" => "givex"
       )
     );

   $requestOptions['idempotencyKey'] = 'UUID';

   // Send the request
   $service = new OrdersApi($client);
   $response = $service->getBalanceOfGiftCard($balanceCheckRequest, $requestOptions);
   ```

   #### C\#

   ```cs
   // Adyen .net API Library v17.0.0
   using Adyen;
   using Environment = Adyen.Model.Environment;
   using Adyen.Model;
   using Adyen.Model.Checkout;
   using Adyen.Service.Checkout;

   // For the live environment, additionally include your liveEndpointUrlPrefix.
   var config = new Config()
   {
       XApiKey = "ADYEN_API_KEY",
       Environment = Environment.Test
   };
   var client = new Client(config);

   // Create the request object(s)
   BalanceCheckRequest balanceCheckRequest = new BalanceCheckRequest
   {
     MerchantAccount = "ADYEN_MERCHANT_ACCOUNT",
     PaymentMethod = new Dictionary<string, string>
     {

       { "number", "6364530000000000" },
       { "cvc", "737" },
       { "type", "givex" }
     }
   };

   // Send the request
   var service = new OrdersService(client);
   var response = service.GetBalanceOfGiftCard(balanceCheckRequest, requestOptions: new RequestOptions { IdempotencyKey = "UUID"});
   ```

   #### NodeJS (JavaScript)

   ```js
   // Adyen Node API Library v18.0.0
   // Require the parts of the module you want to use
   const { Client, CheckoutAPI } = require('@adyen/api-library');
   // Initialize the client object
   // For the live environment, additionally include your liveEndpointUrlPrefix.
   const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"});

   // Create the request object(s)
   const balanceCheckRequest = {
     paymentMethod: {
       type: "givex",
       number: "6364530000000000",
       cvc: "737"
     },
     merchantAccount: "ADYEN_MERCHANT_ACCOUNT"
   }

   // Send the request
   const checkoutAPI = new CheckoutAPI(client);
   const response = checkoutAPI.OrdersApi.getBalanceOfGiftCard(balanceCheckRequest, { idempotencyKey: "UUID" });
   ```

   #### Go

   ```go
   // Adyen Go API Library v10.4.0
   import (
     "context"
     "github.com/adyen/adyen-go-api-library/v9/src/common"
     "github.com/adyen/adyen-go-api-library/v9/src/adyen"
     "github.com/adyen/adyen-go-api-library/v9/src/checkout"
   )
   // For the live environment, additionally include your liveEndpointUrlPrefix.
   client := adyen.NewClient(&common.Config{
     ApiKey:      "ADYEN_API_KEY",
     Environment: common.TestEnv,
   })

   // Create the request object(s)
   balanceCheckRequest := checkout.BalanceCheckRequest{
     MerchantAccount: "ADYEN_MERCHANT_ACCOUNT",
     PaymentMethod: &map[string]string{
       "number": "6364530000000000",
       "cvc": "737",
       "type": "givex",
     },
   }

   // Send the request
   service := client.Checkout()
   req := service.OrdersApi.GetBalanceOfGiftCardInput().IdempotencyKey("UUID").BalanceCheckRequest(balanceCheckRequest)
   res, httpRes, err := service.OrdersApi.GetBalanceOfGiftCard(context.Background(), req)
   ```

   #### Python

   ```py
   # Adyen Python API Library v12.5.1
   import Adyen

   adyen = Adyen.Adyen()
   adyen.client.xapikey = "ADYEN_API_KEY"
   # For the live environment, additionally include your liveEndpointUrlPrefix.
   adyen.client.platform = "test" # The environment to use library in.

   # Create the request object(s)
   json_request = {
     "paymentMethod": {
       "type": "givex",
       "number": "6364530000000000",
       "cvc": "737"
     },
     "merchantAccount": "ADYEN_MERCHANT_ACCOUNT"
   }

   # Send the request
   result = adyen.checkout.orders_api.get_balance_of_gift_card(request=json_request, idempotency_key="UUID")
   ```

   #### Ruby

   ```rb
   # Adyen Ruby API Library v9.5.1
   require "adyen-ruby-api-library"

   adyen = Adyen::Client.new
   adyen.api_key = 'ADYEN_API_KEY'
   # For the live environment, additionally include your liveEndpointUrlPrefix.
   adyen.env = :test # Set to "live" for live environment

   # Create the request object(s)
   request_body = {
     :paymentMethod => {
       :type => 'givex',
       :number => '6364530000000000',
       :cvc => '737'
     },
     :merchantAccount => 'ADYEN_MERCHANT_ACCOUNT'
   }

   # Send the request
   result = adyen.checkout.orders_api.get_balance_of_gift_card(request_body, headers: { 'Idempotency-Key' => 'UUID' })
   ```

   #### NodeJS (TypeScript)

   ```ts
   // Adyen Node API Library v18.0.0
   // Require the parts of the module you want to use
   import { Client, CheckoutAPI, Types } from "@adyen/api-library";
   // Initialize the client object
   // For the live environment, additionally include your liveEndpointUrlPrefix.
   const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"});

   // Create the request object(s)
   const balanceCheckRequest: Types.checkout.BalanceCheckRequest = {
     merchantAccount: "ADYEN_MERCHANT_ACCOUNT",
     paymentMethod: {
       "number": "6364530000000000",
       "cvc": "737",
       "type": "givex"
     }
   };

   // Send the request
   const checkoutAPI = new CheckoutAPI(client);
   const response = checkoutAPI.OrdersApi.getBalanceOfGiftCard(balanceCheckRequest, { idempotencyKey: "UUID" });
   ```

   The response includes the balance of the gift card.

   **/paymentMethods/balance response**

   ```json
   {
     "pspReference": "ZQXDPCQ8HXSKGK82",
     "resultCode": "Success",
     "balance": {
       "currency": "EUR",
       "value": 5000
     }
   }
   ```

2. If the balance amount is equal to or greater than the full payment amount, then continue to [make a payment](#make-a-payment).

   If the balance is less than the full payment amount, make an [/orders](https://docs.adyen.com/api-explorer/Checkout/latest/post/orders) request. This lets you create [partial payments](/online-payments/partial-payments): a payment with the gift card, and a payment for the remaining amount using a different payment method.

## Make a payment

From your server, make a [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) request, specifying:

| Field                  | Required                                                                                    | Description                                                                                                                                                                    |
| ---------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `paymentMethod.type`   | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **giftcard**                                                                                                                                                                   |
| `paymentMethod.brand`  | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The `brand` from the [/paymentMethods](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods) response. For example, **vvvgiftcard** or **genericgiftcard**. |
| `paymentMethod.number` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The gift card number without separators.                                                                                                                                       |
| `paymentMethod.cvc`    | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The card verification code.                                                                                                                                                    |

For some gift cards, there are regulatory limits on transaction amounts. Check with your gift card provider to learn if these limits affect you.

#### JSON

##### request

```json
{
  "amount":{
    "currency":"EUR",
    "value":1000
  },
  "reference":"YOUR_ORDER_NUMBER",
  "paymentMethod": {
    "type": "giftcard",
    "brand": "givex",
    "number": "62805011000000000000",
    "cvc": "73737"
  },
  "merchantAccount":"ADYEN_MERCHANT_ACCOUNT"
}
```

##### response

```json
{
  "pspReference": "851572424333194G",
  "resultCode": "Authorised",
  "merchantReference": "YOUR_ORDER_NUMBER"
}
```

#### curl

```bash
curl https://checkout-test.adyen.com/v72/payments \
-H 'x-api-key: ADYEN_API_KEY' \
-H 'content-type: application/json' \
-d '{
  "amount":{
    "currency":"EUR",
    "value":1000
  },
  "reference":"YOUR_ORDER_NUMBER",
  "paymentMethod": {
    "type": "giftcard",
    "brand": "givex",
    "number": "62805011000000000000",
    "cvc": "73737"
  },
  "merchantAccount":"ADYEN_MERCHANT_ACCOUNT"
}'
```

#### Java

```java
// Adyen Java API Library v27.0.0
import com.adyen.Client;
import com.adyen.enums.Environment;
import com.adyen.model.checkout.*;
import java.time.OffsetDateTime;
import java.util.*;
import com.adyen.model.RequestOptions;
import com.adyen.service.checkout.*;

// For the live environment, additionally include your liveEndpointUrlPrefix.
Client client = new Client("ADYEN_API_KEY", Environment.TEST);

// Create the request object(s)
Amount amount = new Amount()
  .currency("EUR")
  .value(1000L);

CardDetails cardDetails = new CardDetails()
  .number("62805011000000000000")
  .cvc("73737")
  .type(CardDetails.TypeEnum.GIFTCARD)
  .brand("givex");

PaymentRequest paymentRequest = new PaymentRequest()
  .reference("YOUR_ORDER_NUMBER")
  .amount(amount)
  .merchantAccount("ADYEN_MERCHANT_ACCOUNT")
  .paymentMethod(new CheckoutPaymentMethod(cardDetails));

// Send the request
PaymentsApi service = new PaymentsApi(client);
PaymentResponse response = service.payments(paymentRequest, new RequestOptions().idempotencyKey("UUID"));
```

#### PHP

```php
// Adyen PHP API Library v19.0.0
use Adyen\Client;
use Adyen\Environment;
use Adyen\Model\Checkout\Amount;
use Adyen\Model\Checkout\CheckoutPaymentMethod;
use Adyen\Model\Checkout\PaymentRequest;
use Adyen\Service\Checkout\PaymentsApi;

$client = new Client();
$client->setXApiKey("ADYEN_API_KEY");
// For the live environment, additionally include your liveEndpointUrlPrefix.
$client->setEnvironment(Environment::TEST);


// Create the request object(s)
$amount = new Amount();
$amount
  ->setCurrency("EUR")
  ->setValue(1000);

$checkoutPaymentMethod = new CheckoutPaymentMethod();
$checkoutPaymentMethod
  ->setNumber("62805011000000000000")
  ->setCvc("73737")
  ->setType("giftcard")
  ->setBrand("givex");

$paymentRequest = new PaymentRequest();
$paymentRequest
  ->setReference("YOUR_ORDER_NUMBER")
  ->setAmount($amount)
  ->setMerchantAccount("ADYEN_MERCHANT_ACCOUNT")
  ->setPaymentMethod($checkoutPaymentMethod);

$requestOptions['idempotencyKey'] = 'UUID';

// Send the request
$service = new PaymentsApi($client);
$response = $service->payments($paymentRequest, $requestOptions);
```

#### C\#

```cs
// Adyen .net API Library v17.0.0
using Adyen;
using Environment = Adyen.Model.Environment;
using Adyen.Model;
using Adyen.Model.Checkout;
using Adyen.Service.Checkout;

// For the live environment, additionally include your liveEndpointUrlPrefix.
var config = new Config()
{
    XApiKey = "ADYEN_API_KEY",
    Environment = Environment.Test
};
var client = new Client(config);

// Create the request object(s)
Amount amount = new Amount
{
  Currency = "EUR",
  Value = 1000
};

CardDetails cardDetails = new CardDetails
{
  Number = "62805011000000000000",
  Cvc = "73737",
  Type = CardDetails.TypeEnum.Giftcard,
  Brand = "givex"
};

PaymentRequest paymentRequest = new PaymentRequest
{
  Reference = "YOUR_ORDER_NUMBER",
  Amount = amount,
  MerchantAccount = "ADYEN_MERCHANT_ACCOUNT",
  PaymentMethod = new CheckoutPaymentMethod(cardDetails)
};

// Send the request
var service = new PaymentsService(client);
var response = service.Payments(paymentRequest, requestOptions: new RequestOptions { IdempotencyKey = "UUID"});
```

#### NodeJS (JavaScript)

```js
// Adyen Node API Library v18.0.0
// Require the parts of the module you want to use
const { Client, CheckoutAPI } = require('@adyen/api-library');
// Initialize the client object
// For the live environment, additionally include your liveEndpointUrlPrefix.
const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"});

// Create the request object(s)
const paymentRequest = {
  amount: {
    currency: "EUR",
    value: 1000
  },
  reference: "YOUR_ORDER_NUMBER",
  paymentMethod: {
    type: "giftcard",
    brand: "givex",
    number: "62805011000000000000",
    cvc: "73737"
  },
  merchantAccount: "ADYEN_MERCHANT_ACCOUNT"
}

// Send the request
const checkoutAPI = new CheckoutAPI(client);
const response = checkoutAPI.PaymentsApi.payments(paymentRequest, { idempotencyKey: "UUID" });
```

#### Go

```go
// Adyen Go API Library v10.4.0
import (
  "context"
  "github.com/adyen/adyen-go-api-library/v9/src/common"
  "github.com/adyen/adyen-go-api-library/v9/src/adyen"
  "github.com/adyen/adyen-go-api-library/v9/src/checkout"
)
// For the live environment, additionally include your liveEndpointUrlPrefix.
client := adyen.NewClient(&common.Config{
  ApiKey:      "ADYEN_API_KEY",
  Environment: common.TestEnv,
})

// Create the request object(s)
amount := checkout.Amount{
  Currency: "EUR",
  Value: 1000,
}

cardDetails := checkout.CardDetails{
  Number: common.PtrString("62805011000000000000"),
  Cvc: common.PtrString("73737"),
  Type: common.PtrString("giftcard"),
  Brand: common.PtrString("givex"),
}

paymentRequest := checkout.PaymentRequest{
  Reference: "YOUR_ORDER_NUMBER",
  Amount: amount,
  MerchantAccount: "ADYEN_MERCHANT_ACCOUNT",
  PaymentMethod: checkout.CardDetailsAsCheckoutPaymentMethod(&cardDetails),
}

// Send the request
service := client.Checkout()
req := service.PaymentsApi.PaymentsInput().IdempotencyKey("UUID").PaymentRequest(paymentRequest)
res, httpRes, err := service.PaymentsApi.Payments(context.Background(), req)
```

#### Python

```py
# Adyen Python API Library v12.5.1
import Adyen

adyen = Adyen.Adyen()
adyen.client.xapikey = "ADYEN_API_KEY"
# For the live environment, additionally include your liveEndpointUrlPrefix.
adyen.client.platform = "test" # The environment to use library in.

# Create the request object(s)
json_request = {
  "amount": {
    "currency": "EUR",
    "value": 1000
  },
  "reference": "YOUR_ORDER_NUMBER",
  "paymentMethod": {
    "type": "giftcard",
    "brand": "givex",
    "number": "62805011000000000000",
    "cvc": "73737"
  },
  "merchantAccount": "ADYEN_MERCHANT_ACCOUNT"
}

# Send the request
result = adyen.checkout.payments_api.payments(request=json_request, idempotency_key="UUID")
```

#### Ruby

```rb
# Adyen Ruby API Library v9.5.1
require "adyen-ruby-api-library"

adyen = Adyen::Client.new
adyen.api_key = 'ADYEN_API_KEY'
# For the live environment, additionally include your liveEndpointUrlPrefix.
adyen.env = :test # Set to "live" for live environment

# Create the request object(s)
request_body = {
  :amount => {
    :currency => 'EUR',
    :value => 1000
  },
  :reference => 'YOUR_ORDER_NUMBER',
  :paymentMethod => {
    :type => 'giftcard',
    :brand => 'givex',
    :number => '62805011000000000000',
    :cvc => '73737'
  },
  :merchantAccount => 'ADYEN_MERCHANT_ACCOUNT'
}

# Send the request
result = adyen.checkout.payments_api.payments(request_body, headers: { 'Idempotency-Key' => 'UUID' })
```

#### NodeJS (TypeScript)

```ts
// Adyen Node API Library v18.0.0
// Require the parts of the module you want to use
import { Client, CheckoutAPI, Types } from "@adyen/api-library";
// Initialize the client object
// For the live environment, additionally include your liveEndpointUrlPrefix.
const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"});

// Create the request object(s)
const amount: Types.checkout.Amount = {
  currency: "EUR",
  value: 1000
};

const cardDetails: Types.checkout.CardDetails = {
  number: "62805011000000000000",
  cvc: "73737",
  type: Types.checkout.CardDetails.TypeEnum.Giftcard,
  brand: "givex"
};

const paymentRequest: Types.checkout.PaymentRequest = {
  reference: "YOUR_ORDER_NUMBER",
  amount: amount,
  merchantAccount: "ADYEN_MERCHANT_ACCOUNT",
  paymentMethod: cardDetails
};

// Send the request
const checkoutAPI = new CheckoutAPI(client);
const response = checkoutAPI.PaymentsApi.payments(paymentRequest, { idempotencyKey: "UUID" });
```

The [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) response contains:

* [pspReference](https://docs.adyen.com/api-explorer/#/CheckoutService/latest/payments__resParam_pspReference): Our unique identifier for the transaction.
* `resultCode`: Use this to [present the payment result to your shopper](#present-the-payment-result).
* `merchantReference`: The `reference` from the [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) request.

## Show the payment result

Use the  [resultCode](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#responses-200-resultCode) from the [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) response to show the payment result to your shopper.

You will also receive the outcome of the payment asynchronously in a [webhook](/development-resources/webhooks). For gift card payments, you can receive the following `resultCode` values:

| resultCode     | Description                                                                                                                                               | Action to take                                                                                                                                                                                         |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Authorised** | The payment was successful.                                                                                                                               | Inform the shopper that the payment has been successful. If you are using [manual capture](/online-payments/capture#manual-capture), you also need to [capture](/online-payments/capture) the payment. |
| **Cancelled**  | The shopper cancelled the payment.                                                                                                                        | Ask the shopper whether they want to continue with the order, or ask them to select a different payment method.                                                                                        |
| **Error**      | There was an error when the payment was being processed. For more information, check the [`refusalReason` ](/development-resources/refusal-reasons)field. | Inform the shopper that there was an error processing their payment.                                                                                                                                   |
| **Refused**    | The payment was refused. For more information, check the [`refusalReason` ](/development-resources/refusal-reasons)field.                                 | Ask the shopper to try the payment again using a different payment method.                                                                                                                             |

## Test and go live

Before making live gift card payments, simulate transactions:

1. Test your integration using our [test card numbers](/development-resources/test-cards-and-credentials/alternative-payment-method-credentials#gift-cards) depending on your gift card provider. When testing, you use a simulator that tries to behave and respond in the same way as an end-to-end connection.

   To simulate a scenario, send one of the following amounts in the test payment request:

   | Amount (last three digits) | `resultCode` | `refusalReason`    |
   | -------------------------- | ------------ | ------------------ |
   | 100                        | Authorised   |                    |
   | 123                        | Refused      | Refused            |
   | 124                        | Refused      | Not enough balance |
   | 125                        | Refused      | Blocked Card       |
   | 126                        | Refused      | Expired Card       |
   | 130                        | Error        | Acquirer Error     |
   | 134                        | Refused      | Invalid Pin        |
   | 135                        | Refused      | Pin tries exceeded |

   For example, send a payment amount with **100** as the last three digits, such as 1.00 or 11.00. This will result in an **Authorised** transaction.

2. Check the status of test payments in your [test Customer Area](https://ca-test.adyen.com/) > **Transactions** > **Payments**.

When you are ready to go live:

1. Onboard with a gift card provider and add the [gift card variant](/payment-methods/gift-cards#supported-gift-cards) to your [live Customer Area](https://ca-live.adyen.com/).

2. Contact our [Support Team](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other) to add the gift card to your [live Customer Area](https://ca-live.adyen.com/).

   You can test end-to-end scenarios in your live environment using real gift card details and small amounts.

## See also

* [API-only integration guide](/online-payments/api-only)
* [Webhooks](/development-resources/webhooks)
* [API Explorer](https://docs.adyen.com/api-explorer/#/CheckoutService/latest/overview)
