post
https://test-accounts.payu.in/api/v3/merchants/kyc_document/verify_ckyc_otp
The Verify CKYC OTP API verifies the OTP from Step 03A and returns CKYC identity data (Step 03B of 16).
Notes:
- Prerequisite: Step 03A — OTP sent successfully.
- Entity applicability: Individual and Sole Proprietorship only.
- CKYC success for these entities can make DigiLocker (Step 09) optional.
HTTP Method: POST
Environment
| URL | |
|---|---|
| Test Environment | https://test-partner.payu.in/api/v3/merchants/kyc_document/verify_ckyc_otp |
| Production Environment | https://partner.payu.in/api/v3/merchants/kyc_document/verify_ckyc_otp |
Note: Send
otpas a JSON string, not a number. Parsing withparseInt()strips leading zeros and causes validation errors.
Sample Request
Sample request
curl --location 'https://test-partner.payu.in/api/v3/merchants/kyc_document/verify_ckyc_otp' \
--header 'Authorization: Bearer {{access_token}}' \
--header 'Content-Type: application/json' \
--data '{
"merchant_id": "{{mid}}",
"otp": "123456"
}'Sample Response
Success scenario
Success scenario
{
"name": "MERCHANT LEGAL NAME",
"dob": "06-01-2000",
"address": "123 MG Road",
"city": "Bangalore",
"state": "Karnataka",
"pincode": "560001",
"mobile": "******3210"
}Failure scenario
Failure scenario
- 422 — OTP invalid, expired, or not sent as a string
{
"error": "OTP is invalid"
}Response parameters
Response parameters
| Parameter | Description | Example |
|---|---|---|
| name | string — Name from CKYC registry | MERCHANT LEGAL NAME |
| dob | string — Date of birth (DD-MM-YYYY) | 06-01-2000 |
| address | string — Address from CKYC | 123 MG Road |
| city | string — City from CKYC | Bangalore |
| state | string — State from CKYC | Karnataka |
| pincode | string — Pincode from CKYC | 560001 |
| mobile | string — Masked mobile number | ******3210 |
Request parameters
Header parameters
Header parameters
| Header | Description | Example |
|---|---|---|
Authorizationmandatory | string — Bearer token from Step 00 (GetToken) | Bearer {{access_token}} |
Content-Typemandatory | string — Must be application/json | application/json |
Body parameters
Body parameters
| Parameter | Description | Example |
|---|---|---|
merchant_idmandatory | string — Numeric mid from Step 01 | 12345678 |
otpmandatory | string — Exactly 6 digits; must be a string (preserves leading zeros, e.g. "014645") | 123456 |
400Bad Request
401Unauthorized - Invalid or expired token
403Forbidden - No access to this resource
404Not Found
422Validation Failed
500Internal Server Error
