---
url: /docs/stablecoin/transfers.md
description: >-
  Execute a stablecoin transfer from a transfer quote and track it through to
  completion with the BlindPay API.
---

A transfer is the object that actually moves stablecoins: it consumes a [transfer quote](/stablecoin/transfer-quotes) and sends the funds from a managed wallet to the destination address locked in on that quote. The transfer itself takes a single field; the amount, token, network, and destination were already set when you created the quote.

## How it works

```
transfer quote (qu_...) -> execute the transfer -> stablecoins sent from the managed wallet -> destination confirms receipt
```

A transfer quote expires 5 minutes after creation, so execute the transfer before then. Once created, a transfer cannot be canceled.

You also need a [managed wallet](/stablecoin/wallets) (`bl_...`) and a [transfer quote](/stablecoin/transfer-quotes) (`qu_...`).

## Execute a transfer

Replace `qu_000000000000` with the transfer quote ID you created previously.

```bash [cURL]
curl https://api.blindpay.com/v1/instances/in_000000000000/transfers \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --data '{
  "transfer_quote_id": "qu_000000000000"
}'
```

### Response

```json
{
  "id": "tr_000000000000",
  "status": "processing",
  "tracking_bridge_swap": { "step": "on_hold" },
  "tracking_complete": { "step": "on_hold" },
  "tracking_paymaster": { "step": "on_hold" },
  "tracking_transaction_monitoring": { "step": "on_hold" },
  "tracking_partner_fee": { "step": "on_hold" }
}
```

## Status lifecycle

| `status` | Meaning | Terminal? |
| --- | --- | --- |
| `processing` | The stablecoin send has been submitted and is waiting for confirmation | no |
| `completed` | The transfer confirmed and the destination received the stablecoins | yes |

## Testing

Transfers do not use the `66600`/`77700` sentinel amounts that payins and payouts support. On a development instance, a transfer executes against the sandbox `USDB` token on the corresponding testnet and confirms once the network finalizes the send.

## Webhooks

| Event | Fires when |
| --- | --- |
| `transfer.new` | The transfer is created and the stablecoin send has been submitted |
| `transfer.complete` | The transfer confirms and the destination has received the stablecoins |

See [webhooks](/learn/webhooks) for signature verification and full payload details.

## Related

* [Transfer quotes](/stablecoin/transfer-quotes): lock in the amount, token, network, and destination before executing a transfer
* [Transfer](/stablecoin/transfer): the transfer concept and how it fits alongside on-ramp and off-ramp
* [Managed wallets](/stablecoin/wallets): create and fund the source wallet for a transfer
* [Blockchain wallets](/stablecoin/blockchain-wallets): register an external destination address
