I am facing a problem with Google pay integration(in-app payment) in android app. When I make a request to transact I am getting the error "You have exceeded the maximum transaction amount set by your bank" even though that is my first transaction. And when I try to send amount directly from Google pay it works.

This is the Google pay's in-app payment resource.

Here is code


Uri uri = new Uri.Builder()
                .scheme("upi")
                .authority("pay")
                .appendQueryParameter("pa", upiId) //receiver's upiId
                .appendQueryParameter("pn", name)  //receiver's name
                .appendQueryParameter("tn", transactionNote) // reason for transaction
                .appendQueryParameter("am", amount) // amount
                .appendQueryParameter("cu", "INR")
                .build();
// Intent to call GPay app
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
intent.setPackage(GOOGLE_PAY_PACKAGE_NAME);
startActivityForResult(intent, GOOGLE_PAY_REQUEST_CODE);

I have gone through quite a number of resources online but didn't find any solution. Any help or suggestions would be greatly helpful ?

3

There are 3 answers

1
Prince Patel On

I got the same problem when I send money from Intent Call.

I found one solution for that. if you Send money to Google pay business account (verified) then it works fine for me.

I suggest making a G-Pay business Account and Vefired by following Google Conditions. Then .appendQueryParameter("pn", name) in the name section set Your G-Pay Business UPI id. After that, it should Work Fine.

G-Pay Business Id like This -> xxxxxxxxxx@okbizaxis

I hope Your Problem solve.

Note: Sender G-Pay Normal Account is fine. But Receiver G-Pay Account Must be Business Account.

2
Striped Mittens On

Facing the same problem. Was working fine a couple of weeks earlier. Suddenly stopped working

4
Kamal Bunkar On

Yes, From 20th Oct 2020, Google pay app is showing the error "bank limit exceeded" when using intent call. The solution is simple,

    • Now google pay normal app ID can't be use for accepting payment via intent call. You need a google pay business app ID.
    • Use param "mc" and "tr" in intent call. Where "mc" stand for -"merchant code" and "tr" stand for - "transaction refer id" You can pass "mc" as blank value and "tr" can be any random value.

You can see complete details about it from here . As of now it is working perfectly for Google pay app.

Uri uri = Uri.parse("upi://pay").buildUpon()
     .appendQueryParameter("pa", upiId)  // google pay business id
     .appendQueryParameter("pn", name)
     .appendQueryParameter("mc", "")            /// 1st param - use it (it was commented on my earlier tutorial)
     //.appendQueryParameter("tid", "02125412")
     .appendQueryParameter("tr", "25584584")   /// 2nd param - use it (it was commented on my earlier tutorial)
     .appendQueryParameter("tn", note)
     .appendQueryParameter("am", amount)
     .appendQueryParameter("cu", "INR")
     //.appendQueryParameter("refUrl", "blueapp")
     .build();