Webhook events
nuez sends a POST request to your configured endpoint (see webhook management) whenever a tracked event happens.
Common envelope
Section titled “Common envelope”Every webhook has the same outer structure — note it’s event/timestamp, not id/type/created_at:
{ "event": "payout.submitted", "timestamp": "2026-07-18T14:32:02Z", "data": { ... }}payout.requested
Section titled “payout.requested”Fired the moment a payout attempt is created — for both the allow and require_approval paths.
{ "event": "payout.requested", "timestamp": "2026-07-18T14:32:00Z", "data": { "payout_id": "b3f1...", "amount_ars": 5000, "destination": "0000003100010000123456", "status": "approved", "api_key_id": "6f2c...", "api_key_name": "claude-supplier-agent" }}api_key_id/api_key_name are only present when the payout was created via an API key (they’re absent for payouts created through the dashboard or WhatsApp/Telegram-initiated flows).
payout.submitted
Section titled “payout.submitted”Payout was submitted to the bank rail.
{ "event": "payout.submitted", "timestamp": "2026-07-18T14:32:01Z", "data": { "payout_id": "b3f1...", "amount_ars": 5000, "destination": "0000003100010000123456", "status": "submitted" }}payout.confirmed
Section titled “payout.confirmed”The bank rail confirmed the payout executed.
{ "event": "payout.confirmed", "timestamp": "2026-07-18T14:32:05Z", "data": { "payout_id": "b3f1...", "amount_ars": 5000, "destination": "0000003100010000123456", "status": "confirmed" }}payout.approved
Section titled “payout.approved”Owner approved a pending payout via WhatsApp/Telegram.
{ "event": "payout.approved", "timestamp": "2026-07-18T14:33:15Z", "data": { "payout_id": "b3f1...", "amount_ars": 50000, "destination": "0000003100010000123456", "status": "approved" }}payout.rejected
Section titled “payout.rejected”Owner rejected a pending payout.
{ "event": "payout.rejected", "timestamp": "2026-07-18T14:33:15Z", "data": { "payout_id": "b3f1...", "amount_ars": 50000, "destination": "0000003100010000123456", "status": "rejected" }}payout.expired
Section titled “payout.expired”Approval window (APPROVAL_EXPIRY_MINUTES, default 5 minutes) timed out with no reply.
{ "event": "payout.expired", "timestamp": "2026-07-18T14:38:00Z", "data": { "payout_id": "b3f1...", "amount_ars": 50000, "destination": "0000003100010000123456", "status": "expired" }}deposit.detected
Section titled “deposit.detected”An incoming transfer to the user’s CVU was detected.
{ "event": "deposit.detected", "timestamp": "2026-07-18T09:00:00Z", "data": { "amount_ars": 100000 }}crypto.offramp.completed / crypto.offramp.failed
Section titled “crypto.offramp.completed / crypto.offramp.failed”A crypto→ARS off-ramp resolved. See Crypto off-ramp.
{ "event": "crypto.offramp.completed", "timestamp": "2026-07-18T11:00:00Z", "data": { "offramp_id": "o_91a...", "status": "completed" }}crypto.offramp.failed has the same shape with "status": "failed".
crypto.deposit.completed
Section titled “crypto.deposit.completed”An incoming crypto deposit landed on one of the user’s deposit addresses.
{ "event": "crypto.deposit.completed", "timestamp": "2026-07-18T11:05:00Z", "data": { "currency": "USDC", "network": "ETHEREUM_SEPOLIA", "amount": "100.00", "address_destination": "0x...", "txn_id": "...", "hash": "0x..." }}