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

# Crypto deposits integration test cases

These are the test cases to help you test your site's integration with CryptoProcessing [crypto deposits](https://docs.ca.cryptoprocessing.com/deposits/integration-guide.md).

For each test case, create a new deposit address via the [/v2/addresses/take](https://docs.ca.cryptoprocessing.com/api-reference/endpoints/addresses-take.md) endpoint and then process the relevant [callback](https://docs.ca.cryptoprocessing.com/api-reference/callbacks/deposit-callbacks.md).

> [!NOTE]
>
> You can test deposits in the sandbox environment by withdrawing funds from your merchant account instead of sending an external payment. Generate a deposit address, then [withdraw funds](https://docs.ca.cryptoprocessing.com/withdrawals/create-a-withdrawal.md) to that address.

<table>
  <thead>
    <tr>
      <th>Procedure</th>
      <th>Expected results</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td colspan="2">
        **Successful deposit**
      </td>
    </tr>

    <tr>
      <td>
        1. Create a deposit address without exchange.
        2. Copy the address into a wallet on your device.
        3. Place a payment. Make sure its amount is equal or higher than the [minimum deposit](https://docs.ca.cryptoprocessing.com/confirmations-and-limits.md).
      </td>

      <td>
        * The site gets two `deposit` callbacks.
        * The callback status is first `not_confirmed`, then `confirmed`.
        * `currency_sent` is the currency and amount of your payment.
        * `currency_received.amount_minus_fee` is the amount added to your balance, after fees.
      </td>
    </tr>

    <tr>
      <td colspan="2">
        **Cross-currency deposit**
      </td>
    </tr>

    <tr>
      <td>
        1. Go to **Settings → Callbacks** and make sure the **Cross-currency deposits** callback is enabled.
        2. Create a deposit address for one currency, e.g., USDC on the Ethereum network.
        3. Copy the address into a wallet on your device.
        4. Place a payment in a different currency on the same network, e.g., ETH. Make sure its amount is equal or higher than the [minimum deposit](https://docs.ca.cryptoprocessing.com/confirmations-and-limits.md).
      </td>

      <td>
        * The site gets two `deposit` callbacks.
        * The callback status is first `not_confirmed`, then `confirmed`.
        * `crypto_address.cross_currency` is true.
        * `currency_received.currency` is different from `expected_currency`.
        * If the address has automatic conversion (`convert_to`), the deposit isn't converted: `type` is `deposit`, and `currency_received.currency` is the currency you sent.
      </td>
    </tr>

    <tr>
      <td colspan="2">
        **Deposit below minimum amount**
      </td>
    </tr>

    <tr>
      <td>
        1. Go to **Settings → Callbacks** and make sure the **Deposits less than minimum amount** callback is enabled.
        2. Create a deposit address.
        3. Copy the address into a wallet on your device.
        4. Place a payment lower than the [minimum deposit](https://docs.ca.cryptoprocessing.com/confirmations-and-limits.md).
      </td>

      <td>
        * The site gets two `deposit` callbacks.
        * The callback status is `cancelled`.
        * The error is `Transaction amount less than minimum deposit`.
      </td>
    </tr>
  </tbody>
</table>


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