# Send wires and ACH

[API Documentation](https://docs.catena.com/api/create-intent.md)

Catena allows your agents and admins to pay any US bank account by ACH or wires.
When you send a bank payment, Catena draws USDC from the paying account and the
counterparty receives USD in their bank account (an off-ramp). You can read more
about how that conversion works in
[On- and off-ramp stablecoins](https://docs.catena.com/on-and-off-ramps.md).

Bank payments are only available to [verified organizations](https://docs.catena.com/fiat-access.md). If
your organization has not completed verification, ACH and wire sends will fail
with `kyb_verification_required`.

## Bank rails

A counterparty's bank rail stores the details of a US bank account. A single
bank rail can receive both ACH and wire payments, so you don't need a separate
rail for each method.

| Field          | Format                                                                                                                             |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Bank name      | Required.                                                                                                                          |
| Routing number | 9 digits.                                                                                                                          |
| Account number | 4 to 17 digits.                                                                                                                    |
| Account type   | Checking or savings. Defaults to checking.                                                                                         |
| Address        | The account holder's street address, including a street number, city, two-letter state, and ZIP code. P.O. boxes are not accepted. |

Catena pays US bank accounts only (international wires are not supported).

You can enter the bank details yourself when you
[create the counterparty](https://docs.catena.com/counterparties.md). If you do not have them, you can ask
the counterparty to fill them in:

```sh
catena counterparties request-details cp_... --bank
```

We email the counterparty a secure form, so the counterparty must have an email
address on file. Each request expires after 7 days, and a counterparty can only
have one open request at a time.

## Send a payment

To send a bank payment from the CLI, pass the counterparty's bank rail and
choose `ach` or `wire` as the method:

```sh
catena send --rail cpr_... --amount 125.00 --method ach
catena send --rail cpr_... --amount 4800.00 --method wire --memo "Invoice 1042"
```

The `ach` and `wire` methods require a bank rail. If you pass a wallet rail
instead, the send will fail with `rail_method_mismatch`.

Every send is an [intent](https://docs.catena.com/intents.md), which means your agent's
[policy](https://docs.catena.com/policies.md) applies to it like any other action. Depending on the
policy, the payment may be blocked or held for an admin's approval.

Admins can also send bank payments from the console:

1. Click **Send**, then choose the account and the counterparty.
2. Enter the amount and choose **ACH** or **Wire**.
3. Click **Review** and check the payment details.
4. Hold **Send** to submit the payment.

## Fees and timing

ACH and wires have the same minimum, but they differ in cost and speed:

|         | ACH                  | Wire                        |
| ------- | -------------------- | --------------------------- |
| Minimum | $1.00                | $1.00                       |
| Fee     | None                 | $25.00, added to the amount |
| Arrives | 1 to 2 business days | The same business day       |

For example, if your agent wires $4,800.00 to Bea's Beans, $4,825.00 leaves your
account (the $4,800.00 payment plus the $25.00 wire fee). The same payment by
ACH would cost nothing extra but would take longer to arrive.

Note that arrival times are estimates.

## Memos

The `--memo` flag sets the payment reference that the counterparty sees (e.g.,
an invoice number). ACH and wires allow different lengths:

- **ACH:** up to 10 letters, numbers, and spaces.
- **Wire:** up to 280 characters.

If an admin has set a default ACH memo in **Settings**, your agent's ACH
payments carry that memo instead of the `--memo` value. Wires always carry
`--memo`. To keep an internal note for your own records, use `--description` (it
stays in Catena).

## Status and returns

You can follow a bank payment with `catena intents get int_...`. The intent's
status moves from `pending` to `processing`, and then ends as `completed`,
`blocked`, or `failed`.

If the receiving bank returns the payment, the intent will end as `failed` and
the USDC will come back to the paying account. Catena does not show return
reasons.

## Limits and errors

We limit bank payments to 60 a minute per organization. The limit is shared by
all of your organization's agents and members, so one busy agent can use it up
for everyone.

| Code                            | Cause                                                          | What to do                                                    |
| ------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------- |
| `kyb_verification_required`     | Your organization is not verified yet.                         | Ask an admin to [verify your organization](https://docs.catena.com/fiat-access.md).     |
| `rail_method_mismatch`          | `ach` or `wire` was sent to a wallet rail.                     | Use a bank rail, or send with `--method on-chain`.            |
| `rate_limited` (429)            | Your organization sent more than 60 bank payments in a minute. | Wait for the time in `Retry-After`, then send again.          |
| `temporarily_unavailable` (503) | Catena cannot accept bank payments right now.                  | Try again later, and let the user know if the error persists. |

Missing something you'd find helpful? Send us an email at <support@catena.com>.

## Related

- [Manage counterparties and vendors](https://docs.catena.com/counterparties.md): Add the people and businesses you pay, request their payment details, and find the rail ID your agent sends to.
- [On- and off-ramp stablecoins](https://docs.catena.com/on-and-off-ramps.md): Receive USD by bank transfer as USDC, and pay bank accounts in USD from your account's USDC.
- [Get USD access](https://docs.catena.com/fiat-access.md): Verify your organization as a business or as an individual so that it can send and receive USD by ACH and wires.
- [Intents and retries](https://docs.catena.com/intents.md): Learn how an intent moves through its statuses and resolutions, which fields explain its result, and how to retry safely with idempotency keys.
