Loading...
REST API для создания заявок на обмен, получения курса и баланса, а также вебхуки для уведомлений о статусах заявок в реальном времени.
Все запросы авторизуются по API-ключу, который выдаёт ваш менеджер. Передавайте ключ в заголовке Authorization:
Authorization: Bearer msk_live_xxxxxxxxxxxxxxxxxxxxxxxxАльтернативно можно использовать заголовок X-API-Key:
X-API-Key: msk_live_xxxxxxxxxxxxxxxxxxxxxxxxБазовый URL: https://partner.money-station.org. Все запросы и ответы — в формате JSON. Ключ секретен: храните его только на сервере и никогда не публикуйте в коде клиента.
Рассчитать сумму к оплате и кэшбэк без создания заявки.
/api/partners/me/orders/calculateЗапрос
POST https://partner.money-station.org/api/partners/me/orders/calculate
Authorization: Bearer msk_live_...
Content-Type: application/json
{
"inputCurrency": "RUB",
"paymentCurrency": "RUB",
"inputAmount": 10000,
"cashbackPercent": 1.5
}Ответ
{
"inputCurrency": "RUB",
"inputAmount": 10000,
"paymentCurrency": "RUB",
"paymentAmount": 10000,
"balanceCurrency": "USDT",
"balanceAmount": 104.12,
"cashbackPercent": 1.5,
"cashbackAmount": 1.56,
"finalRate": 96.04,
"baseRate": 95.10,
"integratorPercent": 0,
"partnerPercent": 1.0,
"totalPercent": 1.0
}/api/partners/me/ordersЗапрос
POST https://partner.money-station.org/api/partners/me/orders
Authorization: Bearer msk_live_...
Content-Type: application/json
{
"inputCurrency": "RUB",
"paymentCurrency": "RUB",
"inputAmount": 10000,
"cashbackPercent": 1.5
}Ответ (заявка + ссылки на оплату для RUB)
{
"id": "0f3c…",
"exchangeNumber": "1234567890",
"status": "created",
"fromCurrency": "RUB",
"toCurrency": "USDT",
"fromAmount": 10000,
"toAmount": 104.12,
"rate": 96.04,
"cashbackPercent": 1.5,
"cashbackAmount": 1.56,
"activeSystem": "lovepay",
"createdAt": "2026-05-27T10:00:00Z",
"lovePayPaymentLink": "https://…",
"doverkaPayPaymentLink": null
}Поля ссылок (lovePayPaymentLink, doverkaPayPaymentLink, b2mQrLink и др.) заполняются в зависимости от подключённой платёжной системы.
/api/partners/me/orders?status=all&page=1&pageSize=20/api/partners/me/orders/{id}/api/partners/meСтатусы заявки: created → paid → completed, либо cancelled. Рекомендуем полагаться на вебхуки, а polling использовать как резервный механизм.
При смене статуса заявки мы отправляем POST на ваш URL (настраивается менеджером). События: order.created, order.paid, order.completed, order.cancelled.
Тело запроса
{
"id": "5a1c…", // id доставки (для идемпотентности)
"event": "order.paid",
"created_at": "2026-05-27T10:05:00Z",
"data": {
"event": "order.paid",
"order": {
"id": "0f3c…",
"number": "1234567890",
"status": "paid",
"input_currency": "RUB",
"from_currency": "RUB",
"to_currency": "USDT",
"from_amount": 10000,
"to_amount": 104.12,
"rate": 96.04,
"cashback_amount": 1.56,
"created_at": "2026-05-27T10:00:00Z",
"paid_at": "2026-05-27T10:05:00Z",
"completed_at": null
}
}
}Заголовки
X-Webhook-Id: 5a1c…
X-Webhook-Event: order.paid
X-Webhook-Signature: sha256=<hex>Проверка подписи (HMAC-SHA256 по сырому телу)
// Node.js
const crypto = require('crypto');
function verify(rawBody, signatureHeader, secret) {
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(rawBody) // именно сырой body, до JSON.parse
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signatureHeader),
Buffer.from(expected)
);
}Отвечайте кодом 2xx в течение 15 секунд. При ошибке или таймауте мы повторяем доставку с возрастающей паузой (1м, 5м, 15м, 1ч, 6ч, 24ч). Поле id доставки одинаково для всех повторов — используйте его для идемпотентности.
Ошибки возвращаются с соответствующим HTTP-кодом и телом:
{ "message": "Описание ошибки" }401 — неверный или неактивный API-ключ400 — некорректные параметры запроса404 — заявка не найдена