ДОКУМЕНТАЦИЯ

API anore

REST API для приёма платежей. Создавайте счёт, отправляйте клиента на готовую форму оплаты (СБП, карты, крипта) и получайте уведомление об оплате на свой сервер.

БАЗОВЫЙ URL
https://api.anore.cc/v1

Запросы и ответы — application/json. Суммы в рублях.

Быстрый старт

01Получите ключ

Создайте API-ключ в кабинете. Тестовый для проверки, боевой для приёма денег.

API-ключи
02Создайте платёж

POST /payments с суммой и описанием — в ответе ссылка на форму оплаты.

Как создать
03Получите вебхук

При оплате мы шлём payment.succeeded на ваш URL. Проверьте подпись.

Про вебхуки

SDK

Официальные библиотеки для приёма платежей и проверки вебхуков — из коробки. Установка одной командой, создание счёта в один вызов.

PythonPyPI
pip install anore
pypi.org/project/anore
Node.jsnpm
npm install anore-pay
npmjs.com/package/anore-pay
PHPComposer
composer require anore/sdk
packagist.org/packages/anore/sdk
Gogo module
go get github.com/roditsya/sdk-go
github.com/roditsya/sdk-go
JavaJitPack
com.github.roditsya:sdk-java
github.com/roditsya/sdk-java

Авторизация

Каждый запрос требует API-ключ в заголовке. Ключи создаются в кабинете → API-ключи. Тестовый ключ (an_test_…) создаёт платежи в тестовом режиме, боевой (an_live_…) — настоящие.

Authorization: Bearer an_live_xxxxxxxxxxxxxxxx

Аккаунт-ключ обслуживает все кассы — тогда в теле нужен shopId.

Подпись запроса · необязательно

Bearer-ключа достаточно для авторизации. Для дополнительной защиты от подмены тела можно подписать запрос — передайте HMAC-SHA256 тела в заголовке Anore-Signature, сервер пересчитает его вашим секретным ключом и сверит.

Anore-Signature: hex( HMAC-SHA256( raw_body, SECRET_KEY ) )
import crypto from 'node:crypto'
const body = JSON.stringify({ amount: 1500, description: 'Pro plan', orderId: 'o_1' })
const sign = crypto.createHmac('sha256', SECRET_KEY).update(body).digest('hex')

Создать платёж

Создаёт счёт и возвращает ссылку на платёжную форму. Перенаправьте клиента на paymentUrl — счёт действителен 4 часа.

POST/payments
ПОЛЕТИПОПИСАНИЕ
amount
numberСумма счёта в выбранной валюте
currency
stringВалюта счёта: RUB или USD. По умолчанию RUB. USD фиксируется и конвертируется в рубли по курсу ЦБ при создании
description
stringОписание (видит клиент)
shopId
integerID кассы — обязателен для аккаунт-ключей (an_*)
orderId
stringВаш ID заказа
methods
stringМетоды через запятую: sbp, yoomoney, crypto. Ограничивает форму выбранными методами в пределах разрешённых кассе. Пусто — все методы кассы
getbackurl
stringКуда ведёт кнопка «вернуться» на форме оплаты (http/https). Переопределяет сайт кассы
successurl
stringКуда направить клиента после успешной оплаты (http/https). Переопределяет URL кассы для этого платежа
failurl
stringКуда направить клиента при неуспешной оплате или истечении счёта (http/https). Переопределяет URL кассы для этого платежа
ЗАПРОС
curl -X POST https://api.anore.cc/v1/payments \
  -H "Authorization: Bearer an_live_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"amount":1500,"description":"Pro plan","orderId":"order_8842","shopId":1,"methods":"sbp,yoomoney","successurl":"https://shop.example/success","failurl":"https://shop.example/fail"}'
ОТВЕТ · 200
{
  "success": true,
  "id": "b5b773de-b7f4-4c20-93da-2ab5f8679ba5",
  "orderId": "order_8842",
  "amount": 1500,
  "rubAmount": 1500,
  "currency": "rub",
  "status": "new",
  "paymentUrl": "https://pay.anore.cc/b5b773de-...",
  "sbpUrl": "https://qr.nspk.ru/...",   // H2H only
  "expiresIn": 14400
}

