Applies to: Point of Sale API - iOS | Point of Sale API - Android
Learn how to continue processing payments offline during moments of limited connection to the Internet.
If you're using the Point of Sale API with a Square Reader for contactless and chip, both a Bluetooth connection and a secure connection are required to take offline payments.
- A Bluetooth connection relies on device settings and physical distance. A reader must maintain a Bluetooth connection with a mobile device's POS application to take payments.
- A secure connection is established when a reader is connected to a mobile device that has its POS application open and online.
To take offline payments with the Point of Sale API and a Square reader:
- The reader must be connected to a device that was online and had the POS application opened within the last 24 hours.
- The POS device must have a Bluetooth connection to the reader and have offline processing enabled before going offline.
- The reader must maintain a Bluetooth connection to your device throughout the offline payment.
The Point of Sale API supports payment processing with the Square Point of Sale application in Offline Mode.
To accept offline payments with the Point of Sale API:
Sign in to the Square Point of Sale application, choose ≡ More, and then choose Settings.
Choose Checkout, choose Offline payments, and then toggle on Allow.
Important
Offline payments are processed automatically when you reconnect your device to the Internet. Payments might be declined if not processed within 24 hours.
Offline payment results don't include a transaction_id
field because Square backend systems haven't received and processed the transaction. Instead, the response includes a client_transaction_id
field, which matches the value of client_id
in Transaction
objects. Use client_transaction_id
to retrieve the transaction details using the Transactions API ListTransactions endpoint when Internet connection is restored and the Square Point of Sale application processes the staged transactions.
It's not currently possible to filter ListTransactions
results by the client_id
field.