> ## 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 withdrawals integration test cases

These are the test cases to help you test your site's integration with CryptoProcessing [crypto withdrawals](/integration-guide/withdrawals).

For each test case, initiate a withdrawal via the [/api/v2/withdrawal/crypto](/api-reference/endpoints/withdrawal-crypto) endpoint and then process the relevant [callback](/api-reference/callbacks#withdrawal-callbacks).

<table class="m-0 [&_th]:text-left">
  <thead>
    <tr>
      <th>Procedure</th>
      <th>Expected results</th>
    </tr>
  </thead>

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

    <tr>
      <td>
        1. Initiate a crypto withdrawal.
      </td>

      <td>
        * The site gets a `withdrawal` callback.
        * The callback status is `confirmed`.
      </td>
    </tr>

    <tr>
      <td colspan="2">
        **Successful withdrawal with conversion**
      </td>
    </tr>

    <tr>
      <td>
        1. Initiate a withdrawal with the `convert_to` field.
      </td>

      <td>
        * The site gets a `withdrawal` callback.
        * The callback status is `confirmed`.
        * `currency_sent` describes the amount you sent (minus the network fee). Its currency is the same as you specified in `currency`.
        * `currency_received` describes the amount you received on your balance. Its currency is the same as you specified in `convert_to`.
      </td>
    </tr>

    <tr>
      <td colspan="2">
        **Withdrawal declined by the owner**
      </td>
    </tr>

    <tr>
      <td>
        1. Go to **Settings → Withdrawal limits → API withdrawals → Custom API withdrawal limits** and set up a limit for a specific currency.
        2. Initiate a withdrawal in that currency with an amount above the limit.
        3. As an *Owner*, go to **Transactions** and select the pending transaction.
        4. Click **Decline**.
        5. Remove the withdrawal limit if you won't need it after testing.
      </td>

      <td>
        * The site gets two `withdrawal` callbacks.
        * The callback status is first `pending`, then `declined`.
      </td>
    </tr>

    <tr>
      <td colspan="2">
        **Withdrawal approved by the owner**
      </td>
    </tr>

    <tr>
      <td>
        1. Go to **Settings → Withdrawal limits → API withdrawals → Custom API withdrawal limits** and set up a limit for a specific currency.
        2. Initiate a withdrawal in that currency with an amount above the limit.
        3. As an *Owner*, go to **Transactions** and select the pending transaction.
        4. Click **Approve**.
        5. Remove the withdrawal limit if you won't need it after testing.
      </td>

      <td>
        * The site gets two `withdrawal` callbacks.
        * The callback status is first `pending`, then `confirmed`.
      </td>
    </tr>
  </tbody>
</table>
