> For the complete documentation index, see [llms.txt](https://nord-3.gitbook.io/nord-api/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://nord-3.gitbook.io/nord-api/balances/multiple-withdrawals.md).

# Multiple Withdrawals

### To initiate a multiple withdrawal, the process is carried out in two steps:

1. You initiate a withdrawal by sending a request to [`/balance/withdraw/multiple/request`](#id-1.-create-a-multiple-withdraw-request). The API returns a unique `identifier` for that request.
2. You finalize the payout by calling [`/balance/withdraw/multiple/confirm`](#id-2.-confirm-the-multiple-withdrawal) passing only the previously received `identifier`.

***

## 1. Create a multiple Withdraw Request

<mark style="color:blue;">`POST`</mark> `/balance/withdraw/multiple/request`

Create a multiple Withdraw Request and get some interesting data.

**Headers**

| Name         | Value              |
| ------------ | ------------------ |
| Content-Type | `application/json` |
| X-API-KEY    | `<token>`          |

**Body**

<table><thead><tr><th width="249">Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>currency</code><mark style="color:red;">*</mark></td><td>string</td><td><a href="/pages/g7s9111vtZTvoAYuP8iJ">Currency</a></td></tr><tr><td><code>addresses_and_amounts</code><mark style="color:red;">*</mark></td><td>list[ list[ string, number ] ]</td><td>A list of listings in the form: “address, amount”</td></tr></tbody></table>

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
  "identifier": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "currency": "USDTBEP20",
  "total_amount": 0,
  "total_amount_usd": 0,
  "total_service_fee": 0,
  "total_service_fee_usd": 0,
  "addresses_count": 0,
  "expires_at": "2025-06-12T10:16:58.268842Z"
}
```

{% endtab %}

{% tab title="400" %}

```json
{
    "detail": "<CURRENCY> is not available for withdraw at this moment"
}
```

```json
{
    "detail": "Amount is less than minimum withdraw amount for <CURRENCY> (<CURRENCY.MIN_WITHDRAW>) for address <ADDRESS>"
}
```

```json
{
    "detail": "Multiple withdraw request not found"
}
```

```json
{
    "detail": "Multiple withdraw request expired"
}
```

```json
{
    "detail": "Not enough balance"
}
```

{% endtab %}

{% tab title="422" %}

```json
{
    "detail": [
        {
            "loc": [],
            "msg": "string",
            "type": "string"
        }
    ]
}
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Amount sent to the wallet = amount - service fee
{% endhint %}

**Example**

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X POST "https://api.nord-pay.com/balance/withdraw/multiple/request" \
     -H "Content-Type: application/json" \
     -H "X-API-KEY: YOUR_API_KEY" \
     -d '{
       "currency": "USDTBEP20",
       "addresses_and_amounts": [
         ["0x1234...abcd", 50.0],
         ["0x5678...efgh", 75.5]
       ]
     }'
```

{% endtab %}

{% tab title="Python (requests)" %}

```python
import requests

def create_multiple_withdraw_request(currency, addresses_and_amounts):
    url = "https://api.nord-pay.com/balance/withdraw/multiple/request"
    headers = {
        "Content-Type": "application/json",
        "X-API-KEY": "YOUR_API_KEY"
    }
    payload = {
        "currency": currency,
        "addresses_and_amounts": addresses_and_amounts
    }
    resp = requests.post(url, json=payload, headers=headers)
    resp.raise_for_status()
    return resp.json()

# usage:
req = create_multiple_withdraw_request(
    "USDTBEP20",
    [["0x1234...abcd", 50.0], ["0x5678...efgh", 75.5]]
)
# req["identifier"] — UUID для подтверждения
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
function createMultipleWithdrawRequest(string $currency, array $addressesAndAmounts): array {
    $url = "https://api.nord-pay.com/balance/withdraw/multiple/request";
    $payload = [
        "currency" => $currency,
        "addresses_and_amounts" => $addressesAndAmounts
    ];

    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => json_encode($payload),
        CURLOPT_HTTPHEADER     => [
            "Content-Type: application/json",
            "X-API-KEY: YOUR_API_KEY"
        ],
    ]);
    $response = curl_exec($ch);
    curl_close($ch);

    return json_decode($response, true);
}

// usage:
$req = createMultipleWithdrawRequest(
    "USDTBEP20",
    [["0x1234...abcd", 50.0], ["0x5678...efgh", 75.5]]
);
// $req["identifier"] — UUID для confirm
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
async function createMultipleWithdrawRequest({ currency, addresses_and_amounts }) {
  const response = await fetch(
    "https://api.nord-pay.com/balance/withdraw/multiple/request",
    {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "X-API-KEY": "YOUR_API_KEY"
      },
      body: JSON.stringify({ currency, addresses_and_amounts })
    }
  );
  if (!response.ok) throw new Error(`HTTP ${response.status}`);
  return response.json();
}

