Skip to main content

Reverse Penny Drop Verification - Initiate Payment Links API

The following document highlights the details of the Initiate Payment Links API.

API Description

Objective

The Initiate Payment Links API generates multiple Unified Payments Interface(UPI) links for the penny drop transaction.

InputOutput
[Optional] The name of the userMultiple UPI payment links (or a QR code) to initiate a penny drop transaction by the user. The complete list of output fields is provided under the Success Response Details section.

Next Step

Retrieve the bank account information of the user and the transaction status through the Retrieve Bank Details API.

API URL

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

API Endpoint

reversePennyDrop

Overview

The Initiate Payment Links 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 Initiate Payment Links 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 Initiate Payment Links API's request body:

ParameterMandatory / OptionalTypeDescriptionInput FormatDefault Value
nameOptionalstringThe name of the user. This value can assist in an additional name match verification against the account owner's name retrieved from the Retrieve Bank Details APINot ApplicableNot Applicable
rpdVendorConditionally optionalstringSpecifies the RPD vendor to use.
  • 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 Initiate Payment Links API:

curl --location --request POST 'https://ind-engine.thomas.hyperverge.co/v1/reversePennyDrop' \
--header 'appid: <Enter_the_appId-Shared-by-HyperVerge>' \
--header 'appkey: <Enter_the_appKey-shared-by-HyperVerge>' \
--header 'transactionId : <Enter_the_Transaction_ID>' \
--header 'Content-Type: application/json' \
--data '{
"name": "<Enter_the_name>",
"rpdVendor": "yesBankRPD/citiBankRPD" // either of the two values, as per your requirement
}'

Success Response

The following code snippet demonstrates a success response from the Initiate Payment Links API:

{
"status": "success",
"statusCode": 200,
"result": {
"verificationId": "<VERIFICATION_ID>",
"upiLink": "<UPI_LINK>",
"gpay": "<GPAY_URL>",
"bhim": "<BHIM_URL>",
"paytm": "<PAYTM_URL>",
"phonePe": "<PHONEPE_URL>",
"cred": "<CRED_URL>",
"amazonPay": "<AMAZON_URL>",
"mobiKwik": "<MOBIKWIK_URL>",
"qrCode": "<BASE64_ENCODED_QR_CODE>"
},
"metadata": {
"requestId": "<REQUEST_ID>",
"transactionId": "<Transaction_ID>"
}
}

Success Response Details

The following table outlines the details of the success response from the Initiate Payment Links API:

ParameterTypeDescription
statusstringThe status of the request (e.g. success)
statusCodeintegerThe HTTP status code returned for the request (e.g. 200)
resultobjectContains the verification ID, UPI link, app-specific payment links (gpay, bhim, paytm, phonePe, cred, amazonPay, mobiKwik), and the base64-encoded QR code
result.verificationIdstringUnique identifier for this verification. Use this value when calling the Retrieve Bank Details API to fetch bank account and transaction status
result.upiLinkstringThe intent link* that enables users to select their preferred UPI application on their mobile device to complete the transaction
result.gpaystringThe intent link* that redirects users to the Google Pay application to complete the transaction
result.bhimstringThe intent link* that redirects users to the BHIM application to complete the transaction
result.paytmstringThe intent link* that redirects users to the Paytm application to complete the transaction
result.phonePestringThe intent link* that redirects users to the PhonePe application to complete the transaction
result.credstringThe intent link* that redirects users to the CRED application to complete the transaction
result.amazonPaystringThe intent link* that redirects users to the Amazon Pay application to complete the transaction
result.mobiKwikstringThe intent link* that redirects users to the MobiKwik application to complete the transaction
result.qrCodestringBase64-encoded representation of the QR code for the result.upiLink; can be displayed for scan-to-pay
metadataobjectContains request and transaction identifiers for tracing and support
metadata.requestIdstringUnique identifier for the request; use when contacting support or for debugging
metadata.transactionIdstringUnique ID for the customer journey; echoes the transactionId sent in the request headers
Info

*Intent link: A link that directs you to start an activity in another application. It enables seamless navigation and interaction across the applications.

Failure Responses

The following code snippets demonstrate a failure response from the Initiate Payment Links API:

{
"statusCode": 400,
"status": "failure",
"error": "verificationId already exists",
"metaData": {
"requestId": "<Request_ID>",
"transactionId": "<Transaction_ID>"
}
}

Error Responses

The following are some error responses from the Initiate Payment Links API:

{
"message": "Input Validation Error: does not meet minimum length of 1",
"statusCode": 400,
"status": "failure",
"metaData": {
"requestId": "<Request_ID>",
"transactionId": "<Transaction_ID>"
}
}
{
"statusCode": 400,
"status": "failure",
"error": "Validation error",
"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
400verificationId already existsThe provided verification ID already exists in the systemUse a different verification ID or wait for the existing verification to expire
400Payment Link Already CreatedThe API has already created the payment links for the appId, appKey and transactionId combination.Use a different transactionId or retrieve the existing payment links
400Input Validation Error: does not meet minimum length of 1The request did not meet the minimum length requirement of 1Ensure the input parameters meet the required validation criteria
400Validation errorThe request body or parameters failed validationCheck the request payload and ensure all required fields are present and valid
400Partner is inactiveThe partner integration for the supplied credentials is inactive. The RPD vendor integration (e.g. Yes Bank) may be suspended or inactive for a defined period.Contact the HyperVerge team to reactivate the partner or RPD vendor integration
400Invalid Seller IdentifierThe seller identifier provided is invalid or not recognizedVerify your credentials (appId/appKey) or contact the HyperVerge Integration team
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
401Missing/Invalid credentialsThe request is either missing the mandatory credentials or has invalid credentials.Provide valid appId and appKey credentials in the request
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 serverPlease check the request headers or contact the HyperVerge team for resolution
Was this helpful?
Ask AIBeta
Hi! How can I help?
Ask me anything about HyperVerge products, APIs, and SDKs.
Try asking: