ЮKassa: POST /payments/{payment_id}/capture — Подтверждение платежа

Подтверждение готовности принять платеж: статус изменится на succeeded, и можно передать пользователю товар или услугу. Подтвердить можно только платеж в статусе waiting_for_capture и только в течение ограниченного времени (зависит от способа оплаты); иначе статус изменится на canceled, а деньги вернутся пользователю.

Документация: https://yookassa.ru/developers/api#capture_payment

Параметр Где Тип Обяз. Описание
payment_id path string да Идентификатор платежа.
Idempotence-Key header string да Ключ идемпотентности. Рекомендуется использовать строку вида UUID v7
amount body object нет Итоговая сумма, которая будет списана с пользователя. Можно указать часть первоначальной суммы, чтобы вернуть остаток пользователю, если способ оплаты поддерживает частичное списание. Указывается вместе с кодом валюты, которая должна совпадать с валютой субаккаунта (recipient.gateway_id) при разделении потоков платежей или с валютой аккаунта (shopId в личном кабинете) без него.
amount.value body string нет Сумма в выбранной валюте, всегда в дробном формате. Разделитель дробной части — точка, разделителя тысяч нет. Количество знаков после точки зависит от выбранной валюты. Пример: 1000.00.
amount.currency body string (RUB, EUR, USD, KZT, BYN, UAH, UZS, TRY) нет Трехбуквенный код валюты в формате ISO-4217. Пример: RUB.
receipt body object нет Данные для формирования чека. Параметр передается, если вы компания или индивидуальный предприниматель и используете Чеки от ЮKassa, либо используете стороннюю онлайн-кассу и отправляете данные для формирования чеков по одному из сценариев: Платеж и чек одновременно или Сначала чек, потом платеж.
receipt.customer body object нет Информация о пользователе. Необходимо указать как минимум контактные данные: для Чеков от ЮKassa — электронную почту (customer.email), в остальных случаях — электронную почту (customer.email) или номер телефона (customer.phone).
receipt.items body object[] нет Список товаров в заказе. Если вы используете Чеки от ЮKassa, можно указать до 80 товаров, если стороннюю онлайн-кассу — до 100 товаров.
receipt.internet body boolean нет Признак проведения платежа в интернете (тег в 54 ФЗ — 1125). Возможные значения: true — оплата прошла онлайн (например, на вашем сайте или в приложении); false — оплата прошла офлайн, при личном взаимодействии (например, в торговой точке или при встрече с курьером). По умолчанию true; если вы принимаете платежи офлайн, передайте false.
receipt.tax_system_code body integer нет Система налогообложения магазина (тег в 54 ФЗ — 1055). Для сторонних онлайн-касс: обязательный параметр, если вы используете онлайн-кассу Атол Онлайн, обновленную до ФФД 1.2, или у вас несколько систем налогообложения, в остальных случаях не передается. Для Чеков от ЮKassa: параметр передавать не нужно, ЮKassa его проигнорирует.
receipt.timezone body integer нет Номер часовой зоны для адреса, по которому вы принимаете платежи (тег в 54 ФЗ — 1011). Указывается, только если в чеке есть товары, которые подлежат обязательной маркировке (в items.mark_code_info передается параметр gs_1m, short или fur). Перечень возможных значений: для Чеков от ЮKassa; для сторонних онлайн-касс.
receipt.receipt_industry_details body object[] нет Отраслевой реквизит чека (тег в 54 ФЗ — 1261). Можно передавать, если используете Чеки от ЮKassa или онлайн-кассу, обновленную до ФФД 1.2.
receipt.receipt_operational_details body object нет Операционный реквизит чека (тег в 54 ФЗ — 1270). Можно передавать, если используете Чеки от ЮKassa или онлайн-кассу, обновленную до ФФД 1.2.
airline body object нет Объект с данными для продажи авиабилетов. Используется только для платежей банковской картой.
airline.ticket_number body string нет Уникальный номер билета. Если номер билета известен при создании платежа, ticket_number обязателен. Если нет — передайте booking_reference вместо ticket_number.
airline.booking_reference body string нет Номер бронирования. Обязателен, если не передан ticket_number.
airline.passengers body object[] нет Список пассажиров.
airline.legs body object[] нет Список перелетов.
transfers body object[] нет Информация о распределении денег: суммы переводов и магазины, в пользу которых они совершаются. Передается при частичном подтверждении платежа, если вы используете Сплитование платежей.
deal body object нет Сделка, в рамках которой проводится платеж. Передается при частичном подтверждении платежа, если вы используете Безопасную сделку.
deal.settlements body object[] нет Данные о распределении денег.

Пример запроса:

{
  "amount": {
    "value": "1000.00",
    "currency": "RUB"
  },
  "receipt": {
    "items": [
      {
        "description": "string",
        "quantity": 1,
        "amount": {
          "value": null,
          "currency": null
        },
        "vat_code": 0
      }
    ]
  },
  "airline": {
    "ticket_number": "5554916004417",
    "booking_reference": "IIIKRV",
    "passengers": [
      {
        "first_name": "SERGEI",
        "last_name": "IVANOV"
      }
    ],
    "legs": [
      {
        "departure_airport": "LED",
        "destination_airport": "AMS",
        "departure_date": "2018-06-20"
      }
    ]
  },
  "transfers": [
    {
      "account_id": "123",
      "amount": {
        "value": "1000.00",
        "currency": "RUB"
      }
    }
  ],
  "deal": {
    "settlements": [
      {
        "type": "payout",
        "amount": {
          "value": null,
          "currency": null
        }
      }
    ]
  }
}

Пример ответа:

{
  "id": "1da5c87d-0984-50e8-a7f3-8de646dd9ec9",
  "status": "succeeded",
  "amount": {
    "value": "1000.00",
    "currency": "RUB"
  },
  "created_at": "2017-11-03T11:52:31.827Z",
  "paid": true,
  "test": false,
  "refundable": true,
  "recipient": {
    "account_id": "123",
    "gateway_id": "456"
  }
}

Базовые URL

Авторизация

Тип: Basic Auth

HTTP Basic Auth: имя пользователя — идентификатор магазина (shopId, раздел Настройки — Магазин) или шлюза для выплат (agentId, раздел Настройки выплат), пароль — секретный ключ (раздел Интеграция — Ключи API). Для тестового магазина ключ выпускается автоматически. Участники партнерской программы используют OAuth 2.0 и передают Bearer-токен. Секретный ключ и OAuth-токен нельзя публиковать.

curl https://api.yookassa.ru/v3/payments/{payment_id} \
  -u <Идентификатор магазина>:<Секретный ключ>

Нюансы

Сценарии с этим методом


Если этого недостаточно — официальная документация: https://yookassa.ru/developers/api#capture_payment Вся интеграция одним документом: https://mcp-everything.ru/integrations/yookassa.md