Финансовый модуль
Сценарии
- Пополнение баланса
- Пополнение через Юр. лицо
- Создание кошелька
- Вывод средств
- Подключение автовывода
- Автовывод
- Прямая покупка услуг через Тинькофф
- Настройка маршрутов
Пополнение баланса
- Пользователь выбирает маршрут пополнения баланса из списка (список задается в Настройке маршрутов,
direction: 'deposit') - Ввод суммы и показ суммы с комиссией
- Создание платежа
- (Отличается в зависимости от маршрута/метода оплаты, бекенд возвращает
method)
OFFLINE- Открывается модальное окно сhtmlизform.data(deprecated)POST- Создается<form>сaction = form.urlи инпутами изform.data, сразу подтверждается (происходит переход) (deprecate)GETи Остальные - Пользователя перенаправляет на страницу агрегатора (полеform.url)
Пополнение через Юр. лицо
- Для пополнения через юр. лицо необходимо сперва создать новый Счет юр. лица (счет может быть лишь один).
- Если счет существует, его можно изменить перед пополнением или указать текущий
- (Админ) Ручная модерация заявки на пополнение (api)
Список заявок на пополнение отображается пользователю на страницах Финансы и Счета юридических лиц (api)
Подключение автовывода
- Удовлетворять условиям подключения (на текущий момент мин. рейтинг
500) - Отправить заявку на подключение автовывода
- (Админ) Ручная модерация заявки из списка одобрить/отклонить. При одобрении у юзера списываются средства за услугу
Автовывод
Услуга автовывода позволяет автоматически вывести денежные средства по заявке. Т.е. заявка не рассматривается в течение 24 часов администратором и не обрабатывается вручную, а автоматически одобряется сразу после подачи заявки на вывод при условии, что у пользователя нет открытых претензий, нет блокировок администратора на учетной записи и нет заказов, которые "ожидают покупки" или "на доработке". Дополнительно при выводе нигде ничего указывать не нужно, он работает автоматически для всех выводов Для отдельных платежных маршрутов автовывод может быть специально отключен (например крипта)
Создание кошелька для вывода
- Пользователь выбирает маршрут вывода (список задается в Настройке маршрутов,
direction: 'withdraw') - Заполнение полей кошелька и создание (валидация и свойства основного поля зависят от
routes[].walletType.validator,.hint,.format)
- Для
sbp_rubвводится телефон, для остальных обычныйinput - Для
kind === 'card'дополнительно вводится имя владельца карты (param_name) (обязательно, латиница до 255 символов)
- Подтвердить операцию (
confirmation)
Вывод средств
- Выбрать существующий кошелек или создать новый
- Ввод суммы и показ суммы с комиссией
- Для
method === 'sbp_rub'необходимо выбрать банк
- Создание платежа. У юзера со счета списываются средства
- (Админ) Ручная модерация заявки из списка
- Автовывод - с небольшой задержкой платеж автоматически одобряется
- Подтверждение - Заявка не уходит в платежку и считается выполненной. Опционально можно указать причину (будет прислана в лс от юзера админа) (api)
- Одобрение (Авто) - Одобрение заявки, далее она идет в платежку (api))
- Отмена - Пользователю возвращаются средства на кошелек. Заявка не уходит в платежку. Опционально можно указать причину (будет прислана в лс от юзера админа) (api)
API
- Список маршрутов платежей
- Подсчет комиссии
- Создание заявки на пополнение
- Получить счет юр. лица
- Создать счет юр. лица
- Изменить счет юр. лица
- Создать заявку на пополнение через юр. лицо
- Список заявок на пополнение юр. лица текущего пользователя
- Список заявок на пополнение юр. лица (админский, всех пользователей)
- Создать заявку на подключение автовывода
- Список заявок на подключение автовывода
- Одобрение заявки на подключение автовывода
- Отклонить заявку на подключение автовывода
- Удалить заявку на подключение автовывода
- Список своих кошельков
- Удалить кошелек
- Создать кошелек
- Список банков для СБП
- Создать заявку на вывод
- Список заявок на вывод
- Отмена заявки на вывод
- Подтверждение заявки на вывод
- Одобрение заявки на вывод (Авто)
Список маршрутов платежей
GET /v1/payment/routes
Возвращается список включенных платежных маршрутов
Type
interface GetPaymentRoutesResponse {
routes: PaymentRoute[];
}
Example
{
"routes": [
{
"title": "Банковская карта",
"direction": "withdraw",
"method": "card_rub",
"currency": "RUB",
"icon": "card",
"fee": "5% + 33 ₽",
"description": "",
"position": 10,
"country": "ru",
"methods": [
{
"system": "piastrix",
"method": "card_rub",
"direction": "withdraw",
"limitMin": 200,
"limitMax": 50000,
"feeType": 1,
"fixed": 50,
"percent": 3,
"feeAmountMin": 0,
"feeAmountMax": 0
}
],
"walletType": {
"id": "card_rub",
"label": "Банковская карта",
"kind": "card",
"icon": "card",
"validator": "^\\d{13,19}$",
"currency": "RUB",
"hint": "от 13 до 19 цифр, без пробелов",
"format": "#### #### #### #### ###"
}
},
{
"title": "СБП",
"direction": "deposit",
"method": "sbp_rub",
"currency": "RUB",
"icon": "sbp",
"fee": "1.5%",
"description": "",
"position": 10,
"country": "ru",
"methods": [
{
"system": "tinkoff",
"method": "sbp_rub",
"direction": "deposit",
"limitMin": 50000,
"limitMax": 300000,
"feeType": 1,
"fixed": 0,
"percent": 0.4,
"feeAmountMin": 0,
"feeAmountMax": 0
}
],
"walletType": {
"id": "sbp_rub",
"label": "СБП",
"kind": "purse",
"icon": "sbp",
"validator": "^(?!8)\\d{9,15}$",
"currency": "RUB",
"hint": "неверный номер телефона",
"format": "# ### ### ## ## ## ##"
}
},
{
"title": "Банковская карта UAH",
"direction": "withdraw",
"method": "card_uah",
"currency": "UAH",
"icon": "card",
"fee": "5% (мин. 190 ₽)",
"description": "",
"position": 15,
"country": "ua",
"methods": [
{
"system": "kassa",
"method": "card_uah",
"direction": "withdraw",
"limitMin": 1000,
"limitMax": 20000,
"feeType": 1,
"fixed": 0,
"percent": 5,
"feeAmountMin": 190,
"feeAmountMax": 0
}
],
"walletType": {
"id": "card_uah",
"label": "Банковская карта UAH",
"kind": "card",
"icon": "card",
"validator": "^\\d{16}$",
"currency": "UAH",
"hint": "16 цифр, без пробелов",
"format": "#### #### #### ####"
}
},
{
"title": "СБП",
"direction": "withdraw",
"method": "sbp_rub",
"currency": "RUB",
"icon": "sbp",
"fee": "3%",
"description": null,
"position": 20,
"country": null,
"methods": [
{
"system": "kassa",
"method": "sbp_rub",
"direction": "withdraw",
"limitMin": 100,
"limitMax": 100000,
"feeType": 2,
"fixed": 0,
"percent": 3,
"feeAmountMin": 0,
"feeAmountMax": 0
}
],
"walletType": {
"id": "sbp_rub",
"label": "СБП",
"kind": "purse",
"icon": "sbp",
"validator": "^(?!8)\\d{9,15}$",
"currency": "RUB",
"hint": "неверный номер телефона",
"format": "# ### ### ## ## ## ##"
}
},
{
"title": "Tinkoff Pay",
"direction": "deposit",
"method": "tinkoff_pay_rub",
"currency": "RUB",
"icon": "tinkoff",
"fee": "3%",
"description": null,
"position": 30,
"country": null,
"methods": [
{
"system": "kassa",
"method": "tinkoff_pay_rub",
"direction": "deposit",
"limitMin": 15,
"limitMax": 400000,
"feeType": 2,
"fixed": 200,
"percent": 2,
"feeAmountMin": 10,
"feeAmountMax": 15000
}
],
"walletType": null
},
{
"title": "Зарубежная карта",
"direction": "withdraw",
"method": "card_rub_foreign",
"currency": "RUB",
"icon": "card",
"fee": "3.5% (мин. 190₽)",
"description": null,
"position": 30,
"country": null,
"methods": [
{
"system": "kassa",
"method": "card_rub_foreign",
"direction": "withdraw",
"limitMin": 1000,
"limitMax": 75000,
"feeType": 2,
"fixed": 0,
"percent": 3.5,
"feeAmountMin": 190,
"feeAmountMax": 0
}
],
"walletType": {
"id": "card_rub_foreign",
"label": "Зарубежная карта",
"kind": "card",
"icon": "card",
"validator": "^\\d{13,19}$",
"currency": "RUB",
"hint": "от 13 до 19 цифр, без пробелов",
"format": "#### #### #### #### ###"
}
},
{
"title": "QIWI",
"direction": "deposit",
"method": "qiwi_rub",
"currency": "RUB",
"icon": "qiwi",
"fee": "6%",
"description": "",
"position": 30,
"country": "ru",
"methods": [
{
"system": "piastrix",
"method": "qiwi_rub",
"direction": "deposit",
"limitMin": 10,
"limitMax": 15000,
"feeType": 1,
"fixed": 0,
"percent": 5.6,
"feeAmountMin": 0,
"feeAmountMax": 0
}
],
"walletType": {
"id": "qiwi_rub",
"label": "QIWI",
"kind": "purse",
"icon": "qiwi",
"validator": "^(?!8)\\d{9,15}$",
"currency": "RUB",
"hint": "номер телефона в международном формате, без пробелов и знака +",
"format": "# ### ### ## ## ## ##"
}
},
{
"title": "ЮMoney",
"direction": "withdraw",
"method": "yamoney_rub",
"currency": "RUB",
"icon": "yoomoney",
"fee": "3.5%",
"description": "",
"position": 50,
"country": "ru",
"methods": [
{
"system": "kassa",
"method": "yamoney_rub",
"direction": "withdraw",
"limitMin": 100,
"limitMax": 15000,
"feeType": 1,
"fixed": 0,
"percent": 3.5,
"feeAmountMin": 0,
"feeAmountMax": 0
}
],
"walletType": {
"id": "yamoney_rub",
"label": "ЮMoney",
"kind": "purse",
"icon": "yoomoney",
"validator": "^41001\\d{7,11}$",
"currency": "RUB",
"hint": "12-16 цифр, без пробелов",
"format": "#### #### #### ####"
}
},
{
"title": "Webmoney",
"direction": "withdraw",
"method": "webmoney_rub",
"currency": "RUB",
"icon": "webmoney",
"fee": "3%",
"description": "",
"position": 60,
"country": "ru",
"methods": [
{
"system": "piastrix",
"method": "webmoney_rub",
"direction": "withdraw",
"limitMin": 100,
"limitMax": 15000,
"feeType": 1,
"fixed": 0,
"percent": 3,
"feeAmountMin": 0,
"feeAmountMax": 0
}
],
"walletType": {
"id": "webmoney_rub",
"label": "Webmoney",
"kind": "purse",
"icon": "webmoney",
"validator": "^P\\d{12}$",
"currency": "RUB",
"hint": "латинская P и 12 цифр, без пробелов",
"format": "P ### ### ### ###"
}
},
{
"title": "Webmoney",
"direction": "withdraw",
"method": "webmoney_usd",
"currency": "USD",
"icon": "webmoney",
"fee": "3.3%",
"description": "",
"position": 65,
"country": null,
"methods": [
{
"system": "kassa",
"method": "webmoney_usd",
"direction": "withdraw",
"limitMin": 1500,
"limitMax": 100000,
"feeType": 1,
"fixed": 0,
"percent": 3.3,
"feeAmountMin": 0,
"feeAmountMax": 0
}
],
"walletType": {
"id": "webmoney_usd",
"label": "Webmoney USD",
"kind": "purse",
"icon": "webmoney",
"validator": "^Z\\d{12}$",
"currency": "USD",
"hint": "латинская Z и 12 цифр, без пробелов",
"format": "Z ### ### ### ###"
}
},
{
"title": "Capitalist",
"direction": "withdraw",
"method": "capitalist_rub",
"currency": "RUB",
"icon": "capitalist",
"fee": "3%",
"description": null,
"position": 70,
"country": null,
"methods": [
{
"system": "capitalist",
"method": "capitalist_rub",
"direction": "withdraw",
"limitMin": 100,
"limitMax": 15000,
"feeType": 2,
"fixed": 0,
"percent": 3,
"feeAmountMin": 3,
"feeAmountMax": 0
}
],
"walletType": {
"id": "capitalist_rub",
"label": "Capitalist RUB",
"kind": "purse",
"icon": "capitalist",
"validator": "^R\\d{6,8}$",
"currency": "RUB",
"hint": "номер кошелька в системе Capitalist, латинская R и от 6 до 8 цифр, без пробелов",
"format": null
}
},
{
"title": "Юр. лицо",
"direction": "deposit",
"method": "bank_wire_rub",
"currency": "RUB",
"icon": "bank",
"fee": "6%",
"description": "от 300 000 ₽ комиссия 0%",
"position": 110,
"country": "ru",
"methods": [
{
"system": "bank_no_fee",
"method": "bank_wire_rub",
"direction": "deposit",
"limitMin": 300000,
"limitMax": 1000000,
"feeType": 3,
"fixed": 0,
"percent": 0,
"feeAmountMin": 0,
"feeAmountMax": 0
},
{
"system": "bank",
"method": "bank_wire_rub",
"direction": "deposit",
"limitMin": 10000,
"limitMax": 299999,
"feeType": 3,
"fixed": 0,
"percent": 6,
"feeAmountMin": 0,
"feeAmountMax": 0
}
],
"walletType": {
"id": "bank_wire_rub",
"label": "Банковский перевод",
"kind": "bank",
"icon": "bank",
"validator": null,
"currency": "RUB",
"hint": null,
"format": null
}
}
],
}
Подсчет комиссии
GET /v1/payment/{direction}/{method}/commission?amount={amount}
Получение комиссии для конкретного метода и направления. В зависимости от направления отличается логика применения комиссии. Для
withdrawпользователю придетamount - commissionAmount. Дляdepositна странице оплаты будет суммаamount + commissionAmount
Type
interface GetCommissionResponse {
/**
* Размер комиссии
*/
commissionAmount: number;
}
Создание заявки на пополнение
POST /v1/payment/deposit/{method}
`BodyType`
interface CreateDepositPaymentPayload {
/**
* Сумма пополнения
*/
amount: number;
}
`ResponseType`
interface CreateDepositPaymentResponse {
form: {
data: [] | string | Record<string, string>;
method: 'GET' | 'POST' | 'OFFLINE';
url: string;
},
}
Получить счет юр. лица
GET /payment/org-wallet
Получить текущий счет юр. лица, если счета нет, вернет 404
Type
interface GetLegalAccountResponse {
wallet: LegalAccount;
}
Создать счет юр. лица
POST /payment/org-wallet
Создать и вернуть счет юр. лица
BodyType
interface CreateLegalAccountPayload extends LegalAccount {}
ResponseType
interface CreateLegalAccountResponse {
wallet: LegalAccount;
}
Изменить счет юр. лица
PUT /payment/org-wallet
Обновить и вернуть счет юр. лица
BodyType
interface UpdateLegalAccountPayload extends LegalAccount {}
ResponseType
interface UpdateLegalAccountResponse {
wallet: LegalAccount;
}
Создать заявку на пополнение через юр. лицо
POST /payment/invoices-org
BodyType
interface CreateLegalInvoicePayload extends LegalAccount {
/**
* Сумма заявки (при пополнении будет вычтена комиссия)
*/
amount: number | string;
}
ResponseType
interface CreateLegalInvoiceResponse {
invoice: LegalAccountInvoice
}
Список заявок на пополнение юр. лица текущего пользователя
GET /payment/invoices-org/all
Type
interface GetSelfLegalInvoicesResponse {
list: LegalAccountInvoice[];
meta: CommonPagination;
}
Список заявок на пополнение юр. лица (админский, всех пользователей)
GET /payment/invoices-org
Type
interface AdminLegalAccountInvoice extends LegalAccountInvoice {
user: BaseUser;
}
interface GetLegalInvoicesResponse {
list: AdminLegalAccountInvoice[];
meta: CommonPagination;
}
Создать заявку на подключение автовывода
POST /v1/user/me/withdraw
Список заявок на подключение автовывода
GET /v1/admin/user/withdrawals
QueryParams
interface GetAutoWithdrawRequestParams extends CommonPaginationParams {
/**
* Логин пользователя для фильтрации
*/
login?: string;
/**
* Статус заявки, если не указан, вернет все статусы
*/
status?: AutoWithdrawalRequestStatus;
}
ResponseType
interface GetAutoWithdrawRequestResponse {
meta: CommonPagination;
requests: AutoWithdrawRequest[];
}
Одобрение заявки на подключение автовывода
PATCH /v1/admin/user/{userId}/withdraw
При одобрении с пользователя списываются средства
Отклонить заявку на подключение автовывода
PATCH /v1/admin/user/{userId}/withdraw/reject
При отклонении пользователь не может повторно подать заявку
Удалить заявку на подключение автовывода
DELETE /v1/admin/user/{userId}/withdraw
При удалении одобренной заявки у юзера удаляется услуга автовывода и он заново может подать запрос. Деньги не возвращаются. При удалении отклоненного юзер может снова подать заявку.
Список своих кошельков
GET /v1/user/me/wallets
Type
interface GetSelfWalletsResponse {
wallets: Wallet[];
}
Удалить кошелек
DELETE /v1/user/me/wallet/{id}
Type
interface DeleteWalletResponse {
wallet: Wallet;
}
Создать кошелек
POST /v1/user/me/wallet
При вызове этого апи вернется 449 ошибка для подтверждения, после подтверждения будет возвращен обьект отсюда
BodyType
interface CreateWalletPayload {
/**
* Основное поле описываемое в `walletType.hint`
*/
account: string;
/**
* Поле method из большинства апи
*/
type: string;
/**
* Дополнительное обязательное поле для `walletType.kind === 'card'`, содержит имя владельца карты (латиница до 255 символов)
*/
param_name?: string;
}
ResponseType
interface CreateWalletPayloadResponse {
wallet: Wallet;
}
Список банков для СБП
GET /v1/payment/withdraw/sbp
QueryParams
interface GetSBPBanksParams {
/**
* Судя по ответам нет разницы что передавать, просто любой существующий метод
*/
method: string;
/**
* Сумма платежа
*/
amount: number;
}
ResponseType
interface GetSBPBanksResponse {
members: SBPBank[];
}
Создать заявку на вывод
POST /v1/payment/withdraw/{method}
BodyType
interface CreateWithdrawInvoicePayload {
/**
* Сумма вывода, будет списана с баланса, на кошелек поступит `amount - commissionAmount`
*/
amount: number;
/**
* Идентификатор кошелька
*/
walletId: number;
/**
* Идентификатор банка для `sbp_rub`(обязательно), для остальных методов не нужен
*/
memberId?: string;
}
ResponseType
interface CreateWithdrawInvoiceResponse {
invoice: WithdrawInvoice;
}
Список заявок на вывод
GET /admin/transfers
QueryParams
interface GetWithdrawInvoicesParams extends CommonPaginationParams {
/**
* Логин пользователя (точное совпадение)
*/
user?: string;
/**
* Method
*/
payway?: string;
/**
* Точное значение account без пробелов (номер карты, номер телефон etc)
*/
account?: string;
}
ResponseType
interface SummaryItem {
/**
* Сумма заявок по этому method
*/
amount: number;
/**
* Method
*/
type: string;
name: string;
}
interface MethodItem {
/**
* Название файла отсюда `https://c5mdnuiqw2.a.trbcdn.net/img/payment-methods/{icon}.svg`
*
* @example `'card'`
*/
icon: string;
/**
* Method
*/
id: string;
kind: string;
title: string;
}
interface GetWithdrawInvoicesResponse {
meta: CommonPagination;
/**
* Общая сумма заявок но вывод по выбранным фильтрам
*/
total: number;
summary: SummaryItem[];
methods: MethodItem[];
requests: WithdrawInvoice[];
}
Отмена заявки на вывод
PUT /admin/transfer/{requestId}/reject
Пользователю возвращаются средства на кошелек. Опционально можно указать причину (будет прислана в лс от юзера админа)
BodyType
interface RejectWithdrawInvoicePayload {
/**
* Причина отмены (отправляется в лс от текущего админа)
*/
note?: string;
}
ResponseType
interface RejectWithdrawInvoiceResponse {
invoice: WithdrawInvoice;
}
Подтверждение заявки на вывод
PUT /admin/transfer/{requestId}/confirm
Операция считается выполненной. Опционально можно указать причину (будет прислана в лс от юзера админа)
BodyType
interface ConfirmWithdrawInvoicePayload {
/**
* Причина ручного подтверждения (отправляется в лс от текущего админа)
*/
note?: string;
}
ResponseType
interface ConfirmWithdrawInvoiceResponse {
invoice: WithdrawInvoice;
}
Одобрение заявки на вывод (Авто)
PUT /admin/transfer/{requestId}/confirm-auto
Одобрение заявки, далее она идет в платежку
Type
// Не удалось в тестовом режиме получить ответ, вероятно он идентичен двум другим методам
interface ConfirmAutoWithdrawInvoiceResponse {
invoice: WithdrawInvoice;
}
Сущности
- Статус заявки на пополнение
- Счет юр. лица
- Заявка на пополнение юр. лица
- Направление платежа
- Платежный маршрут
- Платежный метод
- Статус заявки на подключение автовывода
- Заявка на подключение автовывода
- Кошелек
- Заявка на вывод
- Банк СБП
Статус заявки на пополнение
`InvoiceStatus`
enum InvoiceStatus {
/**
* Заявка находится на одобрении админа
*/
NEW = 'new',
/**
* Заявка исполнена
*/
SUCCESS = 'success',
/**
* Одобрена и ждет исполнения пользователем
*/
INPROGRESS = 'inprogress',
ERROR = 'error',
/**
* Отклонена админом
*/
CANCEL = 'cancel',
}
Счет юр. лица
`LegalAccount`
interface LegalAccount {
/**
* Рассчетный счет
*
* Валидация обязательно, 20 символов, целые цисла
*/
bankAccount: string;
/**
* БИК
*
* Валидация обязательно, 9 символов, целые цисла
*/
bankId: string;
/**
* Название банка
*
* Валидация обязательно, максимум 255 символов
*
* @example `"AO «Тинькофф банк»"`
*/
bankName: string;
/**
* Дополнительные контакты организации
*
* Валидация максимум 255 символов
*
* @example `номер телефона, адрес почты`
*/
contactInfo?: string;
/**
* Корреспондентский счeт
*
* Валидация обязательно, 20 символов, целые цисла
*/
corrAccount: string;
/**
* ФИО ответственного лица
*
* Валидация обязательно, максимум 255 символов
*
* @example `"Иванов Иван Иванович"`
*/
directorName: string;
/**
* Юридический адрес
*
* Валидация обязательно, максимум 256 символов
*
* @example `"119021, Москва, ул. Ленина 16, офис 1"`
*/
legalAddress: string;
/**
* Название организации
*
* Валидация обязательно, максимум 128 символов
*
* @example `"OOO «Студенческие работы»"`
*/
name: string;
/**
* Почтовый адрес
*
* Валидация обязательно, максимум 256 символов
*
* @example `"119021, Москва, ул. Ленина 16, офис 1"`
*/
postAddress: string;
/**
* КПП
*
* Валидация обязательно, 9 символов, целые цисла
*/
reasonId: string;
/**
* ОГРН или ОГРНИП
*
* Валидация обязательно, 13-15 символов, целые цисла
*/
regId: string;
/**
* ИНН
*
* Валидация обязательно, 10-12 символов, целые цисла
*/
taxId: string;
}
Используется
GET /payment/org-walletПолучение текущего счета, полеwallet(404 если его нет)PUT /payment/org-walletИзменение текущего счета, возвращает в полеwalletPOST /payment/org-walletСоздание счета если его нет, возвращает в полеwallet
Заявка на пополнение юр. лица
`LegalAccountInvoice`
interface LegalAccountInvoice extends LegalAccount {
/**
* Id заявки
*/
id: number;
status: InvoiceStatus;
/**
* Сумма выставленного счета
*/
amount: number;
/**
* Сумма к зачислению на аккаунт
*/
receiveAmount: number;
/**
* Дата создания заявки
*
* timestamp в секундах
*
* @example `1760091144` - Fri Oct 10 2025 13:12:24 GMT+0300
*/
createdAt: number;
}
Используется
POST /payment/invoices-orgСоздание заявки на пополнение (тело это поляLegalAccount), возвращает полеinvoice(нигде не используется)GET /payment/invoices-org/allСписок заявок на пополнение (возвращает{ list: LegalAccountInvoice[], meta: CommonPagination })GET /payment/invoices-orgСписок всех заявок на пополнение (админский) (ответ идентиченGET /payment/invoices-org/allно к заявкам добавляется полеuser)
Направление платежа
`PaymentDirection`
enum PaymentDirection {
/**
* Вывод средств
*/
WITHDRAW = 'withdraw',
/**
* Пополнение кошелька
*/
DEPOSIT = 'deposit',
}
Платежный маршрут
`PaymentRoute`
interface PaymentRoute {
/**
* В сочетании с `direction` является уникальным идентификатором роута
*/
method: string;
direction: PaymentDirection;
/**
* Название роута
*/
title: string;
/**
* Страна
*
* @example `'ua'`, `'ru'`
* @deprecated Ранее использовалось для группировки пополнений по стране
*/
country: string | null;
/**
* Валюта маршрута (в какой валюте будет списание при пополнении и соответственно в какой валюте будет пополнение при выводе)
*/
currency: string;
description: string;
/**
* Название файла картинки `https://c5mdnuiqw2.a.trbcdn.net/img/payment-methods/{icon}.svg`
*/
icon: string;
/**
* Строка текстово описывающая комиссию, в рассчет не применяется
*/
fee: string;
/**
* Поле отвечающее за сортировку роутов, чем меньше число, тем ближе к началу. Сортировка происходит бекендом
*/
position: number;
/**
* Дополнительная полустатичная информация о маршруте (связь с route по `method`)
*/
walletType: typeof import('@kb/data/wallet-types')[number];
/**
* Список доступных платежных методов
*/
methods: PaymentMethod[];
}
Платежный метод
`PaymentMethod`
interface PaymentMethod {
system: string;
method: string;
direction: PaymentDirection;
/**
* Принцип начисления комиссий [подробнее](https://github.com/educorg/studwork-knowledge-base/blob/master/shared/data/payment-fee-types.yml)
*/
feeType: typeof import('@kb/data/payment-fee-types')[number].value;
/**
* Фиксированный размер комисси в ₽
*/
fixed: number;
/**
* Процентный размер комисси
*
* @example `3`
*/
percent: number;
/**
* Максимальный размер комиссии в ₽
* Если указан 0, то лимита нет
*/
feeAmountMax: number;
/**
* Минимальный размер комиссии в ₽
* Если указан 0, то лимита нет
*/
feeAmountMin: number;
/**
* Максимальная сумма пополнения/вывода(комиссии не учитываются) в ₽
*/
limitMax: number;
/**
* Минимальная сумма пополнения/вывода(комиссии не учитываются) в ₽
*/
limitMin: number;
}
Статус заявки на подключение автовывода
AutoWithdrawalRequestStatus
enum AutoWithdrawalRequestStatus {
APPROVED = 1,
MODERATED = 2,
REJECTED = 3,
}
Заявка на подключение автовывода
AutoWithdrawalRequest
interface AutoWithdrawRequest {
/**
* Количество открытых претензий
*/
activeArbitrageCount: number;
/**
* Количество претензий
*/
arbitrageCount: number;
/**
* Дата аппрува запроса (null если не аппрувнута) (ISO-8601)
*/
approvedAt: null | string;
/**
* Текущий баланс пользователя доступный к выводу
*/
balance: number;
/**
* Рейтинг исполнителя
*/
executorRating: number;
/**
* Дата регистрации (ISO-8601)
*/
signedUpAt: string;
/**
* Статус запроса
*/
status: AutoWithdrawalRequestStatus;
}
Кошелек
Wallet
interface WalletCardParams {
name: string;
bank?: string;
country_code?: string;
brand?: string;
}
interface Wallet {
id: number;
/**
* Дата создания (ISO-8601)
*/
createdAt: string;
/**
* Основной параметр метода к которому привязан кошелек
* Для sbp это телефон, для карт номер карты
*/
account: string;
/**
* method из платежного маршрута
*/
type: string;
/**
* Дополнительные параметры кошелька
*/
params: null | WalletCardParams;
}
Заявка на вывод
WithdrawInvoice
interface IdenticalItem {
account: string;
/**
* Method
*/
type: string;
user: BaseUser;
}
interface WithdrawInvoice {
id: number;
/**
* Банк если это `'sbp_rub'` и `null` в остальных случаях
*/
bank: SBPBank | null;
user: BaseUser;
/**
* Связанный админ (вероятно сделавший последнее изменение)
*/
admin: BaseUser | null;
/**
* Текст ошибки
*/
error: string | null;
errorOnWithdraw: string | null;
/**
* Сумма выплаты
*/
sum: number;
/**
* Заметка админа
*/
note: string | null;
/**
* Совпадения платежных данных
*/
identical: IdenticalItem[];
/**
* System
*/
paysys: string;
/**
* Method
*/
payway: string;
status: 'error' | 'new' | 'cancel' | 'success';
/**
* Id транзакции со стороны платежной системы
*/
transactionId: number | null;
/**
* Timestamp / 1000
*
* @example `1737442712`
*/
updatedAt: number;
/**
* Timestamp / 1000
*
* @example `1737442712`
*/
createdAt: number;
}
Банк СБП
SBPBank
interface SBPBank {
/**
* Код банка в системе сбп
*/
id: string;
name: string;
/**
* Относительный путь к иконке на статичном бакете (студворк https://c5mdnuiqw2.a.trbcdn.net)
*
* @example `'/img/banks/vkpay.svg'`
*/
iconPath: string;
}