# On- and off-ramp stablecoins

Catena accounts hold stablecoins (USDC and OUSD) and have no USD balance.
Instead, money is converted between USD and USDC whenever it moves between your
accounts and a bank:

- **On-ramp:** When an account receives USD by ACH or wires, the USD is
  converted and credited to the account as USDC.
- **Off-ramp:** When an account pays a bank account by ACH or wires, USDC leaves
  the account and the counterparty receives USD.

## Receive USD

To receive USD into an account, you'll turn on bank transfers for the account
and then send money from your bank to the account's bank details:

1. Turn on bank transfers: An admin opens the account, clicks **Details**, and
   turns on **Enabled** under **Bank transfers**.
2. Find the bank details: Click **Deposit**, choose the account, and choose
   **Bank transfer (ACH or wire)**.
3. Send the money: Send USD from your bank to the details on the **Bank transfer
   to** screen, which include the bank name, bank address, routing number,
   account number, beneficiary name, and beneficiary address.

If an admin chooses **Bank transfer (ACH or wire)** in step 2, we turn on bank
transfers for that account at the same time. Note that the switch controls
incoming bank transfers only, and turning it off hides the bank details in the
console.

For example, when Cora's Coffee sends a wire from its bank to one of its Catena
accounts, we credit the deposit to that account as USDC on Base. We only settle
deposits of $1.00 or more. In **Activity**, the deposit shows with the method
ACH or Wire, although for a short time it can show as a stablecoin deposit
first.

> [!NOTE] **Bank details and agents**
>
> An agent cannot read an account's bank details. If your agent runs
> `catena accounts deposit-address`, it gets an on-chain address.

## Pay in USD

Your agent pays a bank account by sending to the counterparty's bank rail:

```sh
catena send --rail cpr_... --amount 250.00 --method ach
```

See [Send wires and ACH](https://docs.catena.com/wires-and-ach.md) for methods, minimums, and memos.

Once the policy allows the send, and after approval if the policy requires it,
the payment goes through the following steps:

1. Conversion: The account's USDC on Base is sent for conversion. If the money
   is USDC on Arc, or OUSD, we first move or convert it to USDC on Base, under
   the same intent.
2. Payout: The counterparty receives USD by ACH or wires.

The account's funds are held until the USDC transfer confirms on-chain. If the
bank returns the payment, the USDC will come back to the same account. However,
if a payment fails after conversion starts, it will go to manual review, and the
intent will stay `processing` until it is resolved. You can follow the payment
with `catena intents get int_...`, and you can read more about statuses in
[Intents and retries](https://docs.catena.com/intents.md).

## Related

- [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.
- [Send wires and ACH](https://docs.catena.com/wires-and-ach.md): Pay US bank accounts by ACH or wires, with the bank details, fees, timing, memos, and statuses for each.
- [Create and fund accounts](https://docs.catena.com/accounts.md): Open an account, fund it with stablecoins or a bank transfer, read its balances, and send or transfer from it in live and sandbox organizations.
- [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.
