Configure

Create and fund accounts

API Documentation

An account holds your organization's money as stablecoins, on more than one chain (USDC on Base and Arc, and OUSD on Base), and every account holds USDC from the moment you open it. Once your organization is verified, an account can also receive USD and pay bank accounts by ACH and wires. Those bank transfers convert between USD and USDC on Base, which you can read more about in On- and off-ramp stablecoins. Accounts are free to open and have no minimum balance.

Open an account

Only admins can open accounts. To open one in the console:

  1. Click Add account.
  2. Enter a name of up to 40 characters. Account names are unique within an organization, so each name can only be used once.
  3. Click Create account.

Each account gets its own deposit address. Your organization's first account is created when an admin sets up wallet security during onboarding, so you'll already have one account when you start.

An organization can have up to 10 accounts.

Networks and rails

Live and sandbox organizations hold different money on different networks. Below is what each one supports:

Live organization Sandbox
Networks Base and Arc Base Sepolia and Arc testnet
Stablecoins USDC on Base and Arc, and OUSD on Base Test USDC on both (no OUSD)
Fiat USD over ACH and wires Not available
x402 and MPP payments Base where enabled; Arc support is rolling out Base Sepolia only

Bank deposits are turned on per account, and only an admin can turn them on. See Receive USD for the steps.

Deposit

To fund an account from the console, click Deposit, choose the account, and choose Stablecoin deposit or Bank transfer (ACH or wire). Then follow the instructions on screen.

An account has one deposit address, and it receives on each of the account's networks (USDC on Base and Arc, and OUSD on Base). Only send those stablecoins on those networks, since assets sent on any other network may be lost.

Your agent can read an account's deposit address for a network (base or arc) with the CLI:

Shell
catena accounts deposit-address acct_... --network base

Balances

Your agent can check an account's balances with:

Shell
catena accounts balance acct_...

The response includes the following balance fields:

  • .balances.total: Everything the account holds (in USD) on every network.
  • .balances.available: The unreserved funds on the networks this agent may use. We recommend sizing a payment against this balance.
  • .balances.byNetwork[]: The total and available balances for each network the agent may use.
  • .balances.holdings[]: The same balances for each network and stablecoin (e.g., USDC and OUSD on Base). It's present when your organization holds a stablecoin besides USDC.

available is zero while the account is not active. In addition, the per-network rows can add up to less than total when the account also holds money on a network the agent may not use.

For example, let's say an account holds $300.00 on Base and $200.00 on Arc, and the agent may only use Base. total is $500.00, but byNetwork[] will only include a row for Base, so the per-network rows add up to $300.00.

Send or transfer

There are two ways to move money out of an account. A send pays a counterparty's rail, and a transfer moves money between two of your own accounts:

Shell
catena send --rail cpr_... --amount 125.00 --method on-chain
catena transfer --from acct_... --to acct_... --amount 125.00

Amounts are in USD, written as plain decimal strings (e.g., 100.50). The method must match the rail: on-chain needs a wallet rail, and ach and wire need a bank rail. If they do not match, the send will fail with rail_method_mismatch. The minimum on-chain send is $0.01. For bank payments, see Send wires and ACH.

Automatic bridging

You don't need to keep track of which chain your balance is on. When a payment goes out on a chain where the account doesn't hold enough, we'll bridge the money over from your other chains automatically (and convert between USDC and OUSD if needed), all under the same intent. You can follow the payment with catena intents get and its .movement field. See Approval and execution for details.

Note

Networks not yet available

If a network is not available for payments yet, the send will return wallet_send_action_not_yet_enabled. In that case, we recommend that your agent tell the user and not retry the send.

Updated October 29, 2026 View as Markdown