
Документация
API PayLayer для приема платежей
Подключайте сайт, Telegram-бота или другой сервис через REST API. Создавайте платежи, показывайте пользователю платежную страницу PayLayer и получайте статусы через API или webhook.
Быстрый старт
Ключи выдаются после создания и одобрения проекта. До одобрения реальные платежи недоступны.
Создайте аккаунт PayLayer.
Укажите сайт, Telegram-бота или ссылку на сервис.
После одобрения используйте API token из кабинета.
Данные подключения
В публичной документации указаны только шаблоны. Реальные Shop ID и API token доступны в личном кабинете проекта.
REST API
Все запросы принимают и возвращают JSON. Основной сценарий: создать платеж, показать payment_url клиенту, получить webhook или проверить статус.
Создание платежа
curl -X POST https://paylayer.ru/api/v1/payments \
-H "Authorization: Bearer API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"amount": 100,
"currency": "RUB",
"description": "Оплата заказа",
"customer_email": "client@example.ru",
"success_url": "https://example.ru/success",
"fail_url": "https://example.ru/fail",
"metadata": {
"user_id": "12345",
"payer_pays_commission": false
}
}'Поле order_id можно не передавать: PayLayer сгенерирует его автоматически. Если передать одинаковый order_id повторно, система вернет существующий платеж.
Ответ API
{
"success": true,
"payment_id": "cmr_payment_id",
"order_id": "order_20260707204530_ab12cd34",
"amount": "100.00",
"currency": "RUB",
"status": "pending",
"payment_url": "https://paylayer.ru/pay/cmr_payment_id",
"expires_at": "2026-07-07T17:55:30.000Z",
"is_expired": false,
"metadata": {
"user_id": "12345",
"payer_pays_commission": false
},
"created_at": "2026-07-07T17:45:30.000Z",
"paid_at": null
}Проверка платежа
curl -X GET https://paylayer.ru/api/v1/payments/cmr_payment_id \
-H "Authorization: Bearer API_TOKEN"{
"success": true,
"payment": {
"payment_id": "cmr_payment_id",
"order_id": "order_20260707204530_ab12cd34",
"amount": "100.00",
"currency": "RUB",
"status": "succeeded",
"payment_url": "https://paylayer.ru/pay/cmr_payment_id",
"expires_at": "2026-07-07T17:55:30.000Z",
"is_expired": false,
"metadata": {
"user_id": "12345",
"payer_pays_commission": false
},
"created_at": "2026-07-07T17:45:30.000Z",
"paid_at": "2026-07-07T17:48:12.000Z"
}
}В ответе проверки платеж находится внутри поля payment. Статус оплаты смотрите в payment.status.
Список платежей
curl -X GET "https://paylayer.ru/api/v1/payments?status=succeeded&limit=50&offset=0" \
-H "Authorization: Bearer API_TOKEN"Webhook
Webhook URL задается в настройках проекта. После изменения статуса платежа PayLayer отправляет POST-запрос на этот адрес.
{
"event": "payment.succeeded",
"payment_id": "cmr_payment_id",
"order_id": "order_20260707204530_ab12cd34",
"amount": "100.00",
"currency": "RUB",
"status": "succeeded",
"metadata": {
"user_id": "12345"
}
}Ваш обработчик должен вернуть HTTP 200. История webhook-запросов отображается в кабинете.
Поля и статусы
Краткая справка по параметрам, которые чаще всего используются при интеграции.
Поля создания
- amount - сумма платежа в RUB.
- description - описание для платежной формы.
- order_id - необязательный ID заказа.
- metadata - ваши данные, которые вернутся в webhook.
- payer_pays_commission - если true, комиссия добавляется сверху.
Статусы платежа
- created - платеж создан.
- pending - ожидает оплаты.
- succeeded - успешно оплачен.
- failed - ошибка оплаты.
- canceled - платеж отменен или истек.
Ошибки API
Неверный API token.
Неверные параметры платежа.
Слишком много запросов.
Платеж не найден.
Платеж не удалось создать.