# Приём по карте

Плательщик переводит деньги на номер карты получателя из приложения своего банка.
Заявка устроена так же, как [приём по СБП](sbp.md): тот же метод API, те же статусы,
callback-и и правила повторов. Отличаются значение `payment_method` и то, что лежит
в `requisite`.

| | СБП | Карта |
| --- | --- | --- |
| `payment_method` | `sbp` | `card_transfer` |
| `requisite` | номер телефона: `+79991234567` | номер карты: `2200123456789010` |
| Как платит плательщик | «Перевод по СБП» по номеру телефона | «Перевод на карту» по номеру карты |

## Создать заявку { #create }

`POST /api/v1/payments` с `payment_method: "card_transfer"`. Запрос
[подписывается](signing.md) так же, как для СБП.

```json
{
  "merchant_payment_id": "order-1002",
  "amount": "12500.00",
  "payment_method": "card_transfer",
  "bank_code": "sber"
}
```

Все поля и правила — в разделе [Приём по СБП → Поля запроса](sbp.md#request-fields).
`bank_code` — банк плательщика, код из справочника (не БИК): реквизиты подбираются под
него. `is_intrabank: true` вместе с `bank_code` — перевод внутри этого банка: карта
получателя будет в том же банке, что и у плательщика. Оба поля — редкие фильтры: без них
реквизиты подбираются из всех банков.

Ответ `201 Created`:

```json
{
  "id": "7a2d4c1e-9b3f-4e8a-b1c2-3d4e5f6a7b8c",
  "merchant_payment_id": "order-1002",
  "flow": "runtime_live",
  "status": "processing",
  "amount": 12500,
  "initial_amount": 12500,
  "currency": "RUB",
  "geo_code": "RU",
  "payment_method": "card_transfer",
  "bank_code": "sber",
  "is_intrabank": false,
  "callback_url": null,
  "is_test": false,
  "merchant_information": {
    "course": 100.00,
    "rate": 11.00,
    "amount_usdt": "125.0000",
    "amount_rate": "11125.0000",
    "amount_usdt_rate": "111.2500"
  },
  "requisite": "2200123456789010",
  "holder_name": "Мария П.",
  "created_at": "2026-09-29T09:30:00Z",
  "updated_at": "2026-09-29T09:30:01Z"
}
```

Поля ответа и расчёт `merchant_information` — как у СБП:
[Ответ](sbp.md#response) и [Расчёт `merchant_information`](sbp.md#merchant-information).

## Что показать плательщику { #payer-screen }

- **Номер карты** из `requisite` — группами по четыре цифры (`2200 1234 5678 9010`),
  с кнопкой «Скопировать», которая копирует номер **без пробелов**.
- **Получатель** из `holder_name` — банк покажет это имя перед переводом.
- **Сумма** — ровно `amount`. Предупредите, что комиссию банка плательщик оплачивает
  сверх суммы: зачисляется то, что пришло на карту.
- **Срок** — обратный отсчёт от `created_at` на срок заявки вашего проекта (по умолчанию
  15 минут).

!!! warning "Номер карты — только для этой заявки"
    Не сохраняйте и не показывайте номер карты повторно. Для новой оплаты создайте новую
    заявку.

## Статусы и результат { #result }

Статусы, callback-и и опрос — такие же, как у СБП:
[Статусы](sbp.md#statuses) и [Как узнать результат](sbp.md#result). Выданная карта ведёт
только к `completed` или `canceled`, и о каждом из них приходит callback; `error` — только
если карту не выдали, это видно в ответе на создание.

## Крайние случаи { #edge-cases }

Всё из раздела [Приём по СБП → Крайние случаи](sbp.md#edge-cases) верно и для карты.
Отдельно для карт:

- **Перевод с комиссией.** Если банк плательщика удержал комиссию из суммы перевода,
  на карту придёт меньше. Фактическую сумму могут подтвердить при проверке оплаты —
  тогда в callback-е придёт `completed` с новым `amount`.
- **Нет карт нужного банка.** С `bank_code` выбор реквизитов уже; если подходящих нет,
  заявка закроется ошибкой `provider_no_requisites` или ответ будет
  `422 payment_not_routable`. Попробуйте без `bank_code`.