Reverse Penny Drop
Banking & CreditVerify bank account ownership by having the person pay one rupee via UPI.
Instead of pushing money to an account, ask the person to pay a token amount from it. The transfer reveals the account number, IFSC and registered holder name, proving they control the account. Higher assurance than a penny drop, with the rupee refunded automatically.
Endpoint
Request parameters
| Field | Type | Description |
|---|---|---|
person_s_reference_for_the_payment_link
required
|
string | Person's reference for the payment link |
Example request
curl -X POST https://app.emver.io/api/sandbox/v1/reverse-penny-drop \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"person_s_reference_for_the_payment_link": "string"
}'
import requests
response = requests.post(
"https://app.emver.io/api/sandbox/v1/reverse-penny-drop",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
json={
"person_s_reference_for_the_payment_link": "string"
},
timeout=60,
)
response.raise_for_status()
data = response.json()
const response = await fetch("https://app.emver.io/api/sandbox/v1/reverse-penny-drop", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
body: JSON.stringify({
"person_s_reference_for_the_payment_link": "string"
}),
});
const data = await response.json();
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://app.emver.io/api/sandbox/v1/reverse-penny-drop', {
"person_s_reference_for_the_payment_link": "string"
});
$data = $response->json();
Replace YOUR_API_KEY and the placeholder values. Use the switch above to see production URLs.
Response
Structure · 200
{
"status": INTEGER,
"message": STRING,
"data": {
"account_number_and_i_f_s_c_as_seen_by_the_bank": STRING,
"account_holder_name": STRING,
"u_p_i_i_d_used": STRING,
"verification_status": STRING,
"refund_status": STRING
}
}
Example · 200
{
"status": 200,
"message": "string",
"data": {
"account_number_and_i_f_s_c_as_seen_by_the_bank": "string",
"account_holder_name": "string",
"u_p_i_i_d_used": "string",
"verification_status": "string",
"refund_status": "string"
}
}
Error · 4xx / 5xx
{
"status": INTEGER,
"message": STRING
}
See Errors & status codes for what each status means and which calls are billed.
About this API
A conventional penny drop confirms an account exists and whose name it carries. A reverse penny drop goes further: because the person initiates the payment from their own UPI app, you learn the account details straight from the bank and prove the person controls it.
The flow is a link or QR: the person pays one rupee, the result posts to your webhook, and the rupee is refunded.
Typical uses
- Loan disbursal account setup. Prove the borrower owns the payout account.
- Gig partner onboarding. Capture verified payout details without a form.
- Investment and broking. Link a verified bank account to a trading account.
- Insurance claims. Verified beneficiary accounts before settlement.
Questions
- Does the person need a UPI app?
- Yes. Any UPI app linked to the account they want to verify.
- What about accounts without UPI?
- Use Bank Account Verification with the account number and IFSC instead.