Developers

Documentation

Global financial infrastructure via API.

Creating Payouts

This guide walks through sending your first payout.

Typical integration steps:

  1. Create recipient
  2. Create payout
  3. Notify recipient
  4. Track payout status via webhooks

Most integrations can send their first payout in less than 10 minutes.

Create a Recipient

Endpoint

POST /v1/recipients

Example request

{
  "phone_number": "+639123456789",
  "email": "maria@example.com",
  "country": "PH"
}

Example response

{
  "id": "rec_123",
  "object": "recipient"
}

Create a Payout

Endpoint

POST /v1/payouts

Example request

{
  "recipient_id": "rec_123",
  "email": "maria@example.com",
  "amount": "150.00",
  "currency": "USD",
  "delivery_channel": "whatsapp",
  "destination": "+639123456789"
}

The recipient selects their payout method when withdrawing funds.

Multiple recipients (batch)

POST /v1/payouts/batch

Example request

{
  "payouts": [
    {
      "recipient_id": "rec_123",
      "email": "maria@example.com",
      "amount": "150.00",
      "currency": "USD",
      "delivery_channel": "whatsapp",
      "destination": "+639123456789"
    },
    {
      "recipient_id": "rec_456",
      "email": "alex@example.com",
      "amount": "95.00",
      "currency": "USD",
      "delivery_channel": "whatsapp",
      "destination": "+14155550123"
    }
  ]
}

Notify recipient

Recipients are notified automatically after payout creation when delivery_channel and destination are included in the request.

No separate notify endpoint is required for the standard flow.

Example notification fields in payout request

{
  "recipient_id": "rec_123",
  "amount": "150.00",
  "currency": "USD",
  "delivery_channel": "whatsapp",
  "destination": "+639123456789",
  "notification": {
    "send": true,
    "language": "en"
  }
}

Track payout status via webhooks

Use webhooks to receive real-time payout lifecycle updates in your backend.

Endpoint

POST /v1/webhooks

Recommended events:

  • payout.created
  • payout.notification_sent
  • payout.completed
  • payout.failed

Example webhook event

{
  "type": "payout.completed",
  "data": {
    "object": {
      "id": "po_123",
      "status": "completed"
    }
  }
}
Decaf API | Creating Payouts | Decaf