Vizo Digital Api
Sign in

Payouts · Payout Requests

Cancel Payout

Cancel a pending payout and get the amount back.

POST request

URL: https://uat-api.vizodigital.com/api/v1/payouts/{reference_id}/cancel

Include a valid Bearer token with every request

Code sample

curl -X POST "https://uat-api.vizodigital.com/api/v1/payouts/PO2026101400001/cancel" \
  -H "X-API-Key: YOUR_API_KEY_OR_TOKEN" \
  -H "X-Timestamp: $(TZ=Asia/Kolkata date '+%Y-%m-%d %H:%M:%S')"

Success Response

{
    "status": "success",
    "message": "Payout cancelled. The amount is back in your payout wallet.",
    "data": {
        "status": "cancelled",
        "processed_at": "2026-10-14T11:45:00+05:30",
        "reference_id": "PO2026101400001",
        "amount": "1000.00",
        "fee": "10.00",
        "net_amount": "990.00",
        "bank_account": {
            "id": 12,
            "account_last4": "0000"
        },
        "utr": null,
        "reject_reason": null,
        "created_at": "2026-10-14T11:20:00+05:30"
    }
}

Failure response

{
    "status": "error",
    "code": "payout_not_pending",
    "message": "This payout is already finished and cannot be changed."
}

Overview

Cancels a payout that is still pending. The amount goes back to your payout wallet at once. A payout that is already paid, rejected or cancelled is refused with 409 payout_not_pending.

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

Parameters

  • reference_id · path · string required

    The `reference_id` you sent when you requested the payout.

    Example: PO2026101400001

Responses

  • 200 · application/json default

    Success

    Example

    {
        "status": "success",
        "message": "Payout cancelled. The amount is back in your payout wallet.",
        "data": {
            "status": "cancelled",
            "processed_at": "2026-10-14T11:45:00+05:30",
            "reference_id": "PO2026101400001",
            "amount": "1000.00",
            "fee": "10.00",
            "net_amount": "990.00",
            "bank_account": {
                "id": 12,
                "account_last4": "0000"
            },
            "utr": null,
            "reject_reason": null,
            "created_at": "2026-10-14T11:20:00+05:30"
        }
    }
  • 409 · application/json

    Failed or rejected

    Example

    {
        "status": "error",
        "code": "payout_not_pending",
        "message": "This payout is already finished and cannot be changed."
    }

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."
    }
  • payout_not_found · HTTP 404

    Payout not found.

    {
        "status": "error",
        "code": "payout_not_found",
        "message": "Payout not found."
    }
  • payout_not_pending · HTTP 409

    This payout is already finished and cannot be changed.

    {
        "status": "error",
        "code": "payout_not_pending",
        "message": "This payout is already finished and cannot be changed."
    }

Rate Limits

100/min