Offline Transactions
Use store-and-forward offline transactions with the Android and iOS Reader SDKs, including requirements, lifecycle, and platform-specific APIs.
Offline Transactions let merchants continue accepting card payments when internet connectivity is unavailable or unreliable. In this store-and-forward flow, card data is captured and cached securely on the device, then uploaded later for processing and authorization.
The feature is available for the Android SDK and iOS SDK. It is not available for Tap to Pay.
Before You Begin
Section titled “Before You Begin”Make sure all of the following are true:
- You already have an active Android or iOS Reader SDK integration.
- The device and reader meet the minimum requirements below.
- The merchant has completed at least one successful online transaction.
- Your organization has completed the opt-in process for Offline Transactions.
To request access, contact integrations@sumup.com.
Platform Availability
Section titled “Platform Availability”| Capability | Android SDK | iOS SDK |
|---|---|---|
| Offline Transactions | ✅ Supported | ✅ Supported |
| Tap to Pay | ❌ Not supported | ❌ Not supported |
| Supported card schemes | Visa, Mastercard | Visa, Mastercard |
| Solo firmware | 3.3.31.0 or higher | 3.3.31.0 or higher |
| Solo Lite firmware | 2.2.1.25 or higher | 2.2.1.25 or higher |
Geographic Availability
Section titled “Geographic Availability”Offline Transactions are currently supported in Europe through Worldpay.
Minimum Requirements
Section titled “Minimum Requirements”| Requirement | Minimum |
|---|---|
| Android OS | Android 8 |
| Card reader (Solo) | Firmware 3.3.31.0 or higher |
| Card reader (Solo Lite) | Firmware 2.2.1.25 or higher |
| Supported card schemes | Visa, Mastercard |
| Requirement | Minimum |
|---|---|
| iOS version | 16.0 or higher |
| Secure Enclave | Required |
| Free storage | 10 MB recommended |
| Card reader (Solo) | Firmware 3.3.31.0 or higher |
| Card reader (Solo Lite) | Firmware 2.2.1.25 or higher |
| Supported card schemes | Visa, Mastercard |
Lifecycle
Section titled “Lifecycle”Offline Transactions follow four phases: preparation, activation, offline payment acceptance, and reconciliation.
| Phase | What happens |
|---|---|
| Preparation | The SDK downloads offline rules and merchant limits while the device is online. |
| Activation | Your app starts an offline session. |
| Offline window | Transactions are validated locally, signed, and stored securely on device. |
| Reconciliation | Stored transactions are uploaded to SumUp when connectivity returns. |
Preparation
Section titled “Preparation”Before going offline, sync the latest offline rules and limits while the device is online.
- Method:
SumUpAPI.updateOfflineSecurityPatch(SecurityPatchUpdateCallback callback) - Internet required: Yes
If you skip this step, startOfflineSession(...) can fail with OfflineLimitsAbsent.
- Method:
setupOfflineSession - Internet required: Yes
Best practice: run preparation after merchant login or when the merchant explicitly enables offline mode.
Activation
Section titled “Activation”Offline sessions are explicit on both platforms.
- Start:
SumUpAPI.startOfflineSession(StartOfflineSessionCallback callback) - Internet required: No
- Start:
startOfflineSession - Internet required: No
Once an offline session starts, subsequent payments are attempted as offline transactions until the session is ended.
Offline Window
Section titled “Offline Window”During an active offline session, transactions are validated locally and stored securely on the device. The SDK still returns an immediate result to your app.
- Method:
SumUpAPI.fetchCurrentOfflineSession(OfflineSessionCallback callback) - Internet required: No
- Returns session information such as remaining time, approved transaction count, failed transaction count, and total approved amount.
- Methods:
getOfflineSessionDetails,getOfflineSessionRemainingTime - Internet required: No
Offline sessions are constrained by merchant limits, total stored volume, and session duration. Once those limits are reached or the session expires, new offline transactions are rejected.
Reconciliation
Section titled “Reconciliation”When connectivity returns, upload stored transactions as soon as possible.
- Manual upload:
SumUpAPI.uploadOfflineTransactions(UploadOfflineTransactionsStatusListener callback) - End session:
SumUpAPI.stopOfflineSession(StopOfflineSessionCallback callback)
Stopping the session also triggers an upload attempt.
- Manual upload:
uploadOfflineSession - End session:
endOfflineSession
Android API Summary
Section titled “Android API Summary”| API | Purpose | Internet required |
|---|---|---|
SumUpAPI.updateOfflineSecurityPatch(...) | Download the latest offline rules and limits | Yes |
SumUpAPI.startOfflineSession(...) | Start an offline session | No |
SumUpAPI.stopOfflineSession(...) | Stop the session and trigger upload | No |
SumUpAPI.uploadOfflineTransactions(...) | Upload stored offline transactions manually | Yes |
SumUpAPI.fetchCurrentOfflineSession(...) | Inspect current session status | No |
Android Integration Example
Section titled “Android Integration Example”Update Offline Security Patch
Section titled “Update Offline Security Patch”SumUpAPI.updateOfflineSecurityPatch(new SecurityPatchUpdateCallback() { @Override public void onSuccess() { // Security patch update successful }
@Override public void onFailure() { // Security patch update failed }});Start Offline Session
Section titled “Start Offline Session”SumUpAPI.startOfflineSession(new StartOfflineSessionCallback() { @Override public void onResult(@NonNull StartOfflineSessionResult result) { // Handle the start result }});Stop Offline Session
Section titled “Stop Offline Session”SumUpAPI.stopOfflineSession(new StopOfflineSessionCallback() { @Override public void onResult(@NonNull StopOfflineSessionResult result) { // Handle the stop result }});Common Failure Modes
Section titled “Common Failure Modes”| Scenario | Behavior |
|---|---|
| Preparation step skipped or failed | Session start can fail because offline limits are missing |
| Reader switched mid-session | Offline processing is suspended until a new session is started |
| Session expired | New offline transactions are rejected |
| Cumulative limit reached | New offline transactions are rejected until stored transactions are uploaded |
| Concurrent offline API calls | Not supported on Android; keep calls serial |
Testing
Section titled “Testing”For testing guidance, contact your SumUp technical contact or integrations@sumup.com.