Summary
When performing a card reader checkout with tipOnCardReaderIfAvailable set to true on CheckoutRequest, the Tip on Card Reader screen does not appear during checkout, even though SumUpSDK.isTipOnCardReaderAvailable returns true immediately before the checkout call. No error is thrown, and the checkout otherwise proceeds normally (card reader connection, payment, success screen). The equivalent flow works correctly on Android with the same merchant account and same card reader.
Immediately after "Checkout flow created" is logged, the following internal warning appears in the console:
[CircuitUI] NavigationHeaderConfiguration detected bar button items set directly via navigationItem.leftBarButtonItem(s) or navigationItem.rightBarButtonItem(s). Use NavigationHeaderConfiguration to manage all navigation bar items. Direct assignment is not supported and will be removed in a future version of CircuitUI.
This suggests the issue may originate in the SDK's internal checkout UI (built with CircuitUI) rather than in our integration code.
Steps to Reproduce
- Log in with a merchant account that has tipping enabled and a compatible card reader connected
- Call
SumUpSDK.prepareForCheckout()
- Check
SumUpSDK.isTipOnCardReaderAvailable → returns true
- Create a
CheckoutRequest(total:title:currencyCode:) without setting tipAmount
- Set
request.tipOnCardReaderIfAvailable = true
- Set
request.skipScreenOptions = .success
- Call
SumUpSDK.checkout(with:from:completion:)
- Observe that the checkout proceeds directly to the card presentation step, skipping the tip selection screen entirely
let request = CheckoutRequest(total: total, title: "OrderRight Transaktion", currencyCode: CurrencyCodeEUR)
request.skipScreenOptions = .success
request.tipOnCardReaderIfAvailable = true
SumUpSDK.checkout(with: request, from: viewController) { result, error in
// ...
}
Expected Behavior
The Tip on Card Reader screen should be presented to the customer before the card payment step, since isTipOnCardReaderAvailable reported true and tipOnCardReaderIfAvailable was set to true on the request.
Actual Behavior
No tip screen is shown at any point during checkout. The transaction completes successfully for the base total amount only, with no opportunity for the customer to add a tip.
iOS Version(s)
iPadOS 26.5.2
Impacted Devices
iPad A16
Impacted Readers
Solo Lite
Firmware Version(s)
v2.2.1.31
Crash Log
N/A – not a crash, silent behavioral issue.
Dependency Versions
- SumUp SDK: 7.1.2
- Swift: 5.1
- Xcode: 26.6 (17F113)
Video / Screenshot
N/A
Other Information
The same merchant account, currency, and card reader work as expected with tipping on Android via the Android SumUp SDK. This points to a platform-specific issue in the iOS SDK's checkout UI implementation rather than an account/dashboard/reader configuration problem.
Integration is via a Capacitor (Cordova-style) native plugin wrapper (CashregisterSumupPlugin, SumUpSDK ~> 7.1.1 via CocoaPods at time of initial investigation, reproduced on 7.1.2), calling the native SDK directly from Swift as shown above.
Summary
When performing a card reader checkout with
tipOnCardReaderIfAvailableset totrueonCheckoutRequest, the Tip on Card Reader screen does not appear during checkout, even thoughSumUpSDK.isTipOnCardReaderAvailablereturnstrueimmediately before the checkout call. No error is thrown, and the checkout otherwise proceeds normally (card reader connection, payment, success screen). The equivalent flow works correctly on Android with the same merchant account and same card reader.Immediately after "Checkout flow created" is logged, the following internal warning appears in the console:
[CircuitUI] NavigationHeaderConfiguration detected bar button items set directly via navigationItem.leftBarButtonItem(s) or navigationItem.rightBarButtonItem(s). Use NavigationHeaderConfiguration to manage all navigation bar items. Direct assignment is not supported and will be removed in a future version of CircuitUI.
This suggests the issue may originate in the SDK's internal checkout UI (built with CircuitUI) rather than in our integration code.
Steps to Reproduce
SumUpSDK.prepareForCheckout()SumUpSDK.isTipOnCardReaderAvailable→ returnstrueCheckoutRequest(total:title:currencyCode:)without settingtipAmountrequest.tipOnCardReaderIfAvailable = truerequest.skipScreenOptions = .successSumUpSDK.checkout(with:from:completion:)Expected Behavior
The Tip on Card Reader screen should be presented to the customer before the card payment step, since
isTipOnCardReaderAvailablereportedtrueandtipOnCardReaderIfAvailablewas set totrueon the request.Actual Behavior
No tip screen is shown at any point during checkout. The transaction completes successfully for the base
totalamount only, with no opportunity for the customer to add a tip.iOS Version(s)
iPadOS 26.5.2
Impacted Devices
iPad A16
Impacted Readers
Solo Lite
Firmware Version(s)
v2.2.1.31
Crash Log
N/A – not a crash, silent behavioral issue.
Dependency Versions
Video / Screenshot
N/A
Other Information
The same merchant account, currency, and card reader work as expected with tipping on Android via the Android SumUp SDK. This points to a platform-specific issue in the iOS SDK's checkout UI implementation rather than an account/dashboard/reader configuration problem.
Integration is via a Capacitor (Cordova-style) native plugin wrapper (
CashregisterSumupPlugin,SumUpSDK ~> 7.1.1via CocoaPods at time of initial investigation, reproduced on 7.1.2), calling the native SDK directly from Swift as shown above.