Skip to main content
Transfer webhooks use a payout-style envelope. The concrete event name is always the top-level type, and the transfer resource is in data.object.

Example delivery payload

{
  "id": "evt_payout_1001",
  "type": "payout.transferred",
  "api_version": "v2",
  "data": {
    "object": {
      "id": "po_1001",
      "status": "paid",
      "type": "pix",
      "amount": 1200,
      "fee": 50,
      "net_amount": 1150,
      "transferred_at": "2026-03-16T14:05:00.000Z"
    }
  }
}

ACK response

{
  "received": true
}

Event names emitted today

  • payout.created
  • payout.in_analysis
  • payout.processing
  • payout.transferred
  • payout.failed
  • payout.rejected
  • payout.canceled

Common ingestion error

{
  "error": "missing_event_id"
}
Fix: deduplicate by the top-level event id. Keep your own mapping between webhook event names and resource statuses.

Mapping guidance

  • payout.transferred means the resource is settled with status paid.
  • payout.failed usually maps to resource status error.
  • payout.canceled maps to resource status cancelled.
  • Reconcile when operator state and webhook state disagree.