# Sber API (СберБизнес API): Создать платёжное поручение и узнать его статус

Сценарий из mcp-everything. Актуально на 2026-10-24.

Платежи поставщикам и налоги из своей учётной системы — без ручного ввода в СберБизнес.

1. В scope нужен сервис PAY_DOC_RU.
2. Создай поручение: POST /fintech/api/v1/payments с externalId (твой UUID документа), date, amount, operationCode = 01, priority, purpose (до 210 символов), реквизитами плательщика (payerName, payerInn, payerAccount, payerBankBic, payerBankCorrAccount) и получателя (payeeName, payeeBankBic и счёт).
3. Без электронной подписи digestSignatures поручение создаётся черновиком — клиент подписывает его в интерфейсе СберБизнес. С подписью банк сразу начинает обработку; порядок полей дайджеста менять нельзя.
4. Проверяй статус: GET /fintech/api/v1/payments/{externalId}/state — bankStatus и bankComment. Вместо частого опроса можно получать финальный статус вебхуком.

```bash
curl -X POST 'https://fintech.sberbank.ru:9443/fintech/api/v1/payments' \
  --cert-type P12 --cert client.p12:<пароль сертификата> \
  -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Content-Type: application/json' \
  -d '{
        "externalId": "a0000000-0000-0000-0000-000000001042",
        "date": "2026-10-24",
        "amount": 15000.00,
        "operationCode": "01",
        "priority": "5",
        "purpose": "Оплата по счёту № 305 от 20.10.2026. В т.ч. НДС 20% - 2500.00",
        "payerName": "ООО \"Ромашка\"", "payerInn": "7700000000", "payerAccount": "40702810500000000001",
        "payerBankBic": "044525225", "payerBankCorrAccount": "30101810400000000225",
        "payeeName": "ООО \"Поставщик\"", "payeeInn": "7800000000", "payeeAccount": "40702810600000000002",
        "payeeBankBic": "044030653", "payeeBankCorrAccount": "30101810500000000653"
      }'
```

## Базовые URL

- Боевой: `https://fintech.sberbank.ru:9443`
- Тестовый (песочница): `https://fintech-test.sberbank.ru:9443`
- Страница авторизации СберБизнес ID: `https://sbi.sberbank.ru:9443/ic/sso/api/v2/oauth/authorize`

## Авторизация

Тип: OAuth 2.0

Авторизация по OAuth 2.0 (authorization code flow) через СберБизнес ID. Платформа получает при подключении `client_id` и `client_secret`, перенаправляет пользователя на `/ic/sso/api/v2/oauth/authorize`, получает код на `redirect_uri` и обменивает его на `access_token`, `refresh_token` и `id_token`. Запросы к API передают токен в заголовке `Authorization`. `access_token` живёт 60 минут.

Дополнительно обязателен клиентский TLS-сертификат (mTLS) в формате PKCS#12 (.p12) и установленные корневые сертификаты УЦ Сбера и Минцифры России. Сертификат выпускается в личном кабинете Sber API (для песочницы — на вкладке «Песочница API»), действует 12 месяцев и только для одного `clientId`.

```
curl --location 'https://fintech-test.sberbank.ru:9443/fintech/api/v1/client-info' \
--header 'Accept: application/json' \
--header 'Authorization: {value}'
```

## Методы сценария

### POST /fintech/api/v1/payments — Создание рублёвого платёжного поручения

Создаёт РПП. Если передать электронную подпись (`digestSignatures`), банк сразу начнёт обработку; без подписи поручение создаётся черновиком, который нужно подписать в интерфейсе СберБизнес. В scope должен быть сервис `PAY_DOC_RU`.

