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

# Bank payout status

> POST /v1/bank/payout/status - follow a bank payout from deposit to settlement.

Returns where a bank payout stands. Poll it, or take the webhook - see
[Webhooks](/webhooks).

<Note>
  Needs the **bank-payouts permission** on your API key.
</Note>

## Request

<ParamField body="id" type="string" required>
  The payout id from [POST /v1/bank/payout](/api-reference/bank-payout).
</ParamField>

## Response

<ResponseField name="id" type="string">
  The payout id, echoed back.
</ResponseField>

<ResponseField name="status" type="string">
  One of `pending`, `converting`, `sent`, `settled`, `rejected`, `returned`. See
  [Statuses](/transactions/statuses).
</ResponseField>

<ResponseField name="fiatAmount" type="string">
  What was paid out, once known.
</ResponseField>

<ResponseField name="fiatCurrency" type="string">
  The currency `fiatAmount` is in.
</ResponseField>

<ResponseField name="rail" type="string">
  The rail the transfer actually went out on.
</ResponseField>

<ResponseField name="bankReference" type="string">
  The reference carried on the transfer, for reconciling against the
  beneficiary's statement.
</ResponseField>

<ResponseField name="depositTxHash" type="string">
  The transaction that funded the payout, once seen on chain.
</ResponseField>

<ResponseField name="reason" type="string">
  Present on `rejected` and `returned`: why, in the partner's words.
</ResponseField>

<ResponseField name="updatedAt" type="string">
  ISO 8601 of the last change.
</ResponseField>

<Warning>
  **A returned payout is not a failed one.** A receiving bank can bounce a transfer
  days after it was sent - wrong beneficiary name, closed account, its own checks.
  The status becomes `returned` and the value comes back as stablecoin to the
  sending wallet, minus the rail's own cost. Treat `settled` as final and nothing
  before it.
</Warning>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "$RHEON_API/v1/bank/payout/status" \
    -H "Authorization: Bearer $RHEON_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{ "id": "bpo_77c2e1f430" }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "bpo_77c2e1f430",
    "status": "settled",
    "fiatAmount": "731.40",
    "fiatCurrency": "GBP",
    "rail": "faster_payments",
    "bankReference": "RHN-91204",
    "depositTxHash": "0x8ad3...41f7",
    "updatedAt": "2026-09-02T18:02:19Z"
  }
  ```
</ResponseExample>

## Errors

| HTTP | `code`              | When                                                 |
| ---- | ------------------- | ---------------------------------------------------- |
| 400  | `invalid_request`   | `id` missing or malformed.                           |
| 401  | `unauthorized`      | Missing, malformed, or unknown API key.              |
| 403  | `permission_denied` | Your key does not carry the bank-payouts permission. |
| 404  | `not_found`         | No such payout under your key.                       |
| 429  | `rate_limited`      | Over your key's rate limit.                          |
| 502  | `upstream_error`    | The banking partner is unavailable.                  |
| 500  | `internal`          | Unexpected server error.                             |
