Skip to main content

Reverse Penny Drop Verification - Retrieve Bank Details API

The following document highlights the details of the Retrieve Bank Details API.

API Description

Objective

The Retrieve Bank Details API fetches the bank account details of the user. It also reflects the details of the initial penny drop transaction and its reversal.

InputOutput
The reference and verification IDs from the Initiate Payment Links APIThe details of the user's bank account and the penny drop transaction

Prerequisite

A penny drop transaction done by the user through one of the links generated by the Initiate Payment Links API.

API URL

https://ind-engine.thomas.hyperverge.co/v1/rpdGetDetails

API Endpoint

rpdGetDetails

Overview

The Retrieve Bank Details API is RESTful and uses standard HTTP verbs and status codes. The responses are in JSON format and you should upload all images and files as form-data through a POST request.

Method - POST

Authentication

You need a unique pair of application ID ( appId ) and application key ( appKey ) from HyperVerge to verify your identity for accessing the Retrieve Bank Details API.

Headers

HeaderMandatory / OptionalDescriptionInput Format
Content-typeMandatoryThis parameter defines the media type for the request payloadapplication/json
appIdMandatoryThe application identifier shared by HyperVerge. You can find the details in the dashboard's credentials tabThis should be a unique value
appKeyMandatoryThe application key shared by HyperVerge. You can find the details in the dashboard's credentials tabThis should be a unique value
transactionIdMandatoryUnique ID for the customer journeyAny defined unique value mapped to a transaction in your business ecosystem

Inputs

The following table provides the details of the parameters required for the Retrieve Bank Details API's request body:

ParameterMandatory / OptionalTypeDescriptionInput FormatDefault Value
verificationIdMandatorystringThe unique verification ID for the userNot ApplicableNot Applicable
rpdVendorConditionally optionalstringSpecifies the RPD vendor to use. This is the second step in the RPD process; use the same vendor as you did in the Initiate Payment Links API.
  • Accepted values:
    • yesBankRPD: dynamic payment recipient names
    • citiBankRPD: static/fixed recipient name for all payments
  • Optional when used for testing; Mandatory when processing verification requests outside of testing.
One of: yesBankRPD, citiBankRPDNot Applicable

Request

The following code snippet demonstrates a standard curl request for the Retrieve Bank Details API:

curl --location --request POST 'https://ind-engine.thomas.hyperverge.co/v1/rpdGetDetails' \
--header 'Content-Type: application/json' \
--header 'appId: <Enter_the_HyperVerge_appId>' \
--header 'appKey: <Enter_the_HyperVerge_appKey>' \
--header 'transactionId: <Enter_the_HyperVerge_transactionID>' \
--data '{
"verificationId": "<Enter_the_Verification_ID>",
"rpdVendor": "yesBankRPD/citiBankRPD" // use the same value as in the Initiate Payment Links API request

}'

Success Response

The following code snippet demonstrates a success response from the Retrieve Bank Details API:

{
"status": "success",
"statusCode": 200,
"result": {
"status": "Success",
"bankAccount": "<Bank_Account_Number_of_the_user>",
"ifsc": "<IFSC_Code>",
"upi": "<UPI_ID>",
"nameAtBank": "<User_Name>",
"verificationId": "<Verification_ID>",
"utr": "<Unique_Transaction_Reference>",
"addedOn": "<Date_and_time_of_payment>",
"processedOn": "<Date_and_time_when_payment_processed>",
"pennyCollectedOn": "<Date_and_time_of_penny_collection>",
"reversalStatus": "TRANSFER_SUCCESS",
"accountType": "SAVINGS"
},
"metaData": {
"requestId": "<Request_Identifier>"
}
}

Success Response Details

The following table outlines the details of the success response from the Retrieve Bank Details API:

ParameterTypeDescription
bankAccountstringThe full bank account number of the user
ifscstringThe IFSC code associated with the bank account
upistringThe UPI ID with which the payment is made
nameAtBankstringThe name of the user associated with the bank account
verificationIdstringThe unique verification ID for the user
utrstringThe unique Transaction Reference number for the payment
statusstringThe payment status of the user. It can have the values "SUCCESS" or "FAILURE".
addedOnstringThe timestamp when the payment was added
processedOnstringThe timestamp when the payment was processed
pennyCollectedOnstringThe timestamp when the Penny (₹1) was collected from the user
reversalStatusstringThe status of reversing the penny back to the user. It can have values like "TRANSFER_INITIATED" or "TRANSFER_SUCCESS".
accountTypestringThe user's bank account type

Failure Response

The following code snippet demonstrates a failure response from the Retrieve Bank Details API when the payment fails for some reason:

The following are additional failure responses from the Retrieve Bank Details API (ordered by label ascending):

{
"statusCode": 400,
"status": "failure",
"error": {
"message": "Payment failure",
"verificationId": "<Verification_ID>",
"referenceId": "<Reference_ID>",
"status": "FAILURE",
"addedOn": "<Date_and_time_of_payment>",
"processedOn": "<Date_and_time_when_payment_processed>"
},
"metaData": {
"requestId": "<Request_ID>",
"transactionId": "<Transaction_ID>"
}
}

