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

# Transfers

> Create a transfer from a quote, get the next action, submit signed results, and track it.

## The transfer object

<ResponseField name="id" type="string">Transfer ID.</ResponseField>
<ResponseField name="route" type="string">The route ID.</ResponseField>
<ResponseField name="direction" type="string">`deposit`, `withdraw` or `send`.</ResponseField>
<ResponseField name="status" type="string">SEP-24 status: whose turn it is. See [Transfer lifecycle](/chain-abstraction/transfer-lifecycle).</ResponseField>
<ResponseField name="stage" type="string">The internal state.</ResponseField>
<ResponseField name="amount_in" type="string">Source base units.</ResponseField>
<ResponseField name="amount_out" type="string">Minimum destination base units.</ResponseField>
<ResponseField name="amount_fee" type="string">User-paid fee.</ResponseField>

<ResponseField name="source_chain" type="string" />

<ResponseField name="source_address" type="string" />

<ResponseField name="dest_chain" type="string" />

<ResponseField name="dest_address" type="string" />

<ResponseField name="external_transaction_id" type="string | null">The EVM transaction (burn, OFT send or destination mint).</ResponseField>
<ResponseField name="stellar_transaction_id" type="string | null">The Stellar transaction.</ResponseField>

<ResponseField name="started_at" type="string" />

<ResponseField name="updated_at" type="string" />

<ResponseField name="completed_at" type="string | null" />

<ResponseField name="expires_at" type="string" />

<ResponseField name="explorer" type="object">Explorer links: `source` and `destination`.</ResponseField>

## Create a transfer

`POST /v1/transfers`

<ParamField header="Idempotency-Key" type="string" required>
  A new key per transfer. A repeat returns the same transfer.
</ParamField>

<ParamField body="quote_id" type="string" required>
  The quote's `id`. Its owner must be the caller.
</ParamField>

Returns the transfer. `409` if the quote is used or expired, `422` if a limit is reached.

## Get the next action

`GET /v1/transfers/{id}/actions`

Returns `{ "action": <action> }` with zero or one action the user can take now.

| `kind` | Fields | Your app |
| - | - | - |
| `send_to_address` | `chain`, `asset`, `address`, `amount` | Shows the address and a QR code |
| `evm_calls` | `chainId`, `calls[]` of `{ to, data, value }` | Verifies, then sends the calls |
| `stellar_tx` | `xdr`, `network_passphrase` | Verifies, signs, and submits the signed XDR |
| `stellar_trustline` | `asset` | Runs sponsored onboarding for the asset |

## Submit a result

`POST /v1/transfers/{id}/submissions`

<ParamField body="kind" type="string" required>
  `evm_tx` or `stellar_tx`.
</ParamField>

<ParamField body="hash" type="string">
  For `evm_tx`: the mined transaction hash. For a smart wallet, the bundle transaction hash.
</ParamField>

<ParamField body="signed_xdr" type="string">
  For `stellar_tx`: the transaction signed by the owner. Pesa's relay fee-bumps and submits it.
</ParamField>

The server decodes every submission and checks it against the issued action: sender, contract, recipient and amount. EVM submissions are checked from the mined receipt's logs. A mismatch returns `422` and changes nothing. A duplicate returns `409`.

## Get a transfer

`GET /v1/transfers/{id}`

Returns the transfer. `404` if it does not exist or belongs to another owner.

## List transfers

`GET /v1/transfers`

<ParamField query="before" type="string">
  An ISO date. Returns transfers started before it. Use the oldest `started_at` from the previous page.
</ParamField>

Returns the owner's transfers, newest first.

## Cancel a transfer

`POST /v1/transfers/{id}/cancel`

Allowed before anything irreversible (stages `AWAITING_FUNDS`, `FUNDED`, `AWAITING_SIGNATURE`). Otherwise `409` with the current stage.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.