# Send payouts by paper check

Send payouts to your recipients by paper check with the Payout Intents or Outbound Payments API.

Send a USD payout from your financial account to a recipient as a paper check using the Payout Intents API or the Outbound Payments API. You can customize the check with a signature, a memo, and attachments.

Paper checks are in private preview. Contact your Stripe representative to request access.

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).

To create a `PayoutIntent`, your key needs the `Money Management Payout Intents: Write` permission.

To send a paper check, request the required capabilities, save the check destination as a payout method, then create a `PayoutIntent` or an `OutboundPayment`.

1. **Request paper check capabilities**

   Use [Update Account](https://docs.stripe.com/api/v2/core/accounts/update.md?api-version=preview) to request paper check capabilities on the money manager account and the recipient account before creating a check payout method. Set the following parameter to `true` on each account:

| Account                                                                                                                   | Request parameter                                                                   |
| ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| The `Account` with the `money_manager` configuration that owns the financial account you use in `from.financial_account`. | `configuration.money_manager.capabilities.outbound_payments.paper_checks.requested` |
| The `Account` with the `recipient` configuration that you use in `to.recipient`.                                          | `configuration.recipient.capabilities.paper_checks.requested`                       |

   Include `requirements` and `configuration.money_manager` in the `include` array when updating the money manager account. For the recipient account, include `requirements` and `configuration.recipient`. These values populate the requirements and capability statuses in each response.

   A capability can take time to activate. Collect and submit the information listed in each account’s `requirements` using the Accounts v2 API. The recipient’s identity requirements are separate from the `payee_name` and `mailing_address` you provide when saving the check destination.

2. **Save the check destination**

   Create a reusable payout method with an [OutboundSetupIntent](https://docs.stripe.com/api/v2/money-management/outbound-setup-intents/create.md?api-version=preview). Set `payout_method_data.type` to `check_send` and `usage_intent` to `payment`. Provide the name printed on the check in `payout_method_data.check_send.payee_name`, up to 35 characters, and the US mailing address in `payout_method_data.check_send.mailing_address`.

   For a recipient of a connected account, set the `Stripe-Context` header to `{{CONNECTED_ACCOUNT_ID}}/{{RECIPIENT_ACCOUNT_ID}}`. For a recipient of your platform, use `{{RECIPIENT_ACCOUNT_ID}}` alone. Store your API key securely. See [best practices for managing secret keys](https://docs.stripe.com/keys-best-practices.md).

   ```curl
   curl -X POST https://api.stripe.com/v2/money_management/outbound_setup_intents \
     -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
     -H "Stripe-Version: 2026-10-28.preview" \
     -H "Stripe-Context: {{CONTEXT_ID}}" \
     --json '{
       "payout_method_data": {
           "type": "check_send",
           "check_send": {
               "payee_name": "Jenny Rosen",
               "mailing_address": {
                   "line1": "27 Fredrick Ave",
                   "city": "Brothers",
                   "state": "OR",
                   "postal_code": "97712",
                   "country": "US"
               }
           }
       },
       "usage_intent": "payment"
     }'
   ```

   After successful creation, the `OutboundSetupIntent` has status `succeeded`. Save the response’s `payout_method.id` (`chksend_...`) to use as `to.payout_method` for each check sent to that destination. A recipient can have multiple check payout methods.

3. **Send the check**

   Before sending a check, [retrieve each account](https://docs.stripe.com/api/v2/core/accounts/retrieve.md?api-version=preview) with the same `include` values used when requesting capabilities. Confirm that both of these capability statuses are `active`:

   - Money manager: `configuration.money_manager.capabilities.outbound_payments.paper_checks.status`
   - Recipient: `configuration.recipient.capabilities.paper_checks.status`

   If either capability isn’t `active`, review that account’s `requirements` and the capability’s `status_details`. Don’t send the check until both capabilities are `active`.

   Set `to.payout_method` to the saved `chksend_...` ID and provide a sender signature, up to 30 characters, in `to.payout_method_options.check_send.signature`. You can also provide a memo, up to 100 characters, in `to.payout_method_options.check_send.memo`. Stripe prints both on the check. Set `to.payout_method_options.check_send.shipping_speed` to `standard` or `priority`. The default is `standard`.

   For a connected account’s payment, set `Stripe-Context` to the connected account ID alone. Omit the header to send from your platform’s financial account.

   #### Payout Intents API

   Create a [PayoutIntent](https://docs.stripe.com/api/v2/money-management/payout-intents/create.md?api-version=preview) with the saved payout method and check options.

   ```curl
   curl -X POST https://api.stripe.com/v2/money_management/payout_intents \
     -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
     -H "Stripe-Version: 2026-10-28.preview" \
     -H "Stripe-Context: {{CONTEXT_ID}}" \
     --json '{
       "from": {
           "financial_account": "{{FINANCIALACCOUNTID_ID}}",
           "currency": "usd"
       },
       "to": {
           "recipient": "{{RECIPIENTACCOUNTID_ID}}",
           "payout_method": "chksend_...",
           "payout_method_options": {
               "check_send": {
                   "signature": "Jenny Rosen",
                   "memo": "Streamer earnings",
                   "shipping_speed": "standard"
               }
           }
       },
       "amount": {
           "value": 1999,
           "currency": "usd"
       },
       "description": "Streamer earnings"
     }'
   ```

   Follow the [PayoutIntent lifecycle guidance](https://docs.stripe.com/global-payouts/send-money.md?dashboard-or-api=api&payout-api=payout-intents#submit-a-payout-with-payoutintents) to confirm the payout when required, track its status, and handle failures.

   #### Outbound Payments API

   ```curl
   curl -X POST https://api.stripe.com/v2/money_management/outbound_payments \
     -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
     -H "Stripe-Version: 2026-10-28.preview" \
     -H "Stripe-Context: {{CONTEXT_ID}}" \
     --json '{
       "from": {
           "financial_account": "{{FINANCIALACCOUNTID_ID}}",
           "currency": "usd"
       },
       "to": {
           "recipient": "{{RECIPIENTACCOUNTID_ID}}",
           "payout_method": "chksend_...",
           "payout_method_options": {
               "check_send": {
                   "signature": "Jenny Rosen",
                   "memo": "Streamer earnings",
                   "shipping_speed": "standard"
               }
           }
       },
       "amount": {
           "value": 1999,
           "currency": "usd"
       },
       "description": "Streamer earnings"
     }'
   ```

## Add attachments to a paper check 

You can include a PDF attachment with a paper check, such as an invoice or receipt. Stripe supports PDF files only. The maximum page count depends on the shipping speed: 5 pages for standard shipping and 50 pages for priority shipping.

Upload the file with the [Files API](https://docs.stripe.com/api/files.md) and set `purpose` to `check_send_attachment`. For a connected account’s payment, include the `Stripe-Account` header with the ID of the connected account that owns the sending financial account. Omit the header for your platform’s payment.

```bash
curl https://files.stripe.com/v1/files \
  -u "{{SECRET_KEY}}:" \
  -H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}" \
  -F purpose=check_send_attachment \
  -F "file=@/path/to/document.pdf"
```

Pass the returned file ID in `to.payout_method_options.check_send.attachment_file` when you create the `PayoutIntent` or `OutboundPayment`.

#### Payout Intents API

```curl
curl -X POST https://api.stripe.com/v2/money_management/payout_intents \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-10-28.preview" \
  -H "Stripe-Context: {{CONTEXT_ID}}" \
  --json '{
    "from": {
        "financial_account": "{{FINANCIALACCOUNTID_ID}}",
        "currency": "usd"
    },
    "to": {
        "recipient": "{{RECIPIENTACCOUNTID_ID}}",
        "payout_method": "chksend_...",
        "payout_method_options": {
            "check_send": {
                "signature": "Jenny Rosen",
                "memo": "Streamer earnings",
                "shipping_speed": "standard",
                "attachment_file": "{{FILE_ID}}"
            }
        }
    },
    "amount": {
        "value": 1999,
        "currency": "usd"
    },
    "description": "Streamer earnings"
  }'
```

#### Outbound Payments API

```curl
curl -X POST https://api.stripe.com/v2/money_management/outbound_payments \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-10-28.preview" \
  -H "Stripe-Context: {{CONTEXT_ID}}" \
  --json '{
    "from": {
        "financial_account": "{{FINANCIALACCOUNTID_ID}}",
        "currency": "usd"
    },
    "to": {
        "recipient": "{{RECIPIENTACCOUNTID_ID}}",
        "payout_method": "chksend_...",
        "payout_method_options": {
            "check_send": {
                "signature": "Jenny Rosen",
                "memo": "Streamer earnings",
                "shipping_speed": "standard",
                "attachment_file": "{{FILE_ID}}"
            }
        }
    },
    "amount": {
        "value": 1999,
        "currency": "usd"
    },
    "description": "Streamer earnings"
  }'
```
