> ## 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.

# Verify a Bank Transfer — GET /disbursements/verify

> Retrieve the current status and full details of a bank transfer using its unique reference. Poll this endpoint or use webhooks to confirm final settlement.

Use this endpoint to check the outcome of a previously initiated transfer. Because transfers are processed asynchronously, the status may be `processing` immediately after initialization and will transition to a terminal state (`success`, `failed`, `reversed`, or `expired`) once the bank has settled the transaction.

```http theme={null}
GET https://sandbox.lyseis-pay.com/disbursements/verify/{reference}
```

**Headers**

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

## Path parameters

<ParamField path="reference" type="string" required>
  The unique reference you supplied when the transfer was initialized.
</ParamField>

## Example response

```json theme={null}
{
  "status": "success",
  "data": {
    "reference": "payout_12345",
    "amount": 10000.00,
    "fee": 50.00,
    "currency": "NGN",
    "destination_bank_code": "058",
    "destination_bank_account": "0123456789",
    "destination_bank_name": "Example Bank",
    "customer_name": "Ada Lovelace",
    "customer_email": "ada@example.com",
    "narration": "Merchant payout",
    "transfer_status": "success",
    "metadata": {
      "payout_id": "12345"
    },
    "created_at": "2026-01-15T10:00:00Z",
    "updated_at": "2026-01-15T10:02:30Z"
  }
}
```

## Response fields

<ResponseField name="reference" type="string">
  The unique reference for this transfer.
</ResponseField>

<ResponseField name="amount" type="number">
  The transfer amount.
</ResponseField>

<ResponseField name="fee" type="number">
  The processing fee charged for this transfer.
</ResponseField>

<ResponseField name="currency" type="string">
  ISO 4217 currency code.
</ResponseField>

<ResponseField name="destination_bank_code" type="string">
  Bank code of the recipient's bank.
</ResponseField>

<ResponseField name="destination_bank_account" type="string">
  Recipient's bank account number.
</ResponseField>

<ResponseField name="destination_bank_name" type="string">
  Name of the recipient's bank.
</ResponseField>

<ResponseField name="customer_name" type="string">
  Name of the transfer recipient.
</ResponseField>

<ResponseField name="customer_email" type="string">
  Email address of the transfer recipient.
</ResponseField>

<ResponseField name="narration" type="string">
  The narration supplied when the transfer was initialized.
</ResponseField>

<ResponseField name="transfer_status" type="string">
  Current status of the transfer. See the status table below.
</ResponseField>

<ResponseField name="metadata" type="object">
  The metadata object supplied at initialization, if any.
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO 8601 timestamp when the transfer was created.
</ResponseField>

<ResponseField name="updated_at" type="string">
  ISO 8601 timestamp of the most recent status update.
</ResponseField>

## Transfer statuses

| Status       | Description                                                                                                                                          |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `processing` | The transfer has been accepted and is being processed by the bank. This is not a terminal state — check again shortly.                               |
| `success`    | The transfer was completed and funds have been credited to the recipient's account.                                                                  |
| `failed`     | The transfer could not be completed. Funds have been returned to your merchant balance.                                                              |
| `reversed`   | The transfer was initially successful but was subsequently reversed by the bank or by Lyseis Pay. Funds have been returned to your merchant balance. |
| `expired`    | The transfer was not processed within the allowed window and has expired. Funds have been returned to your merchant balance.                         |

## Checking transfer status

You can determine the final outcome of a transfer through any of these methods:

1. **Poll this endpoint** — `GET /disbursements/verify/{reference}` until the status is no longer `processing`.
2. **List transfer history** — `GET /merchants/disbursements` supports filtering by status and date. See [Transfer History](/api-reference/transfers/history).
3. **Webhook notification** — Configure a `webhook_url` when initializing the transfer, or set a default in your merchant dashboard, to receive a POST when the transfer reaches a terminal state.
