Check Payment Status

It is mandatory for the merchant to check the status of a transaction.

  • The cashier should select the “check the transaction status” button which should call the terminal’s server. Terminal’s server should call PhonePe server with this API to know the status.
  • Add a message in the POS asking the cashier to click the Check Status button only after customer tells the cashier that he has made the payment.
  • The payment status can be Success, Failed or Pending.
  • When Pending, There should be a message POS “Payment is in progress, please check the status after sometime.” (ideally, Collect expiry time – current time taken). “
  • For eg. let’s assume the expiry time passed in collect request is 180 sec. Status is checked after 60 sec and payment is in pending state, the time to wait will 120 sec maximum since payment will be closed within 180 sec.

<html-block html=”

Request Headers

“>

Header NameHeader Value
Content-Typeapplication/json
X-VERIFYSHA256(“/v3/transaction/{merchantId}/{transactionId}/status” +
saltKey) + “###” + saltIndex

<html-block html=”

Path Parameters

“>

Parameter NameTypeDescriptionMandatory
merchantIdSTRINGUnique Merchant ID assigned to the merchant by PhonePeYes
transactionIdSTRINGMerchant transactionID for which status is to be fetchedYes

<html-block html=”

Response Parameters

“>

Parameter NameTypeDescription
successBOOLEANA boolean to indicate the success/failure of the request.
codeENUMPlease see the list of Transaction Status Response Codes below. You should base your decision on this parameter.
messageSTRINGShort message about status of transaction
transactionId
STRINGUnique Transaction ID generated by the merchant to track this request to PhonePe
merchantIdSTRINGUnique Merchant ID assigned to the merchant by PhonePe
amountLONGTransaction amount in paise
providerReferenceIdSTRINGPhonePe transaction Id
paymentStateENUMTransaction Status, Refer below section for list of states
payResponseCodeSTRINGPhonePe internal status code. Please note this is a string value and new codes are likely to be added in the future. (Please don’t do the marshalling/unmarshalling into an enum for this at your side). This is an informative value.

<html-block html=”

Transaction Status Response Codes

“>

CodeDescription
TRANSACTION_NOT_FOUNDPayment not initiated inside PhonePe
BAD_REQUESTInvalid request
AUTHORIZATION_FAILEDX-VERIFY header is incorrect
INTERNAL_SERVER_ERRORSomething went wrong
PAYMENT_SUCCESSPayment is successful
PAYMENT_ERRORPayment failed
PAYMENT_PENDINGPayment is pending. It does not indicate failed payment.
PAYMENT_CANCELLEDPayment cancelled by merchant
PAYMENT_DECLINEDPayment declined by user

Cross-check the amount which has been passed in forward payment path(Accept payment API) and in the response of Check Transaction Status API.

{“method”:”get”,”url”:”/v3/transaction/{merchantId}/{transactionId}/status”,”auth”:”never”,”results”:{“codes”:[{“status”:200,”language”:”json”,”code”:”{\n \”success\”: true,\n \”code\”: \”PAYMENT_SUCCESS\”,\n \”message\”: \”Your payment is successful.\”,\n \”data\”: {\n \”transactionId\”: \”TX123456789\”,\n \”merchantId\”: \”U123456789\”,\n \”amount\”: 100,\n \”providerReferenceId\”: \”PPXXXXXX\”,\n \”paymentState\”: \”COMPLETED\”,\n \”payResponseCode\”: \”SUCCESS\”\n }\n }”,”name”:”Success Response”},{“status”:200,”language”:”json”,”code”:”{\n \”success\”: false,\n \”code\”: \”TRANSACTION_NOT_FOUND\”,\n \”message\”: \”No Transaction found with the given details.\”,\n \”data\”: {}\n}”,”name”:”Error Response”}]},”examples”:{“codes”:[]},”apiSetting”:”5ecf9143b5bd210023b3b738″,”params”:[{“name”:”merchantId”,”type”:”string”,”enumValues”:””,”default”:”M2306160483220675579140″,”desc”:”Unique Merchant ID assigned to the merchant by PhonePe”,”required”:false,”in”:”path”,”ref”:””,”_id”:”5a16aa3038e7e00012818373″},{“name”:”transactionId”,”type”:”string”,”enumValues”:””,”default”:”1511522079″,”desc”:”Merchant transaction id for which status is to be fetched”,”required”:false,”in”:”path”,”ref”:””,”_id”:”5a16aa3038e7e00012818372″},{“name”:”Content-Type”,”type”:”string”,”enumValues”:””,”default”:”application/json”,”desc”:””,”required”:true,”in”:”header”,”ref”:””,”_id”:”5a16aa3038e7e00012818371″},{“name”:”X-VERIFY”,”type”:”string”,”enumValues”:””,”default”:”6ab24e24ae92646c82e0450f029478117d8a1a0a00390e266ea1178a0c68e419###1″,”desc”:”SHA256(\”/v3/transaction/{merchantId}/{transactionId}/status\” + saltKey) + \”###\” + saltIndex”,”required”:true,”in”:”header”,”ref”:””,”_id”:”5a16aa3038e7e00012818370″}]}
https://mercury-uat.phonepe.com