Error Responses

The following are some error responses from the Retrieve Bank Details API:

{
"status": "failure",
"statusCode": 400,
"error": "Bad request",
"metaData": {
"requestId": "<Request_ID>",
"transactionId": "<Transaction_ID>"
}
}
{
"statusCode": 400,
"status": "failure",
"error": {
"message": "Please enter a valid verificationId"
},
"metaData": {
"requestId": "<Request_ID>",
"transactionId": "<Transaction_ID>"
}
}
{
"statusCode": 400,
"status": "failure",
"error": {
"message": "Payment link expired",
"verificationId": "<Verification_ID>",
"referenceId": "<Reference_ID>",
"status": "EXPIRED",
"addedOn": "<Date_and_time_of_payment>",
"processedOn": "<Date_and_time_when_payment_processed>"
},
"metaData": {
"requestId": "<Request_ID>",
"transactionId": "<Transaction_ID>"
}
}
{
"message": "Missing/Invalid credentials",
"statusCode": 401,
"status": "failure",
"metaData": {
"requestId": "<Request_ID>",
"transactionId": "<Transaction_ID>"
}
}

Error Response Details

A failure or error response contains a failure status with a relevant status code and error message.
The following table lists all error responses:

Status CodeError MessageError DescriptionError Resolution
400Payment failureThe payment has failed.Retry the transaction or contact the HyperVerge team for resolution
400CreatedThe transaction record already exists with status CREATED (payment link created but payment not yet completed).Wait for the user to complete the payment, or use the same verificationId/referenceId to poll for status
400Bad requestThe request is malformed or invalid.Check the request URL, headers, and body and retry
400Input Validation Error: does not meet minimum length of 1The request did not meet the minimum length requirement of 1.Ensure the input parameters meet the required validation criteria
400Input Validation Error: is not one of enum values: citiBankRPD,yesBankRPDThe rpdVendor value is not allowed. Only citiBankRPD or yesBankRPD are accepted.Set rpdVendor to either citiBankRPD or yesBankRPD (same as in the Initiate Payment Links API request)
400Invalid Partner KeyThe partner key (credentials) is invalid or not recognized.Verify your appId and appKey or contact the HyperVerge team
400Payment link expiredThe payment link associated with the provided verification ID has expired.Use the Initiate Payment Links API to generate new payment links
400verificationId already existsThe provided verification ID already exists in the system.Use a different verification ID or wait for the existing verification to expire
400Please enter a valid verificationIdThe provided verification ID is invalid.Provide a valid verification ID from the Initiate Payment Links API response
400Please provide verificationId or referenceIdThe request is missing either the verification ID or the reference ID.Include either verificationId or referenceId in the request body
400Please enter a valid referenceIdThe provided reference ID is invalid.Provide a valid reference ID from the Initiate Payment Links API response
400Missing path variableA required path variable is missing from the request.Ensure the request URL includes all required path parameters
400Missing request parameterA required request parameter is missing.Include all mandatory query or body parameters in the request
400verificationId requiredThe verificationId parameter is required but was not provided.Include verificationId in the request body (or use referenceId if supported)
400Invalid verificationId formatThe verificationId value does not match the expected format.Provide a verification ID in the correct format (from the Initiate Payment Links API response). Exclude the usage of any special characters
400Transaction in progressThe transaction is still being processed; details are not yet available.Retry the request after a short delay
400Transaction already completedThe transaction has already been completed; duplicate or repeated submission is not allowed.Use the existing result or start a new verification with a new transactionId
400Partner is inactiveThe partner integration for the supplied credentials is inactive. The RPD vendor integration may be suspended or inactive for a defined period.Contact the HyperVerge team to reactivate the partner or RPD vendor integration
400Unable to fetch upi intent status, please try again laterThe system could not retrieve the UPI intent status; the operation may be temporarily unavailable.Retry the request after a short delay or contact the HyperVerge team if it persists
401Missing/Invalid credentialsThe request is either missing the mandatory credentials or has invalid credentials.Provide valid appId and appKey credentials in the request
403Service not assignedThe service (e.g. RPD) is not assigned to the partner or credentials.Contact the HyperVerge team to get the service enabled for your credentials
403Forbidden accessAccess to the resource or operation is forbidden for the supplied credentials.Verify your permissions or contact the HyperVerge team
429Rate limit exceededYou have exceeded the configured rate limit for transactions per minute.Wait before making another request or contact the HyperVerge team to adjust rate limits
500Internal Server ErrorThere was an error with HyperVerge's server.Check the request headers or contact the HyperVerge team for resolution
503All external vendors are currently unavailable. Please try again later.External RPD or payment vendors are temporarily unavailable.Retry the request after some time or contact the HyperVerge team if the issue persists
Was this helpful?
Ask AIBeta
Hi! How can I help?
Ask me anything about HyperVerge products, APIs, and SDKs.
Try asking: