We recommend updating to this version of the SDK for security enhancements.
New Features
Added optional timeoutCardWaitSeconds to startPayment, allowing integrators to configure how long the SDK waits for card presentation.
The default card-wait timeout is now 240 seconds. Supported values are clamped between 60 and 240 seconds.
Updated SDK build support for Android 16 / API 36.
Updated core security, attestation, obfuscation, and payment kernel dependencies.
Fixes
Fixed an issue where rotating the device during an active transaction could interrupt the payment flow.
Fixed a recovery issue where transactions could keep failing with “Could not connect to the server” after a temporary network failure until the app was restarted.
Improved NFC card-read handling by retrying after supported L1 read errors.
Integration Notes
Existing integrations continue to work without code changes.
Integrators can optionally pass timeoutCardWaitSeconds when starting a payment to customize the card presentation timeout.
SumUpLoginContract, SumUpCardReaderPageContract, and SumUpCheckoutContract to support Activity Result API integrations. Existing onActivityResult-based integrations remain unchanged. Please refer to the documentation for more information.
Improvements:
Reduced SDK size by approximately 8 MB.
In offline sessions, totalApprovedAmount now includes tip amounts.
Important: SDK v7.1.0 introduces internal changes that are not backward compatible. After upgrading and running the application with v7.1.0, downgrading to an earlier SDK version is not supported.
The plugin adds SumUp as a payment integration for Vendure and supports:
Hosted Checkout for redirect-based payments
Widget-oriented storefront integrations that use a returned checkoutId
Webhook-driven payment updates through Vendure’s payment flow
To get started, install @sumup/vendure-plugin, register SumUpPlugin and sumUpPaymentHandler in your Vendure config, and create a sumup payment method in Vendure Admin.
See the new Vendure plugin guide for setup steps, configuration options, and testing guidance.
Hosted Checkout is now available for Online Payments.
Hosted Checkout gives you a SumUp-hosted payment page. Your integration creates the checkout server-side, receives a hosted_checkout_url, and redirects the customer to a SumUp-hosted page to complete the payment.
This release is designed for merchants and platforms that want the fastest path to launch online payments without building or hosting their own checkout UI.
What you can do with Hosted Checkout:
Create a checkout with hosted_checkout.enabled set to true.
Redirect customers to the returned hosted payment page.
Add a redirect_url so the success page links back to your website.
Let SumUp handle the payment page and final status screens while your backend verifies the final state through the API or webhooks.
See the new Hosted Checkout guide for the full flow, SDK examples, and integration details.
The Swift Checkout SDK now supports Apple Pay in supported non-Safari browsers, in addition to Safari.
This update makes it easier to offer Apple Pay to more customers across supported browser environments while keeping the same Swift Checkout integration flow.
What’s included in this update:
Apple Pay is now available in supported non-Safari browsers.
Existing Swift Checkout integrations can use Apple Pay across a broader set of browser environments.
Apple Pay domain verification is still required for every domain where you show the Apple Pay button.
See the Swift Checkout SDK guide for setup instructions, payment request examples, and Apple Pay domain verification steps.
1importcom.sumup.sdk.SumUpClient;2importcom.sumup.sdk.models.CheckoutCreateRequest;3importcom.sumup.sdk.models.Currency;45SumUpClientclient=SumUpClient.builder().build();67CheckoutCreateRequestrequest=8CheckoutCreateRequest.builder()9.amount(25.00f)10.currency(Currency.EUR)11.checkoutReference("ORDER-1001")12.merchantCode(System.getenv("SUMUP_MERCHANT_CODE"))13.description("Online payment via card widget")14.build();1516varcheckout=client.checkouts().createCheckout(request);17System.out.println(checkout.id());
Today we are announcing the introduction of a new endpoint that lets you receive real-time updates from your connected card reader. You can see the current screen shown during the payment process and check the device status, including battery level, connectivity, and update progress.
Supported States
IDLE – Reader ready for next transaction
SELECTING_TIP – Waiting for tip input
WAITING_FOR_CARD – Awaiting card insert/tap
WAITING_FOR_PIN – Waiting for PIN entry
WAITING_FOR_SIGNATURE – Waiting for customer signature
UPDATING_FIRMWARE – Firmware update in progress
Device Status
ONLINE – Device connected and operational
OFFLINE – Device disconnected (last state persisted)
Today we are announcing the deprecation of support for API requests that include a trailing slash at the end of the URL.
While our documentation has never endorsed this pattern, we identified a small number of clients still relying on it.
To ensure a smooth transition, a 2-month grace period will apply before the behavior is fully removed.
Details
Requests using URLs that end with / (e.g., /v0.1/checkouts/) will continue to work during the grace period.
After the grace period ends, these requests will return an error.
Please consult the API documentation and update any API calls that include a trailing slash.
This change typically only requires removing the final / in affected endpoints.
If you run into issues or need help identifying affected requests, please contact our support team.
Please contact us through the contact form to enable offline payments on your SumUp merchant account.
Added:
Payment intent now also returns the card reader model and firmware version in new response fields SumUpAPI.Response.CARD_READER_MODEL and SumUpAPI.Response.CARD_READER_FIRMWARE_VERSION at the end of every transaction.
Improvements:
Renames package of TransactionInfo: com.sumup.merchant.reader.models.TransactionInfo > com.sumup.checkout.core.models.TransactionInfo
Renames package of SumUpState: import com.sumup.merchant.api.SumUpState > import com.sumup.reader.sdk.api.SumUpState
Miscellaneous bug fixes and enhancements.
Updates about the technical stack:
Minimum supported targetSDK is 35
Minimum Kotlin is upgraded to 1.9.0
Minimum Kotlin Coroutine is upgraded to 1.8.0
Minimum Hilt is upgraded to 2.51.1
Minimum Moshi is upgraded to 1.15.0
Minimum AppCompat is upgraded to 1.7.0
Minimum AndroidX Annotation is upgraded to version 1.8.0
Minimum AndroidX Activity is upgraded to version 1.9.1
Minimum AndroidX Fragment is upgraded to version 1.7.1
Minimum AndroidX Lifecycle is upgraded to version 2.8.1
Minimum AndroidX Browser is upgraded to version 1.4.0
Minimum AndroidX Navigation is upgraded to version 2.7.7
Minimum Material Components is upgraded to 1.12.0
Minimum Play Services Location is upgraded to 21.3.0- Minimum AGP is upgraded to 8.8.0
Added support of Online Pin SCA (Strong Customer Authentication).
Added card data to PaymentEvent.TransactionDone event: card type, card scheme, last four digits, and merchant code.
Transparent attestation process. The SDK now returns error details if attestation fails in PaymentEvent.TransactionFailed event. This helps developers understand and resolve attestation issues more effectively.
API changes to make it more concise. Now TapToPay.startPayment() function returns Flow<PaymentEvent> instead of Flow<Result<PaymentEvent>>.
We are happy to announce the release of our Python(Opens in a new tab) SDK. The SDK is maintained under sumup/sumup-py(Opens in a new tab) and covers all of SumUp’s public APIs. sumup-py support both synchronous and asynchronous calling convention.
1importSumUpfrom"@sumup/sdk";23constclient=newSumUp({4apiKey:process.env.SUMUP_API_KEY,5});67asyncfunctionmain(){8constmerchantCode=process.env.SUMUP_MERCHANT_CODE;9if(!merchantCode){10console.warn(11"Missing merchant code, please specify merchant code using SUMUP_MERCHANT_CODE env variable.",12);13return;14}1516const{items:readers}=awaitclient.readers.list(merchantCode);17if(!readers.length){18console.warn("No readers found, please pair a card reader first.");19return;20}2122constreader=readers[0];2324constcheckout=client.readers.createCheckout(merchantCode,reader.id,{25total_amount:{26// Must match the currency of your merchant account27currency:"EUR",28minor_unit:100,29value:500,30},31});3233console.info({checkout});34}3536main();
Mitigated threats are now filtered out during attestation. If a threat has "mitigated": true, it is excluded from the threat list that is used to determine whether the COTS is attested.
The Solo card reader now supports connecting and transacting over USB cable. The minimum required Solo software version that supports the USB mode is 3.3.17.2.
If this version (3.3.17.2) is not yet available on your Solo when connected via Bluetooth, you can switch it to standalone mode (Menu -> Connection -> WiFi), login directly on the Solo, and update it to the latest version.
Solo USB is under beta phase which means that the feature still requires some optimization to ensure full stability.
Known limitations: currently, if the USB cable is unplugged, the USB permission on the mobile device will need to be regranted. As of now, Solo is not able to wake up automatically from sleep mode. A connection needs to be reestablished from