> ## Documentation Index
> Fetch the complete documentation index at: https://primer.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Checkout.com

> Process card, wallet and alternative payment method payments through Checkout.com.

Checkout.com is a global payment processor offering acquiring, alternative payment methods and payment optimization tools across every major market. Through Primer you can process cards, digital wallets and a broad set of alternative payment methods on a single Checkout.com connection.

## At a glance

### Supported payment methods

| Payment method | Payment method type | Integration guide |
| - | - | - |
| Card | `PAYMENT_CARD` | [Card](https://primer.io/docs/connections/payment-methods/card/overview.md) |
| Apple Pay | `APPLE_PAY` | [Apple Pay](https://primer.io/docs/connections/payment-methods/apple-pay/overview.md) |
| Google Pay | `GOOGLE_PAY` | [Google Pay](https://primer.io/docs/connections/payment-methods/google-pay/overview.md) |
| Bancontact | `CHECKOUT_BANCONTACT` | [Bancontact via Checkout.com](https://primer.io/docs/connections/payment-methods/bancontact/checkout.md) |
| iDEAL | `CHECKOUT_IDEAL` | [iDEAL via Checkout.com](https://primer.io/docs/connections/payment-methods/ideal/checkout.md) |
| MB Way | `CHECKOUT_MBWAY` | [MB Way](https://primer.io/docs/connections/payment-methods/mbway/checkout.md) |
| MobilePay | `CHECKOUT_MOBILEPAY` | [MobilePay via Checkout.com](https://primer.io/docs/connections/payment-methods/mobilepay/checkout.md) |
| Multibanco | `CHECKOUT_MULTIBANCO` | [Multibanco](https://primer.io/docs/connections/payment-methods/multibanco/checkout.md) |
| Pinless Debit | `CHECKOUT_PINLESS_DEBIT` | [Pinless Debit via Checkout.com](https://primer.io/docs/connections/payment-methods/pinless-debit/checkout.md) |
| TWINT | `CHECKOUT_TWINT` | [TWINT via Checkout.com](https://primer.io/docs/connections/payment-methods/twint/checkout.md) |
| Vipps | `CHECKOUT_VIPPS` | [Vipps via Checkout.com](https://primer.io/docs/connections/payment-methods/vipps/checkout.md) |

### Supported capabilities

<table>
  <colgroup>
    <col width="325" />

    <col width="100" />

    <col width="171" />

    <col width="243" />
  </colgroup>

  <thead>
    <tr>
      <th>Capability</th>
      <th>Card</th>
      <th>Apple Pay and Google Pay</th>
      <th>Alternative payment methods</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Authorization and capture</td>
      <td>Yes</td>
      <td>Yes</td>
      <td>Yes</td>
    </tr>

    <tr>
      <td>Partial capture</td>
      <td>Yes</td>
      <td>Yes</td>
      <td>No</td>
    </tr>

    <tr>
      <td>Authorization adjustment</td>
      <td>Yes</td>
      <td>Yes</td>
      <td>No</td>
    </tr>

    <tr>
      <td>Refund</td>
      <td>Yes</td>
      <td>Yes</td>
      <td>Yes</td>
    </tr>

    <tr>
      <td>Partial refund</td>
      <td>Yes</td>
      <td>Yes</td>
      <td>Yes</td>
    </tr>

    <tr>
      <td>Multiple refunds</td>
      <td>Yes</td>
      <td>Yes</td>
      <td>Yes</td>
    </tr>

    <tr>
      <td>Recurring and merchant-initiated payments</td>
      <td>Yes</td>
      <td>Yes</td>
      <td>No</td>
    </tr>

    <tr>
      <td>Network tokens</td>
      <td>Yes</td>
      <td>Yes</td>
      <td>Not applicable</td>
    </tr>
  </tbody>
</table>

> [!NOTE]
>
> Some capabilities must be enabled on your Checkout.com account. Contact Checkout.com to confirm which features are available to you.

### 3D Secure

Primer performs 3D Secure authentication using the [Perform 3DS action](https://primer.io/docs/workflows/apps/native-apps/primer-payments-app/perform-3ds-action.md) and passes the authentication result to Checkout.com. Primer only forwards the 3D Secure data when the authentication returns a successful or attempted status together with an ECI and a cryptogram, so a challenge that the customer abandons is not sent on as authenticated.

## Get started with Checkout.com

### Before you begin

If this is your first connection, make sure to follow the [Get started guide](https://primer.io/docs/get-started/overview.md) to begin processing payments with Primer.

You need both a Checkout.com sandbox account and a production account. Sandbox accounts are self-served and can be created [here](https://www.checkout.com/get-test-account) Before you connect, you must ask Checkout.com to enable the full card details API on your account.

For sandbox Checkout.com only enable Visa and Mastercard automatically, other schemes must be manually enabled.

**1. Enable the full card details API**

Email [support@checkout.com](mailto:support@checkout.com) and ask them to enable all features of the API in both sandbox and production, explaining that you are using Primer as a PCI compliant orchestration platform. If Checkout.com asks for an attestation of compliance, forward Primer's PCI certification.

This step is required. Without it, Primer cannot pass card credentials to Checkout.com.

**2. Find your environment prefix**

Log in to the Checkout.com Dashboard and go to **Developers > Overview**. Your unique base URL is shown there, for example `https://vkuhvk4v.api.checkout.com`. You can also find it under **Settings > Account details > Connection settings**.

You need only the prefix portion of that URL, which in the example above is `vkuhvk4v`. The prefix differs between sandbox and production, so make sure the value matches the environment you are configuring.

### Credentials

<table>
  <colgroup>
    <col width="192" />

    <col width="507" />
  </colgroup>

  <thead>
    <tr>
      <th>Field</th>
      <th>Where to find it</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>**Account**</td>
      <td>The account name in the top left corner of your Checkout.com payments dashboard.</td>
    </tr>

    <tr>
      <td>**Secret Key**</td>
      <td>Checkout.com Dashboard, under **Developers > Keys**. Select **Create a new key**, choose **Secret API key**, then **Create key** and copy the value.</td>
    </tr>

    <tr>
      <td>**Processing channel ID**</td>
      <td>Shown on the **Developers > Keys** page as a value beginning `pc_`. Optional.</td>
    </tr>

    <tr>
      <td>**Prefix**</td>
      <td>Checkout.com Dashboard, under **Developers > Overview**. Enter only the prefix portion of your base URL. Different per environment.</td>
    </tr>
  </tbody>
</table>

### Configure in the Dashboard

**1. Add Checkout.com to your Dashboard**

Go to [Integrations](https://dashboard.primer.io/integrations), select **New integration**, search for Checkout.com and enter your credentials.

**2. Configure webhooks in Checkout.com**

Log in to the Checkout.com Dashboard and select **Developers** in the top right. In the **Webhooks** section, select **New webhook** and:

* Enter a name for the webhook.
* Paste your Primer callback URL into the **Endpoint URL** field.
* Leave the **Webhook Key** field as it is and generate a random **Signature Key**.
* Under **Events**, select all available events.
* Under **Entities and processing channels**, select **All entities**.

Select **Create webhook** to save.

**3. Activate the payment methods on the Checkout**

Go to [Checkout](https://dashboard.primer.io/checkout) and activate the Checkout.com payment methods you want to offer.

**4. Route payments with Workflows**

In [Workflows](https://primer.io/docs/workflows/overview.md), select Checkout.com in the **Authorize payment** action.

## Saved cards and merchant-initiated payments

Checkout.com supports recurring and merchant-initiated payments on cards, Apple Pay and Google Pay. See [recurring payments](https://primer.io/docs/get-started/recurring-payments.md) for the general Primer flow.

Primer sends the network transaction reference from the initial customer-initiated payment on each subsequent merchant-initiated payment, so no processor-side configuration is needed beyond the account setup above.

## Considerations

* **The full card details API is mandatory.** Checkout.com must enable it on both your sandbox and production accounts before Primer can process cards. Request it early, because it is handled by Checkout.com support rather than self-serve.
* **The prefix is environment specific.** The prefix from your sandbox account does not work in production. Entering the wrong one produces connection errors that look like credential failures.
* **Network tokens are supported.** Primer can send network tokens to Checkout.com, including tokenized Google Pay credentials, which can improve authorization rates on repeat payments.
* **Authorization adjustment is available on cards.** You can adjust an authorized amount before capture, which suits use cases such as tipping or order amendments.
* **Alternative payment methods are asynchronous.** Most Checkout.com APMs reach a final status through a webhook after the customer completes a redirect. Fulfil orders only on a final status.

## Test in sandbox

Connect your Checkout.com **sandbox** account to your Primer Sandbox environment. Your prefix differs between environments, so use the sandbox prefix here.

> [tab] Card
>
> **Test a 3DS challenge.** Primer performs the authentication, so use Primer's 3D Secure test cards and enter the one time passcode when the challenge appears.
>
> | Network | Card number | OTP |
> | - | - | - |
> | Visa | `4916 9940 6425 2017` | `1234` |
> | Mastercard | `5306 8899 4283 3340` | `1234` |
>
> Enter `1234` to pass the challenge or `1111` to fail it. See [testing 3D Secure](https://primer.io/docs/testing/3d-secure.md) for the full list, including the cards to use on iOS and Android.
>
> **Test without a 3DS challenge.** Use the **Perform 3DS** action without a mandated challenge indicator. In Primer Sandbox a mandated challenge always produces a challenge, whatever card you use.
>
> **Test a full end to end flow.** Checkout.com accepts a restricted list of card numbers. Use a Checkout.com specific card when you want the card you entered to reach Checkout.com unchanged. `5137 2100 0000 0158` works for Cartes Bancaires and Mastercard, with any future expiry date and any 3 digit CVV.
>
> **Test a decline.** Use a decline card from [Checkout.com's test cards](https://www.checkout.com/docs/developer-resources/testing/test-cards) and confirm the decline reason Primer surfaces.
>
> **Test a saved card.** Make a payment that saves the card, then pay again with the saved payment method.

> [tab] Apple Pay
>
> Apple Pay payments do not require a 3DS challenge. The wallet supplies the cryptogram, which Primer passes to Checkout.com. See [Apple Pay](https://primer.io/docs/connections/payment-methods/apple-pay/overview.md) for how to set up and test Apple Pay, including recurring payments.

> [tab] Google Pay
>
> **Test Google Pay on Android.** Use an Android device signed in to a Google account enrolled in the Google Pay test card suite. These sandbox payments do not require a 3D Secure challenge.
>
> Checkout.com accepts tokenized Google Pay credentials, so you can test both the tokenized and the PAN only flow.

> [tab] Merchant-initiated
>
> Make a customer-initiated payment that saves the card, then create a merchant-initiated payment with the saved payment method. Primer sends the network transaction reference from the first payment, so no extra configuration is needed in sandbox.
>
> Repeat the same flow for saved Apple Pay and Google Pay payment methods if you intend to use them for recurring payments.

### How sandbox differs from production

Internal configuration aspects (such as Hosted Payment Page enablement and full card API) are different across environments. This is also true for Alternative Payment Methods or Reports scheduled generation (such as the Settlement Breakdown Report supported by Primer).

## Troubleshooting

Primer maps Checkout.com's response codes to its own decline reasons. See [decline codes](https://primer.io/docs/concepts/decline-codes/overview.md) for the full list.

## Go live

Before switching to production, confirm that:

1. Your Checkout.com production account is active for the payment methods you want to offer.
2. Checkout.com has enabled the full card details API on your production account.
3. You have added Checkout.com in your Primer **production** environment using your **production** credentials, including the **production** prefix.
4. Your production webhook is configured in the Checkout.com Dashboard and points at your Primer callback URL.
5. You handle the [PAYMENT.STATUS webhook](https://primer.io/docs/api-reference/endpoints/v2.4/payment-webhooks/payment-status-update.md) and fulfil orders only on a final status.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.