{"name":"Модульбанк API","vendor":"Модульбанк","industry":"finance","summary":"API связывает личный кабинет Модульбанка с внешними сервисами. Через него можно получать компании и счета, проверять остатки, выгружать операции, загружать платёжные поручения и принимать уведомления о транзакциях.","docsUrl":"https://api.modulbank.ru/","coverage":{"included":["Компании, счета, текущий баланс и овердрафт","История операций по счёту","Загрузка рублёвого платежа на подпись","Приём и возврат оплаты по динамическому QR-коду СБП","Уведомления о транзакциях и проверка их подписи","Токен из личного кабинета, OAuth 2 и песочница"],"excluded":["Регистрация торговых точек и кассовые ссылки СБП","Номинальные счета и отчёты по бенефициарам","Импорт платёжных поручений в формате 1С","Подписание платежей квалифицированной электронной подписью"]},"scenarios":[{"id":"poluchit-scheta-balans-i-overdraft","title":"Получить счета, баланс и овердрафт","summary":"Сценарий возвращает доступные пользователю компании и счета, затем — текущие собственные и заёмные средства выбранного счёта.","steps":["Получи токен с правом `account-info`.","Запроси компании и счета: POST /account-info.","Возьми `bankAccounts[].id` нужного счёта из ответа и используй его как `accountId`.","Получи `Balance` и `Overdraft`: POST /account-info/balance-details/{accountId}."],"code":"curl -X POST 'https://api.modulbank.ru/v1/account-info' \\\n  -H 'Authorization: Bearer <access_token>'\n\ncurl -X POST 'https://api.modulbank.ru/v1/account-info/balance-details/<accountId>' \\\n  -H 'Authorization: Bearer <access_token>'","language":"bash","methods":["POST /account-info","POST /account-info/balance-details/{accountId}"]},{"id":"poluchit-istoriyu-operatsiy","title":"Получить историю операций","summary":"Метод возвращает операции выбранного счёта с их банковскими статусами. Для последовательной выгрузки учитывай, что состав выборки может меняться между запросами.","steps":["Получи токен с правами `account-info` и `operation-history`.","Получи `bankAccounts[].id` через POST /account-info и используй его как `accountId`.","Запроси операции: POST /operation-history/{accountId}.","Продолжай выборку через фильтры `skip` и `records`; обрабатывай возможные повторы и пропуски между страницами."],"code":"curl -X POST 'https://api.modulbank.ru/v1/operation-history/<accountId>' \\\n  -H 'Authorization: Bearer <access_token>' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"skip\": 0,\n    \"records\": 50\n  }'","language":"bash","methods":["POST /account-info","POST /operation-history/{accountId}"]},{"id":"zagruzit-platezh-na-podpis","title":"Загрузить платёж на подпись","summary":"Сценарий создаёт платёжное поручение контрагенту и переводит его в статус `InSigning`. В ответе приходит системный `Id` созданной операции.","steps":["Получи токен с правами `account-info` и `operation-upload`.","Получи номер счёта плательщика: POST /account-info.","Создай платёж: POST /operation-upload с реквизитами, `parameters.targetStatus: \"InSigning\"` и уникальным `Idempotency-Key`.","Сохрани `Id` из ответа; платёж будет ожидать подписания."],"code":"curl -X POST 'https://api.modulbank.ru/v1/operation-upload' \\\n  -H 'Authorization: Bearer <access_token>' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Idempotency-Key: <UUID>' \\\n  -d '{\n    \"payment\": {\n      \"Number\": \"12345\",\n      \"Date\": \"15.08.2023\",\n      \"Sum\": 1.01,\n      \"PayerAccount\": \"40802810870010433949\",\n      \"RecipientName\": \"ООО Ромашка\",\n      \"RecipientINN\": \"1242610857\",\n      \"RecipientKPP\": \"256845746\",\n      \"RecipientAccount\": \"40702810870010408317\",\n      \"RecipientBankBik\": \"044525092\",\n      \"RecipientBankCorrAccount\": \"30101810645250000092\",\n      \"PaymentPurpose\": \"Оплата поставщику Без НДС\",\n      \"TypeIndicator\": \"0\"\n    },\n    \"parameters\": {\n      \"targetStatus\": \"InSigning\"\n    }\n  }'","language":"bash","methods":["POST /account-info","POST /operation-upload"]},{"id":"prinyat-oplatu-po-dinamicheskomu-qr-kodu","title":"Принять оплату по динамическому QR-коду СБП","summary":"Сценарий создаёт QR-код на заданную сумму для зарегистрированной торговой точки. Оплата считается успешной, когда статус QR-кода становится `Accepted`.","steps":["Получи токен с правами `account-info` и `operation-upload`.","Получи `companyId`: POST /account-info.","Запроси точки: GET /sbp/retail-points с `companyId` и выбери зарегистрированную точку.","Создай код: POST /sbp/qr-codes/dynamic с `retailPointId`, суммой и назначением.","Передай покупателю `payload` из ответа и сохрани `qrcId`.","Проверяй GET /sbp/qr-codes/{qrcId}, пока `status` не станет `Accepted`, `Rejected` или `TimedOut`."],"code":"curl -X GET 'https://api.modulbank.ru/v1/sbp/retail-points?companyId=599ebe36-ed20-49c4-b802-a5ec0329ebce' \\\n  -H 'Authorization: Bearer <access_token>'\n\ncurl -X POST 'https://api.modulbank.ru/v1/sbp/qr-codes/dynamic' \\\n  -H 'Authorization: Bearer <access_token>' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"retailPointId\": \"a604633b-f067-4be3-ab53-6bf9114d689f\",\n    \"sum\": 500,\n    \"extraInfo\": \"Чёрный кофе\",\n    \"lifetime\": 12\n  }'\n\ncurl -X GET 'https://api.modulbank.ru/v1/sbp/qr-codes/AS1000670LSS7DN18SJQDNP4B05KLJL3' \\\n  -H 'Authorization: Bearer <access_token>'","language":"bash","methods":["POST /account-info","GET /sbp/retail-points","POST /sbp/qr-codes/dynamic","GET /sbp/qr-codes/{qrcId}"]},{"id":"vernut-oplatu-po-dinamicheskomu-qr-kodu","title":"Вернуть оплату по динамическому QR-коду СБП","summary":"Возврат создаётся по номеру исходной операции СБП. Метод возвращает `requestId`, по которому запрашивается итоговый статус.","steps":["Получи токен с правами `account-info` и `operation-upload`.","Запроси GET /sbp/qr-codes/{qrcId} и возьми `operationId` успешной оплаты для передачи как `sbpOperId`.","Создай полный или частичный возврат: POST /sbp/qr-codes/refund.","Возьми `requestId` из ответа и передай его как `refundId` в GET /sbp/qr-codes/refund/{refundId}.","Проверь `status` возврата; пример завершённого статуса в документации — `Executed`."],"code":"curl -X POST 'https://api.modulbank.ru/v1/sbp/qr-codes/refund' \\\n  -H 'Authorization: Bearer <access_token>' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"sbpOperId\": \"A931608381015300KXVWKp1837BE5609\",\n    \"type\": \"full\",\n    \"remitInfo\": \"\"\n  }'\n\ncurl -X GET 'https://api.modulbank.ru/v1/sbp/qr-codes/refund/13a8804e-ded0-4f29-a231-725ffce47859' \\\n  -H 'Authorization: Bearer <access_token>'","language":"bash","methods":["GET /sbp/qr-codes/{qrcId}","POST /sbp/qr-codes/refund","GET /sbp/qr-codes/refund/{refundId}"]},{"id":"poluchat-uvedomleniya-o-tranzaktsiyah","title":"Получать уведомления о транзакциях","summary":"Модульбанк отправляет HTTPS-запрос на зарегистрированный адрес приложения. Получатель проверяет `SHA1Hash` и подтверждает доставку ответом HTTP 200.","steps":["Получи токен с правом `operation-history`.","Укажи HTTPS-адрес для уведомлений при регистрации приложения; для токена из личного кабинета настрой его в «Настройки» → «Услуги» → «API Банка» → «Генерация токена авторизации».","Прими входящий POST /modulbank с JSON-объектом операции.","Для токена из личного кабинета вычисли SHA-1 от строки `<первые 10 символов токена авторизации>&operationId`; для OAuth — от `clientSecret&operationId`. Сравни HEX-результат с `SHA1Hash`.","После успешной обработки верни HTTP 200."],"code":"POST /modulbank HTTP/1.1\nHost: example.ru\nContent-Type: application/json\n\n{\n  \"companyInn\": \"1111111111\",\n  \"companyKpp\": \"\",\n  \"operation\": {\n    \"id\": \"a4b825ca-a6f8-4996-a1db-a5f3028bb68d\",\n    \"companyId\": \"599ebe36-ed20-49c4-b802-a5ec0329ebce\",\n    \"status\": \"Received\",\n    \"category\": \"Debet\",\n    \"contragentName\": \"Индивидуальный предприниматель Иванов Иван Иванович\",\n    \"contragentInn\": \"1111111111\",\n    \"contragentKpp\": \"\",\n    \"contragentBankAccountNumber\": \"30101810000000000005\",\n    \"contragentBankName\": \"МОСКОВСКИЙ ФИЛИАЛ ОАО КБ \\\"РЕГИОНАЛЬНЫЙ КРЕДИТ\",\n    \"contragentBankBic\": \"044583340\",\n    \"currency\": \"RUR\",\n    \"amount\": 100000.0,\n    \"bankAccountNumber\": \"30101810000000000001\",\n    \"paymentPurpose\": \"Оплата по счету №4 от 01.04.2016 г. Без НДС\",\n    \"executed\": \"2016-04-01T00:00:00\",\n    \"created\": \"2016-04-01T00:00:00\",\n    \"docNumber\": \"4\",\n    \"kbk\": \"\",\n    \"oktmo\": \"\",\n    \"paymentBasis\": \"\",\n    \"taxCode\": \"\",\n    \"taxDocNum\": \"\",\n    \"taxDocDate\": \"\",\n    \"payerStatus\": \"\",\n    \"uin\": \"\",\n    \"absId\": \"34323454545455\",\n    \"ibsoId\": \"1332345565654\",\n    \"cardId\": \"4bdd2fc0-584d-41d8-9241-3f074480fe52\"\n  },\n  \"SHA1Hash\": \"b2ee4a9197f4a90e893caa4f62eeba0b579321f8\"\n}","language":"http","methods":["POST /modulbank"]}],"baseUrls":[{"label":"Боевой","url":"https://api.modulbank.ru/v1/"},{"label":"Песочница","url":"https://api.modulbank.ru/v1/"}],"auth":{"type":"bearer","description":"Для работы только со своей учётной записью сгенерируй токен в личном кабинете через пункт «Подключиться к API». Передавай его в каждом запросе в заголовке `Authorization: Bearer <access_token>` и не передавай третьим лицам.\n\nДля приложения других пользователей зарегистрируй приложение через `api@modulbank.ru` и получи `clientId` и `clientSecret`. Отправь пользователя на GET /oauth/authorize с `clientId`, `redirectUri`, `scope` и `state`, затем немедленно обменяй одноразовый `code` через POST /oauth/token. Доступные права `scope`: `account-info`, `operation-history`, `operation-upload`.\n\nВ песочнице используй `clientId: sandboxapp`, `clientSecret: sandboxappsecret` и `Authorization: Bearer sandboxtoken`; реальные идентификаторы и токены там запрещены.","example":""},"methods":[{"id":"POST /account-info","title":"Получение информации о компаниях пользователя","httpMethod":"POST","path":"/account-info","description":"Возвращает компании пользователя и их банковские счета. Системный идентификатор счёта находится в `bankAccounts[].id`, номер — в `bankAccounts[].number`; требуется право `account-info`.","params":[],"requestExample":"","responseExample":"","docsUrl":"https://api.modulbank.ru/#tag/Poluchenie-dannykh/paths/~1account-info/post"},{"id":"POST /account-info/balance-details/{accountId}","title":"Получение баланса и овердрафта по счету","httpMethod":"POST","path":"/account-info/balance-details/{accountId}","description":"Возвращает `Balance` и `Overdraft` выбранного счёта. Требуется право `account-info`.","params":[{"name":"accountId","in":"path","type":"string<uuid>","required":true,"description":"Системный идентификатор счёта"}],"requestExample":"","responseExample":"{\n  \"Balance\": 0,\n  \"Overdraft\": 0\n}","docsUrl":"https://api.modulbank.ru/#tag/Poluchenie-dannykh/paths/~1account-info~1balance-details~1%7BaccountId%7D/post"},{"id":"POST /operation-history/{accountId}","title":"Просмотр истории операций","httpMethod":"POST","path":"/operation-history/{accountId}","description":"Возвращает операции счёта. Требуется право `operation-history`; операции сортируются по дате проведения или изменения по убыванию, затем по идентификатору по возрастанию.","params":[{"name":"accountId","in":"path","type":"string","required":true,"description":"Системный идентификатор счёта"},{"name":"statuses","in":"body","type":"array","required":false,"description":"Статусы возвращаемых операций"},{"name":"SbpRetailPointId","in":"body","type":"string<uuid>","required":false,"description":"Идентификатор торговой точки СБП"},{"name":"operations","in":"body","type":"array","required":false,"description":"Идентификаторы транзакций"},{"name":"AbsIds","in":"body","type":"array","required":false,"description":"Идентификаторы АБС транзакций"},{"name":"category","in":"body","type":"string","required":false,"description":"Направление: Debet — входящий, Credit — исходящий"},{"name":"from","in":"body","type":"string<date-time>","required":false,"description":"Начало периода, формат yyyy-MM-dd"},{"name":"till","in":"body","type":"string<date-time>","required":false,"description":"Конец периода, формат yyyy-MM-dd"},{"name":"skip","in":"body","type":"integer","required":false,"description":"Число пропускаемых строк, по умолчанию 0"},{"name":"records","in":"body","type":"integer","required":false,"description":"Число записей от 0 до 50, по умолчанию 10"}],"requestExample":"","responseExample":"","docsUrl":"https://api.modulbank.ru/#tag/Poluchenie-dannykh/paths/~1operation-history~1%7BaccountId%7D/post"},{"id":"POST /operation-upload","title":"Импорт платежей в формате JSON","httpMethod":"POST","path":"/operation-upload","description":"Создаёт платёжное поручение из JSON. Без `parameters.targetStatus` платёж остаётся черновиком; значение `InSigning` переводит его на подпись. Требуется право `operation-upload`.","params":[{"name":"Idempotency-Key","in":"header","type":"string","required":false,"description":"Ключ идемпотентности: до 256 символов, латиница, цифры и дефис"},{"name":"idempotency-key","in":"query","type":"string","required":false,"description":"Альтернативная передача ключа идемпотентности"}],"requestExample":"","responseExample":"{\n  \"Id\": \"38a5a5bb-dc30-49a2-b175-1de0d1488c43\",\n  \"Error\": \"string\"\n}","docsUrl":"https://api.modulbank.ru/#tag/Zagruzka-dannykh/paths/~1operation-upload/post"},{"id":"GET /sbp/retail-points","title":"Получение списка точек продаж","httpMethod":"GET","path":"/sbp/retail-points","description":"Возвращает точки продаж, зарегистрированные в СБП. Для QR Pay требуются права `account-info`, `operation-upload`.","params":[{"name":"companyId","in":"query","type":"string<uuid>","required":false,"description":"ID компании из POST /account-info"}],"requestExample":"","responseExample":"","docsUrl":"https://api.modulbank.ru/#tag/QR-Pay/paths/~1sbp~1retail-points/get"},{"id":"POST /sbp/qr-codes/dynamic","title":"Создание нового динамического QR-кода","httpMethod":"POST","path":"/sbp/qr-codes/dynamic","description":"Создаёт QR-код для конкретной торговой точки. Ответ содержит `qrcId` и `payload`; `extraInfo` обязательно и ограничено 140 символами.","params":[],"requestExample":"","responseExample":"","docsUrl":"https://api.modulbank.ru/#tag/QR-Pay/paths/~1sbp~1qr-codes~1dynamic/post"},{"id":"GET /sbp/qr-codes/{qrcId}","title":"Получение данных QR-кода","httpMethod":"GET","path":"/sbp/qr-codes/{qrcId}","description":"Возвращает свойства и статус QR-кода: `NotStarted`, `Received`, `InProgress`, `Accepted`, `Rejected` или `TimedOut`.","params":[{"name":"qrcId","in":"path","type":"string","required":true,"description":"ID QR-кода"}],"requestExample":"","responseExample":"","docsUrl":"https://api.modulbank.ru/#tag/QR-Pay/paths/~1sbp~1qr-codes~1%7BqrcId%7D/get"},{"id":"POST /sbp/qr-codes/refund","title":"Возврат по платежу","httpMethod":"POST","path":"/sbp/qr-codes/refund","description":"Создаёт возврат по `sbpOperId`. `type` принимает `full` или `partial`; `amount` передаёт сумму частичного возврата, `remitInfo` — причину длиной до 140 символов.","params":[],"requestExample":"","responseExample":"","docsUrl":"https://api.modulbank.ru/#tag/QR-Pay/paths/~1sbp~1qr-codes~1refund/post"},{"id":"GET /sbp/qr-codes/refund/{refundId}","title":"Статус возврата","httpMethod":"GET","path":"/sbp/qr-codes/refund/{refundId}","description":"Возвращает исходную операцию СБП, операцию возврата, сумму и статус.","params":[{"name":"refundId","in":"path","type":"string","required":true,"description":"ID возврата"}],"requestExample":"","responseExample":"","docsUrl":"https://api.modulbank.ru/#tag/QR-Pay/paths/~1sbp~1qr-codes~1refund~1%7BrefundId%7D/get"},{"id":"POST /modulbank","title":"Уведомление о произошедшей транзакции","httpMethod":"POST","path":"/modulbank","description":"Входящий запрос на зарегистрированный приложением URI. Тело содержит `companyInn`, `companyKpp`, объект `operation` и подпись `SHA1Hash`; приложение должно ответить HTTP 200.","params":[],"requestExample":"","responseExample":"","docsUrl":"https://api.modulbank.ru/#tag/Uvedomleniya-o-proizoshedshikh-tranzaktsiyakh-veb-khuki"}],"codeExamples":[],"errors":[{"code":"400","description":"{ exceptionType: 'AccessDenied', message: 'У пользователя нет доступа к счёту' } для POST /operation-history/{accountId}"},{"code":"503","description":"Сервисные работы: API возвращает этот статус на все виды запросов"}],"limits":"- Временный OAuth-код действует меньше 1 минуты и используется один раз. `accessToken` действует 3 года, после чего автоматически аннулируется.\n- POST /operation-history/{accountId} возвращает не более 50 записей за запрос; значение `records` по умолчанию — 10, `skip` — 0.\n- `Idempotency-Key` не может быть пустым и содержит не более 256 символов: латиницу, цифры и дефис.\n- Если приложение не подтвердило вебхук HTTP 200, Модульбанк делает ещё две попытки: через 10 минут и через час.\n- `lifetime` динамического QR-кода задаётся в минутах: от 5 до 129600, по умолчанию 12. Методы QR Pay недоступны в песочнице; документация рекомендует тестировать на бою малыми суммами.","gotchas":["Параметры запроса API передаются в теле; поддерживаются `application/json` и `x-www-form-urlencoded`. Все сетевые взаимодействия должны идти по HTTPS с проверкой SSL-сертификата.","В истории новая операция не обязательно появляется в начале. Если данные меняются между запросами, пагинация через `skip` и `records` может дать повторы или пропуски.","В поле вебхука `operation.category` документация задаёт `Debet` для входящей и `Credit` для исходящей операции. Не подменяй эти значения привычной банковской трактовкой.","Вебхуки отправляются только по HTTPS. Тестировать их в песочнице нельзя.","Если вебхуки не приходят, разреши в фаерволе адреса `185.137.76.36`, `185.137.76.37`, `185.137.76.38`, `185.137.76.39` и проверь срок токена.","Ключ идемпотентности для POST /operation-upload необязателен, но при повторе с тем же UUID сервер возвращает текущий `Id` ранее созданной операции.","Если `parameters.targetStatus` не передан в POST /operation-upload, платёж создаётся как черновик.","В песочнице реальные данные и идентификаторы запрещены. Для POST /operation-history/{accountId} там работают только фильтры `records` и `skip`; QR Pay в песочнице недоступен.","Даты проведения и создания платежа указываются по московскому времени."],"slug":"modulbank","version":1,"updatedAt":"2026-10-13T15:07:49.125Z","sources":[{"title":"Интеграция с Модульбанком по API","url":"https://api.modulbank.ru/","kind":"research","addedAt":"2026-10-13T15:07:39.380Z"},{"title":"OpenAPI specification","url":"https://api.modulbank.ru/v1/swagger/docs/v1","kind":"research","addedAt":"2026-10-13T15:07:39.380Z"},{"title":"Получение данных","url":"https://api.modulbank.ru/#tag/Poluchenie-dannykh","kind":"research","addedAt":"2026-10-13T15:07:39.380Z"},{"title":"Загрузка данных","url":"https://api.modulbank.ru/#tag/Zagruzka-dannykh","kind":"research","addedAt":"2026-10-13T15:07:39.380Z"},{"title":"QR Pay","url":"https://api.modulbank.ru/#tag/QR-Pay","kind":"research","addedAt":"2026-10-13T15:07:39.380Z"},{"title":"Вставленный текст","url":"","kind":"import","addedAt":"2026-10-13T15:07:39.380Z"}],"logoUrl":null}