---
title: "Offline payments"
description: "Continue accepting payments when your integration is offline."
url: "https://docs.adyen.com/point-of-sale/offline-payment"
source_url: "https://docs.adyen.com/point-of-sale/offline-payment.md"
canonical: "https://docs.adyen.com/point-of-sale/offline-payment"
last_modified: "2026-05-04T10:32:00+02:00"
language: "en"
---

# Offline payments

Continue accepting payments when your integration is offline.

[View source](/point-of-sale/offline-payment.md)

##### 3G/4G alternative

An alternative to offline payments is to process payments over the [cellular connection](/point-of-sale/design-your-integration/network-and-connectivity/cellular-failover) 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:- A Terminal API integration with payment terminals using [local communications](/point-of-sale/design-your-integration/choose-your-architecture/local).
- [Standalone payment terminals](/point-of-sale/standalone) with a **built-in printer**.
- Mobile SDK solutions: [Tap to Pay on iPhone and iOS card reader](/point-of-sale/mobile-ios).                                                                                                                                                                                                                                                                                                                                  |
| **[Webhooks](/development-resources/webhooks)** | Setting up webhooks is recommended for refunding offline payments when back online, reconciliation, and automatically retrying failed store-and-forward authorizations.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **Limitations**                                 | Take into account the following limitations:- Store and Forward for Tap to Pay on iPhone is currently only supported in the US.
- 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.
- Offline payments are not available for [Magnetic Stripe Reader (MSR)](/get-started-with-adyen/adyen-glossary#magnetic-stripe-reader-msrswipe) transactions. |
| **Setup steps**                                 | You must [set up offline payments](#enabling-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](/get-started-with-adyen/adyen-glossary/#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](/get-started-with-adyen/adyen-glossary/#europay-mastercard-visa-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](#retry) 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. Store-and-forward transactions on a payment terminal can be completed using any Cardholder Verification Method (CVM), such as PIN and signature. It is possible to block contactless transactions for store and forward mode. This allows your terminals to only accept chip transactions during offline periods. This means that if a shopper tries to use a contactless card while offline, they need to insert their chip card instead to complete the payment.

  In Mobile solutions, offline contactless transactions with PIN cannot be verified. It is possible to configure [Manual key entry (MKE)](/point-of-sale/enter-payment-manually/) as an entry method. Store-and-forward payments support [authorization adjustment](/point-of-sale/pre-authorisation/).

  Store and forward is *not* supported for most local card schemes, QR code wallets, magnetic stripe transactions, or cashbacks. Contact our [Support Team](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other) 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](#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](/point-of-sale/mobile-ios/troubleshooting) section to see whether an internet connection is required for resolving an error.

In a mobile solution, only [offline PIN](/get-started-with-adyen/adyen-glossary#offline-pin) is supported for store-and-forward transactions."

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](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other) 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 maximum transaction amount for offline refunds.

   * 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.                                                                                                                                         |
     | **Contactless floor limit** | The maximum transaction amount up to which the terminal will approve contactless transactions offline. For payments above this limit the terminal must have an internet connection, to get an online authorization of the payment. For payments below this limit the terminal tries to use offline EMV, without first trying an online authorization. |

   * 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. Inform our Support team if you have a Mobile solution with a card reader, because in that case all card types must be set to supported. Otherwise, you can choose to exclude some card types. |

   * For store and forward, the following aspects:

     * Whether to enable store and forward for payments that normally require a PIN as CVM.\
       This includes initial transactions that create recurring details for a shopper for [loyalty use cases](/point-of-sale/loyalty) or later [recurring payments](/point-of-sale/recurring-payments) using a token.

     * Whether to block contactless transactions for store and forward mode. This allows terminals to only accept chip transactions when they are offline.

     * Whether to enable [Manual key entry (MKE)](/point-of-sale/enter-payment-manually/) mode. Be aware that there is no liability shift when MKE is enabled. You are fully liable for [fraud chargebacks](/point-of-sale/what-we-support/payment-methods/#pos-chargebacks/).

     * Whether to enable [Auto Rescue](/online-payments/auto-rescue/cards). This feature [automatically retries](#retry) failed store-and-forward payments.

2. After offline payments have been enabled, check the settings in your [Customer Area](https://ca-test.adyen.com/):

   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](#reconcile-offline-transactions).

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](/point-of-sale/basic-tapi-integration/make-a-payment#payment-response), the Terminal API [response for an offline payment](#offline-response-details) 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](#refund-offline-transactions) and [reconciling](#reconcile-offline-transactions) 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](#offline-response-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**

```json
{
    "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**

```json
{
    ...
    "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**

```json
{
    ...
    "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](/development-resources/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](/reporting/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](/online-payments/auto-rescue/cards), 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](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other) 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](/online-payments/auto-rescue/cards/#auto-rescue-reports).

2. Subscribe to [webhook events](/online-payments/auto-rescue/cards/#step-2-receive-auto-rescue-updates) 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](#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](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other) to set a maximum transaction amount for offline refunds.

To refund a payment when there is no internet access:

* Make an [unreferenced refund](/point-of-sale/basic-tapi-integration/refund-payment/unreferenced) 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](#offline-transaction-response) 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](/point-of-sale/basic-tapi-integration/refund-payment/unreferenced) 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](/point-of-sale/basic-tapi-integration/refund-payment/referenced#refund-offline-payment) 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. In a mobile solution, the **POIID** is either:

  * the [installationId](https://docs.adyen.com/api-explorer/softpos-configuration-api/latest/post/auth/certificate#responses-201-installationId) (for example **AC2ABBE8-EDD8-4E2B-AF45-8770FA2347DC.924**) of the SDK for a Tap To Pay transaction.
  * the [card reader ID](/point-of-sale/mobile-ios/build/card-reader#add-the-card-reader-id-to-the-payment-request) (for example **NYC1-0207111104**) for an NYC1 transaction.

  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](/development-resources/webhooks) (if you set that up). Then make a regular [referenced refund](/point-of-sale/basic-tapi-integration/refund-payment/referenced#referenced-request) 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](#enabling-offline-payments).

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 a terminal with a wired network connection, unplug the Ethernet cable from the payment terminal.

3. Complete the offline payment using your [test card](/point-of-sale/testing-pos-payments/test-card-v2). The test card enforces the configured offline limits.

4. Verify that you are handling the [offline payment response](#offline-transaction-response) correctly.

5. Re-enable the internet connection.

6. Verify the result:

   * View the details of the test payment in your [test Customer Area](https://ca-test.adyen.com/) under **Transactions** > **Payments**.
   * View the webhooks received for the test payment (if you set up webhooks).
   * View the [Received payment details report](/reporting/received-payment-details-report).

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

## See also

* [Building a local integration](/point-of-sale/design-your-integration/choose-your-architecture/local)
* [Terminal API fundamentals](/point-of-sale/design-your-integration/terminal-api)
* [Webhooks](/development-resources/webhooks)
* [Received payment detail report](/reporting/received-payment-details-report)
* [Network recommendations](/point-of-sale/design-your-integration/network-and-connectivity/network-configuration)
* [AutoRescue for card payments](/online-payments/auto-rescue/cards)
