If you manage network tokens yourself and are fully PCI compliant, you can include the underlying Primary Account Number (PAN) in your payment request. When the issuer refuses the attempt with the network token, we can automatically retry the payment with the PAN. This helps you recover payments that would otherwise fail, without asking the shopper to enter their card details again.
The PAN fallback is enabled by default, sending the PAN is optional. To use the fallback, include the PAN in your payment request. If you do not include the PAN, we process the payment with the network token only.
Requirements
Before you begin, take into account the following requirements and limitations.
| Requirement | Description |
|---|---|
| Integration type | An online payments integration where you manage network tokens yourself, that supports card payments, and uses Checkout API v69 or later. |
| Webhooks | Subscribe to the Standard webhooks. To get data about the retry attempts we make, set up receiving retry attempt data in your Customer Area. |
| Limitations |
|
How the PAN fallback works
When your payment request contains both a network token and the underlying PAN, we can make two authorization attempts:
- You send a payment request that contains the network token and the underlying PAN.
- We always attempt the payment with the network token first. If it succeeds, the authorization completes using the network token.
- If the attempt is refused with a retryable response code, and our optimization logic determines that a retry can succeed, we trigger the PAN fallback.
- We send a second authorization attempt with the PAN. The shopper does not have to do anything.
- You get the result of each attempt in the payment response and in the AUTHORISATION webhook.
If your payment request does not contain a PAN, we process the payment with the network token only, and your existing payment flow does not change.
Send a payment request with the PAN
To let us fall back to the PAN, send the network token and the underlying PAN in the same payment request.
-
From your server, make a POST /payments request. Include the parameters that you need to make a payment with a network token, such as the
mpiDataobject. To include the network token as well as the PAN, specify the following:Parameter name Description paymentMethod.typenetworkToken paymentMethod.expiryMonthThe expiry month of the network token. paymentMethod.expiryYearThe expiry year of the network token. paymentMethod.cvcOptional. The card verification code or security code. paymentMethod.holderNameThe name of the cardholder associated with the network token. paymentMethod.numberThe network token you get from the card network. paymentMethod.brandOptional. For co-badged network tokens in the US, the card network that you want to route the payment to. secondaryPaymentMethod.numberThe card number (PAN) associated with the network token. secondaryPaymentMethod.expiryMonthThe expiry month of the card. secondaryPaymentMethod.expiryYearThe expiry year of the card. secondaryPaymentMethod.holderNameThe name of the cardholder associated with the card. -
In the response, check the
additionalDataobject for data about the attempts that we made.
Collect retry attempt data
To find out which attempts we made for a payment, set up receiving retry attempt data in your payment responses and webhooks.
To set up receiving retry attempt data:
- Log in to your Customer Area.
- Go to Developers > Additional data.
- In the Acquirer section, select Include the retry attempts.
- Select Save configuration.
Retry attempt data
When you collect retry attempt data, the additionalData object in your payment response contains a set of parameters for each attempt that we made. In the parameter names, attemptN is the number of the attempt: attempt1 for the attempt with the network token, and attempt2 for the attempt with the PAN.
| Parameter name | Description |
|---|---|
retry.attemptN.acquirer |
The name of the acquirer that processed the attempt. |
retry.attemptN.acquirerAccount |
The acquirer account that was used for the attempt. |
retry.attemptN.responseCode |
The numeric acquirer response code from the card network. |
retry.attemptN.rawResponse |
The details of the raw unmodified response from the acquirer. |
The AUTHORISATION webhook contains the same information as the additionalData object from your payment response.
The following examples show the additionalData object for each possible outcome.