Vizo Digital Api
Sign in

AEPS Express · Agents & Outlets

Verify Registration OTP

Step 3: Verify mobile OTP to activate outlet registration (Optional).

POST request

URL: https://uat-api.vizodigital.com/api/v1/aeps-express/outlet/verify-otp

Body

{
    "agent_code": "AC12345678",
    "otp": "123456"
}

Include a valid Bearer token with every request

Code sample

curl -X POST "https://uat-api.vizodigital.com/api/v1/aeps-express/outlet/verify-otp" \
  -H "X-API-Key: YOUR_API_KEY_OR_TOKEN" \
  -H "X-Timestamp: $(TZ=Asia/Kolkata date '+%Y-%m-%d %H:%M:%S')" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_code": "AC12345678",
    "otp": "123456"
}'

Success Response

{
    "status": "success",
    "message": "Outlet registration verified successfully.",
    "data": {
        "agent_code": "AC12345678",
        "registration_status": "verified"
    }
}

Failure response

{
    "status": "error",
    "code": "provider_rejected",
    "message": "Invalid or expired OTP."
}

Overview

Submits the SMS OTP entered by the merchant to complete outlet validation and enable biometric eKYC.

Note: If you registered via Step 1 (/outlet/signup Min-KYC), your outlet is already verified and you can skip directly to Step 4 (Outlet Status & WADH).

Headers

  • X-API-Key · string required

    Your credential: either your `rr_live_` API key, or the Bearer token from `POST /api/v1/auth/client-credentials` (the same token every other API uses). The token may instead be sent as `Authorization: Bearer <token>`. A token follows the same IP whitelist as your keys, and all your tokens share one requests-per-minute allowance.

    Example: rr_live_xxxxxxxxxxxxx

  • X-Timestamp · string required

    Current time in IST as `YYYY-MM-DD HH:MM:SS` (or `YYYY-MM-DDTHH:MM:SS`). Do not add a timezone suffix such as `+05:30`. Must be within 15 seconds of our server time.

    Example: 2026-10-03 10:30:45

  • Content-Type · string required

    Request content type.

    Example: application/json

Body

application/json required

Verify Registration OTP request body

Schema

{
    "type": "object",
    "required": [
        "agent_code",
        "otp"
    ],
    "properties": {
        "agent_code": {
            "type": "string",
            "description": "Unique agent code."
        },
        "otp": {
            "type": "string",
            "description": "6-digit OTP received via SMS."
        }
    }
}

Example

{
    "agent_code": "AC12345678",
    "otp": "123456"
}

Responses

  • 200 · application/json default

    Success

    Schema

    {
        "type": "object"
    }

    Example

    {
        "status": "success",
        "message": "Outlet registration verified successfully.",
        "data": {
            "agent_code": "AC12345678",
            "registration_status": "verified"
        }
    }
  • 422 · application/json

    Failed or rejected

    Schema

    {
        "type": "object"
    }

    Example

    {
        "status": "error",
        "code": "provider_rejected",
        "message": "Invalid or expired OTP."
    }

Errors

  • INVALID_API_KEY · HTTP 401

    Invalid or revoked API key.

    {
        "message": "Invalid or revoked API key."
    }
  • TIMESTAMP_OUT_OF_RANGE · HTTP 400

    Request timestamp is outside the ±15 second window.

    {
        "message": "Request timestamp is outside the ±15 second window."
    }
  • service_not_enabled · HTTP 403

    AEPS is not enabled for your account. Contact your account manager to activate it.

    {
        "status": "error",
        "code": "service_not_enabled",
        "message": "AEPS is not enabled for your account. Contact your account manager to activate it."
    }
  • RATE_LIMITED · HTTP 429

    Rate limit exceeded.

    {
        "message": "Rate limit exceeded."
    }
  • agent_code_taken · HTTP 409

    You already have an agent with this agent_code.

    {
        "status": "error",
        "code": "agent_code_taken",
        "message": "You already have an agent with this agent_code."
    }
  • agent_limit_reached · HTTP 403

    You have reached your limit of 10 agents.

    {
        "status": "error",
        "code": "agent_limit_reached",
        "message": "You have reached your limit of 10 agents."
    }
  • provider_rejected · HTTP 422

    The bank network refused the request. The message says why.

    {
        "status": "error",
        "code": "provider_rejected",
        "message": "The bank network refused the request. The message says why."
    }
  • provider_unavailable · HTTP 502

    The AEPS provider did not respond. Try again shortly.

    {
        "status": "error",
        "code": "provider_unavailable",
        "message": "The AEPS provider did not respond. Try again shortly."
    }
  • noble_credentials_unavailable · HTTP 503

    Noble credentials are not available. Contact your partner.

    {
        "status": "error",
        "code": "noble_credentials_unavailable",
        "message": "Noble credentials are not available. Contact your partner."
    }
  • instantpay_credentials_unavailable · HTTP 503

    InstantPay credentials are not configured or incomplete.

    {
        "status": "error",
        "code": "instantpay_credentials_unavailable",
        "message": "InstantPay credentials are not configured or incomplete."
    }

Rate Limits

100/min