Skip to main content
Webhooks push event notifications to your server the moment something happens — no polling needed. Configure a single HTTPS endpoint to receive all events, then filter by event.type in your handler.

Set webhook URL

POST /business/webhook
url
string
required
Your HTTPS endpoint that will receive webhook events.
curl -X POST 'https://api.yativo.com/api/v1/business/webhook' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: unique-key-here' \
  -d '{
    "url": "https://your-app.com/webhooks/yativo"
  }'

Get webhook URL

GET /business/webhook
curl -X GET 'https://api.yativo.com/api/v1/business/webhook' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'

Update webhook URL

PUT /business/webhook
url
string
required
New destination URL.
curl -X PUT 'https://api.yativo.com/api/v1/business/webhook' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: unique-key-here' \
  -d '{
    "url": "https://your-app.com/webhooks/yativo-v2"
  }'

Webhook event types

Your endpoint receives POST requests with a JSON body containing an event.type field.
Event typeTriggered when
payout.updatedA payout status changes (e.g. completed or failed)
deposit.createdA new deposit is initiated
deposit.updatedA deposit status changes (e.g. pendingsuccess)
customer.createdA new customer is created
virtual_account.depositA payment arrives at a virtual account

Event payloads

payout.updated

{
  "event.type": "payout.updated",
  "payload": {
    "payout_id": "4533bb23-0f2d-4c00-8ce3-a2b4ab727b0e",
    "amount": "20.00",
    "currency": "ARS",
    "debit_wallet": "USD",
    "beneficiary_id": 5,
    "status": "failed",
    "created_at": "2026-02-20T21:32:46.000000Z",
    "updated_at": "2026-02-20T21:43:59.000000Z"
  }
}

deposit.created

{
  "event.type": "deposit.created",
  "payload": {
    "id": "93df8440-b756-449c-b0e8-190e2bd8e2bf",
    "amount": 11,
    "gateway": "23",
    "currency": "CLP",
    "status": "pending",
    "deposit_currency": "USD",
    "customer_id": "da44a3e6-eb5d-429f-8d17-357aa5a6cdf2",
    "created_at": "2026-05-19T17:19:56.000000Z"
  }
}

deposit.updated

{
  "event.type": "deposit.updated",
  "payload": {
    "id": "93df8440-b756-449c-b0e8-190e2bd8e2bf",
    "amount": 11,
    "gateway": "23",
    "currency": "CLP",
    "status": "success",
    "deposit_currency": "USD",
    "receive_amount": 2681,
    "customer_id": "da44a3e6-eb5d-429f-8d17-357aa5a6cdf2",
    "updated_at": "2026-05-19T17:22:10.000000Z"
  }
}

customer.created

{
  "event.type": "customer.created",
  "payload": {
    "customer_id": "da44a3e6-eb5d-429f-8d17-357aa5a6cdf2",
    "customer_name": "Jane Doe",
    "customer_email": "jane@example.com",
    "customer_phone": "+5511999999999",
    "customer_country": "BRA",
    "customer_status": "active",
    "customer_kyc_status": "approved",
    "created_at": "2026-05-17T16:15:20.000000Z"
  }
}

virtual_account.deposit

{
  "event.type": "virtual_account.deposit",
  "payload": {
    "amount": 1000,
    "currency": "USD",
    "status": "completed",
    "credited_amount": 950,
    "transaction_type": "virtual_account_topup",
    "transaction_id": "TXNMP2HK81BHJ",
    "customer": {
      "customer_id": "da44a3e6-eb5d-429f-8d17-357aa5a6cdf2",
      "customer_name": "Jane Doe",
      "customer_kyc_status": "approved"
    },
    "source": {
      "account_number": "93405934593930",
      "sender_name": "Jane Doe",
      "transaction_fees": 50,
      "amount_received": 1000,
      "credited_amount": 950
    }
  }
}

Webhook handler example

Node.js (Express)
app.post('/webhooks/yativo', express.json(), (req, res) => {
  const event = req.body;

  switch (event['event.type']) {
    case 'deposit.updated':
      if (event.payload.status === 'success') {
        // Credit customer account
        creditCustomer(event.payload.customer_id, event.payload.receive_amount);
      }
      break;

    case 'payout.updated':
      // Update payout status in your database
      updatePayoutStatus(event.payload.payout_id, event.payload.status);
      break;

    case 'virtual_account.deposit':
      // Notify customer of received funds
      notifyCustomer(event.payload.customer.customer_id, event.payload.credited_amount);
      break;
  }

  res.status(200).send('OK');
});
Respond with a 2xx status within 10 seconds to acknowledge receipt. Failed deliveries are retried automatically.

Logs and events

All webhook logs

GET /business/logs/all

Single log

GET /business/logs/show/{log_id}

All events

GET /business/events/all

Single event

GET /business/events/show/{event_id}