PayOrbit
Sign in

Financial Services · Lead generation

Create / Update Customer Profile

Create or update a customer profile and get customer_id

POST request

URL: https://api.payorbit.in/api/v1/leads/profile

Body

{
    "dob": "1990-12-10",
    "pan": "ABCDE1234F",
    "email": "rajesh@example.com",
    "gender": "Male",
    "address": "MG Road, Bengaluru",
    "company": 75,
    "pincode": 560001,
    "category": "Individual",
    "last_name": "Jha",
    "mobile_no": "9110409809",
    "first_name": "Rajesh",
    "itr_amount": 0,
    "occupation": 1,
    "category_id": 3,
    "monthly_salary": 50000
}

Include a valid Bearer token with every request

Code sample

curl -X POST "https://api.vizodigital.com/api/v1/leads/profile" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "first_name": "Rajesh",
    "last_name": "Jha",
    "mobile_no": "9110409809",
    "email": "rajesh@example.com",
    "dob": "1990-12-10",
    "company": 75,
    "occupation": 1,
    "monthly_salary": 50000,
    "itr_amount": 0,
    "gender": "Male",
    "pincode": 560001,
    "address": "MG Road, Bengaluru",
    "category": "Individual",
    "category_id": 3,
    "pan": "ABCDE1234F"
}'

Success Response

{
    "fee": 0,
    "data": {
        "mobile_no": "9110409809",
        "product_id": null,
        "category_id": "3",
        "customer_id": "aUczK1BLZm1lRmtSNEZ6SGJTaHl0QT09"
    },
    "status": "success",
    "message": "Customer profile has been created.",
    "wallet_balance": 1000
}

Failure response

{
    "status": "error",
    "message": "Request failed. Check credentials, wallet balance, or validation errors."
}

Overview

Creates a customer profile with the lead provider. If the mobile already exists, the same call updates the profile. Returns an encrypted customer_id — pass that into Create Lead.

New vs existing

  • New customer: omit customer_id. mobile_no is required.
  • Existing customer: send customer_id from a previous profile call. The same fields are still required so the provider can update the record.

Occupation rule

  • Occupation id 2 (self-employed): send itr_amount; monthly_salary is sent as 0.
  • Any other occupation: send monthly_salary; itr_amount is sent as 0.

UAT vs Production

  • UAT tokens return a sample customer_id. No provider call, fee = 0.
  • Production tokens create or update a live profile. Not billed (fee = 0).

Access

  • Admin must enable Lead generation (lead_generation).
  • Provider credentials (API key, IV) are applied server-side.

Authenticate with a Bearer token.

Body

application/json required

Customer profile request body

Schema

{
    "type": "object",
    "required": [
        "first_name",
        "last_name",
        "mobile_no",
        "email",
        "dob",
        "company",
        "occupation",
        "monthly_salary",
        "itr_amount",
        "gender",
        "pincode",
        "address",
        "category",
        "category_id",
        "pan"
    ],
    "properties": {
        "dob": {
            "type": "string",
            "description": "Date of birth YYYY-MM-DD"
        },
        "pan": {
            "type": "string",
            "description": "PAN (10 characters, e.g. ABCDE1234F)"
        },
        "email": {
            "type": "string",
            "description": "Customer email"
        },
        "gender": {
            "type": "string",
            "description": "Male, Female, or Other"
        },
        "address": {
            "type": "string",
            "description": "Address (max 255)"
        },
        "company": {
            "type": "integer",
            "description": "Company id from the provider company list"
        },
        "pincode": {
            "type": "integer",
            "description": "Pincode id from the provider pincode list"
        },
        "category": {
            "type": "string",
            "description": "Individual or Non-Individual"
        },
        "last_name": {
            "type": "string",
            "description": "Last name (max 50)"
        },
        "mobile_no": {
            "type": "string",
            "description": "10-digit Indian mobile number"
        },
        "first_name": {
            "type": "string",
            "description": "First name (max 50)"
        },
        "itr_amount": {
            "type": "number",
            "description": "ITR amount in INR. Required when occupation is 2; otherwise send 0"
        },
        "occupation": {
            "type": "integer",
            "description": "Occupation id. Use 2 for self-employed (ITR instead of salary)"
        },
        "category_id": {
            "type": "integer",
            "description": "Product category id"
        },
        "customer_id": {
            "type": "string",
            "description": "Required only when updating an existing customer"
        },
        "monthly_salary": {
            "type": "number",
            "description": "Monthly salary in INR. Send 0 when occupation is 2"
        }
    }
}

Example

{
    "dob": "1990-12-10",
    "pan": "ABCDE1234F",
    "email": "rajesh@example.com",
    "gender": "Male",
    "address": "MG Road, Bengaluru",
    "company": 75,
    "pincode": 560001,
    "category": "Individual",
    "last_name": "Jha",
    "mobile_no": "9110409809",
    "first_name": "Rajesh",
    "itr_amount": 0,
    "occupation": 1,
    "category_id": 3,
    "monthly_salary": 50000
}

Responses

  • 200 · application/json default

    Successful response

    Example

    {
        "fee": 0,
        "data": {
            "mobile_no": "9110409809",
            "product_id": null,
            "category_id": "3",
            "customer_id": "aUczK1BLZm1lRmtSNEZ6SGJTaHl0QT09"
        },
        "status": "success",
        "message": "Customer profile has been created.",
        "wallet_balance": 1000
    }

Rate Limits

60/min