Terminal-2 icon

Offline payments

Continue accepting payments when your integration is offline.

3G/4G alternative

An alternative to offline payments is to process payments over the cellular connection of your payment terminals when the internet is down.

To process a transaction, the payment terminal or Mobile SDK needs to have internet access. When there is a temporary loss of internet connectivity, you can continue making point-of-sale payments if offline payments have been enabled.

This page discusses the risk involved with offline payments and the types of offline payments: offline EMV and Store and forward.

This page also explains how to set up, recognize, reconcile, retry, and test offline transactions.

Requirements

Before you begin, take into account the following requirements, limitations, and preparations.

Requirement Description
Integration type Supported with:
Webhooks Setting up webhooks is recommended for refunding offline payments when back online, reconciliation, and automatically retrying failed store-and-forward authorizations.
Limitations Mobile SDK solutions do not support offline EMV nor refunding while offline.

With payment terminals using cloud communications, it is not very useful to enable offline payments. In that situation, an offline payment can only work if the loss of internet access happens after the terminal has already received the payment request through the cloud from the Adyen payments platform.
Setup steps You must set up offline payments.

Risk with offline payments

When you enable offline payments, your integration approves payments before the money is received from the shopper's account. That means it is possible that you will not receive the money for the goods that are taken by the shopper. There is also a higher risk that card fraud goes undetected.

You are fully liable for the risk of failed captures, chargebacks, and disputes related to payments that you process offline.

To reduce your exposure to these risks, you need to set a transaction floor limit before your integration can make offline payments. This is a maximum per-transaction amount that your terminals or the Mobile SDK can approve while offline.

Types of offline payment

There are two types of payment that you can do while your integration is offline. Each varies by card type, region, and the risk of the payment being declined by the issuer when it is processed:

  • Offline EMV: the payment terminal verifies that the PIN entered by the shopper matches the PIN on the EMV chip embedded in the card, and then asks the card to approve the payment. Whether the transaction is approved, depends on how the issuer configured the card. Because the card is in control, the payment can be processed in the clearing stream directly. This ensures a higher approval rate.
    Offline EMV transactions are supported by most major credit card schemes. Most debit cards do not support this type of payment.

    Mobile solutions do not support offline EMV transactions.

  • Store and forward: the payment terminal or Mobile SDK approves payments without any verification. Because of this, the risk of payments being declined by the issuer is higher than for offline EMV transactions. In practice the authorization rates range from 95% in some industries to several percentage points higher. We use Adyen's Auto Rescue to automatically retry failed store-and-forward payments to increase authorization rates.

    Store and forward is supported for contact chip and contactless transactions by the major credit and debit card schemes and also by some local card schemes. Any Cardholder Verification Method (CVM), such as PIN and signature, can be processed. It is possible to configure Manual key entry (MKE) as an entry method.

    Store and forward is not supported for most local card schemes, QR code wallets, magnetic stripe transactions, or cashbacks. Contact our Support Team to learn whether store and forward is supported for a specific local card scheme.

Offline payment flow

When the internet connection drops, transactions take place as follows:

  1. You initiate a payment like you usually do.

  2. When the shopper completes the payment, the payment terminal or Mobile SDK tries to reach the Adyen payments platform, but is unable to establish a connection.

  3. The terminal or Mobile SDK verifies whether the payment can be completed offline, by running the following checks:

    • Are one or more types of offline payment enabled? If no, the payment is Declined.
    • Is the card configured by the issuer to process offline payments?
    • Has the payment terminal or mobile device reached its maximum number of store-and-forward offline payments yet?
    • Does the transaction amount fall within the maximum transaction amount for the type of offline payment?
    • Does the payment scheme support offline payments?

    If both types of offline payment are enabled, offline EMV is tried first, then store and forward.

  4. If Approved, the terminal or Mobile SDK stores the card data and details of the transaction.

    • If you are using a standalone terminal, it will print the receipt.
    • In a local integration or Mobile solution, the response includes data you can use to generate a receipt.
  5. Later, when the terminal or Mobile SDK is able to connect to the internet again, it sends the stored payments to the Adyen payments platform for further processing.

Offline payments in a Mobile solution

In a Mobile solution, transactions are handled through our Mobile SDK. The SDK is integrated into a POS app that runs on a mobile device that is not a payment terminal, such as a phone.

To handle store-and-forward payments, the Adyen payments platform must have attested the security of the mobile device before the internet connectivity was lost. When online, the Mobile SDK evaluates the security of the mobile device at various points, for example, at app initiation, or with every online transaction. Errors that occur during the attestation process must be resolved. Check the error handling section to see whether an internet connection is required for resolving an error.

When the Adyen payments platform evaluates the mobile device as secure, the SDK can perform store-and-forward transactions for 24 consecutive hours. Store and forward does not work in the event of an outage of the Adyen payment platform.

