# Accept offline payments

Accept payments when you have internet connectivity issues.

If you’re using a different type of reader, check whether it’s cellular-enabled before you continue.

> #### Cellular-enabled readers
> 
> If you’re using a cellular-enabled reader like the Stripe Reader S710, see [Network transitions on cellular readers](https://docs.stripe.com/terminal/features/operate-offline/network-transitions.md) to understand how the reader transitions between WiFi, cellular, and offline mode.

If you have internet connectivity issues, Stripe Terminal allows you to store payments locally on your POS device or smart reader. When a network connection is restored, the SDK or smart reader automatically forwards any stored payments to Stripe.

From your application’s perspective, the payment collection process is similar to operating online. While offline, the smart reader or SDK securely stores the payment information and automatically forwards the stored payments when connectivity is restored. The SDK allows you to handle offline-related events using callbacks to your application.

## Availability

### Payment methods

| Payment Method | Supported |
| --- | --- |
| Visa | ✓ Supported1,2 |
| Mastercard | ✓ Supported1,2 |
| Discover | ✓ Supported1,2 |
| American Express | ✓ Supported1,2 |
| China UnionPay | ✓ Supported1,2,4 |
| JCB | ✓ Supported1,2,4 |
| Maestro | ✓ Supported1,2,4 |
| eftpos | ✓ Supported1,2,3,4 |
| Cartes Bancaires | ✓ Supported1,2,3,4 |
| NYCE, PULSE, STAR | - Unsupported |
| girocard | - Unsupported |
| Interac | - Unsupported |
| QR code payments | - Unsupported |

1 Physical cards and NFC-based [mobile wallets](https://docs.stripe.com/payments/wallets.md) are supported. Swiping isn’t allowed. 2 If you’re collecting payments in the European Economic Area, customers are required to insert their card and enter a PIN. 3 Co-branded cards are routed through the international scheme. For more information, see [Cartes Bancaires](https://docs.stripe.com/payments/cartes-bancaires.md) or [eftpos Australia](https://docs.stripe.com/payments/eftpos-australia.md) 4 Not supported for [Tap to Pay on iPhone](https://docs.stripe.com/terminal/payments/setup-reader/tap-to-pay.md?platform=ios) offline mode, which supports Visa, Mastercard, Discover, and American Express contactless cards only.

### Readers

| Device category | Readers | Connection type | Integration type |
| --- | --- | --- | --- |
| Mobile | [BBPOS Chipper 2X BT](https://docs.stripe.com/terminal/readers/bbpos-chipper2xbt.md), [Stripe Reader M2](https://docs.stripe.com/terminal/readers/stripe-m2.md), [BBPOS WisePad 3](https://docs.stripe.com/terminal/readers/bbpos-wisepad3.md) | Bluetooth, USB (Android only) | iOS SDK, Android SDK, React Native SDK |
| Smart | [Stripe Reader S700/S710](https://docs.stripe.com/terminal/readers/stripe-reader-s700-s710.md), [BBPOS WisePOS E](https://docs.stripe.com/terminal/readers/bbpos-wisepos-e.md), [Verifone V660p](https://docs.stripe.com/terminal/payments/setup-reader/v660p.md), [Verifone UX700](https://docs.stripe.com/terminal/payments/setup-reader/ux700.md) | Internet | iOS SDK, Android SDK, React Native SDK |
| Tap to Pay | [Tap to Pay on iPhone](https://docs.stripe.com/terminal/payments/setup-reader/tap-to-pay.md?platform=ios) (Private preview) | Built-in NFC | Terminal iOS SDK |

Tap to Pay on Android doesn’t support offline mode.

### Features

| Feature | Mobile readers | Smart readers | Tap to Pay readers |
| --- | --- | --- | --- |
| **[Tipping](https://docs.stripe.com/terminal/features/collecting-tips/on-reader.md)** | - Unsupported | ✓ Supported | - Unsupported |
| **[Ability to run custom POS app](https://docs.stripe.com/terminal/features/apps-on-devices/overview.md)** | - Unsupported | ✓ Supported | - Unsupported |
| **[Extended authorizations](https://docs.stripe.com/terminal/features/extended-authorizations.md)** | ✓ Supported | ✓ Supported | ✓ Supported |
| **[Incremental authorizations](https://docs.stripe.com/terminal/features/incremental-authorizations.md)** | - Unsupported | - Unsupported | - Unsupported |
| **[Ability to collect input on-screen](https://docs.stripe.com/terminal/features/collect-inputs.md)** | - Unsupported | ✓ Supported | - Unsupported |

# Mobile readers


## Collect a payment while offline

The following diagram describes the payment collection process when the Terminal SDK is offline. When storing payments, the SDK stores the payments to disk. You can safely reboot the POS device even if it has stored offline payments. When you re-initialize the SDK and it has reestablished a connection to the internet, and the SDK resumes forwarding any remaining stored payments.

A high-level diagram that shows how offline payments are stored. (See full diagram at https://docs.stripe.com/terminal/features/operate-offline/overview)

```text
[POS application] -- Create PaymentIntent --> [Terminal SDK]
[Terminal SDK] -- Securely store request information --> [Terminal SDK]
[Terminal SDK] -- Success callback --> [POS application]
[POS application] -- Collect payment method --> [Terminal SDK]
[Terminal SDK] -- Prompt for payment method --> [Bluetooth reader]
[Bluetooth reader] -- Payment method data --> [Terminal SDK]
[Terminal SDK] -- Success callback --> [POS application]
[POS application] -- Confirm PaymentIntent --> [Terminal SDK]
[Terminal SDK] -- Securely store request information --> [Terminal SDK]
[Terminal SDK] -- Success callback --> [POS application]
```

### Forward stored payments when online

The following diagram describes how stored payments are forwarded after connectivity is restored.

A high-level diagram that shows how offline payments are forwarded to the Stripe backend. (See full diagram at https://docs.stripe.com/terminal/features/operate-offline/overview)

```text
[Terminal SDK] -- Fetch connection token --> [POS application]
[POS application] -- Fetch connection token --> [Your backend]
[Your backend] -- POST /v1/terminal/connection_tokens --> [Stripe backend]
[Stripe backend] -- Connection token --> [Your backend]
[Your backend] -- Connection token --> [POS application]
[POS application] -- Connection token --> [Terminal SDK]
[Terminal SDK] -- Authenticate using connection token --> [Stripe backend]
[Stripe backend] -- Authentication token --> [Terminal SDK]
[Terminal SDK] -- Forward stored payment --> [Stripe backend]
[Stripe backend] -- Success or decline response --> [Terminal SDK]
[Terminal SDK] -- Forwarding event notification --> [POS application]
```

## See also

- [Collect card payments while offline](https://docs.stripe.com/terminal/features/operate-offline/collect-card-payments.md)

