Перед началом
Добро пожаловать в официальную документацию WestWallet API.
Change docs language: UA EN DE RU
Авторизируйтесь, что бы получить API-ключ в настройках профиля.
Готовые библиотеки для языков програмирования: Python JavaScript Golang PHP
Авторизация
import json
import hashlib
import hmac
import time
import requests
# Get transaction info
api_key = "your_public_key"
secret_key = "your_private_key"
data = {"id": 435}
timestamp = int(time.time())
if data:
    dumped = json.dumps(data, ensure_ascii=False)
else:
    dumped = ""
sign = hmac.new(secret_key.encode('utf-8'),
                "{}{}".format(timestamp, dumped)
                .encode('utf-8'), hashlib.sha256).hexdigest()
headers = {
    "Content-Type": "application/json",
    "X-API-KEY": api_key,
    "X-ACCESS-SIGN": sign,
    "X-ACCESS-TIMESTAMP": str(timestamp)
}
resp = requests.post("https://api.westwallet.io/wallet/transaction", 
                     data=json.dumps(data),
                     headers=headers)
print(resp.json())                     
WestWallet API ожидает получить в заголовках каждого вашего запроса X-API-KEY, X-ACCESS-SIGN и X-ACCESS-TIMESTAMP. 
X-API-KEY - ваш публичный ключ;
X-ACCESS-TIMESTAMP - временная метка (используйте unix timestamp);
X-ACCESS-SIGN - HMAC-sha256-подпись тела запроса (составленная из строки, 
содержащей метку времени и JSON-представление данных тела запроса), 
подписанная вашим приватным ключём. Для GET запросов аналогично необходимо 
сформировать JSON-представление query-параметров.
Просмотрите пример, как сформировать строку для генерации подписи во вкладке примеров кода на python
Кошелёк
Данные про валюты
GET https://api.westwallet.io/wallet/currencies_data
Запрос для получения списка доступных валют и ограничений по ним.
- name - название валюты
- address_regex - регулярное выражение, используемое для валидации адреса перед созданием транзакции отправки
- require_dest_tag - требует ли валюта указания тэга назначения
- tickers - список допустимых тикеров валюты для передачи в запросах
- min_receive - минимальный депозит
- min_withdraw - минимальная сумма вывода
- max_withdraw_per_transaction - максимальная сумма вывода за одну транзакцию
- max_withdraw_transactions_per_day - максимальное количество отправок за день
- active - активна ли валюта
- send_active - разрешён ли вывод для валюты
- receive_active - разрешено ли получение для валюты
HTTP запрос
GET /wallet/currencies_data
[
  {
    "name": "Bitcoin", 
    "address_regex": "^([13][a-km-zA-HJ-NP-Z1-9]{25,34})|^(bc1([qpzry9x8gf2tvdw0s3jn54khce6mua7l]{39}|[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{59}))$", 
    "require_dest_tag": false, 
    "tickers": [
      "BTC",
    ], 
    "min_receive": 0.0005, 
    "min_withdraw": 0.0001, 
    "max_withdraw_per_transaction": 5, 
    "max_withdraw_transactions_per_day": 1000000,
    "active": true,
    "send_active": true,
    "receive_active": true
  }, 
  {
    "name": "USDT TRC-20", 
    "address_regex": "^[T][a-km-zA-HJ-NP-Z1-9]{25,34}$", 
    "require_dest_tag": false, 
    "tickers": [
      "USDTTRC",
    ], 
    "min_receive": 10, 
    "min_withdraw": 1, 
    "max_withdraw_per_transaction": 100000, 
    "max_withdraw_transactions_per_day": 1000000,
    "active": true,
    "send_active": true,
    "receive_active": true
  }
]
Вывод средств
POST https://api.westwallet.io/wallet/create_withdrawal
{
  "id": 123123,
  "amount": 0.1,
  "address": "35NjwZg8T4F12ESdEo3rQeYQ8ZiTyDYoTJ",
  "dest_tag": "",
  "currency": "BTC",
  "status": "pending",
  "blockchain_hash": "72648cefcc47b4371f28dc3328bc863918913eebf81b40d4a97d577b96c1ce53",
  "fee": "0.0001",
  "error": "ok"
}
# Send 0.1 ETH to 0x57689002367b407f031f1BB5Ef2923F103015A32
from westwallet_api import WestWalletAPI
from westwallet_api.exceptions import InsufficientFundsException, BadAddressException
client = WestWalletAPI("your_public_key", "your_private_key")
try:
    sent_transaction = client.create_withdrawal(
        "ETH", "0.1", "0x57689002367b407f031f1BB5Ef2923F103015A32"
    )
