## pay

Send an instant transfer from your financial account to another business identified by a Stripe profile handle or network ID.

In an interactive terminal, you can omit the recipient, amount, and currency and enter them in the interactive form. With `--agent` or `--json`, you must provide all three arguments.

The command lists your eligible open financial accounts. If one account is eligible, the command selects it automatically. If multiple accounts are eligible, interactive sessions show a selector.
Agent and scripted runs should pass `--financial-account`.

Agent and JSON modes return a `confirmation_required` response before sending money. Review the response with the user, then rerun the same command with `--yes`.

Some transfers require approval. Follow the Dashboard link and instructions returned by the command. Interactive runs can wait up to five minutes for approval. If the output includes a
`next_step.command`, run that exact command after approval. Don't change its recipient, amount, currency, or financial account.

Supported currencies are `usd`, `gbp`, and `usdc`.

**Command:** `stripe pay [recipient] [amount] [currency]`

### Arguments

- `[recipient]`
  Destination Stripe profile handle, such as `@recipient`, or profile network ID, such as `profile_...`. Optional in an interactive terminal and required with `--agent` or
          `--json`.

- `[amount]`
  Positive decimal amount in major units, for example `10.00`. Optional in an interactive terminal and required with `--agent` or `--json`. Precision is currency-specific.

- `[currency]`
  Currency code to transfer. Supported values are `usd`, `gbp`, and `usdc`. Optional in an interactive terminal and required with `--agent` or `--json`.

### Flags

- `--internal-note, -n <note>`
  Optional internal note that isn't shown to the recipient. Must contain only ASCII characters and be 50 characters or fewer.

- `--memo, -m <memo>`
  Optional recipient-facing memo. Must contain only ASCII characters and be 22 characters or fewer.

- `--financial-account <financial-account>`
  Source financial account ID, such as `fa_...`. The account must be open, eligible for network transfers, and support the selected currency.

- `--yes, -y`
  Confirm the transfer without an interactive prompt. Review the transfer details before using this option.

- `--agent, --json`
  Use non-interactive, machine-readable JSON output. Without `--yes`, the command returns `confirmation_required` and doesn't send money.

- `--dry-run`
  Validate and review the transfer without creating a profile, recipient, approval request, or outbound payment.

- `--approval-id <approval-request>`
  Resume a previously approved request. Use the exact command returned in `next_step.command`; the recipient, amount, currency, and financial account must match the approval.

- `--create-profile-if-missing`
  Create a Stripe profile if the authenticated account doesn't have one. Requires `--profile-handle`, `--profile-display-name`, and `--profile-email`.

- `--profile-handle <handle>`
  Stripe profile handle to create with `--create-profile-if-missing`.

- `--profile-display-name <display-name>`
  Display name for the Stripe profile created with `--create-profile-if-missing`.

- `--profile-email <email>`
  Email address for the Stripe profile created with `--create-profile-if-missing`.

### Examples

**Enter transfer details interactively**

```sh
stripe pay
```

**Send a transfer to a Stripe profile handle**

```sh
stripe pay @profile-username 10.00 usd
```

**Send a transfer using a profile network ID**

```sh
stripe pay profile_... 10.00 usd
```

**Review a transfer without sending money**

```sh
stripe pay @profile-username 10.00 usd \
  --financial-account fa_... \
  --internal-note "Invoice 1234" \
  --memo "PROFILE PAY" \
  --dry-run
```

**Review a transfer as JSON**

```sh
stripe pay @profile-username 10.00 usd \
  --financial-account fa_... \
  --agent
```
