Feel free to reach techsupport@surepass.io for any technical support or guidance.
client_id (which ties the submission to the original OTP request) along with the otp entered by the user, this API triggers the asynchronous verification of the submitted code against the Udyam registration. The response returns a pending status, indicating the verification is being processed asynchronously. The final verification result is delivered either via the configured webhook or by polling the Submit OTP Status endpoint.client_id ties the OTP submission to the original dispatch session, eliminating the need to re-transmit sensitive details such as the registration number or mobile number.Authorization header as Bearer TOKEN.https://sandbox.surepass.apphttps://kyc-api.surepass.app| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer token for authentication. Format: Bearer <JWT_TOKEN> |
Content-Type | Yes | Must be set to application/json |
| Parameter | Type | Required | Description |
|---|---|---|---|
client_id | String | Yes | The unique client identifier returned by the Udyam OTP Async Send OTP API. Links this OTP submission to the original dispatch session. |
otp | String | Yes | The OTP entered by the user, as received on their registered mobile number or email address. |
{
"client_id": "udyam_otp_async_SBsIvDUxXlwhskcsAjlF",
"otp": "305158"
}| Parameter | Type | Description |
|---|---|---|
data | Object | Contains the result payload of the OTP submission request |
data.client_id | String | The unique client identifier corresponding to the original OTP request session |
data.status | String | The current processing status of the OTP submission. Returns pending when the submission has been accepted and verification is being processed asynchronously, not_started if OTP is not sent |
status_code | Integer | HTTP status code of the response (e.g., 200 for success) |
success | Boolean | Indicates whether the API call was successful (true) or not (false) |
message | String | A human-readable message describing the result (e.g., "Success") |
message_code | String | A machine-readable code corresponding to the message (e.g., "success") |
{
"data": {
"client_id": "udyam_otp_async_SBsIvDUxXlwhskcsAjlF",
"status": "pending"
},
"status_code": 200,
"success": true,
"message": "Success",
"message_code": "success"
}{
"status_code": 401,
"success": false,
"message": "Authentication credentials were not provided or are invalid.",
"message_code": "unauthorized"
}otp field contains a sensitive, time-limited code. Never write it to application logs, analytics pipelines, or error tracking tools.client_id: Treat the client_id as a session token. Avoid storing it in browser-accessible storage or including it in client-side URLs to prevent session hijacking.pending, display a "Verifying..." indicator immediately after the user submits the OTP to set accurate expectations.pending response. Wait for the final verification result from the Submit OTP Status endpoint or your configured webhook before confirming success or failure.client_id required by this Submit OTP endpoint.otp_sent, pending, or failed). Should be confirmed as otp_sent before calling this Submit OTP endpoint.pending response from Submit OTP to determine whether the Udyam registration was successfully verified.client_id and otp values must be transmitted exclusively over HTTPS. Ensure your infrastructure complies with India's Digital Personal Data Protection Act (DPDPA) with respect to the handling of authentication data tied to MSME business identities.client_id and submission timestamp (without the OTP value) as part of your KYC audit records to demonstrate that verification was completed via proper consent-driven OTP submission.curl --location --request POST 'https://kyc-api.surepass.app/api/v1/udyam-otp/async/submit-otp' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"client_id": "udyam_otp_async_bgKqddCbbfhmJGqouVIK"
}'{
"data": {
"client_id": "udyam_otp_async_bgKqddCbbfhmJGqouVIK",
"status": "pending"
},
"status_code": 200,
"success": true,
"message": "Success",
"message_code": "success"
}