Skip to content

[BUG] Tip on Card Reader (TCR) screen not shown despite isTipOnCardReaderAvailable == true and tipOnCardReaderIfAvailable = true and tip = nil #194

Description

@RebelRon

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

  1. Log in with a merchant account that has tipping enabled and a compatible card reader connected
  2. Call SumUpSDK.prepareForCheckout()
  3. Check SumUpSDK.isTipOnCardReaderAvailable → returns true
  4. Create a CheckoutRequest(total:title:currencyCode:) without setting tipAmount
  5. Set request.tipOnCardReaderIfAvailable = true
  6. Set request.skipScreenOptions = .success
  7. Call SumUpSDK.checkout(with:from:completion:)
  8. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions