Skip to main content

Vendor Validation API

The following document outlines the details of the Vendor Validation API.

API Description

Objective

The Vendor Validation API streamlines Know Your Business (KYB) checks by combining five critical verification services into a single request.

InputOutput
PAN, name on card, date of birth, Udyam reference number, IFSC, account number, and GSTINComprehensive verification results including PAN verification, Section 206AB compliance, Udyam Aadhaar verification, bank account validation, and GSTIN details. The complete list of output fields is available in the Success Response Details section
Vendor Validation API

The Vendor Validation API combines multiple verification services to provide a comprehensive KYB solution. This includes PAN verification through NSDL, Section 206AB compliance checks, Udyam Aadhaar verification, bank account validation via penny drop, and GSTIN verification - all in a single API call.

API URL

https://ind-engine.thomas.hyperverge.co/v1/async/vendorValidation

API Endpoint

vendorValidation

Overview

The Vendor Validation API is RESTful and uses standard HTTP verbs and status codes. The responses are in JSON format and you should send all data in JSON format through a POST request.

Authentication

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

Verification Services

The API automatically triggers the following verification services based on the provided parameters:

ServiceTriggered WhenFunction
PAN Verification (NSDL)pan, nameOnCard, dateOfBirth providedValidates PAN against NSDL records and matches name/DOB
Section 206AB Compliancepan providedChecks if PAN falls under higher TDS category for non-filing
Udyam Aadhaar VerificationudyamReferenceNumber providedAuthenticates Udyam number and retrieves business details
Bank Account VerificationaccountNumber, ifsc providedValidates account ownership via ₹1 penny drop transaction
GSTIN Verificationgstin providedRetrieves complete GST registration and compliance details

API Request Details

Method - POST

Headers

ParameterMandatory or OptionalDescriptionValid Values
content-typeMandatoryThis parameter defines the media type for the request payloadapplication/json
appIdMandatoryThe application ID shared by HyperVergeNot Applicable - this is a unique value
appKeyMandatoryThe application key shared by HyperVergeNot Applicable - this is a unique value
transactionidMandatoryThe unique transaction ID for the user journeyNot Applicable - this is a unique value

Input

The following table provides the details of the parameters required for the Vendor Validation API's request body:

ParameterMandatory or OptionalDescriptionAllowed ValuesDefault Value
panOptionalThe ten-digit alphanumeric PAN identifierFormat: 'CCCCCDDDDC'
'C' represents a character and 'D' represents a digit
Not Applicable
nameOnCardOptionalThe name as reflected in PANNot ApplicableNot Applicable
dateOfBirthOptionalThe date of birth as reflected in PANNot ApplicableNot Applicable
udyamReferenceNumberOptionalThe Udyam Number of the organisationNot ApplicableNot Applicable
ifscOptionalThe IFSC of the account's branchNot ApplicableNot Applicable
accountNumberOptionalThe account number associated with the bank accountNot ApplicableNot Applicable
gstinOptionalThe GSTIN NumberNot ApplicableNot Applicable

Asynchronous API Workflow with Webhook Notification

This API follows an asynchronous processing model. When you initiate a request, the response only indicates that the request was received and is being processed. The final result is delivered via a webhook once processing is complete.

Three-Step Process Overview

The Vendor Validation API operates through a three-step asynchronous workflow that combines multiple validation services:

  1. Step 1: Initiate Request - Submit your vendor validation request to the API endpoint

    • Send a POST request with vendor details (PAN, name, DOB, Udyam number, IFSC, account number, GSTIN)
    • Receive an immediate response with actionStatus: REQUEST_PROCESSING
    • The response includes a requestId and transactionId for tracking the request
    • This confirms your request was received and is being processed asynchronously
  2. Step 2: Backend Processing & Webhook Notification - The system processes your request through multiple validation APIs

    • The Vendor Validation API internally combines five different validation services
    • Once all validations complete successfully, a webhook is automatically triggered
    • You receive a webhook notification indicating processing is complete
    • The webhook payload contains the requestId needed for retrieving final results
  3. Step 3: Fetch Results - Retrieve the combined validation results

    • Use the requestId received from the webhook notification
    • Make a request to the Fetcher API endpoint with the requestId
    • Receive a success response containing combined results
    • Results include comprehensive vendor validation data and risk assessment from all integrated services

