Mobile Payments SDK - Payment failed

I’ve tested the Square integration (Mobile Payments SDK) into our React Native app using a sandbox account. I have not encountered any issues. I’ve given the app (with a production application Id) to one of our customers. The app successfully initialises the SDK. The customer pairs the reader without any problem (the status of the reader is ‘ready’). Now when it comes to taking the payment, it fails. The error displayed in the SDK UI view is a very generic. Something along the lines: payment failed. No trace of transaction is seen in the customer’s Square account. I was hoping to see the reason why it failed but clearly it doesn’t reach that stage yet so it’s an issue on the app side. I can’t see any errors in Bugsnag.
As the customer is located far, I’m not able to do any on-site visit to see any native logs from the SDK. Is there anywhere in our Square account that I can trace any logs? I know this happened this morning at around 10:15 ET (New York).

:waving_hand: 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

https://developer.squareup.com/docs/squarebridge/business-central/payments/troubleshooting
Reader SDK
Take a Credit Card Payment

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.

Hi @marnex, you (or your customer, depending on who has access) can check the API Logs to see if those provide any insight into what’s happening. If there’s a payment error, you may find a more detailed message there. Please note that these are strictly server-side logs. If there’s a client-side error, unfortunately there’s no way to view that from the Developer Console.

Hello.
Thanks for the response. I checked those logs it straight away yesterday and there was no trace of the payment attempt.

Just to confirm — have you added an application signature (Android, iOS) for your customer’s application ID, for both platforms?

If you have and issues still persist, please let me know what your Square Application ID is, and I can see what I can find around 6/30/25 10:15 ET for that app.

Hi Josh,
Thanks for the reply. Yes, I have added the signature for iOS. The customer was testing it on an iPad.
Our Square Application ID is sq0idp-L_5kAPhRcQVfDn-kZuYZwA and the customer’s Square location (who is a Square seller with a different account) is LYE31P3P9X48V

In the Square API logs in our account, you’ll see lots of activity where our customers’ Square POS transactions synchronise with our backend. The agent is Square-DotNet-SDK/13.1.0. As I previously said, I checked those logs and couldn’t find any traces of the payment attempts via the Mobile Payments SDK.
Our backend uses OAuth to generate the customer’s Square access token and authorise their location. From the customer’s screenshot the right location (their location) was displayed in the Mobile Payments SDK View where you see the connected readers and SDK information in the app.

Thank you for your help

Hi @marnex, I took a look at your API Logs, and I believe I found the failed payment in question.

At 2025-06-30 07:15:19 GMT-7 (6/30/25, 10:15:19 ET) there was a CreatePayment request that failed with a 403 error. You can find it by searching the logs of sq0idp-L_5kAPhRcQVfDn-kZuYZwA for the idempotency_key, TJ3tadumOlAFKz0L. The error is:

{
  "errors": [
    {
      "code": "INSUFFICIENT_SCOPES",
      "detail": "Insufficient permissions to set app_fee_money",
      "field": "app_fee_money",
      "category": "AUTHENTICATION_ERROR"
    }
  ]
}

I also noticed that in the request, app_fee_money is set to 0. If you don’t intend to charge an application fee, you should omit the field entirely from your request. If you would like to use application fees, you’ll need the PAYMENTS_WRITE_ADDITIONAL_RECIPIENTS permission.

Thank you. That’s very helpful.
I’ll remove the appFee parameter and ask the customer to retest it. Will report back.

Thank you. @josh-square That was it.

1 Like