1Что такое plopay
plopay — технологическая платформа приёма платежей. Она регистрирует оплату, ведёт учёт операций, показывает аналитику и формирует запросы на конвертацию и выплату. Сами денежные средства проходят через участников финансовой инфраструктуры — платформа их не хранит.
Что вы получаете:
- приём платежей несколькими методами;
- личный кабинет с аналитикой, историей операций и уведомлениями;
- автоматическую конвертацию рублёвой выручки в USDT;
- вывод на подключённый кошелёк или карту.
2Путь платежа
От оплаты покупателем до денег на вашем кошельке проходит четыре этапа. Все они видны в кабинете в разделе «Конвертация».
plopay.io/pay/… и платит по QR СБП. Оплату подтверждаем мы уведомлением, а не возврат покупателя на сайт.3Статусы операций
| Статус | Что означает | Что дальше |
|---|---|---|
| Ожидает оплаты | Платёж создан, покупатель ещё не оплатил | Станет «Холд» после подтверждения оплаты или закроется по истечении срока |
| Холд | Платёж принят, идут 24 часа выдержки | Автоматически перейдёт в очередь на конвертацию |
| Ожидает конвертации | Холд пройден, ждёт ближайшего запуска | Конвертируется после 17:00 МСК |
| Доступно | Сконвертировано в USDT и зачислено в баланс | Можно выводить |
| На выводе | Заявка на вывод создана | Обрабатывается с 18:00 до 21:00 МСК |
| Выполнено | Операция завершена | — |
4Подключение
Учётные записи создаются вручную — самостоятельной регистрации нет. Порядок такой:
- Оставьте заявку на сайте или напишите в Telegram.
- Менеджер уточняет вид деятельности, ожидаемые обороты и нужные методы приёма.
- Вам создают кассу и передают логин и пароль от личного кабинета.
- При первом входе смените пароль в разделе «Настройка проекта».
Вход в кабинет — на странице plopay.io/cabinet.
5Личный кабинет
| Раздел | Что внутри |
|---|---|
| Обзор | Доступно к выводу, оборот, число оплат, конверсия и средний чек за выбранный период с изменением к прошлому периоду. График оборота, статусы платежей, последние платежи. |
| Аналитика | Оборот, прибыль и возвраты за период, разбивка по дням, по дням недели и по часам, распределение статусов. |
| Уведомления | Новые платежи, зачисления, заявки на вывод и возвраты. Непрочитанные отмечены счётчиком в меню. |
| Транзакции | Все операции по кассе с суммой, назначением и статусом. |
| Выводы | Создание заявки на вывод. |
| Возвраты | История возвратов по платежам. |
| Конвертация | Текущий курс, очередь, время ближайшего запуска и история конвертаций. |
| Настройка проекта | Идентификатор, ключи доступа, адрес для колбэков. |
| Методы приёма | Подключённые методы и их статус. |
| Кошельки и карты | Реквизиты для вывода средств. |
Период задаётся в верхней панели: сегодня, 7 дней, 30 дней, за всё время или произвольный диапазон через календарь. Выбор действует и на «Обзор», и на «Аналитику». Валюту отображения можно переключить между рублём и USDT.
6Методы приёма
Методы подключает и настраивает менеджер.
| Метод | Как платит покупатель |
|---|---|
| СБП | QR-код или выбор банка из списка — приложение банка открывается сразу на подтверждении платежа |
| Карты | Защищённая форма банка |
| Криптовалюта | Выбирает монету и сеть на нашей странице, получает адрес, сумму и QR-код. Счёт выставляется в рублях, зачисление — как у остальных методов |
Менеджер может временно закрыть метод — тогда он отображается как «Отключен», а платежи этим методом не принимаются.
7Конвертация и курс
Рублёвая выручка конвертируется в USDT раз в сутки после 17:00 МСК. Курс устанавливает платформа: он может быть фиксированным либо считаться от котировки биржи с наценкой.
В разделе «Конвертация» отображается:
- действующий курс в обе стороны;
- сумма в очереди и сколько USDT вы получите по текущему курсу;
- сколько сейчас на холде;
- время ближайшего запуска и была ли конвертация сегодня.
В истории конвертаций сохраняется курс, по которому фактически прошла каждая конвертация.
8Вывод средств
- Добавьте способ вывода в разделе «Кошельки и карты».
- В разделе «Выводы» укажите валюту и сумму, создайте заявку.
- Заявка получает статус «На выводе» и уходит в обработку.
- Заявки обрабатываются ежедневно с 18:00 до 21:00 МСК.
Отдельный способ вывода — на криптокошелёк или на карту — может быть временно закрыт для кассы. Валюты закрытого способа недоступны в форме вывода, над формой показывается пометка.
Вывод на криптокошелёк
Выплаты уходят из баланса в USDT. Если кошелёк в другой монете, конвертация делается автоматически в момент выплаты — держать резерв в этой монете не нужно.
Проверьте сеть кошелька перед сохранением: перевод в чужой сети не восстанавливается. Для USDT доступны TRC-20, ERC-20, BEP-20, TON и Polygon.
9API для интеграции
Сервер вашего магазина может работать с plopay напрямую: создавать платежи, читать статусы и балансы, заказывать выплаты и получать уведомления об изменениях.
Авторизация
Ключ и секрет — в кабинете, раздел «Настройка проекта». Ключ передаётся заголовком в каждом запросе, секретом подписываются наши уведомления к вам, а если для кассы включена подпись запросов — и ваши запросы к нам. Оба держите только на сервере.
curl https://plopay.io/api/v1/me \
-H "X-Api-Key: ВАШ_КЛЮЧ"
Лимиты
На один ключ — 60 запросов в минуту, из них не больше половины на создание платежей и выплат. Для кассы лимит может быть изменён: действующее значение возвращает GET /api/v1/me в поле rate_limit. Сверх лимита — ответ 429 с телом rate_limited и заголовком Retry-After: через сколько секунд повторить. Тело запроса — не больше 64 КБ. Запросы без ключа или с неверным ключом ограничены 30 в минуту с одного IP.
Подпись запросов
Для кассы может быть включена обязательная подпись — тогда одного ключа недостаточно (признак возвращает GET /api/v1/me в поле signature_required). Добавляйте к каждому запросу два заголовка: X-Plopay-Timestamp — текущее время в секундах (Unix) и X-Plopay-Signature — HMAC-SHA256 вашим секретом от строки timestamp.METHOD.path.body. Здесь path — путь вместе со строкой запроса, body — тело ровно в том виде, в каком вы его отправляете (для GET — пустая строка).
const ts = Math.floor(Date.now() / 1000).toString();
const body = JSON.stringify({ amount: 3400, currency: 'RUB', order_id: 'ORDER-1' });
const signature = crypto.createHmac('sha256', SECRET)
.update(ts + '.POST./api/v1/payments.' + body)
.digest('hex');
Метка времени не должна расходиться с нашей больше чем на 5 минут, а подпись POST-запроса принимается только один раз — при повторе подпишите запрос заново.
Методы
| Метод | Что делает |
|---|---|
POST /api/v1/payments | Создать платёж. Поля: amount — минимум 10 ₽ (для method: crypto порог свой — см. раздел об оплате криптовалютой), currency — только RUB, order_id, description, return_url — куда вернуть покупателя после оплаты (если не передать, берётся адрес из настроек кассы), method — необязательно: sbp, card или crypto; для крипты можно добавить crypto_currency и crypto_network |
GET /api/v1/payments/{id} | Платёж по нашему id или по вашему order_id |
GET /api/v1/payments | Список операций. Фильтры: status, type, limit |
GET /api/v1/balance | Балансы, сумма в очереди на конвертацию и на холде |
GET /api/v1/rate | Действующий курс конвертации и час запуска |
GET /api/v1/payouts/{id} | Статус выплаты: payout_status, txid, адрес получателя |
GET /api/v1/me | Проверка ключа: данные кассы, подключённые методы и открытые способы приёма и вывода (channels) включённые методы API (api), лимит запросов (rate_limit) и обязательность подписи (signature_required) |
Создание платежа
curl -X POST https://plopay.io/api/v1/payments \
-H "X-Api-Key: ВАШ_КЛЮЧ" -H "Content-Type: application/json" \
-d '{"amount": 3400, "currency": "RUB", "order_id": "ORDER-1", "description": "Заказ №1"}'
{
"id": "tx_d732f16db5dc",
"order_id": "ORDER-1",
"status": "pending",
"internal_status": "new",
"amount": 3400,
"currency": "RUB",
"method": "sbp",
"payment_url": "https://plopay.io/pay/pt_9f8e7d6c5b4a3210f1e2d3c4b5a69788",
"expires_at": "2026-09-12T20:45:04.000Z",
"created_at": "2026-09-12T20:15:04.851Z"
}
payment_url — это наша платёжная страница на plopay.io: название проекта, сумма, QR СБП и статус оплаты. Своя форма оплаты и отдельная интеграция не нужны, страница одна для всех проектов. После оплаты покупатель вернётся на ваш return_url, если вы его передали.Оплата криптовалютой
Криптовалюта подключается тем же вызовом — достаточно передать method: "crypto":
curl -X POST https://plopay.io/api/v1/payments -H "X-Api-Key: ВАШ_КЛЮЧ" -H "Content-Type: application/json" -d '{"amount": 3400, "currency": "RUB", "method": "crypto", "order_id": "ORDER-2"}'
Счёт по-прежнему выставляется в рублях, и в рублях же он отображается в кабинете и в отчётах. Криптовалюту выбирает сам покупатель на нашей платёжной странице: сначала монету, потом сеть. Сумму к переводу, адрес и QR-код мы формируем в момент выбора — курс фиксируется на час, пока действует счёт.
| Монета | Сети |
|---|---|
| USDT | Tron (TRC-20), TON, BNB Smart Chain, Ethereum, Solana, Polygon, Base, Avalanche |
| USDC | Ethereum, Solana, Polygon, Base, Avalanche |
| BTC, ETH, Toncoin, TRX, BNB, SOL, LTC, DOGE, POL, AVAX, XMR | собственные сети монет |
Список доступных монет и сетей обновляется автоматически: если направление временно закрыто, покупатель его не увидит. Комбинации, где сумма счёта меньше минимума сети, показываются неактивными с подписью «минимум ≈ N ₽».
Если монета и сеть известны заранее, их можно задать при создании счёта — тогда покупатель сразу увидит реквизиты, без шага выбора:
{"amount": 3400, "currency": "RUB", "method": "crypto",
"crypto_currency": "USDT", "crypto_network": "TRX-TRC20", "order_id": "ORDER-3"}
Когда монета и сеть определены — вами заранее или покупателем на странице — ответы POST /api/v1/payments, GET /api/v1/payments/{id} и уведомления содержат блок crypto с реквизитами. Их можно показать в своём боте или приложении, не отправляя покупателя на нашу страницу:
"crypto": {
"currency": "LTC",
"network": "LTC",
"address": "ltc1qn4aaw058cc32jadkmsweszmhe7m9j7qt343fkt",
"amount": "0.28716",
"paid_amount": null
}
amount — точная сумма к переводу, её нельзя пересчитывать самостоятельно: курс зафиксирован за этим счётом. paid_amount заполняется после оплаты.
amount_too_small полем min_amount.expires_at. Покупатель может сменить монету до оплаты — прежние адреса остаются рабочими, оплата по любому из них засчитается.Зачисление. Крипта проходит тот же путь, что карты и СБП: после подтверждения сети платёж встаёт на холд 24 часа, затем участвует в суточной конвертации и попадает на баланс в USDT. Отдельного крипто-баланса нет. В payment.succeeded и в GET /api/v1/payments/{id} сумма приходит в рублях.
Дополнительные статусы, которые встречаются только у крипты: платёж может задержаться в processing, пока сеть набирает подтверждения, и может быть остановлен AML-контролем — в этом случае он не зачисляется до ручной проверки, а покупатель видит на странице оплаты соответствующее предупреждение.
payment.succeeded или после того, как GET /api/v1/payments/{id} вернул status: succeeded.order_id не создаёт второй платёж — вернётся уже существующий с пометкой idempotent. Это защищает от двойного списания при повторе запроса по таймауту.Статусы в ответах
status | Когда | internal_status |
|---|---|---|
| pending | Платёж создан, ждём оплату покупателем | new |
| processing | Покупатель начал оплату; для выплат — заявка в работе | new, withdrawing |
| succeeded | Оплата подтверждена либо выплата выполнена | hold, awaiting_conversion, available, completed |
| expired | Время на оплату истекло, деньги не поступили | expired |
| canceled | Платёж отменён или отклонён банком | canceled |
| refunded | По оплаченному платежу выполнен возврат | refunded |
| chargeback | Банк отозвал ранее успешную оплату | chargeback |
Платежи с test: true — проверочные: они проходят весь цикл статусов и вебхуков, но в расчёты, баланс и аналитику не попадают.
Что происходит с деньгами после успешной оплаты, видно в поле settlement: hold — идут 24 часа выдержки, awaiting_conversion — ждёт конвертации, available — доступно к выводу.
| Поле | Значение |
|---|---|
payment_url | Платёжная страница plopay.io для покупателя |
expires_at | До какого момента платёж можно оплатить |
paid_at | Момент подтверждения оплаты |
test | true — платёж создан в тестовом режиме кассы |
Уведомления (webhooks)
Укажите адрес в кабинете, раздел «Настройка проекта» — и мы будем присылать POST при каждом изменении статуса.
| Событие | Когда приходит |
|---|---|
payment.created | Платёж создан, покупателю выдана ссылка на оплату |
payment.succeeded | Оплата подтверждена — можно выдавать товар |
payment.expired | Срок оплаты истёк, деньги не поступили |
payment.canceled | Платёж отменён или отклонён |
payment.refunded | По платежу выполнен возврат |
payment.chargeback | Оплата отозвана банком |
payment.processing | Промежуточные изменения по расчётам |
payout.created | Создана заявка на вывод |
По одному платежу событий может быть несколько, в том числе после успешной оплаты: возврат или отзыв банк может прислать позже. Ориентируйтесь на последнее событие по id и обрабатывайте повторы идемпотентно — одно и то же уведомление может прийти дважды.
X-Plopay-Event: payment.succeeded
X-Plopay-Delivery: wh_9f2c1a4b7e02
X-Plopay-Signature: <HMAC-SHA256 тела запроса вашим секретом>
Проверяйте подпись — так вы убедитесь, что уведомление пришло от нас:
const ok = crypto.createHmac('sha256', SECRET)
.update(rawBody)
.digest('hex') === req.headers['x-plopay-signature'];
Если вебхуки отключены для кассы, уведомления не отправляются — статусы можно запрашивать методом GET /api/v1/payments/{id}.
Отвечайте кодом 2xx. Если ответа нет или он другой, мы повторим через 1, 5, 15, 60 и 180 минут — пять попыток. Историю доставки и повторную отправку можно запросить у поддержки.
Ошибки
| Код | Тело | Причина |
|---|---|---|
| 401 | unauthorized | Ключ не передан или неверен |
| 401 | signature_required, invalid_signature, stale_timestamp, replayed_signature | Подпись обязательна, но не передана или неверна, метка времени устарела либо подпись уже использовалась |
| 413 | payload_too_large | Тело запроса больше 64 КБ |
| 429 | rate_limited | Превышен лимит запросов — повторите через retry_after секунд |
| 403 | merchant_blocked | Касса заблокирована |
| 403 | payouts_frozen | Выплаты заморожены |
| 400 | invalid_amount, invalid_currency, invalid_method | Некорректные поля запроса. Платежи создаются только в RUB; способ оплаты — sbp, card или crypto |
| 400 | amount_too_small | Сумма меньше минимальной. В ответе приходит min_amount: 10 ₽ для СБП и карт, для крипты — минимум сети |
| 403 | api_method_disabled | Этот метод API отключён для кассы; какой именно — в поле method |
| 403 | method_disabled | Метод приёма закрыт для кассы |
| 403 | payout_method_disabled | Вывод этим способом закрыт: crypto — USDT, BTC, ETH и другие криптовалюты, card — RUB, USD и другие |
| 400 | insufficient_funds | Недостаточно средств для вывода |
| 404 | payment_not_found | Платёж не найден |
| 503 | terminal_not_connected | Для кассы ещё не подключён приём платежей — напишите в поддержку |
| 503 | terminal_not_ready | Приём по кассе выключен или выбранный способ оплаты на ней не открыт |
| 502 | provider_error | Платёж не удалось создать; подробности — в поле message, запрос можно повторить |
Выплаты
Вывод средств создаётся только в личном кабинете, в разделе «Выводы». Через API создать выплату нельзя: запрос POST /api/v1/payouts вернёт ошибку payouts_manual.
Заявка уходит на реквизиты из раздела «Кошельки и карты». Оператор проверяет её и отправляет перевод вручную, ежедневно с 18:00 до 21:00 МСК.
Следить за заявкой можно через GET /api/v1/payouts/{id} или по уведомлениям payout.created, payout.completed и payout.rejected. Поле payout_status принимает значения withdrawing (ждёт выплаты), completed (выплачено, есть txid), rejected (отклонена, сумма вернулась на баланс) и canceled (заявку отозвали в кабинете). За каждый вывод удерживается фиксированная комиссия $3,5 (для рублей — по текущему курсу): с баланса списывается сумма заявки, получатель получает её за вычетом комиссии. Поля withdraw_fee и payout_amount показывают комиссию и сумму к получению.
10Ограничения и проверки
Платформа проверяет характер операций и вид деятельности. Полный перечень запрещённых направлений и оснований для ограничительных мер — в разделах 7, 8 и 10 Публичной оферты.
Коротко: платформа не используется для оборота запрещённых товаров, операций без реального экономического содержания, чужих платёжных реквизитов и деятельности, требующей лицензии при её отсутствии. По любой операции могут запросить подтверждающие документы.
11Поддержка
Кнопка «Техподдержка» внизу бокового меню кабинета открывает наш Telegram — это основной канал связи, отвечаем там быстрее всего.
Telegram: @PloPay_bot
Почта: merchantsplopay@gmail.com
Чтобы ответ был быстрее, укажите идентификатор кассы и, если вопрос по конкретной операции, её сумму и дату.