Vizo Digital Api
Sign in

Payouts · Payout Wallet

Move to Main Wallet

Move money from your payout wallet to your main wallet.

POST request

URL: https://uat-api.vizodigital.com/api/v1/payouts/transfers

Body

{
    "reference_id": "TR2026101400001",
    "amount": 500
}

Include a valid Bearer token with every request

Code sample

curl -X POST "https://uat-api.vizodigital.com/api/v1/payouts/transfers" \
  -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 '{
    "reference_id": "TR2026101400001",
    "amount": 500
}'

Success Response

{
    "status": "success",
    "message": "Moved to your main wallet.",
    "data": {
        "reference_id": "TR2026101400001",
        "amount": "500.00",
        "payout_balance": "4500.00",
        "wallet_balance": "750.00"
    }
}

Failure response

{
    "status": "error",
    "code": "insufficient_payout_balance",
    "message": "Your payout wallet balance is too low for this amount."
}

Overview

Moves the amount at once, with no fee. Use it to pay for services with your banking funds.

Notes

  • One way only. Money cannot be moved back to the payout wallet.
  • The smallest amount is Rs 1. At most 2 decimals.
  • There is no fee.

Testing in UAT No money moves. A UAT key sees a sample payout balance of 25,000.00, so an amount above 25,000 is refused with 402 insufficient_payout_balance.

  • Send a new reference_id for every call. A repeated one is refused with 409 duplicate_reference_id and nothing moves, so it is safe to retry after a timeout with the same reference_id.

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

Move to Main Wallet request body

Schema

{
    "type": "object",
    "required": [
        "reference_id",
        "amount"
    ],
    "properties": {
        "reference_id": {
            "type": "string",
            "description": "Your own unique id for this move. Letters, digits, `_` and `-`. Max 40 characters."
        },
        "amount": {
            "type": "number",
            "description": "Rupees to move. At least 1, at most 2 decimals."
        }
    }
}

Example

{
    "reference_id": "TR2026101400001",
    "amount": 500
}

Responses

  • 201 · application/json default

    Success

    Example

    {
        "status": "success",
        "message": "Moved to your main wallet.",
        "data": {
            "reference_id": "TR2026101400001",
            "amount": "500.00",
            "payout_balance": "4500.00",
            "wallet_balance": "750.00"
        }
    }
  • 402 · application/json

    Failed or rejected

    Example

    {
        "status": "error",
        "code": "insufficient_payout_balance",
        "message": "Your payout wallet balance is too low for this amount."
    }

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."
    }
  • RATE_LIMITED · HTTP 429

    Rate limit exceeded.

    {
        "message": "Rate limit exceeded."
    }
  • insufficient_payout_balance · HTTP 402

    Your payout wallet balance is too low for this amount.

    {
        "status": "error",
        "code": "insufficient_payout_balance",
        "message": "Your payout wallet balance is too low for this amount."
    }
  • duplicate_reference_id · HTTP 409

    This reference_id was already used. Send a new one.

    {
        "status": "error",
        "code": "duplicate_reference_id",
        "message": "This reference_id was already used. Send a new one."
    }

Rate Limits

100/min