Udyam Advanced Submit OTP
Business & KYBStep 2 of Udyam Advanced - submits the OTP and returns full Udyam details including owner, PAN, contact, bank, emver and financials.
Endpoint
POST
https://app.emver.io/api/sandbox/v1/udyam-advanced-submit-otp
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: application/json
Request parameters
| Field | Type | Description |
|---|---|---|
udyam_otp_reference_id
required
|
string | Reference ID reference_id returned by Udyam Advanced (Generate OTP) |
udyam_otp_code
required
|
string | OTP |
Example request
cURL
curl -X POST https://app.emver.io/api/sandbox/v1/udyam-advanced-submit-otp \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"udyam_otp_reference_id": "string",
"udyam_otp_code": "string"
}'
import requests
response = requests.post(
"https://app.emver.io/api/sandbox/v1/udyam-advanced-submit-otp",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
json={
"udyam_otp_reference_id": "string",
"udyam_otp_code": "string"
},
timeout=60,
)
response.raise_for_status()
data = response.json()
const response = await fetch("https://app.emver.io/api/sandbox/v1/udyam-advanced-submit-otp", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
body: JSON.stringify({
"udyam_otp_reference_id": "string",
"udyam_otp_code": "string"
}),
});
const data = await response.json();
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://app.emver.io/api/sandbox/v1/udyam-advanced-submit-otp', {
"udyam_otp_reference_id": "string",
"udyam_otp_code": "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
}
Example · 200
{
"status": 200,
"message": "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
Udyam Advanced Submit OTP
Step 2 of Udyam Advanced - submits the OTP and returns full Udyam details including owner, PAN, contact, bank, emver and financials.
Endpoint
POST /api/v1/udyam-advanced-submit-otp
Content-Type: application/jsonRequest parameters
| Field | Required | Description |
|---|---|---|
udyam_otp_reference_id | Yes | Reference ID - reference_id returned by Udyam Advanced (Generate OTP). Example: Reference ID from OTP step |
udyam_otp_code | Yes | OTP. Example: 123456 |
Sample request
{
"udyam_otp_reference_id": "Reference ID from OTP step",
"udyam_otp_code": "123456"
}Sample success response
{
"status": 200,
"message": "Verification successful",
"data": {
"udyam_number": "...",
"registration_date": "...",
"enterprise_name": "...",
"enterprise_type": "...",
"major_activity": "...",
"organization_type": "...",
"social_category": "...",
"date_of_incorporation": "...",
"date_of_commencement": "...",
"gender": "...",
"dob": "...",
"district_industries_center": "...",
"msme_dfo": "...",
"official_address": "...",
"branch_details": "...",
"industry": "...",
"enterprise_type_history": "...",
"owner_name": "...",
"pan": "...",
"mobile": "...",
"email": "...",
"specially_abled": "...",
"itr_status": "...",
"itr_type": "...",
"gstin_status": "...",
"interested_in_treds": "...",
"interested_in_gem": "...",
"bank_details": "...",
"employment_details": "...",
"financials": "..."
}
}Sample error response
{
"status": 404,
"message": "No record found for the given input"
}Response status codes
The status field in the response body indicates the verification outcome.
| status | Meaning |
|---|---|
200 | Verification successful |
400 | Invalid input / verification failed |
404 | No record found |
422 | Invalid or missing input parameters |
500 | Source unavailable - retry later |