Самостоятельная интеграция
QR‑код от Яндекс Пэй со Сплитом — сервис для оплаты покупок через СБП и частями в Сплит с помощью статического или динамического QR-кода.
Статический QR-код размещается в офлайн-магазине у кассы в виде специальной таблички, которую выдает Яндекс. Динамический QR-код можно отобразить на экране.
Покупатели могут проводить оплату по QR-коду:
- через СБП в любом банковском приложении;
- частями в Сплит через сервисы Яндекса (только для авторизованных пользователей).
Для интеграции с QR‑код от Яндекс Пэй со Сплитом вы можете использовать готовые решения из списка поддерживаемых кассовых ПО или настроить интеграцию самостоятельно через Cash Register API.
Интеграция доступна для кассового ПО и касс самообслуживания (КСО).
Подключение сервиса
Шаг 1. Регистрация и подача заявки
-
Зарегистрируйтесь в личном кабинете Яндекс Пэй.
-
Подайте заявку на подключение сервиса QR‑код от Яндекс Пэй.
Важно
В поле Кассовое ПО выберите значение Другое.
Шаг 2. Заполнение реестра обмена информацией
-
После подачи заявки предоставьте данные о ваших кассах и магазинах — заполните и отправьте менеджеру интеграции реестр для обмена информацией о магазинах.
Какие данные необходимо заполнить
- merchant_id — Merchant ID из личного кабинета Яндекс Пэй — идентификатор бренда или направления, к которому будет привязан магазин;
- partner_alias — ИНН организации;
- name — название магазина;
- branch_id — уникальный код магазина в вашей системе;
- offline_pos_legal_address — фактический адрес магазина (только для офлайн-магазинов);
- tmid — идентификатор кассы или терминала, на которые будет крепиться физически QR-табличка;
- contact_phone — контактный телефон ответственного лица в магазине;
- QRID (заполняет Яндекс) — идентификатор QR-кода, напечатанный на QR-табличке, которая будет наклеена на кассе.
-
На основании данных реестра Яндекс доставит QR-таблички в указанные магазины.
-
Менеджер интеграции отправит вам обновленный реестр.
Шаг 3. Привязка QR-кода
После того как вы получите QR-таблички и обновленный реестр, привяжите QR-коды в двух местах:
- Перейдите в раздел Настройки → Привязать QR-код. Проверьте, что в селекторе выбран нужный магазин.
- В открывшемся окне укажите ID-номер QR-кода, который указан на табличке, и нажмите кнопку Привязать.
При необходимости вы можете заказать дополнительные QR-коды. Управлять выпущенными QR-кодами можно в настройке Ваши QR-коды.
Примечание
Если у вас много QR-кодов, обратитесь к менеджеру интеграции, он привяжет их согласно реестру для обмена информацией о магазинах.
-
С помощью метода /v1/accounts получите список идентификаторов
QRIDиQRCIDдля QR-табличек. -
Укажите идентификатор
QRCIDв вашем кассовом ПО для каждой кассы согласно обновленному реестру.
Шаг 4. Получение параметров интеграции
Для интеграции вам обязательно понадобятся два токена:
- Токен для кассового ПО
- Ключ Merchant API (API-ключ)
Дополнительно вам понадобятся:
- Merchant ID для идентификации магазина.
- Callback URL для получения нотификаций о статусе платежей — /webhook. Если получение нотификаций невозможно, используйте поллинг.
Получение токена для кассового ПО
Получите токен у менеджера интеграции.
Используйте для аутентификации запросов.
Выпуск API-ключа
Примечание
Если эта настройка у вас не отображается, обратитесь к своему менеджеру интеграции.
Для работы в боевой среде необходимо выпустить собственный API-ключ в личном кабинете Яндекс Пэй:
-
Проверьте, что в селекторе выбран нужный магазин, и перейдите в раздел Настройки → Выпустить ключ Merchant API.
-
В открывшемся окне отобразится API-ключ. Скопируйте и сохраните его.
Совет
После создания ключа рекомендуем сразу сохранить его, так как полное значение отображается только один раз — в момент создания. Повторно просмотреть уже созданный ключ не получится.
-
Если ранее вы использовали другой API-ключ для тестирования или работы, в коде бэкенда магазина замените текущий API-ключ на новый.
Если вы потеряете или забудете API-ключ, его нужно будет выпустить повторно. Для выпуска ключа в настройках нажмите Ключ Merchant API → Выпустить ещё ключ. Одновременно для магазина можно выпустить не более трех API-ключей.
Используйте для аутентификации запросов.
Merchant ID
Merchant ID — это уникальный идентификатор вашего магазина в системе Яндекс Пэй. Для одного юридического лица создается один магазин с Merchant ID и API-ключом.
Чтобы узнать уникальный Merchant ID магазина, выберите в селекторе нужный магазин и перейдите в раздел Настройки → Merchant ID.
Примечание
Все ваши QR-коды привязываются к одному Merchant ID, а не к торговым точкам.
Реализуйте на своей стороне связь Торговая точка ⇔ Касса ⇔ QR-код и при создании заказа передавайте информацию об отдельных торговых точках в поле extensions.billingReport.branchId.
Установка Callback URL
Примечание
Если эта настройка у вас не отображается, обратитесь к своему менеджеру интеграции.
- Перейдите в раздел Настройки → Добавить Callback URL.
- В открывшемся окне укажите публично доступный HTTPS URL-адрес бэкенда магазина, для которого вы настраиваете интеграцию, и нажмите кнопку Сохранить.
Указывайте Callback URL без /v1/webhook — этот путь добавится автоматически, например:
|
Callback URL |
Куда придет запрос |
|
|
|
|
|
|
URL-адрес для тестового и рабочего окружения может отличаться, например:
|
Тип окружения |
Callback URL |
|
Рабочее (Production) |
|
|
Тестовое (Testing) |
|
Шаг 5. Подключение оплаты в Сплит (опционально)
-
В личном кабинете Яндекс Пэй перейдите в раздел Настройки → Дополнительные сервисы.
-
Включите опцию Оплата частями в Сплит.
-
Ознакомьтесь с тарифом и условиями сервиса Яндекс Пэй для партнеров и нажмите кнопку Отлично, давайте.
Важно
Обратите внимание, что тариф вознаграждения за услуги сервиса изменится.
После этого покупатели смогут оплачивать покупки вашем магазине в Сплит.
Отключение оплаты в Сплит
Чтобы отключить оплату в Сплит с помощью QR‑кода от Яндекс Пэй, отключите опцию Оплата частями в Сплит в настройках магазина.
Шаг 6. Настройка интеграции
Изучите как работает Cash Register API, реализуйте и протестируйте все сценарии.
Как это работает?
Совет
Вы можете скачать OpenAPI-спецификацию в разделе Specification.
Схема проведения оплаты
Совет
Чтобы открыть схему на весь экран, перейдите в режим чтения с помощью кнопки


