Android 1st/2nd gen reader not connecting in Android 15 or higher

I have implemented the Mobile Payments SDK in a application that is distributed through MDM not Google Play, that the SHA doesn’t change for debug or production. It’s working in devices with Android 14 or lower, but in Android 15 it cannot pair. The status is always is Connecting to Square. I tried pairing with Square POS app, and it works, I tried using my credentials in the Sample App and it doesn’t work.

I’ve tried in 2 different devices with 2 different readers.

  • Zebra ET401,. Android 15 with a 2nd Gen reader.
  • Pixel 10 Pro, Android 16 with a 1st Gen reader.

With this same APK i’m able to connect Zebra TC27 Android 13 with a 1st Gen reader

I was using the in-built settings screen to sync the devices, but i wanted to get more information, so i developed a sample screen to get more information. The error that the pairing outputs it’s USAGE_ERROR. This makes me think it’s the SHA, but i doubled check and they’re the same, i tried adding a new signature, but it only failed (maybe because of the collision).

SDK version 2.5.0
Kotlin version 2.3.0
targetSdk 35
minSdk 28
Location: sq0idp-Nfa7m3PwnXSbzAZ8spWd_A
and sq0idp-zmQWvyLTpsTozOiLf-9j1g

Error log:
Square pairing FAILED: errorCode=BOND_FAILED, debugCode=pairing_bond_failed, debugMessage=Unable to create a Bluetooth bond with the reader device.

Developer Options disabled.

Update Jun 1 4:43:00
In the ET401 Android 15, the 1st gen reader connects but the status is unavailable.

Square pairing FAILED: errorCode=UNKNOWN_ERROR, debugCode=pairing_unknown_error, debugMessage=An unknown error occurred during reader pairing

Factory reset the reader, and the result is the same.

readers updated, count=1 → [SquareReader(id=0C:EC:80:F7:6D:B0, name=Square Reader 6324, model=CONTACTLESS_AND_CHIP, state=CONNECTING, connectionType=BLUETOOTH, serialNumber=122LS14603316324, batteryPercent=null, isCharging=false, isForgettable=true, isBlinkable=false)]

16:40:35 readers updated, count=1 → [SquareReader(id=0C:EC:80:F7:6D:B0, name=Square Reader 6324, model=CONTACTLESS_AND_CHIP, state=CONNECTING_TO_SQUARE, connectionType=BLUETOOTH, serialNumber=122LS14603316324, batteryPercent=null, isCharging=false, isForgettable=true, isBlinkable=false)]

16:40:44 readers updated, count=1 → [SquareReader(id=0C:EC:80:F7:6D:B0, name=Square Reader 6324, model=CONTACTLESS_AND_CHIP, state=CONNECTING_TO_SQUARE, connectionType=BLUETOOTH, serialNumber=122LS14603316324, batteryPercent=59, isCharging=false, isForgettable=true, isBlinkable=true)]

16:40:44 readers updated, count=1 → [SquareReader(id=0C:EC:80:F7:6D:B0, name=Square Reader 6324, model=CONTACTLESS_AND_CHIP, state=UNAVAILABLE, connectionType=BLUETOOTH, serialNumber=122LS14603316324, batteryPercent=59, isCharging=false, isForgettable=true, isBlinkable=true)]

Update Jun 1 4:54:00
The Pixel connects to 1st gen reader, but status is unavailable, same as ET401.

Update.
I’m able to collect payments in the Pixel 10 Pro Android 16 with the Tap to Pay NFC capability, but not able to sync the Square reader.

Tested against Xiaomi Redmi 15C with Android 15, the pairing and payments worked. But still hasn’t worked with the Zebra ET401 device that my company uses, but it does with the Square POS, so this might be something isolated to the Mobile Payments SDK.

I forgot to add some images of what we see in the SettingsManager.

Thanks for the detailed report! We’ve identified the issue; it’s specific to the Zebra ET401 device and how it interacts with the SDK’s device verification process (not your SHA, Bluetooth, or Android 15 in general). This is why it works on the Xiaomi Redmi 15C but not the ET401, and why Square POS behaves differently.

We’ve recently applied a fix for the ET401. Can you please forget the reader and retry pairing? Let us know if it resolves the issue.