Step 1: Initiate Request To API

The following code snippet demonstrates a standard curl request for the Vendor Validation API:

curl --location --request POST 'https://ind-engine.thomas.hyperverge.co/v1/async/vendorValidation' \
--header 'Content-Type: application/json' \
--header 'appId: <Enter_the_HyperVerge_appId>' \
--header 'appKey: <Enter_the_HyperVerge_appKey>' \
--header 'transactionid: <Enter_the_HyperVerge_transactionID>' \
--data '{
"pan": "<Enter_the_PAN>",
"nameOnCard": "<Enter_the_name_on_card>",
"dateOfBirth": "<Enter_the_date_of_birth>",
"udyamReferenceNumber": "<Enter_the_udyam_reference_number>",
"ifsc": "<Enter_the_IFSC>",
"accountNumber": "<Enter_the_account_number>",
"gstin": "<Enter_the_GSTIN>"
}'

Response:

{
"status": "success",
"statusCode": 200,
"metadata": {
"transactionId": "<Transaction_ID>",
"requestId": "<Request_ID>"
},
"result": {
"actionStatus": "REQUEST_PROCESSING"
}
}

Step 2: Webhook Configuration

curl --location 'https://ind-thomas.hyperverge.co/v1/configWebhook' \
--header 'Content-Type: application/json' \
--header 'appId: <Enter_the_HyperVerge_appId>' \
--header 'appKey: <Enter_the_HyperVerge_appKey>' \
--header 'transactionid: <Enter_the_HyperVerge_transactionID>' \
--data '{
"webhookUrl": "<Enter_the_webhook_URL>",
"events": [
"VENDOR_VALIDATION_STATUS"
]
}'

Webhook Response:

{
"status": "success",
"statusCode": 200,
"result": {
"message": "Final response is ready to fetch",
"requestId": "<Request_ID>"
}
}

Step 3: Request To Fetcher API

After receiving the final result from the webhook, you'll need to include the requestId—obtained from either the initial API response or the webhook notification—in your request to fetch the complete results.

curl --location 'https://ind-engine.thomas.hyperverge.co/v1/async/vendorValidation?requestId=<Request_ID>' \
--header 'appId: <Enter_the_HyperVerge_appId>' \
--header 'appKey: <Enter_the_HyperVerge_appKey>' \
--header 'transactionId: <Enter_the_HyperVerge_transactionID>' \
--header 'content-type: application/json'

Success Response

The following code snippet demonstrates a success response from the Vendor Validation API:

