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

# Deposits and quotes

## Deposit from a linked bank

`POST /api/v1/deposits` · scope `trade`

Pulls money by ACH from one of your [linked banks](https://docs.capital.ai/funding/linked-banks.md) into your account.

The account must have finished onboarding; otherwise the request is refused with `403`.

| Field | Type | Description |
| - | - | - |
| `linkedAccountId` | string | From [`GET /api/v1/linked-accounts`](linked-banks.md#linked-banks). |
| `amountUsd` | number | Amount in USD, rounded to the cent. At least `0.01`. |
| `idempotencyKey` | string | Your unique ID for this deposit. A retry with the same key refers to the same deposit and doesn't start a second one. |

`201`:

```json theme={null}
{ "transactionId": "…", "status": "in_progress" }
```

`status` is `in_progress` until the ACH settles. Follow it in [`GET /api/v1/transactions`](activity.md#transactions).

```bash REST theme={null}
curl -X POST "$CAPITALAI_API_URL/api/v1/deposits" \
  -H "Authorization: Bearer $CAPITALAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"linkedAccountId": "lba_123", "amountUsd": 250, "idempotencyKey": "rent-2026-10"}'
```

```ts TypeScript theme={null}
const res = await fetch(`${process.env.CAPITALAI_API_URL}/api/v1/deposits`, {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.CAPITALAI_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"linkedAccountId": "lba_123", "amountUsd": 250, "idempotencyKey": "rent-2026-10"}),
});
console.log(await res.json());
```

## Quote a transfer

`POST /api/v1/transfers/quote` · scope `trade`

The fee and arrival time for a transfer, without sending it. Sending is done in the app.

| Field | Type | Description |
| - | - | - |
| `rail` | `ach` \| `blockchain` | How it would move. `wire` and `internal` are refused with `400` for now. |
| `asset` | `USD` \| `USDC` | `USD` for `ach`, `USDC` for `blockchain`. |
| `amountUsd` | number | Amount in USD, rounded to the cent. At least `0.01`. |
| `toContactAccountId` | string \| null | `ach`: one of your [linked banks](https://docs.capital.ai/funding/linked-banks.md#linked-banks). `blockchain`: a contact's saved wallet. |
| `toWallet` | object \| null | `blockchain` only, instead of a saved wallet: `{ "address", "network" }`. `network` is `Solana`, `Ethereum`, `Base`, `Ink` or `Sui`. |

```json theme={null}
{ "feeUsd": 0, "estimatedArrival": "…" }
```

```bash REST theme={null}
curl -X POST "$CAPITALAI_API_URL/api/v1/transfers/quote" \
  -H "Authorization: Bearer $CAPITALAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"rail": "ach", "asset": "USD", "amountUsd": 500, "toContactAccountId": "lba_123"}'
```

```ts TypeScript theme={null}
const res = await fetch(`${process.env.CAPITALAI_API_URL}/api/v1/transfers/quote`, {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.CAPITALAI_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"rail": "ach", "asset": "USD", "amountUsd": 500, "toContactAccountId": "lba_123"}),
});
console.log(await res.json());
```


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