# Deposit Accounts

> Static deposit addresses and NGN virtual accounts per customer.

Section: Accepting Payments
Source: https://coincircuit.io/docs/guides/deposit-accounts/
Interactive version: https://coincircuit.io/api-reference?tab=guides&guide=deposit-accounts

## API reference

- POST `/api/v1/deposits/accounts`: [Create a deposit account](https://coincircuit.io/api-reference/#tag/deposits/POST/api/v1/deposits/accounts)
- POST `/api/v1/deposits/accounts/{id}/identities`: [Issue a deposit identity](https://coincircuit.io/api-reference/#tag/deposits/POST/api/v1/deposits/accounts/{id}/identities)
- GET `/api/v1/deposits`: [List deposits](https://coincircuit.io/api-reference/#tag/deposits/GET/api/v1/deposits)

A deposit account gives one customer a fixed place to send you money again and again: a permanent crypto address on each blockchain, and a bank account number for fiat transfers. The customer reuses the same details for every payment, and CoinCircuit detects each deposit, ties it to that customer, and credits it to your balance.

![How deposit accounts work: each account issues static crypto addresses and an NGN virtual account, and every deposit is routed to your balance](https://coincircuit.io/images/features/deposit-accounts.png)

## How it works
1. Create a deposit account with `POST /api/v1/deposits/accounts` (pass a `customerId`, or omit it for your parent account).
2. Issue an identity with `POST /api/v1/deposits/accounts/{id}/identities`: a `static_deposit_address` on a chain, or an `ngn_virtual_account`.
3. Share the address or account number with your customer.
4. Track incoming funds with `GET /api/v1/deposits` and `GET /api/v1/deposits/{id}`.

## Identity fields
| Field | Type | Required | Description |
| :--- | :--- | :--- | :--- |
| `type` | string | Yes | `static_deposit_address` or `ngn_virtual_account`. |
| `chain` | string | Conditional | Required for a static address: `ethereum`, `solana`, `bsc`, `tron`, `base`, or `arbitrum`. |
| `bvn` | string | Conditional | BVN of the account holder (11 digits). Required for an NGN virtual account. |
| `currency` | string | Conditional | `NGN`. Used for virtual accounts. |

## Supported tokens
Each static address accepts these tokens on its blockchain:

| Blockchain | Tokens |
| :--- | :--- |
| Ethereum | ETH, USDT, USDC |
| Solana | SOL, USDT, USDC |
| BSC | BNB, USDT, USDC |
| Tron | USDT, TRX |
| Base | ETH, USDC |
| Arbitrum | ETH, USDT, USDC |

USDT and USDC deposits credit your balance in the same currency. Any other token is automatically converted to USDT and credited to your USDT balance. The deposit record keeps the original token and amount, with a `conversion` showing the rate and the USDT credited.

## Use cases
- Neobanks giving each user a funding address
- Customer wallets and account funding
- Recurring inbound transfers and collections
- Treasury and OTC desks aggregating from many senders

> Static addresses are supported on Ethereum, Solana, BSC, Tron, Base, and Arbitrum. Because each identity is fixed per customer, you always know who sent what.