Статус платежа

Статусы: new · paid · expired. Опрос — не чаще раза в 3 секунды.

GET/payments/{id}
ЗАПРОС
curl https://api.anore.cc/v1/payments/b5b773de-... \
  -H "Authorization: Bearer an_live_xxxxxxxxxxxxxxxx"
ОТВЕТ · 200
{
  "success": true,
  "id": "b5b773de-...",
  "amount": 1500,
  "rubAmount": 1500,
  "currency": "rub",
  "status": "paid",
  "paid": true
}

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

Возвращает платежи вашей кассы, свежие сверху. Аккаунт-ключу нужен shopId; ключ, привязанный к кассе, уже ограничен ей. Можно фильтровать по статусу и датам.

GET/payments
ПАРАМЕТРТИПОПИСАНИЕ
shopId
integerID кассы — обязателен для аккаунт-ключей (an_*)
status
stringФильтр: paid (успешный) · pending (в обработке) · failed (неуспешный) · written_off (списанный)
from
stringС даты включительно, YYYY-MM-DD
to
stringПо дату включительно, YYYY-MM-DD
limit
integerРазмер страницы, 1–200 (по умолчанию 50)
offset
integerСмещение для пагинации (по умолчанию 0)
ЗАПРОС
curl "https://api.anore.cc/v1/payments?shopId=1&status=paid&from=2026-06-01&to=2026-06-30&limit=50" \
  -H "Authorization: Bearer an_live_xxxxxxxxxxxxxxxx"
ОТВЕТ · 200
{
  "success": true,
  "shopId": 1,
  "total": 128,
  "limit": 50,
  "offset": 0,
  "payments": [
    {
      "id": "b5b773de-...",
      "orderId": "order_8842",
      "amount": 1500,
      "baseAmount": 1500,
      "rubAmount": 1500,
      "currency": "rub",
      "description": "Pro plan",
      "status": "paid",
      "paid": true,
      "method": "sbp",
      "createdAt": "2026-06-09T12:00:00.000Z",
      "paidAt": "2026-06-09T12:01:12.000Z"
    }
  ]
}

Вебхуки

Настраиваются в кабинете → Вебхуки. При смене статуса платежа или выплаты anore отправляет подписанный POST на URL соответствующей кассы.

payment.succeededСчёт оплачен
payment.expiredСчёт истёк по времени без оплаты
payout.createdЗаявка на выплату создана и ожидает обработки
payout.processingЗаявка принята оператором в работу
payout.succeededВыплата успешно исполнена
payout.failedВ выплате отказано
ЗАГОЛОВКИ
Content-Type: application/json
Anore-Event: payout.succeeded
Anore-Delivery-Id: payout.succeeded:WD-42
Anore-Signature: hex( HMAC-SHA256( raw_body, SECRET ) )
ТЕЛО · ПЛАТЁЖ
{
  "event": "payment.succeeded",
  "id": "b5b773de-...",
  "orderId": "order_8842",
  "amount": 1500,
  "rubAmount": 1500,
  "currency": "rub",
  "status": "paid",
  "description": "Pro plan",
  "shop": "shop-anore.cc",
  "createdAt": "2026-06-09T12:00:00.000Z"
}
ТЕЛО · ВЫПЛАТА
{
  "event": "payout.succeeded",
  "id": "WD-42",
  "externalId": "wd_88",
  "shopId": 1,
  "status": "paid",
  "amount": 10000,
  "currency": "RUB",
  "method": "usdt_ton",
  "fee": 240,
  "netRub": 9760,
  "amountUsdt": 119.388379,
  "txHash": "993e41b84318...",
  "createdAt": "2026-07-05T21:37:11.000Z",
  "processedAt": "2026-07-06T11:51:04.000Z"
}

Ответьте любым HTTP 2xx. При сетевой ошибке или другом статусе доставка повторяется с увеличивающейся задержкой. Семантика доставки — at-least-once: сохраняйте Anore-Delivery-Id и не обрабатывайте его повторно.

Пересчитайте HMAC по сырому телу своим SECRET и сравните с Anore-Signature. Не совпало — отклоните запрос.

Баланс