While offline, you must not:

  • Delete your POS app: you will lose all stored card data and stored transaction details.
  • Remove the passcode of your device: you will lose all stored card data and stored transaction details captured while that passcode was set.
  • Restart your mobile device: your device cannot transact anymore after a restart until it connects to the internet again.

Set up offline payments

To set up offline payments:

  1. Ask our Support Team to enable offline payments and give them the following information:

    • The type of offline payments you want to enable: offline EMV and/or store and forward.

    • If you want to make offline unreferenced refunds: the Offline refund maximum transaction amount.

    • For offline EMV, the following limits:

      Setting Description
      Chip floor limit The maximum transaction amount that the terminal accepts for an offline EMV transaction where the shopper inserts their chip card into the chip card reader. Transactions above this amount will be declined.
      Offline swipe limit The maximum transaction amount up to which swiped cards are accepted offline.
      Contactless floor limit The maximum transaction amount up to which the terminal will approve contactless transactions offline.
    • For store and forward, the following limits:

      Setting Description
      Store-and-forward max. amount The maximum transaction amount that the terminal accepts for a store-and-forward transaction. Transactions above this amount will be declined.
      Max. payments The maximum number of store-and-forward transactions per terminal that you can process while offline.
      Supported card types Normally, store-and-forward settings apply to all credit, debit, and prepaid cards in your account. If you want to exclude some of them, inform our Support Team.
    • For store and forward, the following aspects:

  2. After offline payments have been enabled, check the settings in your Customer Area:

    1. Go to In-person payments > Terminal settings > Payment features.
    2. For offline EMV, check the settings under Offline processing.
    3. For store and forward, check the settings under Store-and-forward payments.
  3. Take care of any extra configuration on your side to reconcile payments that are made offline.

Some card schemes have specific requirements that override your offline payments settings. For example:

  • In Germany, girocard allows offline EMV payments even when this is not enabled for your account. Settlement is guaranteed in these cases.
  • In Australia, American Express does not accept offline payments.

Recognize the offline payment response

Compared to an online payment response, the Terminal API response for an offline payment differs in some respects. Data that is generated by the Adyen payments platform, such as the PSP reference, is missing because your integration is unable to connect to Adyen. Authorisation data is missing as well, because the issuer has not authorized the payment yet. The response also includes some values to indicate the payment took place offline.

These differences are important because:

  • They have consequences for refunding and reconciling offline payments.
  • If your POS system normally uses the PSP reference, you need to make sure it is also able to handle responses that do not include a PSP reference.

To recognize store-and-forward payments:

  • When using your Customer Area, under Transactions > Payments, use the gear icon to show the Store and forward column.
  • When using the Terminal API response, check the details shown in the next section.

Offline payment response details

The PaymentResponse for an offline transaction has the following characteristics:

  • POIData.POITransactionID.Transaction.ID: misses the PSP reference. Only contains the tender reference.

  • PaymentResult.AuthenticationMethod: OfflinePIN

  • PaymentResult.OnlineFlag: false

  • PaymentResult.PaymentAcquirerData: misses the AcquirerTransactionID and ApprovalCode parameters.

  • Response.AdditionalResponse includes:

    • offline: true

    • offlineAuthCode: indicates the type of offline payment.

      • Offline approved indicates an offline EMV payment.
      • Failed go online offline declined indicates a store-and-forward transaction.

    • unconfirmedBatchCount: the number of payments that the terminal hasn't been able to send to the Adyen payments platform.

  • There are also fields missing from the Response.AdditionalResponse. The most important missing data are:

    • authorization data: authCode, authorisationMID, authorisedAmountCurrency, authorisedAmountValue, refusalReasonRaw
    • PSP reference: pspReference, transactionReferenceNumber

Below is an example of an offline EMV or store-and-forward payment response.

Offline EMV or store-and-forward payment response
Expand view
Copy link to code block
Copy code
Copy code
{
"SaleToPOIResponse": {
"MessageHeader": {...},
"PaymentResponse": {
"POIData": {
"POIReconciliationID": "1000",
"POITransactionID": {
"TimeStamp": "2020-12-14T10:27:07.000Z",
"TransactionID": " {hint:only a tender reference, no PSP reference}57Ra001607941627000"{/hint}
}
},
"PaymentReceipt": [...],
"PaymentResult": {
"AmountsResp": {...},
"{hint:extra parameter}AuthenticationMethod"{/hint}: [
"OfflinePIN"
],
"CustomerLanguage": "fr",
"OnlineFlag": {hint:failed to go online}false{/hint},
"{hint:misses AcquirerTransactionID and ApprovalCode parameters}PaymentAcquirerData"{/hint}: {
"AcquirerPOIID": "P400Plus-123456789",
"MerchantID": "ADYEN_MERCHANT_ACCOUNT"
},
"PaymentInstrumentData": {...}
},
"Response": {
"{hint:several different or missing fields}AdditionalResponse": "..."{/hint},
"Result": "Success"
},
"SaleData": {...}
}
}
}
}

