> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getpara.com/llms.txt
> Use this file to discover all available pages before exploring further.

# createBraleAchCheckout

> Starts a pay-by-bank (ACH) checkout that buys USDC for a Para wallet

async

Starts a pay-by-bank (ACH) checkout that buys USDC for one of the signed-in user's Para wallets.

Copy method signature

### Returns

`BraleAchCheckoutStart`

The checkout. When `nextAction` is `"launch_plaid"`, it includes the one-time `plaidLinkToken`. When `nextAction` is `"confirm_deposit"`, it includes the user's `savedBank`.

## Usage

```typescript theme={null}
const checkout = await para.createBraleAchCheckout({
  walletId: wallet.id,
  amountUsd: "100.00",
  customer: { legalName: "Jane Doe" },
});

if (checkout.nextAction === "launch_plaid") {
  openPlaidLink(checkout.plaidLinkToken);
} else {
  showSavedBank(checkout.savedBank);
}
```

```typescript Signature theme={null}
createBraleAchCheckout(params: {
  walletId: string;
  assetImplementationId?: string;
  amountUsd: string;
  customer?: BraleAchCustomer;
  testMode?: boolean;
  linkNewBank?: boolean;
}): Promise<BraleAchCheckoutStart>
```

The response is a [`BraleAchCheckout`](https://docs.getpara.com/v3/references/core/getbraleachcheckout#types) in one of two forms:

```typescript theme={null}
type BraleAchCheckoutStart =
  | (BraleAchCheckout & { stage: "link_required"; nextAction: "launch_plaid"; plaidLinkToken: string })
  | (BraleAchCheckout & { stage: "linked"; nextAction: "confirm_deposit"; savedBank: BraleAchSavedBank });
```

* With `"launch_plaid"`, open Plaid Link with `plaidLinkToken`, then call [`linkBraleAchBank`](https://docs.getpara.com/v3/references/core/linkbraleachbank) with the public token that Plaid returns.
* With `"confirm_deposit"`, show the user `savedBank`. When the user confirms, call [`submitBraleAchDeposit`](https://docs.getpara.com/v3/references/core/submitbraleachdeposit).

> [!NOTE]
>
> The method needs a signed-in user who isn't a guest, and the wallet must belong to that user. Starting a checkout for a wallet replaces that wallet's open checkout.

> [!WARNING]
>
> Pay by bank supports web apps only. ACH must be on for your API key in the Developer Portal, and production keys also need a paid plan. See [Pay by Bank (ACH)](https://docs.getpara.com/v3/react/guides/customization/developer-portal-payments.md#pay-by-bank-ach).

For a full React example with Plaid Link, see [Pay by bank (ACH)](https://docs.getpara.com/v3/react/guides/customization/fiat-ramps.md#pay-by-bank-ach).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.