except InsufficientFundsException:
    # handle this case
    pass
except BadAddressException:
    # handle also this case
    pass
else:
    print(sent_transaction.__dict__)
const westwallet = require('westwallet-api');
const westwalletErrors = require('westwallet-api/lib/errors');
const publicKey = "yourPublicKey";
const privateKey = "yourPrivateKey";
let client = new westwallet.WestWalletAPI(
    publicKey, 
    privateKey
);
client.createWithdrawal("ETH", "0.1", "0x57689002367b407f031f1BB5Ef2923F103015A32")
.then((data) => {
    console.log(data);
}).catch((error) => {
    if (error instanceof westwalletErrors.InsufficientFundsError) {
        console.log("Insufficient funds");
    } else if (error instanceof westwalletErrors.BadAddressError) {
        console.log("Bad address regex");
    } else {
        console.log(error);
    }
});
package main
import (
    "fmt"
    westwallet "github.com/westwallet/westwallet-golang-api"
)
// Sending 0.1 ETH to 0x57689002367b407f031f1BB5Ef2923F103015A32
client := westwallet.APIClient{
    Key:      "your_public_key",
    Secret:   "your_private_key",
}
transaction, err := client.CreateWithdrawal(
    "ETH", "0.1", "0x57689002367b407f031f1BB5Ef2923F103015A32", "", ""
)
fmt.Println(err)
if err != nil {
    panic(err)
}
fmt.Println(transaction)
<?php
require_once 'vendor/autoload.php';
use WestWallet\WestWallet\Client;
use WestWallet\WestWallet\InsufficientFundsException;
$client = new Client("your_public_key", "your_private_key");
// Send 0.1 ETH to 0x57689002367b407f031f1BB5Ef2923F103015A32
try {
    $tx = $client->createWithdrawal("ETH", "0.1", "0x57689002367b407f031f1BB5Ef2923F103015A32");
    print(implode("|", $tx)."\n");
} catch(InsufficientFundsException $e) {
    print("You don't have enough funds to make this withdrawal"."\n");
}
Вывести средства из нужного вам кошелька.
HTTP запрос
POST /wallet/create_withdrawal
Post параметры
| Параметр | Пример | Обязательный | Описание | 
|---|---|---|---|
| currency | BTC | да | Валюта для отправки | 
| amount | 0.1 | да | Сумма для отправки | 
| address | 35NjwZg8T4F12ESdEo3rQeYQ8ZiTyDYoTJ | да | Адрес получателя | 
| dest_tag | 1390985919 | нет | Тэг назначения (необходим для некоторых валют) | 
| description | нет | Метка для дальнейшей идентификации в личном кабинете | |
| priority | medium | нет | Приоритет транзакции – low (интервал отправки 24-48 часов, доступный для многих валют, уменьшенная комиссия которую можно обсудить при обращении в поддержку), medium или high. Стандартное значение – medium. | 
| ipn_url | https://yourwebsite.com/payment_secret_token?tx_id=123321 | нет | Instant Payment Notification URL. На этот адрес вы получите уведомление как только транзакция будет фактически отправлена | 
Отправка нескольких транзакций
POST https://api.westwallet.io/wallet/create_withdrawal/many
# Request
{
   "currency": "BTC",
   "priority": "high",
   "transactions": [
      {
         "address": "39iUBiSKuqUtMSSEgimuEkXyrmPP2YnuB5",
         "amount": "5",
         "description": "40124"
      },
      {
         "address": "3KJFvx88XUtqUgannLDZFm7XzHXACGLuJL",
         "amount": "0.015",
         "description": "40125"
      },
      {
         "address": "35NjwZg8T4F12ESdEo3rQeYQ8ZiTyDYoTJ",
         "amount": "0.010",
         "description": "40126"
      }
   ]
}
# Response
{
   "error": "ok",
   "results": [
      {
         "address": "39iUBiSKuqUtMSSEgimuEkXyrmPP2YnuB5",
         "amount": "5.00000000",
         "description": "40124",
         "error": "insufficient_funds"
      },
      {
         "address": "3KJFvx88XUtqUgannLDZFm7XzHXACGLuJL",
         "amount": "0.01500000",
         "blockchain_hash": "72648cefcc47b4371f28dc3328bc863918913eebf81b40d4a97d577b96c1ce53",
         "currency": "BTC",
         "error": "ok",
         "fee": "0.00027500",
         "id": 611438237,
         "status": "pending",
         "description": "40125"
      },
      {
         "address": "35NjwZg8T4F12ESdEo3rQeYQ8ZiTyDYoTJ",
         "amount": "0.01000000",
         "blockchain_hash": "72648cefcc47b4371f28dc3328bc863918913eebf81b40d4a97d577b96c1ce53",
         "currency": "BTC",
         "error": "ok",
         "fee": "0",
         "id": 611438238,
         "status": "pending",
         "description": "40126"
      }
   ]
}
Отправить несколько транзакций из нужного вам кошелька. При этом применяются скидки на комиссию сети.
Для второй и последующей транзакций применяется скидка 50% от фиксированной комиссии.
Первой транзакцией считается транзакция с самой большой суммой.
Метод работает только для валют с возможностью массовой отправки: BTC, BCH, BTG, BSV, ADA, DASH, DOGE, LTC, XMR, ZEC.
HTTP запрос
POST /wallet/create_withdrawal/many
Post параметры
| Параметр | Пример | Обязательный | Описание | 
|---|---|---|---|
| currency | BTC | да | Валюта для отправки | 
| priority | medium | нет | Приоритет транзакции – low (интервал отправки 24-48 часов, доступный для многих валют, уменьшенная комиссия которую можно обсудить при обращении в поддержку), medium или high. Стандартное значение – medium. | 
| transactions | да | Массив (список) данных о транзакциях. Структура полей приведена ниже | 
Post параметры структуры transactions
| Параметр | Пример | Обязательный | Описание | 
|---|---|---|---|
| amount | 0.1 | да | Сумма для отправки | 
| address | 35NjwZg8T4F12ESdEo3rQeYQ8ZiTyDYoTJ | да | Адрес получателя | 
| description | нет | Метка для дальнейшей идентификации в личном кабинете | |
| ipn_url | https://yourwebsite.com/payment_secret_token?tx_id=123321 | нет | Instant Payment Notification URL. На этот адрес вы получите уведомление как только транзакция будет фактически отправлена | 
Статус транзакции
Возможные статусы:
- "completed" - транзакция успешно выполнена.
- "pending" - транзакция принята в обработку и находится в пуле с другими транзакциями и будет скоро выполненна.
- "sending" - отправка была совершена, но не последовало ответа от ноды. Это промежуточный статус. После автоматической проверки нашим оператором статус будет изменён на "completed" или "network_error".
- "network_error" - ошибка отправки, связанная с blockchain.
POST https://api.westwallet.io/wallet/transaction
{
  "id": 123123,
  "type": "send",
  "amount": 0.1,
  "address": "rw2ciyaNshpHe7bCHo4bRWq6pqqynnWKQg",
  "dest_tag": "755785168",
  "label": "your_label",
  "currency": "XRP",
  "status": "completed",
  "blockchain_confirmations": 1,
  "blockchain_hash": "BC07C0937F2B12D8DF8F90B5A421957DC690DC8512F97925217726E6A28F0A93",
  "fee": "0.0001",
  "error": "ok"
}
from westwallet_api import WestWalletAPI
client = WestWalletAPI("your_public_key", "your_private_key")
transaction = client.transaction_info(19)
print(transaction.__dict__)
const westwallet = require('westwallet-api');
const westwalletErrors = require('westwallet-api/lib/errors');
const publicKey = "yourPublicKey";
const privateKey = "yourPrivateKey";
let client = new westwallet.WestWalletAPI(
    publicKey, 
    privateKey
);
client.transactionInfo(1284).then((data) => {
    console.log(data);
}).catch((error) => {
    if (error instanceof westwalletErrors.TransactionNotFoundError) {
        console.log("Transaction not found");
    }
});
package main
import (
    "fmt"
    westwallet "github.com/westwallet/westwallet-golang-api"
)
client := westwallet.APIClient{
    Key:      "your_public_key",
    Secret:   "your_private_key",
}
transaction, err := client.TransactionInfo(145);
fmt.Println(err)
if err != nil {
    panic(err)
}
fmt.Println(transaction)
<?php
require_once 'vendor/autoload.php';
use WestWallet\WestWallet\Client;
use WestWallet\WestWallet\TransactionNotFoundException;
$client = new Client("your_public_key", "your_private_key");
try {
    $tx = $client->transactionInfo(134);
    print(implode("|", $tx)."\n");
} catch(TransactionNotFoundException $e) {
    print("Transaction not found"."\n");
}
Узнать статус заявки.
HTTP запрос
POST /wallet/transaction
Post параметры
| Параметр | Пример | Обязательный | Описание | 
|---|---|---|---|
| id | 123123 | id или label | ID транзакции внутри сервиса WestWallet | 
| label | 321321 | id или label | label адреса транзакции получения внутри сервиса WestWallet | 
История транзакций
POST https://api.westwallet.io/wallet/transactions
{
  "error": "ok",
  "result": [{
    "id": 123123,
    "created_at": "2019-12-29 15:07:13",
    "updated_at": "2019-12-29 15:12:43",
    "type": "send",
    "amount": 0.1,
    "address": "rw2ciyaNshpHe7bCHo4bRWq6pqqynnWKQg",
    "dest_tag": "755785168",
    "label": "your_label",
    "currency": "XRP",
    "status": "completed",
    "description": "your custom description",
    "blockchain_confirmations": 1,
    "blockchain_hash": "BC07C0937F2B12D8DF8F90B5A421957DC690DC8512F97925217726E6A28F0A93",
    "fee": "0.0001"
  }]
}
Просмотреть историю транзакций.
HTTP запрос
POST /wallet/transactions
Post параметры
| Параметр | Пример | Обязательный | Описание | 
|---|---|---|---|
| currency | BTC | нет | Код валюты, для которой необходимо получить список транзакций. Если не указан - вы получите список транзакций для всех валют. | 
| limit | 10 | нет | Количество транзакций в ответ на запрос (не больше 100). Если не указано - по умолчанию - 10. | 
| offset | 20 | нет | Смещение | 
| type | send | нет | Тип транзакций: send или receive. Если не указано, то получите список всех. | 
| order | desc | нет | Порядок сортировки: desc - от новых транзакций к старым, asc - от старых к новым. | 
| status | pending | нет | Статус транзакции для фильтрации (pending или completed) | 
| start_date | 01.01.2025 | нет | Фильтрация по дате создания транзакции | 
| end_date | 31.01.2025 | нет | Фильтрация по дате создания транзакции | 
Баланс кошелька
GET https://api.westwallet.io/wallet/balance?currency=BTC
{
  "balance": 0.55,
  "currency": "BTC"
}
from westwallet_api import WestWalletAPI
client = WestWalletAPI("your_public_key", "your_private_key")
balance = client.wallet_balance("BTC")
print(balance.balance)
const westwallet = require('westwallet-api');
const westwalletErrors = require('westwallet-api/lib/errors');
const publicKey = "yourPublicKey";
const privateKey = "yourPrivateKey";
let client = new westwallet.WestWalletAPI(
    publicKey, 
    privateKey
);
client.walletBalance("BTC").then((data) => {
    console.log(data);
}).catch((error) => {
    if (error instanceof westwalletErrors.CurrencyNotFoundError) {
        console.log("No such currency");
    }
});
package main
import (
    "fmt"
    westwallet "github.com/westwallet/westwallet-golang-api"
)
client := westwallet.APIClient{
    Key:      "your_public_key",
    Secret:   "your_private_key",
}
balance, err := client.WalletBalance("BTC");
fmt.Println(err)
if err != nil {
    panic(err)
}
fmt.Println(balance)
<?php
require_once 'vendor/autoload.php';
use WestWallet\WestWallet\Client;
use WestWallet\WestWallet\CurrencyNotFoundException;
$client = new Client("your_public_key", "your_private_key");
try {
    $balance = $client->walletBalance("BTC");
    print(implode("|", $balance)."\n");
} catch(CurrencyNotFoundException $e) {
    print("No such currency"."\n");
}
Узнать баланс кошелька
HTTP запрос
GET /wallet/balance?currency=BTC
Query параметры
| Параметр | Пример | Обязательный | Описание | 
|---|---|---|---|
| currency | BTC | да | Валюта кошелька | 
Балансы всех кошельков
GET https://api.westwallet.io/wallet/balances
{
  "ETH": 3.22,
  "ETC": 34,
  "LTC": 40,
  "BTC": 1.11,
  "XLM": 319.11,
  "XMR": 15.12
}
from westwallet_api import WestWalletAPI
client = WestWalletAPI("your_public_key", "your_private_key")
balances = client.wallet_balances()
print(balances.__dict__)
const westwallet = require('westwallet-api');
const westwalletErrors = require('westwallet-api/lib/errors');
const publicKey = "yourPublicKey";
const privateKey = "yourPrivateKey";
let client = new westwallet.WestWalletAPI(
    publicKey, 
    privateKey
);
client.walletBalances().then((data) => {
    console.log(data);
}).catch((error) => {
    console.log(error);
});
package main
import (
    "fmt"
    westwallet "github.com/westwallet/westwallet-golang-api"
)
client := westwallet.APIClient{
    Key:      "your_public_key",
    Secret:   "your_private_key",
}
balances, err := client.WalletBalances();
fmt.Println(err)
if err != nil {
    panic(err)
}
fmt.Println(balance)
<?php
require_once 'vendor/autoload.php';
use WestWallet\WestWallet\Client;
use WestWallet\WestWallet\CurrencyNotFoundException;
$client = new Client("your_public_key", "your_private_key");
$balances = $client->walletBalances();
print(implode("|", $balances)."\n");
Узнать балансы всех кошельков
HTTP запрос
GET /wallet/balances
Адреса
Сгенерировать адрес
POST https://api.westwallet.io/address/generate
{
  "address": "rw2ciyaNshpHe7bCHo4bRWq6pqqynnWKQg",
  "dest_tag": "755785168",
  "currency": "XRP",
  "label": "your_label",
  "error": "ok"
}
from westwallet_api import WestWalletAPI
client = WestWalletAPI("your_public_key", "your_private_key")
address = client.generate_address("XRP", "https://yourwebsite.com/ipn_url", "your_address_label")
print(address.address, address.dest_tag)
const westwallet = require('westwallet-api');
const westwalletErrors = require('westwallet-api/lib/errors');
const publicKey = "yourPublicKey";
const privateKey = "yourPrivateKey";
let client = new westwallet.WestWalletAPI(
    publicKey, 
    privateKey
);
client.generateAddress("BTC", "https://yourwebsite.com/ipn_url", "your_address_label")
.then((data) => {
    console.log(data);
}).catch((error) => {
    if (error instanceof westwalletErrors.CurrencyNotFoundError) {
        console.log("No such currency");
    }
});
package main
import (
    "fmt"
    westwallet "github.com/westwallet/westwallet-golang-api"
)
client := westwallet.APIClient{
    Key:      "your_public_key",
    Secret:   "your_private_key",
}
address, err := client.GenerateAddress("BTC", "https://yourwebsite.com/ipn_url", "your_address_label")
if err != nil {
    panic(err)
}
fmt.Println(address.Address)
<?php
require_once 'vendor/autoload.php';
use WestWallet\WestWallet\Client;
use WestWallet\WestWallet\CurrencyNotFoundException;
$client = new Client("your_public_key", "your_private_key");
try {
    $address = $client->generateAddress("BTC");
    print(implode("|", $address)."\n");
} catch(CurrencyNotFoundException $e) {
    print("No such currency"."\n");
}
HTTP запрос
POST /address/generate
Post параметры
| Параметр | Пример | Обязательный | Описание | 
|---|---|---|---|
| currency | BTC | да | Валюта адреса, который вы собираетесь генерировать | 
| ipn_url | https://yourwebsite.com/payment_secret_token?tx_id=123321 | нет | Instant Payment Notification URL. На этот адрес вы получите уведомление как только кто-то зачислит средства на этот адрес | 
| label | tx54543 | нет | Укажите метку для адреса для дальнейшей идентификации (не более 30 символов) | 
Платёжная страница (инвойс)
POST https://api.westwallet.io/address/create_invoice
{
  "allowed_currencies_data": [{"address": "35NjwZg8T4F12ESdEo3rQeYQ8ZiTyDYoTJ",
                               "amount": 0.00211364,
                               "currency_code": "BTC",
                               "dest_tag": ""},
                              {"address": "rn97Zbg9V6hiqJoK6EQ8RtuaLUTYHSFXyw",
                               "amount": 0.02658667,
                               "currency_code": "XRP",
                               "dest_tag": "10000324245"}],
  "expire_at": "2022-01-31 19:36:14",
  "token": "0b4ab755b42b6ff7fcb01100e42ec3",
  "url": "https://westwallet.io/payment/0b4ab755b42b6ff7fcb01100e42ec3",
  "error": "ok"
}
<?php
require_once 'vendor/autoload.php';
use WestWallet\WestWallet\Client;
use WestWallet\WestWallet\InsufficientFundsException;
$client = new Client("your_public_key", "your_private_key");
$response = $client->createInvoice(array("BTC", "USDTTRC"), "100", "https://yourwebsite.com/payment_secret_token?tx_id=123321", true, "https://yourwebsite.com/thank_you", "Payment 1234", "1234", 15);
print(implode("|", $response)."\n");
HTTP запрос
POST /address/create_invoice
Post параметры
| Параметр | Пример | Обязательный | Описание | 
|---|---|---|---|
| currencies | ["BTC", "XRP"] | да | Список разрешённых криптовалют для оплаты. | 
| amount | 100 | да | Сумма зачисления. Если указано больше одной валюты в поле currencies, то сумма обязательна должна быть в USD. | 
| amount_in_usd | true | нет | Используйте это поле в случае, если необходимо указать сумму в USD, когда указана одна валюта в поле currencies. Это поле будет автоматически true, если указано более 1 валюты в поле currencies. | 
| ipn_url | https://yourwebsite.com/payment_secret_token?tx_id=123321 | да | Instant Payment Notification URL. На этот адрес вы получите уведомление как только кто-то зачислит средства на адрес, сгенерированный для инвойса | 
| success_url | https://yourwebsite.com/thank_you | нет | URL для переадресации после успешной оплаты | 
| description | Payment 1234 | нет | Описание платежа. Текстовая информация, которая будет отображаться на странице оплаты. | 
| label | 1234 | нет | Укажите метку для адреса для дальнейшей идентификации (не более 30 символов) | 
| ttl | 15 | нет | Время жизни заявки в минутах. Максимум 90 минут. После истечения этого времени на странице заявки перестанет отображаться интерфейс для оплаты (адреса, QR и т.д.). | 
Список транзакций платёжной страницы (инвойса)
Просмотреть список входящих транзакций, которые были получены на адреса, сгенерированные для указанной платёжной страницы.
GET https://api.westwallet.io/address/invoice_transactions
{
  "count": 1,
  "error": "ok",
  "result": [{"address": "5mpjDRgoRYRmSnAXZTfB2bBkbpwvRjobXUjb4WYjF225",
             "amount": "120",
             "blockchain_confirmations": 0,
             "blockchain_hash": "5RYQvquKnuEZyH3bumRqmnvwHsjTVgqFoBWc6jxyirDzsSjtgELRccnzoQJv3zdoPmR7xS657unUQhManbrttcQd",
             "created_at": "2023-07-31 13:04:12",
             "currency": "SOL",
             "description": null,
             "dest_tag": "",
             "fee": "0",
             "id": 763,
             "label": "434532",
             "status": "pending",
             "type": "receive",
             "updated_at": null}]
}
HTTP запрос
GET /address/invoice_transactions?token=80f1321011b280877959f241a0e60b
Query параметры
| Параметр | Пример | Обязательный | Описание | 
|---|---|---|---|
| token | 80f1321011b280877959f241a0e60b | да | Токен платёжной страницы (инвойса) | 
Уведомления о платежах
Оповещения о транзакциях получения (входящие транзакции)
{
  "id": 123123,
  "amount": 0.1,
  "address": "35NjwZg8T4F12ESdEo3rQeYQ8ZiTyDYoTJ",
  "dest_tag": "",
  "label": "312321",
  "currency": "BTC",
  "status": "completed",
  "blockchain_confirmations": 1,
  "fee": "0.0001",
  "blockchain_hash": "72648cefcc47b4371f28dc3328bc863918913eebf81b40d4a97d577b96c1ce53"
}
После того, как вы сгенерировали адрес, указав для него ipn_url и получили валюту на этот адрес, 
вы получите POST-запрос на этот url с такой структурой данных
Возможные статусы в теле запроса: pending, completed.
Мы отправляем запрос с заголовком Content-Type: application/x-www-form-urlencoded .
Оповещения о транзакциях отправки (исходящие транзакции)
{
    "id": 321321,
    "amount": 0.05,
    "address": "bc1q8fx8wyss24wqfcp3f27xa75x86fa60q38jae8z",
    "dest_tag": "",
    "description": "example",
    "currency": "BTC",
    "status": "completed",
    "blockchain_confirmations": 0,
    "blockchain_hash": "f23e3f9212b42ee78a536d3688ae7df7109965b321edb823e62ab706eecfc92a",
    "fee": "0.0001"
}
После того, как вы отправили средства, указал в запросе ipn_url и средства фактически были отправлены, 
вы получите POST-запрос на этот url с такой структурой данных
Мы отправляем запрос с заголовком Content-Type: application/x-www-form-urlencoded .
Возможные ошибки
В ответе на каждый запрос присутствует поле "error". Если "error" != "ok", тогда у вас одна из следующих ошибок:
- "wrong_auth" - публичный ключ некорректный
- "ip_not_allowed" - IP, с которого выполняется запрос не в списке разрешённых
- "wrong_hmac" - публичный ключ корректный, HMAC подпись некорректна
- "not_allowed_by_api_key" - этому ключу запрещено выполнять этот тип действий
- "account_blocked" - аккаунт заблокирован
- "bad_address" - адрес не соответствует regex-выражению проверки корректности адреса
- "insufficient_funds" - на балансе недостаточно средств
- "max_withdraw_error" - сумма больше, чем максимально разрешённая для вывода, максимальная сумма будет указана в поле max_withdraw в теле ответа
- "min_withdraw_error" - сумма меньше, чем минимально разрешённая для вывода
- "currency_not_found" - валюта не найдена
- "deposit_not_allowed" - получение не доступно
- "currency_not_active" - валюта найдена, но не активна
- "not_found" - транзакция не найдена
- "wrong_ipn_url" - IPN URL указан некорректно
- "self_address" - попытка отправить на адрес, который принадлежит вашему аккаунту
- "bad_priority" - указанный приоритет для транзакции не разрешён
- "too_much_addresses_per_day" - сгенерировано слишком много адресов за последние 24 часа
Ошибки
WestWallet API использует такие коды ошибок для всех запросов:
| Код ошибки | Значение | 
|---|---|
| 400 | Bad Request - Некорректно указанные поля запроса, расшифровка в поле errors. | 
| 401 | Unauthorized - API-ключ некорректный или не указан вовсе. | 
| 404 | Not Found - Ресурс не найден. Сверьтесь с документацией. | 
| 405 | Method Not Allowed - Вы пытаетесь сделать запрос при помощи запрещённого HTTP-метода. | 
| 429 | Too Many Requests - Слишком много запросов с вашей стороны. | 
| 500 | Internal Server Error - Проблема на стороне нашего сервера. Пожалуйста, сообщите об этом нашей поддержке. | 
В случае успешного запроса вы получаете статус 200.
 
      