Payments API

Создать статический кошелёк

Постоянный адрес для неограниченного числа входящих платежей.

POST https://api.speend.io/payment/createStaticWallet

Когда что использовать

Параметр Тип Обязателен ОПИСАНИЕ
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)

Разовый счёт под конкретный заказ с готовой страницей оплаты и поддержкой частичных платежей.

POST https://api.speend.io/payment/createPayment

Параметры тела запроса

Параметр Тип Обязателен ОПИСАНИЕ
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.

POST https://api.speend.io/payment/info
Параметр Тип Обязателен
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.
speend