KYC
Verify PAN
Run a real-time PAN verification for a customer_use sub-account. Persists the result and recomputes the sub-accountβs aggregated KYC status.
POST
/
api
/
v1
/
sub-accounts
/
{sub_auth_id}
/
kyc
/
verify-pan
Verify PAN
curl --request POST \
--url https://api.vobiz.ai/api/v1/sub-accounts/{sub_auth_id}/kyc/verify-pan \
--header 'Content-Type: application/json' \
--header 'X-Auth-ID: <api-key>' \
--header 'X-Auth-Token: <api-key>' \
--data '
{
"pan": "ABCDE1234F"
}
'import requests
url = "https://api.vobiz.ai/api/v1/sub-accounts/{sub_auth_id}/kyc/verify-pan"
payload = { "pan": "ABCDE1234F" }
headers = {
"X-Auth-ID": "<api-key>",
"X-Auth-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Auth-ID': '<api-key>',
'X-Auth-Token': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({pan: 'ABCDE1234F'})
};
fetch('https://api.vobiz.ai/api/v1/sub-accounts/{sub_auth_id}/kyc/verify-pan', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"verification_type": "pan",
"status": "verified",
"pan": "ABCDE1234F",
"registered_name": "ACME PRIVATE LIMITED",
"name_match": true,
"kyc_calls_blocked": true
}{
"api_id": "<string>",
"error": "<string>",
"message": "<string>"
}Runs a real PAN verification for the sub-account.
pan must be exactly 10 characters. The result is persisted and the sub-accountβs aggregated KYC status is recomputed.
Authenticate with your parent main accountβs
X-Auth-ID and X-Auth-Token - the same credentials used everywhere else in the API.Testing? Use the mock endpoint with magic inputs like
TESTSUCCESS0001 instead of a real PAN.Request body
| Field | Type | Required | Description |
|---|---|---|---|
pan | string | Yes | The PAN. Must be exactly 10 characters (e.g. ABCDE1234F). |
Response example
200 OK
{
"verification_type": "pan",
"status": "verified",
"pan": "ABCDE1234F",
"registered_name": "ACME PRIVATE LIMITED",
"name_match": true,
"kyc_calls_blocked": true
}
statusisverified,failed, orpending(some providers return asynchronously).kyc_calls_blockedis the sub-accountβs recomputed gate after this step - it may still betrueif other required documents are outstanding.- A
400is returned whenpanis not exactly 10 characters.
Authorizations
Your Vobiz account Auth ID
Your Vobiz account Auth Token
Path Parameters
The sub-account's Auth ID.
Example:
"SA_XXXXXX"
Body
application/json
Required string length:
10Example:
"ABCDE1234F"
Response
Verification result
Outcome of a single KYC verification step.
Available options:
pan, gst, cin, aadhaar Available options:
verified, failed, pending Recomputed sub-account call-blocking state after this verification.
Present and true on responses from the test-mode endpoints.
Was this page helpful?
βI
Verify PAN
curl --request POST \
--url https://api.vobiz.ai/api/v1/sub-accounts/{sub_auth_id}/kyc/verify-pan \
--header 'Content-Type: application/json' \
--header 'X-Auth-ID: <api-key>' \
--header 'X-Auth-Token: <api-key>' \
--data '
{
"pan": "ABCDE1234F"
}
'import requests
url = "https://api.vobiz.ai/api/v1/sub-accounts/{sub_auth_id}/kyc/verify-pan"
payload = { "pan": "ABCDE1234F" }
headers = {
"X-Auth-ID": "<api-key>",
"X-Auth-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Auth-ID': '<api-key>',
'X-Auth-Token': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({pan: 'ABCDE1234F'})
};
fetch('https://api.vobiz.ai/api/v1/sub-accounts/{sub_auth_id}/kyc/verify-pan', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"verification_type": "pan",
"status": "verified",
"pan": "ABCDE1234F",
"registered_name": "ACME PRIVATE LIMITED",
"name_match": true,
"kyc_calls_blocked": true
}{
"api_id": "<string>",
"error": "<string>",
"message": "<string>"
}