# Deposits

A deposit is a standalone crypto top-up to a merchant balance. You create it through the **API** (`POST /deposit`) or the **admin panel**; Cryptonly returns a unique deposit address, a QR code, a payment link, and `expiresAt`.

The customer sends crypto to that **unique deposit address**, used for this deposit only. Cryptonly monitors the blockchain, runs compliance checks, and settles the payment into your merchant balance.

Deposit amounts are expressed in **crypto**. The customer can send any amount at or above the currency minimum. There is no fixed total.

## Amount

* The minimum for a currency is `minDepositAmount` on [`GET /currencies`](https://docs.cryptonly.net/guides/supported-currencies.md).
* The [network fee](https://docs.cryptonly.net/guides/fees-and-commissions.md#deposit-network-fee) is fixed when the deposit is created and withheld from the received amount. Commission is taken on what remains.
* Pass `orderId` on `POST /deposit`. It is the idempotency key.
* The payment link is valid for **20 minutes** by default. A payment that arrives within **4 hours** after `expiresAt` is still processed — see [Late payments](https://docs.cryptonly.net/guides/deposits/statuses.md#late-payments).
* Each top-up needs its own deposit. Create a new one when the same customer pays again.

## How status and webhooks work

Deposits have [statuses](https://docs.cryptonly.net/guides/deposits/statuses.md). Cryptonly sends a signed `deposit.statusChanged` webhook when a standalone deposit's **status** changes.

Important behaviors for integrators:

* On create, the deposit is `created`: the address is already assigned, and Cryptonly is waiting for an on-chain payment.
* When an on-chain transaction is first detected, the deposit moves to `processing`, then to `completed` (balance credited) or `suspended` (not credited).
* `suspended` is a final status for a standalone deposit. The funds stay on the deposit address.
* A deposit that ends in `expired` can still move to `processing` if a payment reaches its address within **4 hours** — see [Late payments](https://docs.cryptonly.net/guides/deposits/statuses.md#late-payments).

Invoice-linked deposits do **not** send `deposit.statusChanged` webhooks. Listen for `invoice.statusChanged` for checkout payments.

## Related pages

- [Processing lifecycle](https://docs.cryptonly.net/guides/deposits/processing-lifecycle.md): Full step-by-step flow
- [Statuses](https://docs.cryptonly.net/guides/deposits/statuses.md): Status table and integration notes
- [Webhooks](https://docs.cryptonly.net/api-reference/webhooks.md): deposit.statusChanged verification and payloads
- [Invoices](https://docs.cryptonly.net/guides/invoices.md): Checkout payments use invoice webhooks instead
