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

# Transfer lifecycle

> Every status a payout transfer moves through, from creation to delivery.

A transfer progresses through a sequence of statuses from the moment you create it until the fiat reaches your recipient. Poll [`GET /api/payouts/transfer/{transfer_id}`](/api-reference/payouts/get-a-transfer) to track progress.

## Statuses

| Status             | Meaning                                                                                         |
| ------------------ | ----------------------------------------------------------------------------------------------- |
| `ready_to_process` | The transfer is created and waiting for your USDC deposit.                                      |
| `processing`       | The deposit was received and funds are being converted.                                         |
| `transfer_created` | Conversion is complete and the outgoing fiat transfer to the recipient has been created.        |
| `completed`        | The payment has been sent to the recipient.                                                     |
| `failed`           | The transfer failed at some stage. Check the `error` field.                                     |
| `refunded`         | The transfer could not be completed and the deposited USDC was returned to the sender's wallet. |

Each response also includes a `status_label` with a human-readable description of the current status.

## Refunds

When a transfer is `refunded`, the `refund_tx_hash` field contains the on-chain Base transaction hash of the USDC returned to the sender. Use it to verify the refund on a block explorer such as [basescan.org](https://basescan.org). The `refunded` status is set by the operations team and is permanent.

## Looking up a transfer

Lookup is global by `transfer_id`. Any valid API key for your organization can retrieve any transfer by its ID — including transfers created from the dashboard or with a different key — as long as you know the ID. Transfer IDs are unguessable 24-character identifiers.

<Note>
  v2 transfers add two earlier statuses before `processing` — `awaiting_deposit` and `pending_match` — because you confirm the deposit yourself with a transaction hash. See [v1 vs v2 transfers](/concepts/v1-vs-v2).
</Note>

## Concurrent transfers

Multiple transfers can be in flight at once. Each v1 transfer gets its own unique deposit address and settles independently.
