Сервис-счетов.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
-
к/с
30101810145250000411
1-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_culc_number | acc_corr_number | acc_bic | acc_cio | acc_money_value | acc_money_amount |
---|---|---|---|---|---|---|---|
char(16) | numeric(3) | char(20) | char(20) | char(9) | char(9) | numeric(3) | numeric(34,4) |
ИНН должен храниться в данных у пользователя.
Описание полей:
acc_uuid
- uuid счётаacc_status
- статус счёта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": {
"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": {
"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)
Выполняемые операции сервисом
- резервирование счёта
- создание счёта
- открытие счёта
- закрытие счёта
- блокировка счёта
- получение данных счёта
- пополнение счёта
- снятия со счёта
Резервирование счёта
- Название запроса:
reserv_acc
- Описание
- Изменяет статус записи счета на
RESERVED
, попутно проверяя переданные данные. В случае удачной проверки добавляет запись в таблицу причин резервации.
- Изменяет статус записи счета на
- Интерфейс входных данных:
формат с данными счёта
.
- Ответ на данный запрос:
удача выполнения простой операции
, где в поле info будет uuid зарезервированного счётаошибка
.
- Возможные статусы в ошибочном результате:
1030
1022
100 - 251
020
Создание счёта
- Название запроса:
create_acc
- Описание
- Изменяет статус записи счета на
CREATED
.
- Изменяет статус записи счета на
- Интерфейс входных данных:
формат с дополнительными данными и uuid счёта
.
- Ответ на данный запрос:
удача выполнения простой операции
ошибка
.
- Возможные статусы в ошибочном результате:
1021
100
021
011 - 014
Открытие счёта
- Название запроса:
open_acc
- Описание
- Изменяет статус записи счета на
OPEN
.
- Изменяет статус записи счета на
- Интерфейс входных данных:
формат с дополнительными данными и uuid счёта
.
- Ответ на данный запрос:
удача выполнения простой операции
ошибка
.
- Возможные статусы в ошибочном результате:
1030
1021
100
021
010
012 - 014
Закрытие счёта
- Название запроса:
close_acc
- Описание
- Изменяет статус записи счета на
CLOSE
.
- Изменяет статус записи счета на
- Интерфейс входных данных:
формат с дополнительными данными и uuid счёта
.
- Ответ на данный запрос:
удача выполнения простой операции
ошибка
.
- Возможные статусы в ошибочном результате:
1030
1021
100
021
010
011
013
014
Заблокировать счёт
- Название запроса:
block_acc
- Описание
- Изменяет статус записи счета на
BLOCKED
.
- Изменяет статус записи счета на
- Интерфейс входных данных:
формат с дополнительными данными и uuid счёта
.
- Ответ на данный запрос:
удача выполнения простой операции
ошибка
.
- Возможные статусы в ошибочном результате:
1030
1021
100
021
010
011
013
014
Получение данных счёта
- Название запроса:
get_acc_data
- Описание
- Получение данных счёта, в том числе и системных.
- Интерфейс входных данных:
формат с дополнительными данными и uuid счёта
.
- Ответ на данный запрос:
удача получения данных о счёте
ошибка
.
- Возможные статусы в ошибочном результате:
1030
100
021
Пополнение счёта
- Название запроса:
adding_acc
- Описание
- Увеличивает денежную сумму на счету.
- Интерфейс входных данных:
формат с дополнительными данными и uuid счёта
.
- Ответ на данный запрос:
удача выполнения простой операции
ошибка
.
- Возможные статусы в ошибочном результате:
1030
1020
100
021
010
011
013
014
Снятие со счёта
- Название запроса:
width_acc
- Описание
- Уменьшает денежную сумму на счету.
- Интерфейс входных данных:
формат с дополнительными данными и uuid счёта
.
- Ответ на данный запрос:
удача выполнения простой операции
ошибка
.
- Возможные статусы в ошибочном результате:
1030
1020
100
021
010
011
013
014
001