{
"status": "success",
"statusCode": 200,
"result": {
"apiStatusCode": 200,
"apiOutput": {
"status": "success",
"statusCode": 200,
"result": {
"nsdlPanVerificationResult": {
"status": "success",
"statusCode": 200,
"result": {
"pan": "<PAN_Number>",
"panStatus": "<PAN_Status>",
"name": "<Name_Match_Status>",
"dateOfBirth": "<DOB_Match_Status>"
},
"metaData": {
"requestId": "<Request_ID>"
}
},
"Section206ABPANCheckResult": {
"status": "success",
"statusCode": "200",
"result": {
"data": {
"pan": "<PAN_Number>",
"name": "<Name>",
"pan_status": "<PAN_Status>",
"panAllotmentDate": "<Allotment_Date>",
"financialYear": "<Financial_Year>",
"specifiedPersonForHighRate": "<High_Rate_Status>"
},
"timestamp": "<Timestamp>"
}
},
"udyamAadhaarVerificationResult": {
"status": "success",
"statusCode": 200,
"result": {
"message": "<Message>",
"address": {
"door_no": "<Door_Number>",
"building": "<Building>",
"area": "<Area>",
"block": "<Block>",
"street": "<Street>",
"city": "<City>",
"district": "<District>",
"state": "<State>",
"pincode": "<Pincode>"
},
"documentId": "<Document_ID>",
"majorActivity": "<Major_Activity>",
"enterpriseType": "<Enterprise_Type>",
"yearOfClassification": "<Year_Of_Classification>",
"dateOfClassification": "<Date_Of_Classification>",
"organizationType": "<Organization_Type>",
"name": "<Organization_Name>",
"mobile": "<Mobile_Number>",
"email": "<Email_Address>",
"dateOfIncorporation": "<Incorporation_Date>",
"dateOfCommencement": "<Commencement_Date>",
"dateOfUdyamRegistration": "<Registration_Date>",
"districtIndustrialCentre": "<District_Industrial_Centre>",
"msmeDistrictIndustrialCentre": "<MSME_District_Industrial_Centre>",
"socialCategory": "<Social_Category>",
"nicData": {
"nic_2_digit": "<NIC_2_Digit>",
"nic_4_digit": "<NIC_4_Digit>",
"nic_5_digit": "<NIC_5_Digit>"
},
"enterpriseUnits": [
{
"name": "<Unit_Name>",
"address": {
"door_no": "<Door_Number>",
"building": "<Building>",
"area": "<Area>",
"block": "<Block>",
"street": "<Street>",
"city": "<City>",
"district": "<District>",
"state": "<State>",
"pincode": "<Pincode>"
}
}
]
},
"metaData": {
"requestId": "<Request_ID>"
}
},
"checkBankAccountResult": {
"status": "success",
"statusCode": "200",
"result": {
"bankResponse": "<Bank_Response>",
"ifsc": "<IFSC_Code>",
"accountNumber": "<Account_Number>",
"accountName": "<Account_Name>",
"bankTxnStatus": "<Transaction_Status>"
}
},
"GSTINDetailsRetrievalResult": {
"status": "success",
"statusCode": 200,
"result": {
"basicDetails": {
"gstin": "<GSTIN>",
"ekycFlag": "<EKYC_Flag>",
"compositionRate": "<Composition_Rate>",
"percentTaxInCash": "<Tax_Percentage>",
"aggreTurnOverFY": "<Aggregate_Turnover_FY>",
"registrationType": "<Registration_Type>",
"aggreTurnOver": "<Aggregate_Turnover>",
"businessNature": ["<Business_Nature>"],
"registrationDate": "<Registration_Date>",
"registrationStatus": "<Registration_Status>",
"percentTaxInCashFY": "<Tax_Percentage_FY>",
"memberDetails": ["<Member_Details>"],
"natureOfCoreBusinessActivity": "<Core_Business_Activity>",
"aadhaarVerified": "<Aadhaar_Verification_Status>",
"legalBusinessName": "<Legal_Business_Name>",
"constitutionOfBusiness": "<Business_Constitution>",
"tradeName": "<Trade_Name>",
"centralJurisdiction": "<Central_Jurisdiction>",
"isEInvoiceMandated": "<EInvoice_Mandated>",
"stateJurisdiction": "<State_Jurisdiction>",
"cancellationDate": "<Cancellation_Date>",
"isEInvoiceOpted": "<EInvoice_Opted>"
},
"hsnDetails": {
"goods": [
{
"hsnCode": "<HSN_Code>",
"hsnDescription": "<HSN_Description>"
}
],
"services": [
{
"hsnCode": "<HSN_Code>",
"hsnDescription": "<HSN_Description>"
}
]
},
"branchDetails": {
"message": "<Message>",
"principalAddress": {
"address": "<Principal_Address>",
"natureOfBusiness": "<Nature_Of_Business>"
},
"additionalAddresses": [
{
"address": "<Additional_Address>",
"natureOfBusiness": "<Nature_Of_Business>"
}
]
},
"filingDetails": {
"filingStatus": [
[
{
"finYear": "<Financial_Year>",
"returnType": "<Return_Type>",
"returnPeriod": "<Return_Period>",
"modeOfFiling": "<Filing_Mode>",
"dateOfFiling": "<Filing_Date>"
}
]
]
},
"allFiling": [],
"liabilityPaidDetails": {
"currFinYear": "<Current_Financial_Year>",
"prevFinYear": "<Previous_Financial_Year>",
"prevTotalPct": "<Previous_Total_Percentage>",
"currDetails": [
{
"period": "<Period>",
"liabPaidPct": "<Liability_Paid_Percentage>"
}
],
"prevDetails": [
{
"period": "<Period>",
"liabPaidPct": "<Liability_Paid_Percentage>"
}
]
},
"turnOver": null
},
"metaData": {
"requestId": "<Request_ID>",
"transactionId": "<Transaction_ID>"
}
}
},
"metadata": {
"requestId": "<Request_ID>",
"transactionId": "<Transaction_ID>"
}
}
}
}

