Services/Service-Accounts.md
Назначение
Хранит в себе реквизиты счетов.
Информация по поводу реквизитов счетов
Обязательные
- номер расчётного счёта
- номер корреспондентского счёта
- банковский идентификационный код (БИК)
Необязательные
- идентификационный номер налогоплательщика (ИНН)
- код причины постановки на учёт (КПП)
Обязательные
Расчётный счёт
Это 20 цифр.
Пример: 408 17 810 8 1634 ХХХХХХХ
1-3 цифры
Показывает, кому принадлежит счет:
102-109- счета фондов и хранения капитала203и204- счета драгметаллов301-329- счета проведения операций между банками401и402- счета для переводов в бюджет403- управление деньгами в ведении Минфина404- внебюджетные фонды405и406- государственные и бюджетные организации407- коммерческие организации (ЮР компании)408- физические лица, индивидуальные предприниматели411-419- вклады, открытые государственными структурами420-422- хранение средств юридических лиц423- вклады срочные и до востребования424- средства иностранных компаний425- средства на вкладе принадлежат физическому лицу-нерезиденту430- средства банков501-526- счета, необходимые для учета ценных бумаг.
4-5 цифры
В зависимости от первых трёх цифр их назначение меняется:
- Содержат сведения о владельце (408):
- 408
17— текущий счет физического лица - 408
02— счет индивидуального предпринимателя - 408
03— счет индивидуального предпринимателя-нерезидента
- 408
- Обозначают цель и вид деятельности юридического лица (407):
- 407
01— финансовые организации (банки, страховые компании и т. д.) - 407
02— коммерческие организации (любые предприятия, работающие для получения прибыли) - 407
03— некоммерческие организации (фонды, религиозные, общественные организации) и пр.
- 407
- Служат для обозначения срока, на который открыт счет (423):
- 423
04— депозиты на срок от 91 до 180 дней - 423
05— депозиты на срок от 181 дня до 1 года - 423
06— депозиты на срок от 1 года до 3 лет
- 423
Комбинации первых пяти цифр смотреть тут.
А вот тут уже версия 2024 года.
6-8 цифры
Указывает на код валюты:
810- рубли840- доллары978- евро
9 цифра
Является произвольным числом
10-13 цифры
Указывает на уникальный номер филиала банка
14-20 цифры
Порядковый номер счёт, присваемый по мере открытия
Корреспондентский счёт
Корреспондентский счет всегда начинается с 30101, а три последние цифры в нем совпадают с последними цифрами БИК.
Пример:
- БИК
044525411 -
к/с
301018101452500004111-3 цифры
301- корреспондентский счёт4-5 цифры
Кто открыл счёт:
01- кредитная организация04- небанковская расчётная кредитная организация, которая занимается депозитными и кредитными операциями09- лоро счёт10- ностро счёт-
25- НКО6-8 цифры
9 цифра
Генерируется на основе остальных цифр счёта и БИК
10-13 цифры
Номер подразделения - фактически - это склеенные 3-6 цифры БИК.
14-20 цифры
Порядковый номер счёта. Причем последние цифры (3 цифры) совпадают с последними цифрами БИК банка.
БИК
БИК — это уникальный банковский номер, принадлежащий конкретному отделению кредитной организации (9 цифр). Центральный Банк РФ присваивает БИК для обозначения вида участия организации в платежной системе, а также ведет учет всех номеров в специальном справочнике.
1 цифра
Участник платёжной системы:
0- обозначает прямого участника — организацию, которая открыла счет в ЦБ. Это, например, любой российский коммерческий банк.1- косвенного участника. Это финансовые кредитные организации, которые открыли счет не в Центробанке, а у прямого участника платежной системы (ОАО). Например, ОАО «Коммерческий банк КЫРГЫЗСТАН»-
2- клиент ЦБ, который не является участником платежной системы Банка России (АО). Это, например, оператор платежной системы «МИР».2 цифра
Код страны. Для РФ это
4.3-4 цифры
Код региона.
5-6 цифры
Номер структурного подразделения Банка России. За нижегородские банки, например, отвечает подразделение
02, а за московские —25.7-9 цифры
Условный номер банка в структуре ЦБ:
- коммерческим банкам выдают значения от
050до999 000,001,002- получают подразделения Банка России.
Необязательные
ИНН
Важно отметить, что ИНН для организации состоит из 10 цифр, а для физического лица - из 12 цифр.
1-2 цифры
Номер региона РФ.
3-4 цифры
Номер налогового органа, который присвоил ИНН
5-9 (5-10 для ФЛ)
Порядковый номер записи о лице в территориальном разделе Единого государственного реестра налогоплательщиков налогового органа, который присвоил ИНН.
10 (11-12 для ФЛ)
Контрольное число
Код причины постановки на учет (КПП)
Филиалам, отделениям и другим структурным подразделениям присваивается КПП — код причины постановки на учет. Например, самая распространенная причина — «по месту нахождения». КПП всегда указывается в паре с ИНН, а сам номер состоит из 9 цифр.
1-2 цифры
Код субъекта РФ.
3-4 цифры
Код налоговой инспекции, поставившей на учет.
5-6 цифры
Отражают причину постановки на учет (по месту нахождения, по месту расположения структурного подразделения, по месту регистрации имущества и т. д.).
01-50- для российских организаций-
51-99- для иностранных организаций7-9 цифры
Показывают, какое количество раз юридическое лицо вставало на учет.
Пример Рассмотрим пример одного из филиалов ВТБ. Его КПП —770943003, где: 77— регистрация в г. Москве,09— номер налоговой инспекции по месту регистрации, Центральный АО,43— постановка на учет по месту нахождения филиала,003— по данной причине юридическое лицо встало на учет в 3-й раз.
Реализация
БД
Таблица счетов (accounts)
| acc_uuid | acc_status | acc_name | acc_culc_number | acc_corr_number | acc_bic | acc_cio | acc_money_value | acc_money_amount |
|---|---|---|---|---|---|---|---|---|
| char(16) | numeric(3) | char(64) | char(20) | char(20) | char(9) | char(9) | numeric(3) | numeric(34,4) |
ИНН должен храниться в данных у пользователя.
Описание полей:
acc_uuid- uuid счётаacc_status- статус счётаacc_name- название счётаacc_culc_number- расчётный номерacc_corr_number- корреспондентский номерacc_bic- БИКacc_cio- КППacc_money_value- денежная величинаacc_money_amount- сколько денег на счету
acc_money_value
acc_money_value может иметь следующие значения:
0- неизвестная величина1- доллар2- рубль3- евро
и устанавливается в соответствии со значением поля currency в данных к/с.
Статусы счетов:
- UNKNOWN (
0) - RESERVED (
10) - CREATED (
20) - OPEN (
30) - CLOSE (
40) - BLOCKED (
50) - ERROR (
255)
Таблица причин резервирования счёта (accounts_reserved)
| acc_uuid | reserve_reason |
|---|---|
| char(16) | varchar(512) |
reserve_reason - содержит причину резервации счёта в виде текстовой строки.
ЗАПИСИ В ЭТОЙ ТАБЛИЦЕ ПРИ ИЗМЕНЕНИИ СТАТУСА СЧЁТА НЕ УДАЛЯЮТСЯ!
Структуры данных, которые использует сервис при работе с kafka
Запрос
Имеет два формата:
- формат с данными счёта:
{
"saga_uuid": "...",
"operation_name": "...",
"account_data": {
"acc_name": "...",
"culc_number": "...",
"corr_number": "...",
"bic": "...",
"cio": "...",
"reserve_reason": "..."
}
}
- формат с дополнительными данными и uuid счёта
{
"saga_uuid": "...",
"operation_name": "...",
"additional_info": {
"acc_uuid": "...",
"additional_data": ... # число с плавающей запятой
}
}
Ответ
Бывает следующих видов:
- ошибка, где в поле
infoлежит описание ошибки и её код (подробнее см. ниже) в полеstatus
{
"saga_uuid": "...",
"event_uuid": "...",
"operation_name": "...",
"status": 0,
"info": "..."
}
- удача выполнения простой операции
{
"saga_uuid": "...",
"event_uuid": "...",
"operation_name": "...",
"info": "..."
}
- удача получения данных о счёте, где в поле
acc_dataлежат данные счёта
{
"saga_uuid": "...",
"event_uuid": "...",
"operation_name": "...",
"acc_data": {
"acc_details": {
"acc_name": "...",
"culc_number": "...",
"corr_number": "...",
"bic": "...",
"cio": "...",
"reserve_reason": "..."
},
"acc_status": 0, # целое число
"acc_money_value": 0, # целое число
"acc_money_amount": 0 # число с плавающей запятой
}
}
Ошибки, которые может вернуть сервис в результате запроса к нему (представляют из себя uint32)
- Внутренние критические ошибки
1030- ErrorInvalidInputData1022- ErrorCreateAccountRepository ()1021- ErrorUpdateAccountStatusRepository ()1020- ErrorUpdateAccountAmountRepository ()1010- ErrorOverflowAmount ()1000- ReserveReasonIsExisting (Reserve reason for this account uuid is existing yet)
- Ошибки данных
251- ErrorWrongAccCorrOwner250- ErrorWrongAccCorrOwnerLen240- ErrorWrongAccCorrBankNumber230- ErrorWrongAccCorrFirstGroupNumber221- ErrorWrongAccBankNumber220- ErrorWrongAccBankNumberLen211- ErrorWrongAccMainOffice210- ErrorWrongAccMainOfficeLen201- ErrorWrongAccCountryRegion200- ErrorWrongAccCountryRegionLen191- ErrorWrongAccCountry190- ErrorWrongAccCountryLen181- ErrorWrongPaymentSystem180- ErrorWrongPaymentSystemLen171- ErrorWrongCurrencyValue170- ErrorWrongCurrencyLen161- ErrorWrongActivity160- ErrorWrongActivityLen151- ErrorWrongOwner150- ErrorWrongOwnerLen141- ErrorWrongAccKPP140- ErrorWrongAccKPPLen131- ErrorWrongAccCorrNumber130- ErrorWrongAccCorrNumberLen120- ErrorWrongBICLen110- ErrorWrongCulcNumberLen100- ErrorUnknownOperationName (Unknown operation name:bad_operation_name)
- Ошибки выполнения операции (отказ в выполнении операции)
021- AccountNotFound (Account with such uuid is not existing)020- AccountIsExisting (Account with such uuid is existing yet)014- ErrorBlockAccountStatus (For this operation account has wrong status:blocked)013- ErrorCloseAccountStatus (Same as ^)012- ErrorOpenAccountStatus (Same as ^)011- ErrorCreateAccountStatus (Same as ^)010- ErrorReserveAccountStatus (Same as ^)001- NotEnoughMoney (Not enough money)
Выполняемые операции сервисом
- резервирование счёта
- создание счёта
- открытие счёта
- закрытие счёта
- блокировка счёта
- получение данных счёта
- пополнение счёта
- снятия со счёта
- удаление счёта
Резервирование счёта
- Название запроса:
reserve_acc
- Описание
- Изменяет статус записи счета на
RESERVED, попутно проверяя переданные данные. В случае удачной проверки добавляет запись в таблицу причин резервации.
- Изменяет статус записи счета на
- Интерфейс входных данных:
формат с данными счёта.
- Ответ на данный запрос:
удача выполнения простой операции, где в поле info будет uuid зарезервированного счётаошибка.
- Возможные статусы в ошибочном результате:
10301022100 - 251020
Создание счёта
- Название запроса:
create_acc
- Описание
- Изменяет статус записи счета на
CREATED.
- Изменяет статус записи счета на
- Интерфейс входных данных:
формат с дополнительными данными и uuid счёта.
- Ответ на данный запрос:
удача выполнения простой операцииошибка.
- Возможные статусы в ошибочном результате:
1021100021011 - 014
Открытие счёта
- Название запроса:
open_acc
- Описание
- Изменяет статус записи счета на
OPEN.
- Изменяет статус записи счета на
- Интерфейс входных данных:
формат с дополнительными данными и uuid счёта.
- Ответ на данный запрос:
удача выполнения простой операцииошибка.
- Возможные статусы в ошибочном результате:
10301021100021010012 - 014
Закрытие счёта
- Название запроса:
close_acc
- Описание
- Изменяет статус записи счета на
CLOSE.
- Изменяет статус записи счета на
- Интерфейс входных данных:
формат с дополнительными данными и uuid счёта.
- Ответ на данный запрос:
удача выполнения простой операцииошибка.
- Возможные статусы в ошибочном результате:
10301021100021010011013014
Заблокировать счёт
- Название запроса:
block_acc
- Описание
- Изменяет статус записи счета на
BLOCKED.
- Изменяет статус записи счета на
- Интерфейс входных данных:
формат с дополнительными данными и uuid счёта.
- Ответ на данный запрос:
удача выполнения простой операцииошибка.
- Возможные статусы в ошибочном результате:
10301021100021010011013014
Получение данных счёта
- Название запроса:
get_acc_data
- Описание
- Получение данных счёта, в том числе и системных.
- Интерфейс входных данных:
формат с дополнительными данными и uuid счёта.
- Ответ на данный запрос:
удача получения данных о счётеошибка.
- Возможные статусы в ошибочном результате:
1030100021
Пополнение счёта
- Название запроса:
adding_acc
- Описание
- Увеличивает денежную сумму на счету.
- Интерфейс входных данных:
формат с дополнительными данными и uuid счёта.
- Ответ на данный запрос:
удача выполнения простой операцииошибка.
- Возможные статусы в ошибочном результате:
10301020100021010011013014
Снятие со счёта
- Название запроса:
width_acc
- Описание
- Уменьшает денежную сумму на счету.
- Интерфейс входных данных:
формат с дополнительными данными и uuid счёта.
- Ответ на данный запрос:
удача выполнения простой операцииошибка.
- Возможные статусы в ошибочном результате:
10301020100021010011013014001
удаление счёта
- Название запроса:
remove_acc
- Описание
- Удаляет счёт
- Интерфейс входных данных:
формат с дополнительными данными и uuid счёта.
- Ответ на данный запрос:
удача выполнения простой операцииошибка.
- Возможные статусы в ошибочном результате:
не определено
- Страницы
- README
- Service-Accounts
- Service-ApiGateway
- Service-Notification
- Service-Registration
- Service-TOTP
- Service-Users