Возвращает состояние баланса для вывода: сколько доступно, сколько в холде, размер комиссии и текущий курс выплат Rapira +2% USDT/RUB (фиксинг обновляется в 09:00 МСК). Доступно только если у кассы включён API выплат.

GET/balance
ЗАПРОС
curl "https://api.anore.cc/v1/balance?shopId=1" \
  -H "Authorization: Bearer an_live_xxxxxxxxxxxxxxxx"
ОТВЕТ · 200
{
  "currency": "RUB",
  "available": 12750.42,
  "hold": 3100.00,
  "matured": 15850.42,
  "paidAmount": 15850.42,
  "withdrawn": 5000.00,
  "reserved": 0.00,
  "fee": {
    "flatRub": 240,
    "thresholdRub": 25000,
    "percentAbove": 1.0,
    "trc20SurchargeRub": 60
  },
  "minAmount": 500,
  "maxAmount": 500000,
  "usdtRateRub": 83.39,
  "rapiraMarketUsdtRub": 81.75,
  "rapiraMarkupPercent": 2.0,
  "sbpBanks": ["Сбербанк", "Т-Банк", "Альфа-Банк", "..."],
  "cbrRateRub": 78.50
}

Комиссии на вывод

Возвращает актуальные комиссии на вывод, настроенные для авторизованного мерчанта. До thresholdRub используется flatRub; начиная с thresholdRub — percentAbove от суммы плюс surchargeRub. Настройки едины для всех касс мерчанта.

GET/payouts/fees
ЗАПРОС
curl "https://api.anore.cc/v1/payouts/fees?shopId=1" \
  -H "Authorization: Bearer an_live_xxxxxxxxxxxxxxxx"
ОТВЕТ · 200
{
  "shopId": 1,
  "currency": "RUB",
  "thresholdRub": 25000,
  "minAmountRub": 500,
  "maxAmountRub": 500000,
  "methods": [
    {
      "method": "card_rub",
      "label": "Карта РФ",
      "flatRub": 240,
      "percentAbove": 1.0,
      "surchargeRub": 0
    },
    {
      "method": "sbp_rub",
      "label": "СБП",
      "flatRub": 240,
      "percentAbove": 1.0,
      "surchargeRub": 0
    },
    {
      "method": "usdt_ton",
      "label": "USDT TON",
      "flatRub": 240,
      "percentAbove": 1.0,
      "surchargeRub": 0
    },
    {
      "method": "usdt_bep20",
      "label": "USDT BEP20",
      "flatRub": 240,
      "percentAbove": 1.0,
      "surchargeRub": 0
    },
    {
      "method": "usdt_trc20",
      "label": "USDT TRC20",
      "flatRub": 300,
      "percentAbove": 1.0,
      "surchargeRub": 60
    }
  ]
}

Курсы выплат

Возвращает текущие курсы и коэффициенты, используемые при расчёте выплат. rapiraUsdtRub — фиксинг Rapira с надбавкой 2%, rapiraMarketUsdtRub — исходный фиксинг, rapiraMarkupPercent — размер надбавки. rubToUsdt — количество USDT за 1 ₽ чистой суммы, usdtToRub — рублей за 1 USDT при зачислении на карту или по СБП, rubToRubSettlement — рублей к зачислению за 1 ₽ чистой суммы. Комиссия здесь не учитывается. Итоговая выплата рассчитывается заново по актуальным курсам в момент исполнения.

GET/payouts/rates
ЗАПРОС
curl "https://api.anore.cc/v1/payouts/rates?shopId=1" \
  -H "Authorization: Bearer an_live_xxxxxxxxxxxxxxxx"
ОТВЕТ · 200
{
  "shopId": 1,
  "ratePolicy": "execution",
  "rapiraUsdtRub": 83.39,
  "rapiraMarketUsdtRub": 81.75,
  "rapiraMarkupPercent": 2.0,
  "cbrUsdRub": 78.50,
  "rubToUsdt": 0.01199185,
  "usdtToRub": 78.50,
  "rubToRubSettlement": 0.94135988,
  "rapiraFixing": "09:00 Europe/Moscow"
}

Создать выплату

