> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lyseis-pay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Send a Bank Transfer via POST /disbursements/initialize

> Disburse funds to any bank account by submitting a transfer request with recipient details, amount, and an optional webhook URL for status updates.

Use this endpoint to send a bank transfer (disbursement) from your Paylink merchant balance to any supported bank account. Each transfer is identified by a unique `reference` you supply. The transfer is processed asynchronously — use `GET /disbursements/verify/{reference}` or your configured webhook to track the final outcome.

<Tip>
  Before submitting a transfer, use `POST /banks/resolve` to confirm the destination account name matches your intended recipient. See [Resolve Account](/api-reference/banks/resolve).
</Tip>

```http theme={null}
POST https://sandbox.lyseis-pay.com/disbursements/initialize
```

**Headers**

| Header         | Value                         |
| -------------- | ----------------------------- |
| `X-Key-Id`     | Your merchant key ID          |
| `X-Timestamp`  | Unix timestamp of the request |
| `X-Signature`  | HMAC request signature        |
| `Content-Type` | `application/json`            |

## Request body

<ParamField body="customer_name" type="string" required>
  Full name of the transfer recipient.
</ParamField>

<ParamField body="customer_email" type="string" required>
  Email address of the transfer recipient. Used for notifications and record-keeping.
</ParamField>

<ParamField body="reference" type="string" required>
  A unique reference you assign to this transfer. Used to verify status and to identify the transfer in webhook payloads. Must be unique across all your transfer requests.
</ParamField>

<ParamField body="amount" type="number" required>
  Amount to transfer in the specified currency.
</ParamField>

<ParamField body="currency" type="string" required>
  ISO 4217 currency code (e.g. `NGN`). Must be a currency supported by your merchant account.
</ParamField>

<ParamField body="destination_bank_code" type="string" required>
  Bank code of the recipient's bank. Use `GET /banks` to retrieve a list of valid codes. See [List Banks](/api-reference/banks/list).
</ParamField>

<ParamField body="destination_bank_account" type="string" required>
  Recipient's bank account number.
</ParamField>

<ParamField body="destination_bank_name" type="string" required>
  Human-readable name of the recipient's bank (e.g. `"Example Bank"`).
</ParamField>

<ParamField body="narration" type="string">
  A short description of the transfer that may appear on the recipient's bank statement.
</ParamField>

<ParamField body="metadata" type="object">
  An arbitrary key-value object for storing additional information alongside the transfer record (e.g. internal IDs, order references). Not sent to the bank.
</ParamField>

<ParamField body="webhook_url" type="string">
  A URL on your server to which Paylink will POST the transfer result when it reaches a terminal state. Overrides the default webhook URL configured in your merchant dashboard for this transfer only.
</ParamField>

## Example request

```json theme={null}
{
  "customer_name": "Ada Lovelace",
  "customer_email": "ada@example.com",
  "reference": "payout_12345",
  "amount": 10000.00,
  "currency": "NGN",
  "destination_bank_code": "058",
  "destination_bank_account": "0123456789",
  "destination_bank_name": "Example Bank",
  "narration": "Merchant payout",
  "metadata": {
    "payout_id": "12345"
  },
  "webhook_url": "https://merchant.example.com/webhooks/transfers"
}
```

## Example response

```json theme={null}
{
  "status": "success",
  "message": "Transfer initiated successfully",
  "data": {
    "reference": "payout_12345",
    "amount": 10000.00,
    "currency": "NGN",
    "destination_bank_code": "058",
    "destination_bank_account": "0123456789",
    "destination_bank_name": "Example Bank",
    "narration": "Merchant payout",
    "status": "processing",
    "created_at": "2026-01-15T10:00:00Z"
  }
}
```

## Error reference

| HTTP status | Error message      | Resolution                                                                               |
| ----------- | ------------------ | ---------------------------------------------------------------------------------------- |
| `409`       | Insufficient funds | Your merchant balance does not cover the transfer amount. Top up your balance and retry. |
