Приём платежей

Статус и список платежей

Получите актуальное состояние платежа по идентификатору или выберите платежи за период с фильтрами.

GET /v1/payments/:id
curl https://api.nordpay.pro/v1/payments/pay_2Kq8sD1fVxJ7mN4p \
  -H "Authorization: Bearer $NORDPAY_SECRET_KEY"

Получить платёж

Запрос возвращает объект платежа целиком — тот же, что при создании, с актуальными status, paid_at, amount_refunded и failure.

Если платёж создан другим ключом режима — тестовым вместо боевого или наоборот — вернётся 404 not_found.

Ответ · 200
{
  "id": "pay_2Kq8sD1fVxJ7mN4p",
  "object": "payment",
  "status": "succeeded",
  "amount": 499000,
  "amount_refunded": 0,
  "currency": "RUB",
  "fee": 17465,
  "net": 481535,
  "method": "sbp",
  "description": "Заказ №1042",
  "order_id": "1042",
  "metadata": {
    "cart_id": "c_77"
  },
  "customer": {
    "email": "buyer@example.com"
  },
  "confirmation": {
    "type": "redirect",
    "url": "https://api.nordpay.pro/checkout/pay_2Kq8sD1fVxJ7mN4p"
  },
  "sbp": {
    "qr_payload": "https://api.nordpay.pro/checkout/pay_2Kq8sD1fVxJ7mN4p",
    "expires_at": "2026-11-08T12:30:00Z"
  },
  "crypto": null,
  "crypto_network": null,
  "card": null,
  "failure": null,
  "livemode": false,
  "created_at": "2026-11-08T12:00:00Z",
  "paid_at": "2026-11-08T12:03:41Z",
  "expires_at": "2026-11-08T12:30:00Z"
}

Список платежей

Платежи отдаются от новых к старым. Чтобы получить следующую страницу, передайте next_cursor из ответа в параметре cursor. Когда has_more равно false, данных больше нет.

Параметры списка
ПараметрТипОписание
statusstringФильтр по статусу: pending, succeeded, failed и т. д.
methodstringФильтр по методу: sbp, card, crypto.
networkstringФильтр по сети USDT: trc20, ton, bep20, erc20, sol.
limitintegerСколько объектов вернуть за один запрос.
cursorstringЗначение next_cursor из предыдущего ответа — для следующей страницы.
GET /v1/payments
curl https://api.nordpay.pro/v1/payments?status=succeeded&limit=20 \
  -H "Authorization: Bearer $NORDPAY_SECRET_KEY"
Ответ · 200
{
  "object": "list",
  "data": [
    {
      "id": "pay_2Kq8sD1fVxJ7mN4p",
      "object": "payment",
      "status": "succeeded",
      "amount": 499000,
      "method": "sbp",
      "order_id": "1042",
      "created_at": "2026-11-08T12:00:00Z"
    },
    {
      "id": "pay_2Kq7zR9cWm3nB1xa",
      "object": "payment",
      "status": "succeeded",
      "amount": 159000,
      "method": "card",
      "order_id": "1041",
      "created_at": "2026-11-08T11:42:10Z"
    }
  ],
  "has_more": true,
  "next_cursor": "pay_2Kq7zR9cWm3nB1xa"
}

Баланс

  • available — доступно к выплате.
  • pending — оплачено, но ещё не зачислено к выплате по графику.
  • reserved — временно удержано, например под возврат или спорную операцию.

Все суммы — в копейках. Выплаты заказываются и отслеживаются в кабинете.

GET /v1/balance
curl https://api.nordpay.pro/v1/balance \
  -H "Authorization: Bearer $NORDPAY_SECRET_KEY"
Ответ · 200
{
  "available": 1834500,
  "pending": 482300,
  "reserved": 0,
  "currency": "RUB"
}

Вебхуки или опрос

Основной способ узнать об оплате — вебхук: он приходит сразу после смены статуса. Опрос по GET /v1/payments/:id оставьте как подстраховку — например, когда покупатель вернулся на return_url, а уведомление ещё в пути.

Не опрашивайте API чаще, чем нужно: запросы учитываются в лимитах. Увеличивайте паузу между попытками и останавливайтесь на финальном статусе.
Резервный опрос статуса
async function waitForPayment(id, { timeoutMs = 10 * 60 * 1000 } = {}) {
  const started = Date.now();
  let delay = 2000;
  while (Date.now() - started < timeoutMs) {
    const res = await fetch(`https://api.nordpay.pro/v1/payments/${id}`, {
      headers: { Authorization: `Bearer ${process.env.NORDPAY_SECRET_KEY}` },
    });
    const payment = await res.json();
    if (['succeeded', 'failed', 'canceled', 'expired'].includes(payment.status)) return payment;
    await new Promise((r) => setTimeout(r, delay));
    delay = Math.min(delay * 1.5, 30000);
  }
  return null;
}