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 integrations@sumup.com.

CapabilityAndroid SDKiOS SDK
Offline Transactions✅ Supported✅ Supported
Tap to Pay❌ Not supported❌ Not supported
Supported card schemesVisa, MastercardVisa, Mastercard
Solo firmware3.3.31.0 or higher3.3.31.0 or higher
Solo Lite firmware2.2.1.25 or higher2.2.1.25 or higher

Offline Transactions are currently supported in Europe through Worldpay.

RequirementMinimum
Android OSAndroid 8
Card reader (Solo)Firmware 3.3.31.0 or higher
Card reader (Solo Lite)Firmware 2.2.1.25 or higher
Supported card schemesVisa, Mastercard

Offline Transactions follow four phases: preparation, activation, offline payment acceptance, and reconciliation.

PhaseWhat happens
PreparationThe SDK downloads offline rules and merchant limits while the device is online.
ActivationYour app starts an offline session.
Offline windowTransactions are validated locally, signed, and stored securely on device.
ReconciliationStored 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.

APIPurposeInternet required
SumUpAPI.updateOfflineSecurityPatch(...)Download the latest offline rules and limitsYes
SumUpAPI.startOfflineSession(...)Start an offline sessionNo
SumUpAPI.stopOfflineSession(...)Stop the session and trigger uploadNo
SumUpAPI.uploadOfflineTransactions(...)Upload stored offline transactions manuallyYes
SumUpAPI.fetchCurrentOfflineSession(...)Inspect current session statusNo
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
}
});
ScenarioBehavior
Preparation step skipped or failedSession start can fail because offline limits are missing
Reader switched mid-sessionOffline processing is suspended until a new session is started
Session expiredNew offline transactions are rejected
Cumulative limit reachedNew offline transactions are rejected until stored transactions are uploaded
Concurrent offline API callsNot supported on Android; keep calls serial

For testing guidance, contact your SumUp technical contact or integrations@sumup.com.