Webhook events
ZyvoPay pushes signed events to your server as payments progress.
ZyvoPay sends a POST with a JSON body to the invoice's webhook_url (or your default URL) on every status change.
Headers
X-Zyvo-Event | Event name, e.g. invoice.paid |
X-Zyvo-Signature | hex(HMAC-SHA256(raw_body, webhook_secret)) |
X-Zyvo-Delivery | Unique delivery ID — use it to de-duplicate |
Events
invoice.confirming,invoice.paid,invoice.overpaid,invoice.partially_paid,invoice.expiredwithdrawal.completed,withdrawal.rejected(sent to your default webhook URL)test.pingfrom the dashboard's "Send test webhook" button
Payload
{
"event": "invoice.paid",
"created_at": "2026-10-16T21:04:11+00:00",
"data": {
"uuid": "9b1f2c3e-…", "status": "paid", "order_id": "INV-1001",
"amount": "10", "pay_amount": "10.43", "received_amount": "10.43",
"network": "TRC20", "tx_hash": "a3f1…", "confirmations": 19, "required_confirmations": 19,
"metadata": { "customer_id": 42 }, "paid_at": "2026-10-16T21:04:11Z"
}
}
Retries
Any non-2xx response or timeout (10 s) is retried after 1 minute, 5 minutes, 30 minutes, 2 hours, 6 hours and 24 hours. Every attempt is logged in your dashboard with the response code and body, and can be resent manually.