Payments API
Создать статический кошелёк
Постоянный адрес для неограниченного числа входящих платежей.
Когда что использовать
| Параметр | Тип | Обязателен | ОПИСАНИЕ |
|---|---|---|---|
| wallet_id | integer | да | ID кошелька. Целое число > 0 |
| Currency | string | да | Код валюты |
| network | string | да | Код сети |
| url_callback | string | нет | URL для webhook-уведомлений после каждого пополнения кошелька. Должен содержать домен мерчанта, иначе 422 url_callback is not valid. Если не передан — берётся url_callback из настроек личного кабинета |
| customer_email | string | нет | E-mail клиента (валидируется как email, до 255 символов) |
{
"wallet_id": 10,
"currency": "USDT",
"network": "SOL",
"url_callback": "https://example.com/webhook"
}
{
"uuid": "019f6990-18ac-70ab-9186-46601087c41d",
"merchant_wallet_id": 10,
"address": "5mzKDA******AvLADas",
"currency": "USDT",
"network": "SOL",
"url": "https://example.com/webhook",
"qr_base64_png": "iVBORw0KGgoAAAANS..."
}
Параметры ответа
| Параметр | ОПИСАНИЕ |
|---|---|
| uuid | UUID кошелька в данной сети |
| merchant_wallet_id | Ваш wallet_id, переданный в запросе — возвращается для сверки |
| address | Адрес кошелька в указанной сети — на него клиент отправляет платёж |
| currency | Валюта кошелька |
| network | Сеть кошелька |
| url | url_callback, переданный в запросе — возвращается для сверки |
| qr_base64_png | QR-код адреса в формате PNG, закодированный в base64. |
Когда что использовать
Когда что использовать
Порог индивидуален по валютам. При недоплате транзакция видна в блокчейне, но:
webhook не отправляется
деньги не зачисляются на баланс мерчанта
деньги физически остаются на адресе, не теряются
Ошибки 422
| Ситуация | Сообщение |
|---|---|
| Значение wallet_id не число | The wallet id must be an integer. |
| Значение wallet_id отрицательное | The wallet id must be greater than 0. |
| Комбинация currency + network не существует | The selected currency and network combination does not exist. |
| Валюта отключена у мерчанта | The selected currency is disabled. |
| Невалидный network | The selected network is invalid. |
| Невалидный currency | The selected currency is invalid. |
Создать платёж (invoice)
Разовый счёт под конкретный заказ с готовой страницей оплаты и поддержкой частичных платежей.
Параметры тела запроса
| Параметр | Тип | Обязателен | ОПИСАНИЕ |
|---|---|---|---|
| amount | number | да | Сумма в валюте currency. До 2 знаков после запятой, максимум 1 000 000 |
| currency | string | да | Код валюты счёта, например USD |
| order_id | integer | да | Целое число > 0. Должен быть уникальным |
| network / to_currency | string | нет | Если оба переданы — адрес генерируется сразу. Если нет — плательщик выбирает сам на странице оплаты |
| url_callback | string | нет | URL, на который будут отправляться webhooks с состоянием платежа |
| url_return | string | нет | Перед оплатой пользователь может нажать на кнопку в форме оплаты и вернуться на страницу магазина по этому URL. |
| url_success | string | нет | После успешной оплаты пользователь может нажать на кнопку в форме оплаты и вернуться по этому URL. |
| subtract | integer | нет | Процент комиссии платежа (0–100), перекладываемый на клиента сверх суммы счёта. 0 — комиссию платит мерчант, 100 — полностью клиент |
| accuracy_payment_percent | number | нет | Допустимая неточность в оплате (0–5), до 2 знаков после запятой. Например, если вы передадите значение 5, счет будет помечен как оплаченный, даже если клиент оплатил только 95% суммы. Фактическая сумма платежа будет зачислена на баланс |
| additional_data | string | нет | Дополнительная информация для Вас (не показывается клиенту). Макс. 255 символов |
| currencies | array of objects | нет | Список разрешенных валют для оплаты. Это полезно, если вы хотите ограничить список монет, которые ваши клиенты могут использовать для оплаты счетов. |
| except_currencies | array of objects | нет | Список исключенных валют для оплаты. |
| lifetime | integer | нет | Срок жизни счёта в секундах: от 300 до 43200 (12 часов). По умолчанию 3600 |
| customer_email | integer | нет | E-mail клиента (валидируется как email, до 255 символов) |
{
"amount": 2,
"currency": "USD",
"order_id": 1002,
"to_currency": "TRX",
"network": "TRON"
}
{
"uuid": "019f8914-9a83-71d4-a318-dd20f108ebc3",
"order_id": "3001",
"amount": "2",
"payment_amount": "0",
"payer_amount": "6.07017118",
"payer_amount_exchange_rate": "0.32948000",
"payer_currency": "TRX",
"currency": "USD",
"merchant_amount": "0",
"network": "TRON",
"address": "TMpPCg*****yGYKMhPz",
"address_qr_code": "iVBORw0KGgo...",
"from": null,
"txid": null,
"status": "check",
"is_final": false,
"url": "https://pay.speend.io/pay/019f8914-9a83-71d4-a318-dd20f108ebc3",
"expired_at": "2026-07-22 10:07:36",
"additional_data": null,
"created_at": "2026-07-22T09:07:36+00:00",
"updated_at": "2026-07-22T09:07:36+00:00"
}
Параметры ответа
| Параметр | ОПИСАНИЕ |
|---|---|
| uuid | UUID счёта (инвойса) |
| order_id | Ваш ID заказа, переданный в запросе — возвращается для сверки |
| amount | Сумма счёта в валюте currency |
| payment_amount | Сколько уже оплачено по счёту в валюте currency (растёт по мере поступления платежей, до полного покрытия amount) |
| payer_amount | Точная сумма к оплате в валюте, которую выбрал плательщик |
| payer_amount_exchange_rate | Курс конвертации currency → payer_currency, зафиксированный на момент создания счёта |
| payer_currency | Валюта, в которой плательщик фактически отправляет платёж |
| currency | Валюта счёта, заданная мерчантом при создании |
| merchant_amount | Сумма, зачисленная мерчанту после удержания комиссии (в валюте currency) |
| network | Сеть, выбранная для оплаты |
| address | Адрес для оплаты в выбранной сети |
| address_qr_code | QR-код адреса в формате PNG, закодированный в base64 |
| from | Всегда null в ответе этого метода — заполняется только в payment/info после получения платежа |
| txid | Всегда null в ответе этого метода — заполняется только в payment/info после получения платежа |
| status | Текущий статус счёта — смотри раздел "Cтатусы платежа" |
| is_final | Признак финального статуса — если true, дальнейших изменений по счёту не ожидается (см. оговорку в разделе статусов про refund_processing) |
| url | Ссылка на страницу оплаты, куда можно перенаправить клиента |
| expired_at | Дата и время истечения срока действия счёта |
| additional_data | Ваши произвольные данные, переданные при создании счёта |
| created_at | Дата и время создания счёта |
| updated_at | Дата и время последнего изменения счёта |
Статусы платежа
| Статус | Значение |
|---|---|
| process | Счёт создан, валюта ещё не выбрана |
| check | Валюта/сеть выбраны, адрес сгенерирован, ждём транзакцию |
| wrong_amount_waiting | Пришла недостаточная сумма, ждём доплаты |
| wrong_amount | Пришла недостаточная сумма, срок ожидания доплаты истёк — доплата больше не принимается |
| paid | Оплачено полностью |
| paid_over | Переплата, зачисляется автоматически |
| cancel | Счёт отменён / истёк срок ожидания оплаты (транзакция так и не пришла) |
| locked | Транзакция заблокирована AML-проверкой (комплаенс-скоринг адреса отправителя) |
| refund_processing | Инициирован возврат средств на адрес, с которого было пополнение. Обработка в процессе |
| refund_failed | Попытка возврата не удалась |
| refund_success | Возврат успешно завершён, средства получены клиентом обратно |
Ошибки 422
| Параметр | Тип |
|---|---|
| Значение amount больше 1 000 000 | The amount must be less than or equal to 1000000. |
| Сумма в пересчёте на USD меньше 0.5 (в т.ч. при отрицательном amount) | minimum amount 0.5 USD. |
| Значение order_id повторилось | order_id is not unique, try another. |
| Значение order_id отрицательно | The order id must be greater than 0. |
| Значение order_id не число | The order id must be an integer. |
| currency не найдена ни как крипто-, ни как фиатная валюта | currency is not available |
| Значение network не входит в список поддерживаемых сетей (опечатка/несуществующее значение) | The selected network is invalid. |
| network недоступна для приёма платежей | network is not available |
| to_currency недоступна для приёма платежей | Currency is not available. |
| Комбинация network + to_currency не существует | Currency with such network is not available |
| subtract больше 100 | The subtract must not be greater than 100. |
| accuracy_payment_percent больше 5 | The accuracy payment percent must not be greater than 5. |
| Значение lifetime меньше 300 | The lifetime must be at least 300. |
| url_callback/url_return/url_success не содержит домен мерчанта | url_callback is not valid / url_return is not valid / url_success is not valid |
Информация о платеже
Получение текущего статуса и полных данных по ранее созданному счёту. По uuid или order_id.
| Параметр | Тип | Обязателен |
|---|---|---|
| order_id | string | Любое одно из двух полей, либо оба сразу |
| uuid | string | — |
{
"uuid": "019f6af2-3ac1-73f5-a227-f216319ffad1"
}
{
"order_id": "1012"
}
Параметры ответа
Схема ответа полностью совпадает со схемой createPayment (см. раздел "Создать платёж"), с добавлением 2 полей. Дополнительно, в отличие от createPayment, где они всегда null, здесь заполняются реальными значениями:
| Параметр | Описание |
|---|---|
| paid_amount_usd | Оплаченная сумма, пересчитанная в USD по курсу на момент оплаты (не зависит от валюты счёта) |
| convert | Данные автоматической конвертации полученных средств в USDT/USDC — появляется, если у мерчанта в личном кабинете включена автоконвертация. null, если опция выключена |
| from | Адрес отправителя последнего поступившего депозита — заполняется реальным значением после получения платежа (в createPayment всегда null) |
| txid | Хэш транзакции последнего поступившего депозита — заполняется реальным значением после получения платежа (в createPayment всегда null) |
Пример конвертации
| Параметр | Описание |
|---|---|
| to_currency | Валюта, в которую сконвертированы средства (USDT или USDC) |
| commission | Комиссия за конвертацию, удержанная при обмене |
| rate | Курс обмена, применённый при конвертации |
| amount | Итоговая сумма после конвертации в to_currency |
"convert": {
"to_currency": "USDT",
"commission": "0.00000000",
"rate": "44.49640000",
"amount": "0.94872110"
}
Ошибки 422
| Ситуация | Сообщение |
|---|---|
| Платёж по переданным данным не найден | Payment not found |
| Не передано ни одно из полей | The order id field is required when uuid is not present. The uuid field is required when order id is not present. |