Изучите глоссарий и настройте кассовое ПО так, чтобы поддерживались следующие операции:
- Аутентификация запросов
- Оформление заказа с помощью статического или динамического QR
- Деактивация (прерывание оплаты)
- Возврат
- Получение нотификаций
Глоссарий
При работе с API важно понимать разницу между заказом, корзиной, позициями и товарами:
{
"orderId": "order-123", // ← ЗАКАЗ — запрос на оплату
"cart": { // ← КОРЗИНА — контейнер для позиций
"items": [ // ← Массив ПОЗИЦИЙ КОРЗИНЫ
{ // ← ПОЗИЦИЯ #1
"productId": "id-1", // ← Идентификатор ТОВАРА
"title": "Шариковая ручка", // ← Название ТОВАРА
"quantity": {
"count": "3" // ← Количество ТОВАРА
},
"unitPrice": "3.33", // ← Цена за ЕДИНИЦУ ТОВАРА
"total": "10" // ← Сумма ПОЗИЦИИ
}
],
"total": {
"amount": "10" // ← Сумма КОРЗИНЫ: 10₽
}
}
}
- Заказ — запрос на оплату с уникальным
orderId. - Корзина — набор позиций для оплаты —
cart. - Позиция корзины — элемент массива
items[]с информацией о товаре. - Товар — продукт, который описывается в позиции (ручка, мясо, услуга).
- Единица — одна штука, килограмм, литр товара.
- Количество — сколько единиц товара в позиции —
quantity.count. - Цена за единицу — стоимость одной единицы —
unitPrice. - Сумма позиции — итоговая стоимость одной позиции в корзине —
items[i].total. Может не быть равнаquantity.count * unitPrice. - Сумма корзины — общая стоимость всех позиций в корзине —
cart.total.amount.
Аутентификация запросов
В каждом запросе передавайте в HTTP-заголовки:
|
|
Заголовок: Выпустите его личном кабинете по инструкции. |
|
|
Заголовок: Токен кассового ПО. Получите его у менеджера интеграции. |
Если в запросе отсутствуют или переданы недействительные токены, сервер вернет статус 401 Unauthorized.
Пример запроса:
curl https://pay.yandex.ru/api/merchant/cash-register/v1/accounts \
--header 'Authorization: Api-Key <YandexPayApiKey>' \
--header 'Software-Authorization: <SoftwareAuthorization>' \
Оформление заказа
-
Покупатель формирует корзину.
-
Кассир фиксирует корзину в кассовом ПО.
-
Кассир выбирает способ оплаты Яндекс Пэй.
-
Кассовое ПО передает заказ в бэкенд Яндекс Пэй одним из методов:
-
для статического QR: /orders
-
для динамического QR: /orders/dynamic
с параметрами:
qrcIdОбязателен только для статического QR.
Идентификатор зарегистрированного в СБП QR-кода. Его можно получить с помощью метода /accounts.
cartКорзина.
Если в корзине есть позиции с нецелыми ценами (3 ручки за 10 рублей) или весовые товары (500 г. говядины), для всех позиций в корзине добавьте цену за единицу товара
unitPrice. Это избавит от проблем с округлением, например, при возврате.currencyCodeТрехбуквенный код валюты (ISO 4217).
orderIdID заказа в системе продавца.
extensions.billingReportИнформация о торговой точке и кассире.
Реализуйте на своей стороне связь Торговая точка ⇔ Касса ⇔ QR-код и передавайте в этом параметре.
-
-
Бэкенд Яндекс Пэй создает заказ:
-
для статического QR: связывает заказ с полученным в запросе QR-кодом;
-
для динамического QR: генерирует уникальный QR-код для заказа.
-
-
В обоих случаях бэкенд Яндекс Пэй возвращает поле
paymentUrlс уникальной ссылкой на оплату.Отобразите эту ссылку в виде QR-кода на экране или распечатайте.
-
Кассир просит покупателя отсканировать:
-
для статического QR: QR-табличку;
-
для динамического QR: QR-код на экране или в чеке.
-
-
Покупатель сканирует QR-код, открывает страницу оплаты, выбирает способ оплаты и подтверждает платеж.
-
Кассовое ПО отслеживает статус заказа.
Основной способ получения информации об изменении заказа — нотификации /webhook. Если получение нотификаций невозможно, используйте поллинг.
НотификацииПоллингЕсли у вас настроены нотификации, то после завершения оплаты Яндекс Пэй отправит событие
ORDER_STATUS_UPDATED— обновлен статус заказа.Проверьте поле
paymentStatus:CAPTUREDОплата прошла успешно. Фискализируйте чек. Терминальный успешный статус.
FAILEDОплата не прошла или при проведении оплаты произошла ошибка. Пересоздайте заказ методом /orders или /orders/dynamic. Терминальный неуспешный статус.
Через 5–10 секунд после создания заказа начните опрашивать статус заказа методом /orders/{orderId}.
Проверьте поле
paymentStatus:PENDINGОплата в процессе. Запросите статус позже или дождитесь нотификации.
CAPTUREDОплата прошла успешно. Фискализируйте чек. Терминальный успешный статус.
FAILEDОплата не прошла или при проведении оплаты произошла ошибка. Пересоздайте заказ методом /orders или /orders/dynamic. Терминальный неуспешный статус.
Примечание
Не забудьте фискализировать оплату на кассе в соответствии с Федеральным законом № 54-ФЗ.
Деактивация (прерывание оплаты)
-
Перед деактивацией кассовое ПО вызывает метод /orders/{orderId} и проверяет поле
paymentStatus.Деактивация доступна только для заказов в статусе
PENDING. Если оплата уже прошла, вернется ошибкаORDER_ALREADY_CAPTURED. В таком случае проведите возврат. -
Кассовое ПО вызывает метод /orders/{orderId}/deactivate и передает
externalOperationId— уникальный идентификатор операции. По нему можно узнать статус операции и он служит токеном идемпотентности. -
В результате QR-код будет деактивирован, а заказ перейдет в статус
FAILED.Если у вас настроены нотификации, Яндекс Пэй отправит событие
ORDER_STATUS_UPDATED— обновлен статус заказа.
Возврат
-
Перед оформлением возврата кассовое ПО вызывает метод /orders/{orderId} и проверяет поле
paymentStatus.Возврат доступен только для заказов в статусе
CAPTUREDилиPARTIALLY_REFUNDED. -
Кассир формирует чек возврата в кассовом ПО.
-
Кассовое ПО вызывает метод /orders/{orderId}/refund с параметрами:
externalOperationIdУникальный идентификатор операции на стороне продавца.
По нему можно узнать статус операции и он служит токеном идемпотентности.
refundAmountСумма к возврату.
refundCartКорзина возвращаемых позиций. Обязательна для частичного возврата.
Формат зависит от вида логики возвратов.
-
Кассовое ПО отслеживает статус операции возврата.
Основной способ получения информации об изменении заказа — нотификации /webhook. Если получение нотификаций невозможно, используйте поллинг.
НотификацииПоллингЕсли у вас настроены нотификации, Яндекс Пэй отправит два события:
ORDER_STATUS_UPDATED— обновлен статус заказа;OPERATION_STATUS_UPDATED— обновлен статус операции возврата.
В нотификации
OPERATION_STATUS_UPDATEDпроверьте статус операцииstatus:SUCCESSОперация возврата запущена успешно. Фискализируйте чек возврата.
FAILОперация возврата не запущена. Повторно инициируйте возврат методом /orders/{orderId}/refund.
Если возврат прошел успешно, заказ перейдет в статус
PARTIALLY_REFUNDEDилиREFUNDED.Начните опрашивать статус заказа методом /orders/{orderId}. Найдите нужную операцию по
externalOperationIdи проверяйте ее статусstatus:PENDINGОперация возврата не завершена. Запросите статус позже или дождитесь нотификации.
SUCCESSОперация возврата запущена успешно. Фискализируйте чек возврата.
FAILОперация возврата не запущена. Повторно инициируйте возврат методом /orders/{orderId}/refund.
Если возврат прошел успешно, заказ перейдет в статус
PARTIALLY_REFUNDEDилиREFUNDED.
Две логики возвратов
Cash Register API поддерживает две логики работы с возвратами. Логика определяется при создании заказа по наличию в позициях корзины cart цены за единицу товара unitPrice.
Ограничения
Если заказ уже создан, логика не может быть изменена.
Нельзя смешивать логики в одном заказе.
Различия проявляются при частичных возвратах — когда в refundCart указываются конкретные позиции для возврата.
|
Виды логики |
Базовая |
Расширенная |
|
Когда использовать |
В корзине только позиции с целыми ценами |
В корзине есть позиции с нецелыми ценами, весовые товары |
|
Как включить |
В |
В |
|
Какие поля
указывать в |
Одно из двух:
|
|
|
Сумма возврата |
Считается автоматически, могут быть проблемы с округлением |
Вы указываете точную сумму в |
|
Пример создания заказа |
10 ручек за 50 рублей, 5 рублей каждая:
|
3 ручки за 10 рублей, 3.33 рубля каждая:
|
|
Пример возврата |
Вернуть 2 ручки:
|
Вернуть 1 ручку:
|
Больше примеров возвратов см. на странице метода Вернуть деньги за заказ.
Получение нотификаций
Основной способ получения информации об изменении заказа — нотификации /webhook.
Бэкенд Яндекс Пэй отправляет нотификации со следующими событиями:
ORDER_STATUS_UPDATED— обновлен статус заказа;OPERATION_STATUS_UPDATED— обновлен статус операции.
Чтобы получать нотификации:
-
В личном кабинете Яндекс Пэй установите Callback URL.
-
Настройте ваш бэкенд для приема POST-запроса /webhook от бэкенда Яндекс Пэй.
Примеры нотификаций см. на странице метода /webhook.
Оформление заказа в кассе самообслуживания
Процесс аналогичен оформлению заказа в кассовом ПО со следующим отличием:
- После создания заказа методы /orders и /orders/dynamic возвращают поле
paymentUrlс уникальной ссылкой на оплату. - Отобразите эту ссылку на экране КСО в виде QR-кода.
Тестирование
Важно
Сейчас тестовая среда недоступна — используйте боевую среду.
Для безопасного тестирования в боевой среде менеджер интеграции предоставит вам тестовый магазин и готовый идентификатор зарегистрированного в СБП QR-кода (qrcId).
Вывод в боевую среду только после подписания договора.
Получение списка QR-табличек
Вызовите метод /v1/accounts и получите список QR-табличек.
Если в ответе статус 5XX, повторите запрос.
Успешное оформление с оплатой
- Создайте и оплатите заказ по инструкции Оформление заказа.
- Проверьте, что оплата прошла успешно — заказ в статусе
CAPTURED.
Успешное оформление с оплатой и полным возвратом
- Создайте и оплатите заказ по инструкции Оформление заказа.
- Проверьте, что оплата прошла успешно — заказ в статусе
CAPTURED. - Совершите полный возврат средств по инструкциям:
- Проверьте, что возврат прошел успешно — заказ в статусе
REFUNDED.
Успешное оформление с оплатой и частичным возвратом
- Создайте и оплатите заказ по инструкции Оформление заказа.
- Проверьте, что оплата прошла успешно — заказ в статусе
CAPTURED. - Совершите частичный возврат средств по инструкциям:
- Проверьте, что возврат прошел успешно — заказ в статусе
PARTIALLY_REFUNDED.
Деактивация заказа
- Создайте заказ методом /orders, но не оплачивайте его.
- Деактивируйте заказ по инструкции Деактивация (прерывание оплаты).
- Отсканируйте QR-код камерой смартфона и убедитесь, что страница оплаты недоступна.
- Проверьте, что заказ деактивирован — в статусе
FAILED.
Закрывающие документы
Ежедневные и ежемесячные отчеты можно получать тремя способами:
- по email — используется по умолчанию, отчеты будут отправляться на указанные адреса почты;
- по SFTP-протоколу — отчеты будут отправляться в папку на SFTP-сервере партнера;
- в S3-хранилище — отчеты будут отправляться в бакет в S3-хранилище партнера.
Подробнее читайте в разделе Отчетность.