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

# Card payout status

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

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

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

## Request

<ParamField body="id" type="string" required>
  The payout id from [POST /v1/card/payout](/api-reference/card-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`. Read
  the vocabulary in [Statuses](/transactions/statuses) rather than matching
  strings you saw once.
</ResponseField>

<ResponseField name="fiatAmount" type="string">
  What actually landed, once known. Equals the quoted figure unless the user sent
  a different amount than quoted.
</ResponseField>

<ResponseField name="fiatCurrency" type="string">
  The currency `fiatAmount` is in.
</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>
  **`sent` is not `settled`.** `sent` means the payout left the partner; card
  schemes take from minutes to several working days to post it to the cardholder.
  Telling a user the money has arrived at `sent` produces support tickets.
</Warning>

<Note>
  A payout the user underfunded does not fail - it converts what arrived and pays
  that out, so `fiatAmount` comes back lower than quoted. Compare it against your
  own record rather than assuming the quote held.
</Note>

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

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "cpo_41b8e0d7a2",
    "status": "sent",
    "fiatAmount": "84.10",
    "fiatCurrency": "EUR",
    "depositTxHash": "0x6b1c...c39a",
    "updatedAt": "2026-09-02T17:52:41Z"
  }
  ```
</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 card-payouts permission. |
| 404  | `not_found`         | No such payout under your key.                       |
| 429  | `rate_limited`      | Over your key's rate limit.                          |
| 502  | `upstream_error`    | The payout partner is unavailable.                   |
| 500  | `internal`          | Unexpected server error.                             |
