Проведение платежа
Перед началом приема платежей необходимо активировать кассовую ссылку.
Единственный доступный способ приема платежей по платежным табличкам — СБП (Система Быстрых Платежей ЦБ РФ). Такие платежи проходят через НСПК (Национальная Система Платежных Карт). Всё платежное взаимодействие проходит через НСПК — выбор пользователем банка или платежного сервиса, списание денег со счета, проведение возврата и т.д.
В этом разделе описано, как создать платеж через СБП, отменить его и перезаписать сумму в кассовой ссылке.
Создание платежа
Шаг 1. Когда пользователь будет готов перейти к оплате, запишите сумму в кассовую ссылку. Для этого создайте платеж: передайте в запросе данные для аутентификации запроса, ключ идемпотентности и данные для проведения платежа:
- в объекте
amountпередайте сумму, которую нужно списать с пользователя; - в объекте
pos_linkпередайте:- параметр
idс идентификатором кассовой ссылки; - параметр
expires_atс датой и временем, когда заканчивается срок действия оплаты, в формате ISO 8601 (может быть указано от 1 до 20 минут с момента создания платежа);
- параметр
- в объекте
confirmationпередайте типexternal; - в параметре
captureпередайте значениеtrue, чтобы платеж автоматически перешел в статусsucceededпосле оплаты (для платежей через СБП платежи в две стадии недоступны).
Пример запроса на создание платежа
cURL
curl https://api.yookassa.ru/v3/payments \ -X POST \ -u <Идентификатор_магазина>:<Секретный_ключ> \ -H 'Idempotence-Key: <Ключ_идемпотентности>' \ -H 'Content-Type: application/json' \ -d '{ "amount": { "value": "100.00", "currency": "RUB" }, "pos_link": { "id": "pl-1da5c87d-0984-50e8-a7f3-8de646dd9ec9", "expires_at": "2026-03-20T11:25:56Z" }, "confirmation": { "type": "external" }, "capture": true, "description": "Заказ №37" }'
Дождитеcь ответа ЮKassa об успешной записи суммы в кассовую ссылку: в объекте платежа вернется параметр
status в значении pending.ЮKassa может вернуть объект платежа в статусе
canceled. Это значит, что в кассовую ссылку ранее была записана другая сумма, пользователь начал подтверждать платеж, но процесс пока не завершен на стороне ЮKassa или НСПК. В этом случае следует дождаться завершения прошлого платежа.Когда сумма записана в кассовую ссылку, пользователь может переходить к оплате.
Пример созданного объекта платежа
JSON
{ "id": "22e12f66-000f-5000-8000-18db351245c7", "status": "pending", "amount": { "value": "100.00", "currency": "RUB" }, "description": "Заказ №37", "recipient": { "account_id": "123", "gateway_id": "456" }, "payment_method": { "type": "sbp", "id": "22e12f66-000f-5000-8000-18db351245c7", "saved": false, "status": "inactive", "qrc_id": "AD10003FPKBK906C95IOMVOKEOMPAI78" }, "created_at": "2026-03-20T11:10:04.673Z", "test": false, "paid": false, "refundable": false, "metadata": {} }
Шаг 2. При необходимости сохраните идентификатор созданного платежа (
payment.id) в связке с идентификатором кассовой ссылки (pos_link.id).Шаг 3. Дождитесь успешного завершения платежа. Для этого подождите, когда придет уведомление от ЮKassa или периодически отправляйте запросы, чтобы получить информацию о платеже.
Пример объекта платежа в статусе succeeded
JSON
{ "id": "22e12f66-000f-5000-8000-18db351245c7", "status": "succeeded", "amount": { "value": "100.00", "currency": "RUB" }, "income_amount": { "value": "97.00", "currency": "RUB" }, "description": "Заказ №37", "recipient": { "account_id": "123", "gateway_id": "456" }, "payment_method": { "type": "sbp", "id": "22e12f66-000f-5000-8000-18db351245c7", "saved": false, "status": "inactive", "sbp_operation_id": "A6078205906451070G10060011720501", "payer_bank_details": { "bank_id": "100000000005", "bic": "044525187", "account": "40702810500000776777" }, "qrc_id": "AD10003FPKBK906C95IOMVOKEOMPAI78" }, "captured_at": "2026-03-20T11:20:08.231Z", "created_at": "2026-03-20T11:10:04.673Z", "test": false, "refunded_amount": { "value": "0.00", "currency": "RUB" }, "paid": true, "refundable": true, "metadata": {} }
Готово!
Перезапись суммы
Кассовая ссылка в любой момент времени может содержать только одну сумму. Если в процессе оплаты пользователь меняет состав заказа (убирает, добавляет или заменяет товары), итоговая сумма меняется. В такой ситуации необходимо перезаписать сумму в кассовой ссылке.
Чтобы перезаписать сумму платежа в кассовой ссылке, создайте еще один платеж. Передайте в новом запросе актуальную сумму платежа и дождитесь завершения оплаты.
Перезаписать сумму с помощью нового платежа можно только до того, как пользователь подтвердит старый платеж в приложении банка или платежного сервиса. Это значит, что новый платеж можно создать, пока старый платеж находится в статусе
pending и пользователь не перешел к подтверждению. Если старый платеж уже в обработке (пользователь подтвердил его), новый платеж вернется в статусе canceled.Отмена платежа
Если вы хотите отказаться от оплаты, отправьте ЮKassa запрос на отмену платежа. Платеж перейдет в статус
canceled и будет отменен, деньги вернутся пользователю. В этом случае ЮKassa не будет удерживать комиссию за проведение платежа.Вы можете отменить только платежи в статусе
pending. Если платеж перешел в статус succeeded, вы можете создать возврат.Пример запроса на отмену платежа
cURL
PHP
Python
curl https://api.yookassa.ru/v3/payments/{payment_id}/cancel \ -X POST \ -u <Идентификатор магазина>:<Секретный ключ> \ -H 'Idempotence-Key: <Ключ идемпотентности>' \ -H 'Content-Type: application/json' \ -d '{ }'
Неуспешные платежи
Если что-то пошло не так, платеж отменится и перейдет в статус
canceled. Вы получите от ЮKassa комментарий к отмене платежа. Причины для отмены платежей в офлайне идентичны причинам отмены платежей в интернете.Что почитать еще