---
url: /docs/stablecoin/payout-managed-wallet.md
description: >-
  Fund a payout from a BlindPay-managed wallet with a single REST call, no
  on-chain approval or signing involved.
---

This is the simplest way to fund a [payout](/stablecoin/payouts): pull the stablecoins from a [managed wallet](/stablecoin/wallets). BlindPay already custodies the balance, so there is no `approve` call, no signed transaction, and no delegation. You create a payout quote and execute the payout, two REST calls.

If the funds live in a wallet you or your customer controls instead, see the blockchain wallet tutorials: [EVM](/stablecoin/payout-evm), [Stellar](/stablecoin/payout-stellar), or [Solana](/stablecoin/payout-solana).

## Prerequisites

You also need:

* A [customer](/learn/customers) with `kyc_status: "approved"`
* A [bank account](/stablecoin/bank-accounts) (`ba_...`) as the payout destination
* A [managed wallet](/stablecoin/wallets) (`bl_...`) holding enough stablecoins to cover the payout

On a development instance, the easiest way to fund the wallet is to create it on `solana_devnet` and [mint USDB](/stablecoin/mint-usdb#mint-on-solana) straight to its address.

### Create a payout quote

A quote locks the conversion rate and fees for 5 minutes. The `network` and `token` describe the funding wallet: match them to the managed wallet's network and the token it holds.

```bash [cURL]
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/quotes \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "bank_account_id": "ba_000000000000",
    "currency_type": "sender",
    "cover_fees": false,
    "request_amount": 5000,
    "network": "solana_devnet",
    "token": "USDB"
  }'
```

`request_amount` is an integer in minor units, so `5000` here means $50.00. Save the quote ID (`qu_...`). The response also includes a `contract` object with approval data; you can ignore it, it only matters for external wallets.

### Execute the payout

Execute the payout by passing the quote ID and the managed wallet's `address` as the funding source. Because BlindPay custodies the wallet, this single call moves the funds.

```bash [cURL]
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/payouts/evm \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "quote_id": "qu_000000000000",
    "sender_wallet_address": "YOUR_MANAGED_WALLET_ADDRESS"
  }'
```

The response returns the payout with `status: "processing"`. On a development instance it completes automatically a few seconds later and fires a `payout.complete` webhook.

The endpoint is `/payouts/evm` regardless of the managed wallet's network; it handles managed wallets on every supported chain, including Solana.

That's a complete payout. To send another, create a new quote and execute again; each quote is single-use.

## Related

* [Payouts](/stablecoin/payouts): status lifecycle, cover\_fees, testing sentinels, and webhooks
* [Managed wallets](/stablecoin/wallets): the funding wallet entity, including balance and inbound webhooks
* [Payout quotes](/stablecoin/payout-quotes): full request and response fields
* [Payout with EVM](/stablecoin/payout-evm): the external-wallet alternative on EVM chains