Дайджест для подписи (порядок полей сохраняется):

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `Authorization` | header | string | да | Access token организации-клиента |
| `externalId` | body | string (uuid) | да | Идентификатор документа, присвоенный партнёром |
| `date` | body | string (date) | да | Дата составления документа, YYYY-MM-DD |
| `number` | body | string | нет | Номер документа, до 8 цифр |
| `amount` | body | number | да | Сумма, от 0.01 |
| `operationCode` | body | string | да | Код операции, 01 |
| `priority` | body | string | да | Очерёдность платежа, 1–5 |
| `purpose` | body | string | да | Назначение платежа, до 210 символов |
| `payerName` | body | string | да | Полное наименование плательщика |
| `payerInn` | body | string | да | ИНН плательщика |
| `payerKpp` | body | string | нет | КПП плательщика |
| `payerAccount` | body | string | да | Счёт плательщика, 20 цифр |
| `payerBankBic` | body | string | да | БИК банка плательщика |
| `payerBankCorrAccount` | body | string | да | Корсчёт банка плательщика |
| `payeeName` | body | string | да | Полное наименование получателя |
| `payeeInn` | body | string | нет | ИНН получателя |
| `payeeKpp` | body | string | нет | КПП получателя |
| `payeeAccount` | body | string | нет | Счёт получателя |
| `payeeBankBic` | body | string | да | БИК банка получателя |
| `payeeBankCorrAccount` | body | string | нет | Корсчёт банка получателя |
| `urgencyCode` | body | string | нет | Код срочности: INTERNAL, INTERNAL_NOTIF, OFFHOURS, BESP, NORMAL |
| `deliveryKind` | body | string | нет | Вид платежа |
| `voCode` | body | string | нет | Код вида валютной операции |
| `departmentalInfo` | body | object | нет | Бюджетные реквизиты (КБК, ОКТМО, статус составителя и др.) |
| `vat` | body | object | нет | НДС |
| `incomeTypeCode` | body | string | нет | Код вида дохода по 229-ФЗ |
| `isPaidByCredit` | body | boolean | нет | Оплата за счёт кредитных средств |
| `creditContractNumber` | body | string | нет | Номер кредитного договора |
| `digestSignatures` | body | object[] | нет | Электронные подписи дайджеста документа |

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

```
amount=100.00
date=2018-05-31
departmentalInfo.docNumber108=123
departmentalInfo.drawerStatus101=01
departmentalInfo.kbk=18210102010011000110
departmentalInfo.oktmo=01701000
departmentalInfo.paymentKind110=НС
departmentalInfo.reasonCode106=ТП
departmentalInfo.uip=0
externalId=a0000000-0000-0000-0000-000000000001
incomeTypeCode=2
operationCode=01
payeeAccount=40702810600100001212
payeeBankBic=044525225
payeeBankCorrAccount=30101810400000000225
payeeInn=222201236445
payeeKpp=222201001
payeeName=Общество с ограниченной ответственностью "Получатель"
payerAccount=40702810500006103990
payerBankBic=044525225
payerBankCorrAccount=30101810400000000225
payerInn=222201236445
payerKpp=222201001
payerName=Общество с ограниченной ответственностью "Клиент"
priority=5
purpose=Оплата интернет заказа №123. НДС нет.
voCode=61150
creditContractNumber=2026/33556
```

### GET /fintech/api/v1/payments/{externalId}/state — Статус рублёвого платёжного поручения

Статус ранее созданного поручения. Доступно с любым из сервисов `PAY_DOC_RU`, `PAY_DOC_RU_INVOICE`, `PAY_DOC_RU_INVOICE_ANY`, `PAY_DOC_RU_INVOICE_BUDGET`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `externalId` | path | string | да | Внешний UUID платёжного поручения |
| `Authorization` | header | string | да | Access token организации-клиента |

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

```json
{
  "bankStatus": "PROCESSING",
  "bankComment": "Документ в обработке",
  "channelInfo": "string",
  "crucialFieldsHash": "12345678901234567890123456789012"
}
```

## Нюансы

- Без клиентского TLS-сертификата (mTLS) запросы к API не проходят; тестовые сертификаты работают только в песочнице, у каждого `clientId` свой сертификат.
- `access_token` живёт 60 минут. Использованный `refresh_token` остаётся резервным 2 часа; если новая пара не дошла, повторите обновление с тем же `refresh_token` в течение часа.
- Каждый метод требует своего сервиса в `scope` ссылки авторизации (например `PAY_DOC_RU`, `GET_STATEMENT_ACCOUNT`, `GET_CLIENT_ACCOUNTS`).
- Платёжное поручение без `digestSignatures` создаётся черновиком. Порядок и количество полей дайджеста для подписи менять нельзя.
- Выписку запрашивают постранично начиная с первой страницы; доступна за 5 предыдущих лет и текущий год.
- В песочнице ответы зависят от тестовых данных: сценарии и фиксированные значения указаны на странице каждого метода. Нагрузочное тестирование в песочнице не предусмотрено.
- О финальном статусе платёжного поручения банк может сообщить вебхуком — без постоянного опроса статуса.
- Для работы с дочерними организациями в наборе «Холдингам» нужна отдельная пара токенов для каждой организации.
- У Sber API есть MCP-сервер для AI-агентов (набор «Компаниям»: рублёвое платёжное поручение, выписка, инкассация, НСО и депозиты), а документация доступна в формате llms.txt: `/sber-api/llms-full.txt`.

## Другие сценарии

- [Подключить организацию через СберБизнес ID](https://mcp-everything.ru/integrations/sberbusiness/scenarios/podklyuchit-organizatsiyu-cherez.md)
- [Получить выписку по счёту за день](https://mcp-everything.ru/integrations/sberbusiness/scenarios/poluchit-vypisku-po-schetu-za-den.md)

---

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