Sber API (СберБизнес API): Подключить организацию через СберБизнес ID

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

Клиент заходит через СберБизнес ID, а сервис получает токены для работы с его счетами — первый шаг любой интеграции.

  1. Подключись к Sber API: получи client_id, client_secret и выпусти в личном кабинете клиентский TLS-сертификат (.p12). Без сертификата (mTLS) запросы к API не проходят; для песочницы сертификат отдельный.
  2. Отправь пользователя на страницу авторизации: GET /ic/sso/api/v2/oauth/authorize на хосте sbi.sberbank.ru:9443 с response_type = code, client_id, redirect_uri, scope (обязательно openid и нужные сервисы, например GET_STATEMENT_ACCOUNT, PAY_DOC_RU) и state — строкой не короче 36 символов.
  3. Пользователь вернётся на redirect_uri с code. Обменяй его: POST /ic/sso/api/v2/oauth/token с grant_type = authorization_code, code, client_id, client_secret и тем же redirect_uri.
  4. access_token живёт 60 минут. Обновляй его тем же методом с grant_type = refresh_token; если новая пара не дошла, повтори обновление со старым refresh_token в течение часа.
  5. Проверь, что за организация подключилась: GET /fintech/api/v1/client-info (нужен сервис GET_CLIENT_ACCOUNTS в scope).
curl -X POST 'https://fintech.sberbank.ru:9443/ic/sso/api/v2/oauth/token' \
  --cert-type P12 --cert client.p12:<пароль сертификата> \
  -H 'Content-Type: application/x-www-form-urlencoded' -H 'Accept: application/json' \
  -d grant_type=authorization_code -d code=<код> \
  -d client_id=<client_id> -d client_secret=<client_secret> \
  --data-urlencode 'redirect_uri=https://example.ru/sber/callback'

Базовые URL

Авторизация

Тип: 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}'

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

GET /ic/sso/api/v2/oauth/authorize — Получение кода авторизации

Ссылка, которую платформа открывает в браузере пользователя (хост sbi.sberbank.ru:9443). После успешной аутентификации браузер возвращается на redirect_uri с кодом авторизации. Для песочницы используется промышленный URL с параметрами песочницы.

Параметр Где Тип Обяз. Описание
response_type query string да Только code
client_id query string да Идентификатор платформы
redirect_uri query uri да Адрес возврата; сверяется по маске с указанным при подключении
scope query string да Набор атрибутов и операций; обязательно содержит openid
state query string да Защита от CSRF, не короче 36 символов (буквы и цифры)
nonce query string нет Связь сессии с id_token, не короче 10 символов
code_challenge query string нет PKCE (RFC 7636)
code_challenge_method query string нет Только S256; обязателен при code_challenge
prompt query string нет none, login, consent, select_account

POST /ic/sso/api/v2/oauth/token — Получение и обновление токенов

Обменивает код авторизации на access_token, refresh_token, id_token или обновляет access_token (grant_type=refresh_token).

Пример ответа (сокращён):

Параметр Где Тип Обяз. Описание
Content-Type header string да application/x-www-form-urlencoded
Accept header string нет application/json (по умолчанию) или application/jose для зашифрованного ответа
grant_type body string да authorization_code или refresh_token
code body string да Код авторизации (для authorization_code)
client_id body string да Идентификатор платформы
redirect_uri body uri да Должен точно совпадать с переданным в /oauth/authorize
client_secret body string да Секретный ключ платформы
code_verifier body string нет Обязателен, если в /oauth/authorize передавался code_challenge

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

{
  "access_token": "BAAb16Adc851c14Ff5C73Fd57EDB5494708E6e",
  "token_type": "Bearer",
  "expires_in": 4801,
  "refresh_token": "b89FABe82db60A13A81b160EBde2A5FfF815Dd",
  "scope": "openid DICT GET_STATEMENT_ACCOUNT PAY_DOC_RU accounts inn orgKpp ...",
  "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJnb3N0MzQuMTAtMjAxMiJ9..."
}

GET /fintech/api/v1/client-info — Информация о клиенте

Расширенная информация об организации пользователя и её счетах. В scope должен быть сервис GET_CLIENT_ACCOUNTS.

Пример ответа (сокращён):

Параметр Где Тип Обяз. Описание
Authorization header string да Access token организации-клиента

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

{
  "shortName": "ООО \"Сокращенное наименование\"",
  "fullName": "ООО \"Полное наименование\"",
  "resident": true,
  "ogrn": "5186069854119",
  "inn": "0102573875",
  "okpo": "00040778",
  "territorialBank": "Калужское отделение № 8608",
  "nonClient": false,
  "isCorpCardHolder": false,
  "hasActiveCreditLine": true,
  "creditLineAvailableSum": "348235.00"
}

Нюансы

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


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