api.mfopak.ru · версия 1
API для сайта и приложений МФО
Через него работают сайт заёмщика и мобильные приложения: тарифы и расчёт займа, заявка с анкетой и подписью кодом из СМС, вход и личный кабинет с оплатой. API подключено к базе программы МФОПАК — заявка сразу видна сотруднику, а решение, начисления и платежи — заёмщику.
- Адрес
https://api.mfopak.ru/v1- Формат
- JSON, даты ГГГГ-ММ-ДД, суммы в рублях
- Вход
Authorization: Bearer, токен на 8 часов- Ошибки
- problem+json с полями анкеты
Сейчас включён демо-режим: СМС не отправляются — код приходит в ответе в поле demoCode,
оплата в кабинете проводится без списания денег. Данные — демонстрационная база программы.
Как оформить заявку
Шесть запросов — от расчёта до кабинета. Так работает демо-сайт, так же подключается мобильное приложение.
-
Тарифы и расчёт
Сумма и срок прижимаются к условиям тарифа, расчёт — по тому же графику, по которому программа потом ведёт договор.
GET /v1/tariffs GET /v1/tariffs/{id}/quote?amount=15000&term=14 → { "amount": 15000, "returnDate": "2026-09-24", "total": 16680, "psk": 292, … }
-
Код на телефон
POST /v1/phone/code { "phone": "+7 (918) 123-45-67", "purpose": "application" } → { "phone": "+7 (918) 123-45-67", "expiresIn": 600, "resendIn": 30, "demoCode": "4821" }
-
Подтверждение телефона
Токен подтверждения живёт час и прикладывается к заявке.
knownClient— номер уже есть в базе.POST /v1/phone/verify { "phone": "+7 (918) 123-45-67", "code": "4821" } → { "phoneToken": "CfDJ8…", "expiresIn": 3600, "knownClient": false }
-
Код для подписи
Заявка и согласия подписываются простой электронной подписью — отдельным кодом.
POST /v1/phone/code { "phone": "+7 (918) 123-45-67", "purpose": "sign" }
-
Заявка
Анкета проверяется целиком: паспорт с заменой в 20 и 45 лет, контрольные цифры ИНН и СНИЛС, возраст 18–75. Карта передаётся только маской.
POST /v1/applications { "phoneToken": "CfDJ8…", "signCode": "0937", "tariffId": 1, "amount": 15000, "term": 14, "lastName": "Габуева", "firstName": "Алина", "gender": "female", "birthDate": "1991-04-12", "passportSeries": "9011", "passportNumber": "123456", …, "payout": "card", "cardMasked": "2200 ** 1234", "cardExpiry": "09/29", "agreePersonalData": true, "agreeBureau": true, "agreeSignature": true } → 201 { "id": 58, "number": "З-00058", "status": "accepted", "newClient": true, "session": { "accessToken": "CfDJ8…", "expiresIn": 28800, … } }
-
Кабинет
С токеном из ответа — займы с долгом на сегодня, заявки и платежи.
GET /v1/me Authorization: Bearer CfDJ8…
Методы
Поля запросов и ответов описаны в библиотеке контрактов Mfopak.Api.Contracts — приложение на .NET подключает её как есть.
| Метод | Адрес | Что делает | Доступ |
|---|---|---|---|
| Условия | |||
| GET | /v1/lender | Организация, офисы, разброс полной стоимости займа | открыто |
| GET | /v1/tariffs | Тарифы, которые оформляются онлайн | открыто |
| GET | /v1/tariffs/{id}/quote | Расчёт: график, сумма к возврату, ПСК | открыто |
| Телефон, заявка и вход | |||
| POST | /v1/phone/code | Код из СМС: application, sign или login | открыто |
| POST | /v1/phone/verify | Подтвердить телефон для заявки | открыто |
| POST | /v1/applications | Заявка с анкетой и подписью, сразу вход в кабинет | phoneToken |
| POST | /v1/auth/token | Войти в кабинет по коду | открыто |
| Личный кабинет | |||
| GET | /v1/me | Займы, заявки и платежи заёмщика | Bearer |
| GET | /v1/me/loans/{id} | Договор: долг на сегодня, график, платежи, предел переплаты | Bearer |
| GET | /v1/me/loans/{id}/payment-preview | Как платёж разойдётся по долгу — до оплаты | Bearer |
| POST | /v1/me/loans/{id}/payments | Оплатить картой или по СБП | Bearer |
| POST | /v1/me/applications/{id}/cancel | Отменить заявку | Bearer |
| Демо-режим | |||
| GET | /v1/demo/clients | Демо-клиенты с займами | демо |
| POST | /v1/demo/token | Войти под демо-клиентом без СМС | демо |
| GET | /health | Жив ли сервис и есть ли связь с базой | открыто |
Ошибки
Ответ об ошибке — application/problem+json. В title — текст, который можно показать заёмщику как есть. У ошибок анкеты в errors — поле и что с ним не так.
{
"title": "Проверьте анкету: есть ошибки",
"status": 400,
"errors": {
"PassportIssued": ["Паспорт нужно было заменить в 20 лет — он недействителен"],
"Income": ["Укажите доход в месяц"]
}
}
Ошибка в анкете или запросе
Нужен вход, токен истёк или телефон подтверждён больше часа назад
Нет такого тарифа, договора или кабинета
Нельзя выполнить: паспорт у другого номера, платёж не принимается
Слишком часто: подождите и повторите
Сервис или СМС-шлюз недоступен
Ограничения
- Код живёт 10 минут и сгорает после пяти неверных попыток.
- Новый код на номер — не чаще раза в 30 секунд и не больше шести в час.
- Запросы кодов и входа — до 20 за 10 минут с одного адреса, заявки и платежи — до 120.
- Сайт, который ходит в API со своего сервера, передаёт адрес заёмщика в
X-Client-Ipвместе с ключомX-Portal-Key.