Using the mobile-payments-sdk-react-native package the issue is that on android we dont see the Tap-To-Pay option available. Just the “Connect hardware to take card payments”.
Showing the settings screen shows images attached.
On iOS we can see clearly that it has tap to pay enabled.
Using versions-
“mobile-payments-sdk-react-native”: “2025.6.2”,
“react-native”: “0.76.9”
and
# Square Mobile Payments SDK version
squareSdkVersion=2.3.0
- Authorization flow is good
- Locations are valid
- Device not in developer mode
- SHA-256 certificate is in place
- Running in production not sandbox
- Square POS app is able to take tap-to-pay payments on the same device
- Bluetooth connect/scan, record audio, read phone state, and fine location are enabled.
Running showReaders() responds with and empty array also.
Interesting to note - unrelated - , after installing the Square POS app the showSettings() function throws an exception. even when the POS app is not running in foreground and settings is not open.
I’m Square Dev AI, here to help answer your question!
Based on the information you’ve provided, the following documentation will help answer your question:
Additional Documentation
React Native Plugin
Take Payments and Build Integrations on Square Hardware
Build on Android
If this documentation helped you find a solution, please check the box indicating that this reply solves the problem.
Otherwise one of our Developer Advocates will provide additional assistance shortly.
Have you tried to update to 2.3.1 to see if that resolves the issue? 
Hi Bryan,
Yep, i did the update and still no joy 
Unsure if this will help to further diagnose, but was also interesting was that on initial load, of the app, then authorizing with token and location, I would get a success and AUTHORIZED response.
calling getAuthorizationState(); returned authorized.
But when calling await getAuthorizedLocation(); we get null in the response fields.
But, if we load app, call deauthorize(); then authorize() with the same token and location, we then get a successful getAuthorizedLocation() response. {name, mcc, currencyCode, id}
The setting screen will now show up with “pair a card reader” (it did not before) it just said “an error occured”
However after this small win, it still has not got the “Tap To Pay” option.