POST
/v1/withdrawals
Create withdrawal
Pays out USDT to a whitelisted address. Payouts within your auto-payout caps are broadcast immediately; larger ones go to review.
Body parameters
network
string
required Network to pay out on.
address
string
required Must be in your withdrawal whitelist and past its 24-hour cooldown.
amount
string
required Amount debited from your balance; the network withdrawal fee is deducted from it.
reference
string
Idempotency key — repeating it returns the original withdrawal.
Response 201
{
"uuid": "1c0a…",
"reference": "payout-77",
"status": "processing",
"network": "TRC20",
"address": "TXYZ…",
"amount": "50",
"network_fee": "1",
"net_payout": "49",
"tx_hash": null,
"rejection_reason": null,
"created_at": "2026-10-16T21:00:00Z",
"completed_at": null
}
All requests must be signed — see Authentication.
BODY='{"network":"TRC20","address":"TXYZ\u2026","amount":"50.00","reference":"payout-77"}'
SIG=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$ZYVO_SECRET" | cut -d" " -f2)
curl -X POST https://api.zyvopay.com/v1/withdrawals \
-H "X-Zyvo-Key: $ZYVO_KEY" \
-H "X-Zyvo-Signature: $SIG" \
-H "Content-Type: application/json" \
-d "$BODY"<?php
// composer require guzzlehttp/guzzle
$client = new \GuzzleHttp\Client(['base_uri' => 'https://api.zyvopay.com/v1/']);
$body = json_encode([
'network' => 'TRC20',
'address' => 'TXYZ…',
'amount' => '50.00',
'reference' => 'payout-77',
]);
$response = $client->request('POST', 'withdrawals', [
'headers' => [
'X-Zyvo-Key' => getenv('ZYVO_KEY'),
'X-Zyvo-Signature' => hash_hmac('sha256', $body, getenv('ZYVO_SECRET')),
'Content-Type' => 'application/json',
],
'body' => $body,
]);
$data = json_decode((string) $response->getBody(), true);import crypto from 'node:crypto';
const body = JSON.stringify({
"network": "TRC20",
"address": "TXYZ\u2026",
"amount": "50.00",
"reference": "payout-77"
});
const signature = crypto.createHmac('sha256', process.env.ZYVO_SECRET).update(body).digest('hex');
const res = await fetch('https://api.zyvopay.com/v1/withdrawals', {
method: 'POST',
headers: {
'X-Zyvo-Key': process.env.ZYVO_KEY,
'X-Zyvo-Signature': signature,
'Content-Type': 'application/json',
},
body,
});
console.log(await res.json());import hmac, hashlib, json, os, requests
body = json.dumps({"network":"TRC20","address":"TXYZ\u2026","amount":"50.00","reference":"payout-77"}, separators=(',', ':'))
signature = hmac.new(os.environ['ZYVO_SECRET'].encode(), body.encode(), hashlib.sha256).hexdigest()
r = requests.request('POST', 'https://api.zyvopay.com/v1/withdrawals', data=body, headers={
'X-Zyvo-Key': os.environ['ZYVO_KEY'],
'X-Zyvo-Signature': signature,
'Content-Type': 'application/json',
})
print(r.json())package main
import (
"bytes"
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
"fmt"
"io"
"net/http"
"os"
)
func main() {
body := []byte(`{"network":"TRC20","address":"TXYZ\u2026","amount":"50.00","reference":"payout-77"}`)
mac := hmac.New(sha256.New, []byte(os.Getenv("ZYVO_SECRET")))
mac.Write(body)
req, _ := http.NewRequest("POST", "https://api.zyvopay.com/v1/withdrawals", bytes.NewReader(body))
req.Header.Set("X-Zyvo-Key", os.Getenv("ZYVO_KEY"))
req.Header.Set("X-Zyvo-Signature", hex.EncodeToString(mac.Sum(nil)))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(string(out))
}