Ставит заявку на вывод в очередь администратора. Сумма — целые рубли от 500 ₽ до 500 000 ₽. Комиссия удерживается из суммы заявки по актуальным настройкам мерчанта из GET /payouts/fees. Для карты РФ и СБП чистая сумма переводится в USDT по курсу Rapira +2%, затем эта же сумма USDT пересчитывается в рубли по курсу ЦБ. Рублёвые выплаты обрабатываются оператором вручную. Котировка в ответе на создание ориентировочная: итоговая сумма рассчитывается по курсам, действующим в момент обработки выплаты. После исполнения эти курсы сохраняются в истории. Заявка сразу становится в статусе pending.

POST/payouts
ПОЛЕТИПОПИСАНИЕ
amount
integerСумма в рублях от 500 до 500 000. Комиссия удерживается из суммы
method
stringМетод выплаты — см. список ниже
address
stringНомер карты РФ, номер телефона СБП или адрес USDT (максимум 190 символов)
bank
stringНазвание банка получателя. Обязательно для method=sbp; актуальный список возвращается в sbpBanks метода GET /balance
shopId
integerID кассы — обязателен для аккаунт-ключей (an_*)
externalId
stringВаш внутренний ID заявки (сохраняется, возвращается в статусе выплаты и приходит в вебхуках)
МЕТОДЫ
cardКарта РФ — ручная выплата. Номер карты: 16–19 цифр; сумма к зачислению рассчитывается по курсам Rapira +2% → ЦБ
sbpСБП — ручная выплата по российскому мобильному номеру; сумма к зачислению рассчитывается по курсам Rapira +2% → ЦБ
usdt_tonUSDT в сети TON — при подключённом авто-выводе уходит сразу и возвращает txHash
usdt_bep20USDT в сети BEP20 — обрабатывается вручную оператором
usdt_trc20USDT в сети TRC20 — ручная выплата на валидный TRON-адрес, начинающийся с T; к стандартной комиссии добавляется 60 ₽
ЗАПРОС
curl -X POST https://api.anore.cc/v1/payouts \
  -H "Authorization: Bearer an_live_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"amount":10000,"method":"sbp","address":"+79991234567","bank":"Сбербанк","shopId":1,"externalId":"wd_88"}'
ОТВЕТ · 200
{
  "id": "WD-42",
  "status": "pending",
  "amount": 10000,
  "method": "sbp",
  "address": "+7 999 123-45-67",
  "bank": "Сбербанк",
  "fee": 240,
  "netRub": 9760,
  "amountUsdt": 117.04,
  "rapiraRate": 83.39,
  "cbrRate": 78.50,
  "settlementRub": 9187.64,
  "quoteType": "estimate",
  "ratePolicy": "execution",
  "externalId": "wd_88"
}

Статус выплаты

Статусы: pending · approved · paid · rejected. У успешных TON-выплат в ответе будет txHash.

GET/payouts/{id}
ЗАПРОС
curl https://api.anore.cc/v1/payouts/WD-42 \
  -H "Authorization: Bearer an_live_xxxxxxxxxxxxxxxx"
ОТВЕТ · 200
{
  "id": "WD-42",
  "status": "paid",
  "amount": 10000,
  "method": "СБП",
  "methodCode": "sbp",
  "address": "+7 999 123-45-67",
  "bank": "Сбербанк",
  "fee": 240,
  "netRub": 9760,
  "amountUsdt": 117.04,
  "rapiraRate": 83.39,
  "cbrRate": 78.50,
  "settlementRub": 9187.64,
  "quoteType": "executed",
  "ratePolicy": "execution",
  "externalId": "wd_88",
  "createdAt": "2026-07-05T21:37:11.000Z",
  "processedAt": "2026-07-06T11:51:04.000Z"
}

Коды ошибок

400Ошибка валидации (amount / method / address / bank / description / shopId / JSON)
401Нет или неверный ключ · неверная подпись
403Касса заблокирована · API выплат не включён для кассы
404Касса, платёж или выплата не найдены
503Курс Rapira +2% или ЦБ временно недоступен

Нужна помощь с интеграцией?

Напишите нам — поможем подключиться и разобраться с вебхуками.

Написать в Telegram