Skip to content

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.

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 us through the contact form.

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

Offline Transactions are currently supported in Europe through Worldpay.

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

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.

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.

Best practice: run preparation after merchant login or when the merchant explicitly enables offline mode.

Offline sessions are explicit on both platforms.

  • Start: SumUpAPI.startOfflineSession(StartOfflineSessionCallback callback)
  • Internet required: No

Once an offline session starts, subsequent payments are attempted as offline transactions until the session is ended.

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.

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.

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.

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
SumUpAPI.updateOfflineSecurityPatch(new SecurityPatchUpdateCallback() {
@Override
public void onSuccess() {
// Security patch update successful
}
@Override
public void onFailure() {
// Security patch update failed
}
});
SumUpAPI.startOfflineSession(new StartOfflineSessionCallback() {
@Override
public void onResult(@NonNull StartOfflineSessionResult result) {
// Handle the start result
}
});
SumUpAPI.stopOfflineSession(new StopOfflineSessionCallback() {
@Override
public void onResult(@NonNull StopOfflineSessionResult result) {
// Handle the stop result
}
});
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

For testing guidance, contact your SumUp technical contact or reach out through the contact form.