Hi all,
We have a custom OAuth application (Application ID: sq0idp-XVw9V87IGatCqc5bHlxH5g) built on the Mobile Payments SDK for Android, running on a dedicated kiosk device. Both the physical Square Reader and Tap to Pay on Android fail with the identical error: “Unable to establish a secure connection to Square.”
What we’ve already confirmed is NOT the problem:
- Network connectivity to Square’s servers is healthy (confirmed reachable).
- Bluetooth pairs and connects successfully at the protocol level (GATT service discovery, MTU negotiation, and connection all succeed in our logs) — yet Tap to Pay, which uses no Bluetooth reader at all, fails with the exact same error, so this isn’t reader/Bluetooth-specific.
- The app’s signing certificate is registered under this Application ID in the Developer Console, and we’ve verified via apksigner verify --print-certs that it exactly matches the certificate on the currently installed build.
- Location Services is enabled on the device.
- Location ID LC6D23CYBJV7G (“SPEDALIS CREWE”) is confirmed ACTIVE with CREDIT_CARD_PROCESSING capability via the Locations API.
- Our Square account already processes in-person card payments successfully today — we have a separate, currently “Connected” Square Reader (serial 612LS22311000418) working fine through Square’s own Register/Restaurants app on the same account. This confirms the account itself fully supports card-present payments; the failure appears isolated to this custom OAuth application.
- Our OAuth application requests scopes: MERCHANT_PROFILE_READ PAYMENTS_READ PAYMENTS_WRITE PAYMENTS_WRITE_IN_PERSON ORDERS_READ ORDERS_WRITE.
The device/reader affected:
- Kiosk’s Square Reader serial: 612LS22311000374
- Also fails identically via Tap to Pay on the same physical Android device.
Our question: given the account-level capability is proven working, is there a separate approval/review step required for the PAYMENTS_WRITE_IN_PERSON scope specifically for third-party/custom OAuth applications (as opposed to Square’s own first-party apps), that may not have been completed for this application? Or is there something else at the application/account level that would block secure-connection establishment for this specific app while leaving the account’s existing hardware unaffected?
Happy to provide logs, timestamps, or a screen recording of the failure on request.
Thanks,
Ishtiaq