{
"merchantId":"M2306160483220675579140", // String Mandatory
"transactionId":"TX1234", // String Mandatory
"merchantOrderId":"ORDERID", // String Optional
"merchantUserId":"TXX", // String Mandatory
"amount":100, // Integer Mandatory
"paymentSources":[ // Object Mandatory
{
"mode":"card", // String Mandatory
"cardId":"C1234", // String Mandatory
"cardIssuer":"VISA", // String Optional
"type":"DEBIT_CARD", // String Optional
"cvv":"123", // String Optional
"cardHolderName":"PhonePe User" // String Optional
},
{
"mode":"wallets", // String Mandatory
"providers":[ // String Mandatory - taking list here for multiple wallet providers
"PHONEPE"
]
}
]
}
{
"request": "eyAgCiAgICJtZXJjaGFudElkIjoiTTIzMDYxNjA0ODMyMjA2NzU1NzkxNDAiLAogICAidHJhbnNhY3Rpb25JZCI6IlRYMTIzNCIsCiAgICJtZXJjaGFudE9yZGVySWQiOiJPUkRFUklEIiwKICAgIm1lcmNoYW50VXNlcklkIjoiVFhYIiwKICAgImFtb3VudCI6MTAwLCAvL3RvdGFsIGFtb3VudAogICAicGF5bWVudFNvdXJjZXMiOlsgIAogICAgICB7ICAKICAgICAgICAgIm1vZGUiOiJjYXJkIiwKICAgICAgICAgImNhcmRJZCI6IkMxMjM0IiwKICAgICAgICAgImNhcmRJc3N1ZXIiOiJWSVNBIiwKICAgICAgICAgInR5cGUiOiJERUJJVF9DQVJEIiwKICAgICAgICAgImN2diI6IjEyMyIsCiAgICAgICAgICJjYXJkSG9sZGVyTmFtZSI6IlBob25lUGUgVXNlciIKICAgICAgfSwKICAgICAgeyAgCiAgICAgICAgICJtb2RlIjoid2FsbGV0cyIsCiAgICAgICAgICJwcm92aWRlcnMiOlsgIC8vdGFraW5nIGxpc3QgaGVyZSBmb3IgbXVsdGlwbGUgd2FsbGV0IHByb3ZpZGVycwogICAgICAgICAgICAiUEhPTkVQRSIgCiAgICAgICAgIF0KICAgICAgfQogICBdCn0="
}
If the code is PAYMENT_INITIATED, need to check status of the transaction using transaction status API.
{
"merchantId":"M2306160483220675579140", // String Mandatory
"transactionId":"TX1234", // String Mandatory
"merchantOrderId":"ORDERID", // String Optional
"merchantUserId":"M1234", // String Mandatory
"amount":100, // String Mandatory
"deviceId":"D1234",// String Optional - Collect encrypted device Id from your android app.
"paymentSources":[ // String Mandatory
{
"mode":"upi", // String Mandatory
"type":"INLINE", // String Mandatory
"accountId":"AC1234" // String Mandatory
}
]
}
{
"request": "eyAgCiAgICJtZXJjaGFudElkIjoiTTIzMDYxNjA0ODMyMjA2NzU1NzkxNDAiLAogICAidHJhbnNhY3Rpb25JZCI6IlRYMTIzNCIsCiAgICJtZXJjaGFudE9yZGVySWQiOiJPUkRFUklEIiwKICAgIm1lcmNoYW50VXNlcklkIjoiTTEyMzQiLAogICAiYW1vdW50IjoxMDAsIC8vdG90YWwgYW1vdW50CiAgICJkZXZpY2VJZCI6IkQxMjM0IiwgLy9vcHRpb25hbCwgdG8gYmUgcHJvdmlkZWQgYnkgU0RLCiAgICJwYXltZW50U291cmNlcyI6WyAgCiAgICAgIHsgIAogICAgICAgICAibW9kZSI6InVwaSIsCiAgICAgICAgICJ0eXBlIjoiSU5MSU5FIiwKICAgICAgICAgImFjY291bnRJZCI6IkFDMTIzNCIKICAgICAgfQogICBdCn0="
}
For UPI inline requests, device id is an extra parameter. User will get redirected to PhonePe using the redirect url in the response.
{
"merchantId":"M2306160483220675579140", // String Mandatory
"merchantUserId":"M2306160487", // String Mandatory
"amount":7875, // String Mandatory
"transactionId":"TX10909099992", // String Mandatory
"merchantOrderId":"TX109090923", // String Optional
"paymentSources":[ // String Mandatory
{
"mode":"upi", // String Mandatory
"type":"INTENT" // String Mandatory
}
]
}
{
"request": "eyAgCiAgICJtZXJjaGFudElkIjoiTTIzMDYxNjA0ODMyMjA2NzU1NzkxNDAiLAogICAibWVyY2hhbnRVc2VySWQiOiJNMjMwNjE2MDQ4MzIyMDY3NTU3OTE0MDgwMTYxODcxMTYyNDQ2ZjI2ZGE2ZDRiNjciLAogICAiYW1vdW50Ijo3ODc1LAogICAidHJhbnNhY3Rpb25JZCI6IlRYMTA5MDkwOTk5OTIiLAogICAibWVyY2hhbnRPcmRlcklkIjoiVFgxMDkwOTA5MjMiLAogICAicGF5bWVudFNvdXJjZXMiOlsgIAogICAgICB7ICAKICAgICAgICAgIm1vZGUiOiJ1cGkiLAogICAgICAgICAidHlwZSI6IklOVEVOVCIKICAgICAgfQogICBdCn0="
}
{
"merchantId":"M2306160483220675579140", // String Mandatory
"transactionId":"TX1234", // String Mandatory
"merchantOrderId":"ORDERID", // String Optional
"merchantUserId":"TXX", // String Mandatory
"amount":100, // String Mandatory
"paymentSources":[ // String Mandatory
{
"mode":"wallets", // String Mandatory
"providers":[ // String Mandatory - taking list here for multiple wallet providers
"PHONEPE"
]
}
]
}
{
"request": "eyAgCiAgICJtZXJjaGFudElkIjoiVEVTVE1FUkNIQU5UIiwKICAgInRyYW5zYWN0aW9uSWQiOiJUWDEyMzQiLAogICAibWVyY2hhbnRPcmRlcklkIjoiT1JERVJJRCIsCiAgICJtZXJjaGFudFVzZXJJZCI6IlRYWCIsCiAgICJhbW91bnQiOjEwMCwgLy90b3RhbCBhbW91bnQKICAgInBheW1lbnRTb3VyY2VzIjpbICAKICAgICAgeyAgCiAgICAgICAgICJtb2RlIjoid2FsbGV0cyIsCiAgICAgICAgICJwcm92aWRlcnMiOlsgIC8vdGFraW5nIGxpc3QgaGVyZSBmb3IgbXVsdGlwbGUgd2FsbGV0IHByb3ZpZGVycwogICAgICAgICAgICAiUEhPTkVQRSIgCiAgICAgICAgIF0KICAgICAgfQogICBdCn0="
}
<html-block html=”
Request Headers
“>
Header Name | Header Value |
---|---|
Content-Type | application/json |
X-VERIFY | SHA256(base64 encoded payload + “/v3/merchant/inline/pay” + salt key) + ### + salt index |
<html-block html=”
Request Parameters
“>
Parameter Name | Type | Description | Mandatory |
---|---|---|---|
merchantId | STRING | Unique MerchantID assigned to the merchant by PhonePe | Yes |
transactionId | STRING | Unique merchant transaction id (merchants do a status check etc using this id). | Yes |
merchantUserId/ userAuthToken | STRING | User Id to identify user / token generated while linking user | Yes |
amount | LONG | Transaction amount in Paise | Yes |
merchantOrderId | STRING | Merchant order id | No |
paymentSources | ARRAY | List of payment sources (explained below) | Yes |
deviceId | STRING | Flag to indicate if user is otp verified | No |
<html-block html=”
Response Codes
“>
CODE | Despcription |
---|---|
PAYMENT_INITIATED | Success scenario – will contain redirect url(in case of card/wallet) / intent url(in case of UPI) |
AUTHORIZATION_FAILED | Value of X-VERIFY is incorrect |
BAD_REQUEST | Some mandatory parameter is missing |
INTERNAL_SERVER_ERROR | Something went wrong |
INVALID_TRANSACTION_ID | If the transaction id is not unique |
PAYMENT_ERROR | If transaction fails due to reason not mentioned above, like our payment service fails or payment gateway is down |
Transaction status check API:
After user is redirected to merchant page after completing the transaction, you can get the
status of transaction using transaction status api. Please use this link for reference.
{“method”:”get”,”url”:”/v3/merchant/inline/pay”,”auth”:”required”,”apiSetting”:”5ecf9143b5bd210023b3b738″,”examples”:{“codes”:[]},”results”:{“codes”:[{“status”:200,”language”:”json”,”code”:”{ \n \”success\”:true,\n \”code\”:\”PAYMENT_INITIATED\”,\n \”data\”:{ \n \”redirectUrl\”:\”https://mercury.phonepe.com/1234\”\n }\n}”,”name”:”Sample Response(Using Card and Wallet/ Inline UPI)”},{“status”:200,”language”:”json”,”code”:”{ \n \”success\”:true,\n \”code\”:\”PAYMENT_INITIATED\”,\n \”message\”:\”Payment initiated\”,\n \”data\”:{ \n \”intentURL\”:\”upi://pay?pn=Test%20Merchant&pa=M2306160483220675579140@ybl&tid=YBL1be082ee36f\n4495a9121724c6cd6f37d&tr=P1803141240039740504065&am=78.75&mam=78.75&cu=INR&u\nrl=https://phonepe.com&mc=7299&tn=Payment%20for%20TX109090923\”,\n \”package\”:\”com.phonepe.app\”\n }\n}”,”name”:”Sample Response(Using UPI Intent- Not required for Flipkart)”},{“status”:200,”name”:”Sample response(Using Wallet)”,”language”:”text”,”code”:”{ \n \”success\”:true,\n \”code\”:\”PAYMENT_INITIATED\”,\n \”data\”:{ \n \”redirectUrl\”:\”https://mercury.phonepe.com/1234\” \n }\n}”}]},”params”:[{“name”:”request”,”type”:”string”,”enumValues”:””,”default”:””,”desc”:”base64 encoded payload”,”required”:true,”in”:”body”,”ref”:””,”_id”:”5d3acdda80ad22004ed39280″},{“name”:”Content-Type”,”type”:”string”,”enumValues”:””,”default”:”application/json”,”desc”:””,”required”:true,”in”:”header”,”ref”:””,”_id”:”5d3acdda80ad22004ed3927f”},{“name”:”X-VERIFY”,”type”:”string”,”enumValues”:””,”default”:””,”desc”:”SHA256(base64 encoded payload + \”/v3/merchant/inline/pay\” + salt key) + ### + salt index”,”required”:true,”in”:”header”,”ref”:””,”_id”:”5d3acdda80ad22004ed3927e”},{“name”:”X-REDIRECT-URL”,”type”:”string”,”enumValues”:””,”default”:””,”desc”:”Dynamic redirect URI for UI callback”,”required”:false,”in”:”header”,”ref”:””,”_id”:”5d3acdda80ad22004ed3927d”},{“name”:”X-REDIRECT-MODE”,”type”:”string”,”enumValues”:””,”default”:””,”desc”:”HTTP mode to be used for UI callback. Default Values are REDIRECT/POST.”,”required”:false,”in”:”header”,”ref”:””,”_id”:”5d3acdda80ad22004ed3927c”},{“name”:”X-CALLBACK-URL”,”type”:”string”,”enumValues”:””,”default”:”https://www.demoMerchant.com/callback”,”desc”:”Dynamic callback URI for server to server callback”,”required”:false,”in”:”header”,”ref”:””,”_id”:”5d3acdda80ad22004ed3927b”},{“name”:”X-CALL-MODE”,”type”:”string”,”enumValues”:””,”default”:””,”desc”:”HTTP mode to be used for server to server callback. Default Values are POST/PUT”,”required”:false,”in”:”header”,”ref”:””,”_id”:”5d3acdda80ad22004ed3927a”}]}
https://mercury-uat.phonepe.com