Success Response Details

The following table outlines the details of the success response from the Vendor Validation API:

ParameterTypeDescription
statusstringThe status of the request
statusCodenumberThe HTTP status code of the response
result.apiStatusCodenumberThe API status code for the vendor validation process
result.apiOutput.statusstringThe status of the API output
result.apiOutput.statusCodenumberThe status code of the API output
result.apiOutput.result.nsdlPanVerificationResult.statusstringThe status of the NSDL PAN verification
result.apiOutput.result.nsdlPanVerificationResult.statusCodenumberThe status code of the NSDL PAN verification
result.apiOutput.result.nsdlPanVerificationResult.result.panstringThe permanent account number identifier
result.apiOutput.result.nsdlPanVerificationResult.result.panStatusstringThe validity status of the PAN in the ITD database
result.apiOutput.result.nsdlPanVerificationResult.result.namestringThe status indicating whether the provided name matches PAN records
result.apiOutput.result.nsdlPanVerificationResult.result.dateOfBirthstringThe status indicating whether the provided date of birth matches PAN records
result.apiOutput.result.Section206ABPANCheckResult.statusstringThe status of the Section 206AB PAN check
result.apiOutput.result.Section206ABPANCheckResult.statusCodestringThe status code of the Section 206AB PAN check
result.apiOutput.result.Section206ABPANCheckResult.result.data.panstringThe permanent account number
result.apiOutput.result.Section206ABPANCheckResult.result.data.namestringThe name associated with the PAN
result.apiOutput.result.Section206ABPANCheckResult.result.data.pan_statusstringThe PAN status for TDS applicability under Section 206AB
result.apiOutput.result.Section206ABPANCheckResult.result.data.panAllotmentDatenumberThe allotment date of the PAN
result.apiOutput.result.Section206ABPANCheckResult.result.data.financialYearstringThe financial year for the Section 206AB check
result.apiOutput.result.Section206ABPANCheckResult.result.data.specifiedPersonForHighRatestringThe Section 206AB higher TDS category applicability
result.apiOutput.result.udyamAadhaarVerificationResult.statusstringThe status of the Udyam Aadhaar verification
result.apiOutput.result.udyamAadhaarVerificationResult.statusCodenumberThe status code of the Udyam Aadhaar verification
result.apiOutput.result.udyamAadhaarVerificationResult.result.messagestringThe message confirming if the Udyam enterprise exists
result.apiOutput.result.udyamAadhaarVerificationResult.result.addressobjectThe registered address of the organisation
result.apiOutput.result.udyamAadhaarVerificationResult.result.documentIdstringThe Udyam Aadhaar number
result.apiOutput.result.udyamAadhaarVerificationResult.result.majorActivitystringThe primary business activity
result.apiOutput.result.udyamAadhaarVerificationResult.result.enterpriseTypestringThe MSME classification
result.apiOutput.result.udyamAadhaarVerificationResult.result.yearOfClassificationstringThe financial year for MSME classification
result.apiOutput.result.udyamAadhaarVerificationResult.result.dateOfClassificationstringThe date MSME classification was assigned
result.apiOutput.result.udyamAadhaarVerificationResult.result.organizationTypestringThe legal structure of the organisation
result.apiOutput.result.udyamAadhaarVerificationResult.result.namestringThe name of the organisation
result.apiOutput.result.udyamAadhaarVerificationResult.result.mobilestringThe registered mobile number
result.apiOutput.result.udyamAadhaarVerificationResult.result.emailstringThe registered email ID
result.apiOutput.result.udyamAadhaarVerificationResult.result.dateOfIncorporationstringThe organisation's incorporation date
result.apiOutput.result.udyamAadhaarVerificationResult.result.dateOfCommencementstringThe business commencement date
result.apiOutput.result.udyamAadhaarVerificationResult.result.dateOfUdyamRegistrationstringThe Udyam Aadhaar registration date
result.apiOutput.result.udyamAadhaarVerificationResult.result.districtIndustrialCentrestringThe district industrial centre name
result.apiOutput.result.udyamAadhaarVerificationResult.result.msmeDistrictIndustrialCentrestringThe MSME district industrial centre name
result.apiOutput.result.udyamAadhaarVerificationResult.result.socialCategorystringThe social category of the owner
result.apiOutput.result.udyamAadhaarVerificationResult.result.nicDataobjectThe national industrial classification codes
result.apiOutput.result.udyamAadhaarVerificationResult.result.enterpriseUnitsarrayThe name and address of enterprise units
result.apiOutput.result.checkBankAccountResult.statusstringThe status of the bank account verification
result.apiOutput.result.checkBankAccountResult.statusCodestringThe status code of the bank account verification
result.apiOutput.result.checkBankAccountResult.result.bankResponsestringThe bank verification result
result.apiOutput.result.checkBankAccountResult.result.ifscstringThe bank branch identifier
result.apiOutput.result.checkBankAccountResult.result.accountNumberstringThe account number provided
result.apiOutput.result.checkBankAccountResult.result.accountNamestringThe name on the bank account
result.apiOutput.result.checkBankAccountResult.result.bankTxnStatusbooleanThe transaction success status
result.apiOutput.result.GSTINDetailsRetrievalResult.statusstringThe status of the GSTIN details retrieval
result.apiOutput.result.GSTINDetailsRetrievalResult.statusCodenumberThe status code of the GSTIN details retrieval
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.gstinstringThe goods and services tax identification number
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.ekycFlagstringThe flag indicating if eKYC was performed
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.compositionRatestringThe simplified composition tax rate
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.percentTaxInCashstringThe percentage of tax paid in cash
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.aggreTurnOverFYstringThe aggregate turnover for the financial year
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.registrationTypestringThe type of GST registration
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.aggreTurnOverstringThe aggregate turnover details
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.businessNaturearrayThe nature of business activities
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.registrationDatestringThe GST registration date
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.registrationStatusstringThe GST registration status
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.percentTaxInCashFYstringThe cash tax paid for the financial year
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.memberDetailsarrayThe names of director members associated with GSTIN
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.natureOfCoreBusinessActivitystringThe primary business domain
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.aadhaarVerifiedstringThe Aadhaar verification status
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.legalBusinessNamestringThe legal name as per GSTIN
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.constitutionOfBusinessstringThe type of business constitution
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.tradeNamestringThe trade name of the business
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.centralJurisdictionstringThe central government tax jurisdiction
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.isEInvoiceMandatedstringThe flag indicating whether e-Invoicing is mandated
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.stateJurisdictionstringThe state government tax jurisdiction
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.cancellationDatestringThe GSTIN cancellation date if applicable
result.apiOutput.result.GSTINDetailsRetrievalResult.result.basicDetails.isEInvoiceOptedstringThe flag indicating whether e-Invoicing is opted
result.apiOutput.result.GSTINDetailsRetrievalResult.result.hsnDetailsobjectThe harmonized system of nomenclature codes
result.apiOutput.result.GSTINDetailsRetrievalResult.result.branchDetailsobjectThe list of branches with address and nature of business
result.apiOutput.result.GSTINDetailsRetrievalResult.result.filingDetailsobjectThe tax return filing status and history
result.apiOutput.result.GSTINDetailsRetrievalResult.result.liabilityPaidDetailsobjectThe details of paid tax liabilities
metadata.requestIdstringThe unique request identifier
metadata.transactionIdstringThe transaction identifier

Error Responses

The following are some error responses from the Vendor Validation API:

{
"status": "failure",
"statusCode": 400,
"error": "Invalid parameters provided",
"metadata": {
"requestId": "<Request_ID>",
"transactionId": "<Transaction_ID>"
}
}
{
"status": "failure",
"statusCode": 500,
"error": "Internal Server Error"
}

Error Response Details

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

Status CodeError MessageError Description
400Invalid parameters providedThis error occurs when invalid parameters are provided in the request
401Missing/Invalid credentialsThe request is either missing the mandatory appId and appKey combination or has invalid values
404Record Not FoundThis error occurs when the provided parameters do not match any records in the database
500Internal Server ErrorPlease contact HyperVerge for investigation
503External source downtimeThis error occurs when the external source is down
Was this helpful?
Ask AIBeta
Hi! How can I help?
Ask me anything about HyperVerge products, APIs, and SDKs.
Try asking: