Vizo Digital Api
Sign in

PAN Card · PAN Card Services

New PAN Application

Generate a white-label redirection URL for a new NSDL PAN card application.

POST request

URL: https://uat-api.vizodigital.com/api/v1/pancard/new

Body

{
    "number": "9876543210",
    "mode": "EKYC",
    "orderid": "PAN_ORD_1001"
}

Include a valid Bearer token with every request

Code sample

curl -X POST "https://uat-api.vizodigital.com/api/v1/pancard/new" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "number": "9876543210",
    "mode": "EKYC",
    "orderid": "PAN_ORD_1001"
}'

Success Response

{
    "txid": 898494,
    "status": "Success",
    "opid": "Order is under process",
    "message": "Pan Redirection url created",
    "url": "https://api.vizodigital.com/api/v1/pancard/redirect/PAN_ORD_1001",
    "number": "9876543210",
    "amount": "107.00",
    "orderid": "PAN_ORD_1001"
}

Failure response

{
    "status": "Failure",
    "message": "Please enter correct Mobile number, it must be 10 digit"
}

Overview

Generate an instant NSDL redirection URL for a New PAN Card application (Form 49A).

How it works:

  1. Call this API with the applicant's mobile number, desired mode (EKYC or ESIGN), and a unique orderid.
  2. ₹107.00 is debited from your developer wallet balance.
  3. Open the returned white-label url in the applicant's browser.
  4. The applicant authorizes Aadhaar and completes the form directly on the official Protean NSDL gateway.
  5. If the applicant completes the application, acknowledgment number is generated.
  6. If the applicant cancels or does not complete the form, the ₹107.00 fee is automatically refunded to your wallet.

Path Aliases:

  • POST /api/v1/pancard/new
  • GET /api/v1/pancard/new?number=9876543210&mode=EKYC&orderid=PAN_ORD_1001
  • POST /api/v1/nsdl/new_pan

Headers

  • Authorization · string required

    Sanctum Bearer token: `Bearer <your_token>`. Generated from `POST /api/v1/auth/client-credentials` using your production client credentials.

    Example: Bearer 1|abc123xyz789token...

  • Content-Type · string required

    Must be `application/json` for POST requests.

    Example: application/json

  • Accept · string required

    Must be `application/json`.

    Example: application/json

Parameters

  • number · query · string required

    Applicant's 10-digit mobile number

    Example: 9876543210

    Schema

    {
        "type": "string"
    }
  • mode · query · string required

    EKYC or ESIGN

    Example: EKYC

    Schema

    {
        "type": "string"
    }
  • orderid · query · string required

    Unique order reference ID

    Example: PAN_ORD_1001

    Schema

    {
        "type": "string"
    }

Body

application/json required

New PAN Application JSON request payload

Schema

{
    "type": "object",
    "required": [
        "number",
        "mode",
        "orderid"
    ],
    "properties": {
        "number": {
            "type": "string",
            "description": "Applicant's 10-digit mobile number (e.g. `9876543210`)."
        },
        "mode": {
            "type": "string",
            "enum": [
                "EKYC",
                "ESIGN"
            ],
            "description": "`EKYC` = Instant paperless application using Aadhaar OTP / Biometric. No physical signature or photo upload required. `ESIGN` = Application with scanned signature and photo upload."
        },
        "orderid": {
            "type": "string",
            "maxLength": 64,
            "description": "Your unique order/transaction reference ID for this application. Max 64 alphanumeric characters."
        }
    }
}

Example

{
    "number": "9876543210",
    "mode": "EKYC",
    "orderid": "PAN_ORD_1001"
}

Responses

  • 200 · application/json default

    Redirection URL generated successfully.

    Example

    {
        "txid": 898494,
        "status": "Success",
        "opid": "Order is under process",
        "message": "Pan Redirection url created",
        "url": "https://api.vizodigital.com/api/v1/pancard/redirect/PAN_ORD_1001",
        "number": "9876543210",
        "amount": "107.00",
        "orderid": "PAN_ORD_1001"
    }
  • 422 · application/json

    Validation error (Invalid mobile or missing fields).

    Example

    {
        "status": "Failure",
        "message": "Please enter correct Mobile number, it must be 10 digit"
    }
  • 422 · application/json

    Insufficient developer wallet balance.

    Example

    {
        "status": "Failure",
        "message": "Insufficient wallet balance. Required: ₹107.00, Available: ₹25.00"
    }
  • 422 · application/json

    Duplicate order ID used.

    Example

    {
        "status": "Failure",
        "message": "Duplicate orderid"
    }

Errors

  • INVALID_INPUT · HTTP 422

    Please enter correct Mobile number, it must be 10 digit

    The mobile number provided does not match 10-digit Indian mobile format.

    {
        "status": "Failure",
        "message": "Please enter correct Mobile number, it must be 10 digit"
    }
  • INSUFFICIENT_BALANCE · HTTP 422

    Insufficient wallet balance. Required: ₹107.00, Available: ₹25.00

    Developer wallet does not have sufficient balance to cover the ₹107 application fee.

    {
        "status": "Failure",
        "message": "Insufficient wallet balance. Required: ₹107.00, Available: ₹25.00"
    }
  • DUPLICATE_ORDER_ID · HTTP 422

    Duplicate orderid

    The orderid has already been used for a previous transaction by your account.

    {
        "status": "Failure",
        "message": "Duplicate orderid"
    }
  • SERVICE_NOT_ENABLED · HTTP 403

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

    PAN Card service has not been activated for your user account by the platform administrator.

    {
        "status": "error",
        "code": "service_not_enabled",
        "message": "PAN Card is not enabled for your account."
    }
  • PRODUCTION_CREDENTIALS_REQUIRED · HTTP 403

    PAN Card has no sandbox. Use your production credentials.

    NSDL PAN Card is a live-only service. Calls using UAT sandbox tokens are rejected.

    {
        "status": "error",
        "code": "production_credentials_required",
        "message": "PAN Card has no sandbox. Use your production credentials."
    }
  • UNAUTHENTICATED · HTTP 401

    Unauthenticated.

    Missing or invalid Bearer token in Authorization header.

    {
        "message": "Unauthenticated."
    }

Notes

Wallet Billing (₹107.00) Flat ₹107.00 is debited from your developer wallet upon application URL creation. Please ensure your wallet balance is maintained before calling this endpoint.

Automated Refund Guarantee

  • Immediate Failure Refund: If the upstream gateway fails to create the redirection URL (gateway timeout, network failure), the ₹107 fee is refunded to your wallet immediately.
  • Cancellation / Timeout Refund: If the customer abandons the application, closes the browser, or denies geolocation, once the NSDL session expires or reports failure, the ₹107 fee is automatically credited back to your developer wallet.
  • Client Webhook Notification: When a refund occurs, an automated webhook event (transaction.failed) is dispatched to your registered webhook URL.

White-label Redirection Bridge The returned url is a white-label bridge (https://api.vizodigital.com/api/v1/pancard/redirect/{orderid}) that seamlessly redirects the applicant's browser to the official government NSDL portal (onlineservices.nsdl.com) without revealing aggregator branding.

Mandatory Browser Geolocation NSDL government guidelines strictly require browser location access. If the applicant denies geolocation, NSDL terminates the transaction with error code GLA002. Always instruct applicants to allow location access when prompted.

Rate Limits

60/min

Webhooks

Webhook details for this endpoint can be documented in the CMS.