# Send payouts to Link users

Send USD payouts that recipients receive as USD stablecoins in their Link account.

USD payouts to Link are currently available to select businesses and countries. [Sign up for early access](https://docs.stripe.com/global-payouts/send-money/link.md#link_usd_payouts_preview) or contact your Stripe account manager to register interest.

### Get access to the preview for stablecoin payouts to Link users

Enter your email to request access.

```bash
curl https://docs.stripe.com/preview/register \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Referer: https://docs.stripe.com/global-payouts/send-money/link" \
  -d '{"email": "EMAIL", "preview": "link_stablecoin_payouts_preview"}'
```

Use USD payouts to Link to:

- **Reach recipients globally**: Pay recipients in USD stablecoins in any supported country.
- **Convert currency and onboard recipients**: Link handles both currency conversion and onboarding for you.
- **Send instant payouts**: Recipients receive funds immediately into their Link account.

After receiving a payout, recipients can hold funds in Link, transfer funds to a bank account in their local currency, or send funds to a crypto wallet.

For live requests, use a restricted API key with the required permissions. See [Use API keys](https://docs.stripe.com/global-payouts/send-money.md?dashboard-or-api=api#use-api-keys).

## Create a recipient

To send USD payouts to a Link recipient, first create (or retrieve) a recipient-configured v2 Account for the end user and request the `link` capability.

```curl
curl -X POST https://api.stripe.com/v2/core/accounts \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  --json '{
    "contact_email": "jenny.rosen@example.com",
    "display_name": "Jenny Rosen",
    "identity": {
        "country": "CO",
        "entity_type": "individual",
        "individual": {
            "given_name": "Jenny",
            "surname": "Rosen",
            "date_of_birth": {
                "year": 2000,
                "month": 1,
                "day": 1
            }
        }
    },
    "configuration": {
        "recipient": {
            "capabilities": {
                "link": {
                    "requested": true
                }
            }
        }
    },
    "include": [
        "identity",
        "configuration.recipient",
        "requirements"
    ]
  }'
```

## Create a Connection Session

Create a Connection Session to initiate the Link onboarding flow. Set `allowed_connection_types` to `link` and `requested_access` to `payout_methods`.

```curl
curl -X POST https://api.stripe.com/v2/core/connection_sessions \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  --json '{
    "account": "{{ACCOUNT_ID}}",
    "allowed_connection_types": [
        "link"
    ],
    "requested_access": [
        "payout_methods"
    ]
  }'
```

## Initiate Link onboarding on the client

Pass the `client_secret` from the Connection Session to `stripe.initLinkConnection()` in your front end. This launches a hosted webview that handles the full Link onboarding process.

```js
const stripe = Stripe('pk_live_...');

const { error, connectionSession } = await stripe.initLinkConnection({
  clientSecret: session.client_secret,
});

if (error) {
  console.error(error.message);
  return;
}

const connection = connectionSession.connection;

if (connection && connection.granted_access.includes('payout_methods')) {
  await internalApi.completePayoutSetup({ accountId: connection.account });
} else {
  // The user didn't complete the flow (for example, they closed the webview).
}
```

## Onboard in Link

When a recipient onboards, Stripe prompts them to create or connect a Link account. New Link users provide their name, date of birth, and residential address to onboard. Existing Link users with saved identity information onboard faster.

## Retrieve the Link payout method

After onboarding completes, Stripe automatically creates a payout method with `type: link` on the recipient’s account. Retrieve it on your server using the Payout Methods API.

The Stripe-Context header in this request must be the recipient’s Account ID.

```curl
curl https://api.stripe.com/v2/money_management/payout_methods \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  -H "Stripe-Context: {{CONTEXT_ID}}"
```

## Send the payout

Use the Link payout method’s ID as `to.payout_method` when you create a PayoutIntent. Stripe routes the payout to Link based on the payout method, so don’t set `to.currency` or `to.payout_method_options`.

```curl
curl -X POST https://api.stripe.com/v2/money_management/payout_intents \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  --json '{
    "from": {
        "financial_account": "{{FINANCIALACCOUNTID_ID}}",
        "currency": "usd"
    },
    "to": {
        "recipient": "{{ACCOUNTIDGLOBALPAYOUTS_ID}}",
        "payout_method": "{{PAYOUTMETHODID_ID}}"
    },
    "amount": {
        "value": 1999,
        "currency": "usd"
    },
    "description": "Streamer earnings"
  }'
```

Track and manage the PayoutIntent the same way as any other PayoutIntent. For example, if it moves to `requires_action`, see [Handle payouts that require action](https://docs.stripe.com/global-payouts/send-money.md?dashboard-or-api=api&payout-api=payout-intents#handle-payouts-that-require-action).

If you use the OutboundPayments API, create an OutboundPayment with the Link payout method’s ID as `to.payout_method` instead. See [Submit a payout](https://docs.stripe.com/global-payouts/send-money.md?dashboard-or-api=api&payout-api=outbound-payments#submit-a-payout).

## Store and withdraw the payout

Recipients receive funds in their Link account instantly. Funds are held in USD stablecoins within Link. Recipients can withdraw funds to their local bank account or a crypto wallet.
