Penny Drop
Introduction
The Penny Drop API allows businesses to instantly verify bank account details by transferring a small amount (₹1 or more) and fetching the account holder’s name directly from the bank. This ensures that the account exists, is active, and belongs to the intended beneficiary before any large transaction is processed. By validating details upfront, it helps prevent failed payouts, reduces reconciliation efforts, and eliminates delays caused by incorrect account numbers or IFSC codes. The API is widely used in customer onboarding, vendor payouts, loan disbursements, and refunds, where accuracy and speed are critical. It not only improves customer trust and experience but also lowers operational costs and financial risks for businesses
API details
Endpoint
POST https://api.signzy.app/api/v3/bankaccountverification/pennydrop-v1POST https://api-preproduction.signzy.app/api/v3/bankaccountverification/pennydrop-v1Request headers
Name | Value | Required | Description |
|---|---|---|---|
Content-Type | application/json | Mandatory | The type of content that the request body contains. |
Authorization | XXXXXXXXXXXXXXX | Mandatory | An authentication token to authorize the request. Reach out to the Signzy support team to get one created. |
Request body parameters
Parameter | Data Type | Description | Required |
|---|---|---|---|
beneficiaryAccount | String | The account number of the beneficiary. | Mandatory |
beneficiaryIFSC | String | The IFSC code of the beneficiary's bank. | Mandatory |
beneficiaryMobile | String | The mobile number of the beneficiary. | Optional |
beneficiaryName | String | The name of the beneficiary. | Optional |
nameMatchScore | String | It's a threshold value for name matching. If the API's name match score exceeds this, it returns "yes," otherwise "no." | Optional |
nameFuzzy | String | Indicates whether a fuzzy match is performed for a name match. | Optional |
{
"beneficiaryAccount": "<Account Number>",
"beneficiaryIFSC": "<IFSC code>",
"beneficiaryMobile": "",
"beneficiaryName": "John Doe",
"nameFuzzy": "true",
"nameMatchScore": "0.9"
}Code samples
curl --location 'https://api-preproduction.signzy.app/api/v3/bankaccountverification/pennydrop-v1' \
--header 'accept: /' \
--header 'accept-language: en-US,en;q=0.8' \
--header 'authorization;' \
--header 'content-type: application/json' \
--data '{
"beneficiaryAccount": "00000020******",
"beneficiaryIFSC": "SBIN0000***",
"beneficiaryMobile": "",
"beneficiaryName": "John",
"nameFuzzy": "true",
"nameMatchScore": "0.9"
}'Response body parameters
Parameter | Data Type | Description |
|---|---|---|
result | Object | Contains the result of the API. |
result.active | String | Indicates if the bank account is active. Possible values are: yes or no. |
result.reason | String | Indicates whether the transaction was successful or not. The possible values are: success, Invalid account number or IFSC provided. |
result.nameMatch | String | Contains the result of name match. The possible values are: yes, no. |
result.mobileMatch | String | Contains the result of mobile number match. |
result.signzyReferenceId | String | Unique reference ID generated by Signzy for the transaction. |
result.auditTrail | Object | Contains the Audit trail details. |
result.auditTrail.nature | String | The nature of the audit trail. In this case, it is the Bank Reference Response Number (RRN). |
result.auditTrail.value | String | The value of the audit trail. In this case, it is the Bank Reference Response Number (RRN) for the transaction. |
result.auditTrail.timestamp | String | The timestamp for the audit trail entry. |
result.nameMatchScore | String | The match score of the beneficiary's name with the name associated with the bank account in the range 0 to 1. |
result.bankTransfer.response | String | The response from the bank for the transaction. |
result.bankTransfer.bankRRN | String | The Bank Reference Response Number (RRN) for the transaction. |
result.bankTransfer.beneName | String | The name of the beneficiary associated with the bank account. |
result.bankTransfer.beneMMID | String | The Mobile Money Identifier (MMID) of the beneficiary associated with the bank account. |
result.bankTransfer.beneMobile | String | Mobile number of the beneficiary. |
result.bankTransfer.beneIFSC | String | IFSC code of the beneficiary's bank. |
# Successful account verification and IFSC fetch
{
"result": {
"active": "XXX",
"reason": "XXX",
"nameMatch": "XXX",
"mobileMatch": "XXX",
"signzyReferenceId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"auditTrail": {
"nature": "XXX",
"value": "XXXXXXXXXXXX",
"timestamp": "XXXXXXXXXXXXXXXXX"
},
"ifscCodeData": {
"status": "XXX",
"bankName": "XXX",
"address": "XXX",
"state": "XXX",
"district": "XXX",
"branch": "XXX",
"contact": "XXX",
"ifscCode": "XXXXXXXXXX",
"micrCode": "XXXXXXXXXX"
},
"nameMatchScore": "XXX",
"bankTransfer": {
"response": "XXX",
"bankRRN": "XXXXXXXXXXXX",
"beneName": "XXX",
"beneMMID": "XXX",
"beneMobile": "XXX",
"beneIFSC": "XXXXXXXXXX"
}
}
}
# Successful account verification with failed IFSC
{
"result": {
"active": "yes",
"reason": "success",
"nameMatch": "yes",
"mobileMatch": "not available",
"signzyReferenceId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"auditTrail": {
"nature": "BANK RRN",
"value": "XXXXXXXXXXXX",
"timestamp": "2025-09-09T04:41:21.380Z"
},
"ifscCodeData": {
"status": "FAILURE",
"message": "Failure"
},
"nameMatchScore": 0.7,
"bankTransfer": {
"response": "Bank Account details verified successfully.",
"bankRRN": "XXXXXXXXXXXX",
"beneName": "XXX",
"beneMMID": "",
"beneMobile": "",
"beneIFSC": "XXXXXXXXXX"
}
}
}
# Verification Failure with success IFSC fetch failure
{
"result": {
"active": "XXX",
"reason": "XXX",
"nameMatch": "XXX",
"mobileMatch": "XXX",
"signzyReferenceId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"auditTrail": {
"nature": "XXX",
"value": "XXXXXXX",
"timestamp": "XXXXXXXXXXXXXXXXX"
},
"ifscCodeData": {
"status": "XXX",
"bankName": "XXX",
"address": "XXX",
"state": "XXX",
"district": "XXX",
"branch": "XXX",
"contact": "XXX",
"ifscCode": "XXXXXXXXXX",
"micrCode": "XXXXXXXXX"
},
"nameMatchScore": "XXX"
}
}
Contact Us for Any Assistance
If you have any questions or need assistance, please reach out to our customer support team. You can contact us via email at [email protected]. We strive to provide prompt and reliable assistance, ensuring your queries are addressed effectively.
We value your feedback and are committed to making your experience smooth and enjoyable. Our team is dedicated to assisting you with any needs you may have. Thank you for choosing our services. We look forward to helping you!