The next example shows the AdditionalResponse (converted to JSON format) for an offline EMV payment.

Offline EMV AdditionalResponse
Expand view
Copy link to code block
Copy code
Copy code
{
...
"offline": "{hint:failed to go online}true"{/hint},
"offlineAuthCode": "{hint:indicates this is an offline EMV transaction}Offline approved"{/hint},
...
"{hint:number of offline transactions stored on the terminal}unconfirmedBatchCount": "3"{/hint}
}

The next example shows the AdditionalResponse (converted to JSON format) for a store-and-forward payment.

Store-and-forward AdditionalResponse
Expand view
Copy link to code block
Copy code
Copy code
{
...
"offline": "{hint:failed to go online}true"{/hint},
"offlineAuthCode": "{hint:indicates this is a store-and-forward transaction}Failed go online offline declined"{/hint},
...
"{hint:number of offline transactions stored on the terminal}unconfirmedBatchCount": "3"{/hint}
}

Reconciling offline payments

Because the PSP reference is generated by the Adyen payments platform, the Terminal API response for an offline transaction does not have a PSP reference.
If you are using the PSP reference for reconciliation, we recommend you set up webhooks. When your integration is online again, you will receive webhooks for the stored payments, and these webhooks include the PSP reference.
As an alternative, you can use the tender reference, which is generated by the terminal, to reconcile your payments.
Also note that you can add the POS Store and Forward indicator column to your Received payment details report.

Because offline payments can be declined by the issuer, your financial operations specialist needs to set up a method of handling this type of declines. This would mean the goods are provided to the shopper and the money is not received for this type of payment. This is the inherent risk of processing store-and-forward transactions.

Retry failed store-and-forward authorizations

A store-and-forward authorization can fail for reasons such as insufficient funds. It is possible that the authorization will succeed when submitted again at a later point in time. With Adyen's Auto Rescue, failed store-and-forward payments that are eligible will be automatically retried for one calendar month. Payments that were flagged as fraud are not eligible.

To use Auto Rescue:

  1. Ask our Support Team to enable Auto Rescue.
    If you want to see all payments initiated by Auto Rescue, also ask them to add the Payment Requester Type column to your Received payment details report.

  2. Subscribe to webhook events to be informed when a retry attempt is successful or unsuccessful and when the retry period ends.

  3. Recognize retry attempts:

    • Retry attempts have a unique pspReference, but have the same tenderReference as the original transaction.
    • The merchantOrderReference of the retry attempt is the pspReference of the original transaction.

Refunding while offline

While your integration is offline, there are some restrictions with regard to refunds:

  • You can only make unreferenced refunds. Referenced refunds are not supported.

  • Offline unreferenced refunds are processed as offline EMV transactions. This means refunds can fail because not all cards support offline EMV.
    This also means that Mobile solutions do not support refunds while offline.

  • To allow making refunds while offline, you need to contact our Support Team to set an Offline refund maximum transaction amount.

To refund a payment when there is no internet access:

  • Make an unreferenced refund using a PaymentRequest with PaymentType Refund. To make reconciliation easier, we recommend including the tender reference of the original payment in SaleData.SaleTransactionID.TransactionID.

Refunding offline payments when back online

If your internet connection is restored and you want to refund a payment that was completed offline, you need to manage the fact that the response for the offline payment does not contain the PSP reference.

Use one of these options, taking into account that referenced refunds are safer than unreferenced refunds:

  • Make an unreferenced refund using a PaymentRequest with PaymentType Refund. To make reconciliation easier, we recommend including the tender reference of the original payment in SaleData.SaleTransactionID.TransactionID.

  • Make a referenced refund using a ReversalRequest with the tender reference of the offline payment and the POIID of the payment terminal that was used for the offline payment. Even though you do not know the PSP reference, you can still make a referenced refund in this way.

  • Find the PSP reference for the offline payment in your Customer Area or in the webhook (if you set that up). Then make a regular referenced refund using a ReversalRequest with the PSP reference.

Test offline payments

To test an offline payment, proceed as follows.

  1. Make sure offline payments are set up.

  2. Initiate a payment and force an internet connection failure.
    The most convenient way to force an internet connection failure depends on your situation.
    For example:

    • In a Mobile solution or on an Android payment terminal, turn on airplane mode.
    • Unplug the Ethernet cable from a switch.
    • If you are using the P400 plus terminal, unplug the Ethernet cable from the payment terminal.
  3. Complete the offline payment using your test card. The test card enforces the configured offline limits.

  4. Verify that you are handling the offline payment response correctly.

  5. Re-enable the internet connection.

  6. Verify the result:

    This information should help your financial operations specialist to adapt your financial system to offline payments.

See also