Выплаты продавцу
Для проведения выплаты вам нужно сначала получить от продавца данные, куда ему перевести вознаграждение, а затем отправить ЮKassa запрос на создание выплаты.
Особенности
Вы можете делать выплаты в Безопасной сделке следующими способами:
- на банковские карты: подходят любые карты российских банков; карты Мир, выпущенные иностранными банками; карты партнерских платежных систем (актуальный список уточните у вашего менеджера);
- на кошельки ЮMoney с упрощенной или полной идентификацией.
Для всех видов выплат есть ограничения на выплаты продавцу. Если лимиты превышены, выплаты не пройдут.
Вид выплаты | Разовый лимит | Лимит за период |
---|---|---|
Банковская карта Ограничения действуют на одну банковскую карту получателя выплаты | Минимум — 1 рубль Максимум — 150 000 рублей | Максимальное количество выплат за сутки — 20 Максимальная сумма выплат за месяц — 1 500 000 рублей |
Кошелек ЮMoney Лимиты зависят от статуса кошелька | Минимум — 1 рубль Максимум зависит от текущего баланса кошелька. После выплаты баланс кошелька не может превышать определенную сумму:
| Максимальная сумма выплат за месяц — 600 000 рублей |
Сценарий взаимодействия
Чтобы сделать выплату:
- Получите от продавца данные о том, куда перевести его вознаграждение.
- Проведите выплату с полученными данными.
Конкретный порядок действий зависит от вида выплаты:
Если в процессе выплата не пройдет, ЮKassa сообщит причину отмены выплаты.
Выплаты на банковскую карту
Для выплат подходят следующие карты: любые карты российских банков; карты Мир, выпущенные иностранными банками; а также карты партнерских платежных систем (актуальный список уточните у вашего менеджера).
Чтобы провести выплату, вам нужно получить данные банковской карты продавца. Получение и хранение номера банковской карты подпадает под действие стандарта PCI DSS, поэтому ЮKassa хранит эти данные на своей стороне. Чтобы получить данные карты продавца, используйте специальный виджет ЮKassa.
Если у вас есть сертификат на соответствие требованиям PCI DSS, вы можете собрать данные самостоятельно и при проведении выплаты передать ЮKassa номер банковской карты.
Выберите, как вы хотите получить данные банковской карты продавца:
Выплаты с получением данных с помощью виджета ЮKassa
Чтобы сделать выплату на банковскую карту:
- Получите данные банковской карты с помощью специального виджета ЮKassa.
- Проведите выплату с полученными данными.
Получение данных банковской карты
Чтобы получить данные карты для выплаты, разместите у себя на сайте специальный виджет и отобразите продавцу форму для ввода данных. С помощью виджета вы получите синоним банковской карты — идентификатор карты в системе ЮKassa, который нужно использовать для проведения выплаты, а также ряд других данных об этой карте. Эту информацию можно хранить на своей стороне без опасения утечки, потому что ее публикация не приводит к финансовым или имиджевым потерям.
Виджет для выплат в рамках Безопасной сделки: форма сбора данных
Виджет для выплат в рамках Безопасной сделки работает так же, как виджет для стандартных выплат. Единственное отличие — параметры, которые нужно передать при инициализации виджета.
Для подключения воспользуйтесь инструкцией по интеграции виджета для выплат, но в созданный экземпляр класса
PayoutsData
передайте следующие параметры:type
со значениемsafedeal
;account_id
с идентификатором магазина, настроенного для безопасной сделки;success_callback
, который будет принимать параметры карты;error_callback
, который будет принимать код ошибки.
Остальные действия, в том числе обработка результатов, идентичны действиям при использовании виджета для стандартных выплат.
Подробнее о виджете для выплат:
Пример кода виджета
HTML
<!--Подключение библиотеки--> <script src="https://yookassa.ru/payouts-data/3.1.0/widget.js"></script> <!--HTML-элемент, в котором будет отображаться форма ввода номера карты--> <div id="payout-form"></div> <script> //Инициализация виджета. Все параметры обязательные. const payoutsData = new window.PayoutsData({ type: 'safedeal', account_id: '<Идентификатор_магазина>', //Идентификатор магазина (shopid в личном кабинете) success_callback: function(data) { //Обработка ответа с токеном карты }, error_callback: function(error) { //Обработка ошибок при получении токена карты } }); //Отображение формы в контейнере payoutsData.render('payout-form') //Метод возвращает Promise, исполнение которого говорит о полной загрузке формы сбора данных (можно не использовать). .then(() => { //Код, который нужно выполнить после отображения формы. }); </script>
Проведение выплаты на банковскую карту
Шаг 1. Создайте выплату: отправьте ЮKassa запрос с данными для аутентификации запроса, ключом идемпотентности и данными для выплаты на банковскую карту:
- в объекте
amount
передайте сумму, которую нужно выплатить продавцу; - в объекте
deal
передайте идентификатор сделки; - в параметре
description
передайте описание выплаты; - в параметре
payout_token
передайте полученный синоним банковской карты.
Пример запроса на создание выплаты
cURL
PHP
Python
curl https://api.yookassa.ru/v3/payouts \ -X POST \ -u <Идентификатор магазина>:<Секретный ключ> \ -H 'Idempotence-Key: <Ключ идемпотентности>' \ -H 'Content-Type: application/json' \ -d '{ "amount": { "value": "800.00", "currency": "RUB" }, "payout_token": "<Синоним банковской карты>", "description": "Выплата по заказу №37", "metadata": { "order_id": "37" }, "deal": { "id": "dl-285e5ee7-0022-5000-8000-01516a44b147" } }'
В ответ на запрос ЮKassa вернет созданный объект выплаты.
Пример созданного объекта выплаты
JSON
{ "id": "po-285ec15d-0003-5000-a000-08d1bec7dade", "amount": { "value": "800.00", "currency": "RUB" }, "status": "pending", "payout_destination": { "type": "bank_card", "card": { "first6": "220220", "last4": "2537", "card_type": "Mir", "issuer_country": "RU", "issuer_name": "Sberbank Of Russia" } }, "description": "Выплата по заказу №37", "created_at": "2021-06-21T14:28:45.132Z", "deal": { "id": "dl-285e5ee7-0022-5000-8000-01516a44b147" }, "metadata": { "order_id": "37" }, "test": false }
Шаг 2. Дождитесь, когда банк получателя согласует выплату и ЮKassa изменит статус объекта выплаты на
succeeded
. Для этого периодически отправляйте ЮKassa запросы на получение информации о выплате.Пример объекта выплаты в статусе succeeded
JSON
{ "id": "po-28559c4f-0003-5000-9000-0baf38b7a7fd", "amount": { "value": "800.00", "currency": "RUB" }, "status": "succeeded", "payout_destination": { "type": "bank_card", "card": { "first6": "220220", "last4": "2537", "card_type": "Mir", "issuer_country": "RU", "issuer_name": "Sberbank Of Russia" } }, "description": "Выплата по заказу №37", "created_at": "2021-06-21T14:28:45.132Z", "succeeded_at": "2021-06-21T14:29:17.141Z", "deal": { "id": "dl-285e5ee7-0022-5000-8000-01516a44b147" }, "metadata": { "order_id": "37" }, "test": false }
Если выплата успешна, ЮKassa закроет сделку.
Выплаты с самостоятельным получением данных карты
Чтобы передавать в запросе на создание выплаты номер банковской карты, вам нужно получить сертификат на соответствие требованиям PCI DSS.
Чтобы сделать выплату на банковскую карту:
- Получите данные банковской карты.
- Проведите выплату с полученными данными.
Получение данных банковской карты
Для проведения выплаты вам понадобится номер банковской карты. Получите его любым удобным вам способом.
Проведение выплаты на банковскую карту
Шаг 1. Создайте выплату: отправьте ЮKassa запрос с данными для аутентификации запроса, ключом идемпотентности и данными для выплаты на банковскую карту:
- в объекте
amount
передайте сумму, которую нужно выплатить продавцу; - в объекте
deal
передайте идентификатор сделки; - в параметре
description
передайте описание выплаты; - в объекте
payout_destination_data
передайте код вида выплатыbank_card
и номер банковской карты, на которую нужно перевести вознаграждение продавца.
Пример запроса на создание выплаты
cURL
PHP
Python
curl https://api.yookassa.ru/v3/payouts \ -X POST \ -u <Идентификатор магазина>: <Секретный ключ> \ -H 'Idempotence-Key: <Ключ идемпотентности>' \ -H 'Content-Type: application/json' \ -d '{ "amount": { "value": "800.00", "currency": "RUB" }, "payout_destination_data": { "type": "bank_card", "card": { "number": "5555555555554477" } }, "description": "Выплата по заказу № 37", "metadata": { "order_id": "37" }, "deal": { "id": "dl-285e5ee7-0022-5000-8000-01516a44b147" } }'
В ответ на запрос ЮKassa вернет созданный объект выплаты.
Пример созданного объекта выплаты
JSON
{ "id": "po-285ec15d-0003-5000-a000-08d1bec7dade", "amount": { "value": "800.00", "currency": "RUB" }, "status": "pending", "payout_destination": { "type": "bank_card", "card": { "first6": "555555", "last4": "4477", "card_type": "Mir", "issuer_country": "RU", "issuer_name": "Sberbank Of Russia" } }, "description": "Выплата по заказу №37", "created_at": "2021-06-21T14:28:45.132Z", "deal": { "id": "dl-285e5ee7-0022-5000-8000-01516a44b147" }, "metadata": { "order_id": "37" }, "test": false }
Шаг 2. Дождитесь, когда банк получателя согласует выплату и ЮKassa изменит статус объекта выплаты на
succeeded
. Для этого периодически отправляйте ЮKassa запросы на получение информации о выплате или подождите, когда придет уведомление от ЮKassa.Пример объекта выплаты в статусе succeeded
JSON
{ "id": "po-28559c4f-0003-5000-9000-0baf38b7a7fd", "amount": { "value": "800.00", "currency": "RUB" }, "status": "succeeded", "payout_destination": { "type": "bank_card", "card": { "first6": "555555", "last4": "4477", "card_type": "Mir", "issuer_country": "RU", "issuer_name": "Sberbank Of Russia" } }, "description": "Выплата по заказу №37", "created_at": "2021-06-21T14:28:45.132Z", "succeeded_at": "2021-06-21T14:29:17.141Z", "deal": { "id": "dl-285e5ee7-0022-5000-8000-01516a44b147" }, "metadata": { "order_id": "37" }, "test": false }
Если выплата успешна, ЮKassa закроет сделку.
Выплаты на кошелек ЮMoney
Чтобы сделать выплату на кошелек ЮMoney:
- Получите данные кошелька ЮMoney.
- Проведите выплату с полученными данными.
Получение данных кошелька ЮMoney
Для проведения выплаты вам понадобится номер кошелька ЮMoney. Получите его любым удобным вам способом.
Чтобы получить выплату, владельцу кошелька нужно пройти полную или упрощенную идентификацию в ЮMoney (статус кошелька — именной или идентифицированный).
Максимальный размер выплаты зависит от лимита на баланс: после выплаты остаток в кошельке не должен превышать определенную сумму, размер которой зависит от статуса кошелька. Если выплата не проходит из-за лимита на баланс, получателю следует изменить статус кошелька или потратить сумму, на которую превышается остаток.
Проведение выплаты на кошелек ЮMoney
Создайте выплату: отправьте ЮKassa запрос с данными для аутентификации запроса, ключом идемпотентности и данными для выплаты на кошелек ЮMoney:
- в объекте
amount
передайте сумму, которую нужно выплатить продавцу; - в объекте
deal
передайте идентификатор сделки; - в параметре
description
передайте описание выплаты; - в объекте
payout_destination_data
передайте код вида выплатыyoo_money
и номер кошелька, на который нужно перевести вознаграждение продавца.
Пример запроса на создание выплаты
cURL
PHP
Python
curl https://api.yookassa.ru/v3/payouts \ -X POST \ -u <Идентификатор магазина>: <Секретный ключ> \ -H 'Idempotence-Key: <Ключ идемпотентности>' \ -H 'Content-Type: application/json' \ -d '{ "amount": { "value": "800.00", "currency": "RUB" }, "payout_destination_data": { "type": "yoo_money", "account_number": "4100116075156746" }, "description": "Выплата по заказу № 37", "metadata": { "order_id": "37" }, "deal": { "id": "dl-285e5ee7-0022-5000-8000-01516a44b147" } }'
В ответ на запрос ЮKassa вернет созданный объект выплаты. Он будет уже в финальном статусе —
succeeded
или canceled
.Пример созданного объекта выплаты
JSON
{ "id": "po-28836e72-0003-5000-9000-08892e762c41", "amount": { "value": "800.00", "currency": "RUB" }, "status": "succeeded", "payout_destination": { "type": "yoo_money", "account_number": "4100116075156746" }, "description": "Выплата по заказу № 37", "created_at": "2021-06-21T14:28:45.132Z", "succeeded_at": "2021-06-21T14:29:17.141Z", "deal": { "id": "dl-285e5ee7-0022-5000-8000-01516a44b147" }, "metadata": { "order_id": "37" }, "test": "false" }
Если выплата успешна, ЮKassa закроет сделку.
Неуспешные выплаты
В процессе выплаты что-то может пойти не так. Например, может быть превышен лимит выплаты, ЮKassa может заподозрить попытку мошенничества. В этом случае выплата будет отменена и перейдет в статус
canceled
.Чтобы вы могли лучше понимать, что произошло и что с этим делать, ЮKassa пришлет в объекте выплаты комментарий к отмене выплаты (
cancellation_details
). В нём будут указаны инициатор и причина отмены выплаты. Вы можете использовать эти данные для анализа и решения проблем, вывода сообщений пользователю и любых других целей.Пример объекта выплаты в статусе canceled
JSON
{ "id": "po-285c0ab7-0003-5000-9000-0e1166498fda", "amount": { "value": "400.00", "currency": "RUB" }, "status": "canceled", "payout_destination": { "type": "bank_card", "card": { "first6": "444444", "last4": "4448", "card_type": "Visa", "issuer_country": "PL", "issuer_name": "Krakowski Bank Spoldzielczy" } }, "description": "Выплата по заказу №37", "created_at": "2021-06-16T13:04:55.633Z", "deal": { "id": "dl-28559370-0022-5000-8000-0b65d8e0e06d" }, "metadata": { "order_id": "37" }, "test": false, "cancellation_details": { "party": "yoo_money", "reason": "general_decline" } }
Инициаторы отмены выплаты
Инициатор отмены возвращается в параметре
party
объекта cancellation_details
.Значение | Описание |
---|---|
yoo_money | ЮKassa |
payout_network | «Внешние» участники процесса выплаты — все остальные участники выплаты, кроме ЮKassa и вас (например, эмитент банковской карты) |
Причины отмены выплаты
Причина отмены возвращается в параметре
reason
объекта cancellation_details
.Значение | Описание |
---|---|
fraud_suspected | Выплата заблокирована из-за подозрения в мошенничестве. Следует обратиться к инициатору отмены выплаты за уточнением подробностей или выбрать другой способ получения выплаты или другое платежное средство (например, другую банковскую карту). |
general_decline | Причина не детализирована. Пользователю следует обратиться к инициатору отмены выплаты за уточнением подробностей. |
identification_required | Кошелек ЮMoney не идентифицирован. Пополнение анонимного кошелька запрещено. Пользователю необходимо идентифицировать кошелек. |
one_time_limit_exceeded | Превышен лимит на разовое зачисление. Можно уменьшить размер выплаты, разбить сумму и сделать несколько выплат, выбрать другой способ получения выплат или другое платежное средство (например, другую банковскую карту). |
periodic_limit_exceeded | Превышен лимит выплат за период времени (сутки, месяц). Следует выбрать другой способ получения выплаты или другое платежное средство (например, другую банковскую карту). |
rejected_by_payee | Эмитент отклонил выплату по неизвестным причинам. Пользователю следует обратиться к эмитенту за уточнением подробностей или выбрать другой способ получения выплаты или другое платежное средство (например, другую банковскую карту). |
Что почитать еще