# Create a Coin Withdrawal

Let’s take a look at our [API reference](https://reference.cryptopay.me/#tag/Coin-withdrawals/operation/coin-withdrawals.create) and go through the parameters that needs to be used in order to create the coin withdrawal request:&#x20;

* `address` (*string) —* the recipient's wallet address. For example, 2MvWu1QjMuDWP4x3wZpPxhuVHpvfzBJmyw3.

  <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>XRP and XLM addresses require additional parameters: destination tag for XRP and Memo ID for XLM. Destination tag and Memo ID are similar to a reference number for bank transfers. They help to identify transactions when a single address is used by multiple users. <br>IMPORTANT: If you put “0“ as a destination tag for a wallet used by multiple users, your funds will be lost PERMANENTLY.<br><br>Add parameters like this:<br> XRP - <code>address?dt=destination_tag</code> <br> XLM - <code>address?memoId=memoidnumber</code> </p></div>
* `network` (*string) —* the blockchain in which the withdrawal is going to be created. The list of available networks can be found [here](https://developers.cryptopay.me/guides/currencies/currencies).
* `charged_currency`  (*string) —* your account currency to send a transaction from.
* `received_currency`  (*string) — a* recipient's cryptocurrency wallet address
* `custom_id` (*string)* — we recommend you specify a certain reference by which you associate your customer with the payment, for example `113562013`
* &#x20;`amount`  *(decimal\_string)* — withdrawal amount specified by the user.
* `amount_currency`  *(string)* — currency of the specified amount.
* `amount_includes_processing_fee`  *(bool)* — indicates whether the amount includes the processing fee; can be true or false.
* `amount_includes_network_fee`  *(bool)* — indicates whether the amount includes the network fee; can be true or false.
* `force_commit` *(bool) —* the setting to set up the two-step withdrawal process. If `false` the coin withdrawal transaction needs to be committed within 30 seconds. Is `false` if omitted. If you use this parameter when sending a request, the withdrawal won't be created immediately, but rather only after receiving an additional commit within 30 seconds. When information will be returned in the response, you will be able to check the network fee and the amounts to be debited and sent and only then send a confirmation to proceed with the withdrawal. Confirmation reference is [here](https://reference.cryptopay.me/#tag/Coin-withdrawals/operation/coin-withdrawals.commit). If we don't receive a commit in 30 seconds, the withdrawal won't be processed and a new request would have to be sent. \
  \
  \
  All `amount_` fields are dedicated to help you to separate processing and network fees.

  Here are the example requests for each possible fee configuration:

  1. Both fees are deducted from the transaction amount = amount paid by the recipient (end-user). This is the same as using `charged_amount`.&#x20;

  <pre class="language-javascript" data-expandable="true"><code class="lang-javascript">{
  "address": "Cc6yDWNNCVMnauWPHW82Tp8BKCoAodzcrTji3yDeJXc8",
  "charged_currency": "EUR",
  "received_currency": "USDT",
  "network": "solana",
  "amount": "100.0",
  "amount_currency": "EUR",
  "amount_includes_processing_fee": true,
  "amount_includes_network_fee": true,
  "network_fee_level": "average",
  "force_commit": true
  }
  </code></pre>

  2. Both fees are charged on top of the transaction amount = paid by the sender (= merchant). This is the same as using `charged_amount_to_send`.&#x20;

  <pre class="language-javascript" data-expandable="true"><code class="lang-javascript">{
  "address": "Cc6yDWNNCVMnauWPHW82Tp8BKCoAodzcrTji3yDeJXc8",
  "charged_currency": "EUR",
  "received_currency": "USDT",
  "network": "solana",
  "amount": "100.0",
  "amount_currency": "EUR",
  "amount_includes_processing_fee": false,
  "amount_includes_network_fee": false,
  "network_fee_level": "average",
  "force_commit": true
  }

  </code></pre>

  3. The network fee is included in the transaction amount (paid by the recipient), while the processing fee is charged on top of it (= paid by the sender)

  <pre class="language-javascript" data-expandable="true"><code class="lang-javascript">{
  "address": "Cc6yDWNNCVMnauWPHW82Tp8BKCoAodzcrTji3yDeJXc8",
  "charged_currency": "EUR",
  "received_currency": "USDT",
  "network": "solana",
  "amount": "100.0",
  "amount_currency": "EUR",
  "amount_includes_processing_fee": false,
  "amount_includes_network_fee": true,
  "network_fee_level": "average",
  "force_commit": true
  }
  </code></pre>

  4. The processing fee is included in the transaction amount (paid by the recipient), while the network fee is charged on top of it (= paid by the sender)

  ```javascript
  {
  "address": "Cc6yDWNNCVMnauWPHW82Tp8BKCoAodzcrTji3yDeJXc8",
  "charged_currency": "EUR",
  "received_currency": "USDT",
  "network": "solana",
  "amount": "100.0",
  "amount_currency": "EUR",
  "amount_includes_processing_fee": true,
  "amount_includes_network_fee": false,
  "network_fee_level": "average",
  "force_commit": true
  ```

\
\
Here's what the response would look like in the first case:

{% code expandable="true" %}

```javascript
{
    "data": {
        "id": "4d1fa4cf-1cc9-41fb-b0c3-98c235c6dc06",
        "custom_id": null,
        "customer_id": null,
        "address": "Cc6yDWNNCVMnauWPHW82Tp8BKCoAodzcrTji3yDeJXc8",
        "network": "solana",
        "txid": null,
        "status": "pending",
        "charged_amount": "100.0",
        "charged_currency": "EUR",
        "received_amount": "113.414253",
        "received_currency": "USDT",
        "network_fee": "0.0008",
        "network_fee_level": "average",
        "fee": "1.0",
        "fee_currency": "EUR",
        "description": null,
        "exchange": {
            "pair": "USDTEUR",
            "rate": "0.8729",
            "fee": "0.0",
            "fee_currency": "EUR"
        },
        "risk": null,
        "created_at": "2025-10-30T08:38:11+00:00"
    }
}
```

{% endcode %}

The coin withdrawal is created with the initial status “Pending”.  The “Completed” status means that Cryptopay has processed your request and sent the transaction has been sent to the network. This status does not mean that the transaction has shown up on the recipient's wallet balance, since, as explained above, it will take some time for the transaction to be confirmed by the miners.

Sometimes when the transaction status is updated to “Failed” instead of “Completed”, it means that Cryptopay was unable to send the transaction. In this case, the funds charged from the merchant's account will be refunded to the balance. It usually takes from minutes to several hours to return the funds and does not require any action by the merchant.

Once you have created a Coin withdrawal, we recommend that you check the payment status with a [separate request](https://reference.cryptopay.me/#tag/Coin-withdrawals/operation/coin-withdrawals.retrieve), as the delivery of the callbacks is not guaranteed.\ <br>

Deprecated fields:&#x20;

* `сharged_amount_to_send` - the payment amount. when using this parameter, Cryptopay will deduct the entire fee **from the merchant balance and not the transaction amount.** For example, the BTC transaction with the amount of 100 EUR will be sent to the recipient's address [at the rate](https://reference.cryptopay.me/#tag/Rates) at the time of processing the payment request.
* `charged_amount` - in this case, Cryptopay would include the amount of all fees **in the amount of the transaction sent.** Thus, the BTC transaction with an amount of less than 100 EUR at the exchange rate at the time of the payment request would have been sent to the recipient's address.