// usage:
createMultipleWithdrawRequest({
  currency: "USDTBEP20",
  addresses_and_amounts: [
    ["0x1234...abcd", 50.0],
    ["0x5678...efgh", 75.5]
  ]
}).then(req => {
  // req.identifier — UUID для подтверждения
});
```

{% endtab %}

{% tab title="Node.js (axios)" %}

```javascript
const axios = require('axios');

async function createMultipleWithdrawRequest({ currency, addresses_and_amounts }) {
  const { data } = await axios.post(
    "https://api.nord-pay.com/balance/withdraw/multiple/request",
    { currency, addresses_and_amounts },
    {
      headers: {
        "Content-Type": "application/json",
        "X-API-KEY": "YOUR_API_KEY"
      }
    }
  );
  return data;
}

// usage:
createMultipleWithdrawRequest({
  currency: "USDTBEP20",
  addresses_and_amounts: [
    ["0x1234...abcd", 50.0],
    ["0x5678...efgh", 75.5]
  ]
}).then(req => {
  // req.identifier — UUID для confirm
});
```

{% endtab %}
{% endtabs %}

***

## 2. Confirm the multiple Withdrawal

<mark style="color:blue;">`POST`</mark> `/balance/withdraw/multiple/confirm`

Confirming multiple Withdraw Request and sent money.

**Headers**

| Name         | Value              |
| ------------ | ------------------ |
| Content-Type | `application/json` |
| X-API-KEY    | `<token>`          |

**Body**

<table><thead><tr><th width="140">Name</th><th width="80">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>identifier</code><mark style="color:red;">*</mark></td><td>string</td><td>UUID Of your multiple Withdraw Request</td></tr></tbody></table>

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
    "detail": "Multiple withdrawal request created and waiting for admin approval", 
    "status": "pending",
    "id": 1
}
```

{% endtab %}

{% tab title="400" %}

```json
{
    "detail": "Withdraw request not found"
}
```

```json
{
    "detail": "Withdraw request expired"
}
```

```json
{
    "detail": "Not enough balance"
}
```

{% endtab %}

{% tab title="422" %}

```json
{
    "detail": [
        {
            "loc": [],
            "msg": "string",
            "type": "string"
        }
    ]
}
```

{% endtab %}
{% endtabs %}

**Example**

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X POST "https://api.nord-pay.com/balance/withdraw/multiple/confirm" \
     -H "Content-Type: application/json" \
     -H "X-API-KEY: YOUR_API_KEY" \
     -d '{
       "identifier": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
     }'
```

{% endtab %}

{% tab title="Python (requests)" %}

```python
import requests

def confirm_multiple_withdraw(identifier):
    url = "https://api.nord-pay.com/balance/withdraw/multiple/confirm"
    headers = {
        "Content-Type": "application/json",
        "X-API-KEY": "YOUR_API_KEY"
    }
    payload = { "identifier": identifier }
    resp = requests.post(url, json=payload, headers=headers)
    resp.raise_for_status()
    return resp.json()

# usage:
res = confirm_multiple_withdraw("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
```

{% endtab %}

{% tab title="PHP" %}

```
<?php
function confirmMultipleWithdraw(string $identifier): array {
    $url = "https://api.nord-pay.com/balance/withdraw/multiple/confirm";
    $payload = [ "identifier" => $identifier ];

    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => json_encode($payload),
        CURLOPT_HTTPHEADER     => [
            "Content-Type: application/json",
            "X-API-KEY: YOUR_API_KEY"
        ],
    ]);
    $response = curl_exec($ch);
    curl_close($ch);

    return json_decode($response, true);
}

// usage:
$res = confirmMultipleWithdraw("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
async function confirmMultipleWithdraw({ identifier }) {
  const response = await fetch(
    "https://api.nord-pay.com/balance/withdraw/multiple/confirm",
    {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "X-API-KEY": "YOUR_API_KEY"
      },
      body: JSON.stringify({ identifier })
    }
  );
  if (!response.ok) throw new Error(`HTTP ${response.status}`);
  return response.json();
}

// usage:
confirmMultipleWithdraw({ identifier: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" })
  .then(res => {
    // res.detail, res.data.address_1, etc.
  });
```

{% endtab %}

{% tab title="Node.js (axios)" %}

```javascript
const axios = require('axios');

async function confirmMultipleWithdraw({ identifier }) {
  const { data } = await axios.post(
    "https://api.nord-pay.com/balance/withdraw/multiple/confirm",
    { identifier },
    {
      headers: {
        "Content-Type": "application/json",
        "X-API-KEY": "YOUR_API_KEY"
      }
    }
  );
  return data;
}

// usage:
confirmMultipleWithdraw({ identifier: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" })
  .then(res => {
    // res.detail, res.data.address_1, etc.
  });
```

{% endtab %}
{% endtabs %}
