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

# Crypto deposits

Deposits are a way for your customers to send you arbitrary amounts of cryptocurrency. Whenever they do so, funds will be added to your balance in CryptoProcessing. Typically, at this point you may want to add the received amount to the customer's balance on your site.

To start receiving deposits, create a [deposit address](#types-of-deposit-addresses) and give it to your customer. CryptoProcessing constantly monitors the blockchain for new transactions to all deposit addresses ever created. Your balance is updated as soon as the transaction gets the required number of [confirmations](/confirmations-and-limits). Optionally, CryptoProcessing can perform [automatic conversion](#deposits-with-conversion) of the received funds to another currency.

[Fees](/deposits/fees) and [minimal deposit amounts](/confirmations-and-limits) apply.

## Types of deposit addresses

CryptoProcessing processes crypto deposits in different ways, based on the way the deposit address was created.

* **System deposit addresses** are available via the [integration](/integration-guide/deposits) with your site. They can be found at **Addresses → System Addresses**.

  To create such an address, use the [API endpoint](/api-reference/endpoints/addresses-take). Enable [automatic conversion](#deposits-with-conversion) if necessary.

  Each incoming transaction to the address will trigger an [API callback](/api-reference/callbacks/deposit-callbacks).

* **Customer deposit addresses** are created and managed by you manually. They can be found at **Addresses → My Addresses**. Each address can have a name for easier search, e.g., "Deposits from John Doe".

  To create such an address, go to the **Addresses → My Addresses** tab and click **Create address**. Alternatively, select a cryptocurrency on the **Balances** tab, click **Receive**, then click **Create new address**. Enable [automatic conversion](#deposits-with-conversion) if necessary.

  CryptoProcessing does not send API callbacks for the transactions to customer deposit addresses.

* **Merchant top-up addresses** are generated automatically when you enable a new cryptocurrency in your merchant dashboard. They can be found at **Addresses → My Addresses** under the names "BTC deposit address", "ETH deposit address", etc. Alternatively, select a cryptocurrency on the **Balances** tab, click **Receive** and see the default address.

  Transactions to these addresses may have different [fees](/deposits/fees) than to the other addresses. These addresses are intended for usage by the merchant team only. You must not share the merchant top-up addresses with your customers.

  CryptoProcessing does not send API callbacks for the transactions to merchant top-up addresses.

## Deposits with conversion

When creating a deposit address in one currency, you can enable automatic conversion of all incoming funds. If enabled, the amount of each deposit to this address will be instantly converted to the specified target currency.

Enabling conversion is possible for system addresses and customer deposit addresses (see [Types of deposit addresses](#types-of-deposit-addresses)). The target currency can be crypto or fiat.

Each conversion is made using the current currency rates at the time of processing the transaction.

## Reusing addresses

In cryptocurrencies, an address cannot be "deleted" or "closed": once you created it, your customer can send funds to the address at any time. CryptoProcessing constantly monitors the blockchain for new transactions to all deposit addresses ever created.

It is good practice to have only one deposit address for one currency per user. This way, the customer can save the address in their wallet app's address book to create new transactions in a more convenient way.

However, you can create more than one deposit address per customer. This is useful if you need to use different [conversion](#deposits-with-conversion) configurations or if your customer has two different balances on your site.

<Warning>
  Reusing the same deposit address between different customers can be a violation of regulation, see [User data collection](/user-data-collection).
</Warning>

## Off-chain deposits

If the funds come from an address that happens to be controlled by CryptoProcessing, too, the transaction is being processed *off-chain*. This means that CryptoProcessing registers the transaction internally, even though it was never sent to the blockchain.

Just like a standard deposit, an off-chain deposit can be found on the **Transactions** tab. However, an off-chain deposit has an internal **TXID** instead of a public one. You can use this **TXID** to find the transaction in the merchant dashboard, but not in a blockchain explorer.

In the [API callback](/api-reference/callbacks/deposit-callbacks), an off-chain deposit has the `transaction.transaction_type` property set to `"internal"` instead of `"blockchain"`.

The [fee](/deposits/fees) for an off-chain deposit may differ from the standard one.

## Further reading

<Card horizontal icon="hammer" title="Integration guide for deposits" href="/integration-guide/deposits">
  Learn how to integrate the deposit flow into your site
</Card>

<Card horizontal icon="list-check" title="Test cases for deposits" href="/integration-guide/deposits/test-cases">
  Walk through all scenarios to make sure your integration works correctly
</Card>

<Card horizontal icon="code" title="/addresses/take" href="/api-reference/endpoints/addresses-take">
  API endpoint
</Card>

<Card horizontal icon="tower-broadcast" title="deposit, deposit_exchange" href="/api-reference/callbacks/deposit-callbacks">
  API callbacks
</Card>
