Сервис счетов - GCFactory/dbo-system GitHub Wiki

Назначение

Хранит в себе реквизиты счетов.

Банковские реквизиты

Обязательные

  • номер расчётного счёта
  • номер корреспондентского счёта
  • банковский идентификационный код (БИК)

Необязательные

  • идентификационный номер налогоплательщика (ИНН)
  • код причины постановки на учёт (КПП)

Расчётный счёт

Это 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 — счет индивидуального предпринимателя-нерезидента
  • Обозначают цель и вид деятельности юридического лица (407):
    • 407 01 — финансовые организации (банки, страховые компании и т. д.)
    • 407 02 — коммерческие организации (любые предприятия, работающие для получения прибыли)
    • 407 03 — некоммерческие организации (фонды, религиозные, общественные организации) и пр.
  • Служат для обозначения срока, на который открыт счет (423):
    • 423 04 — депозиты на срок от 91 до 180 дней
    • 423 05 — депозиты на срок от 181 дня до 1 года
    • 423 06 — депозиты на срок от 1 года до 3 лет

Комбинации первых пяти цифр смотреть тут. А вот тут уже версия 2024 года.

6-8 цифры

Указывает на код валюты:

  • 810 - рубли
  • 840 - доллары
  • 978 - евро

9 цифра

Является произвольным числом

10-13 цифры

Указывает на уникальный номер филиала банка

14-20 цифры

Порядковый номер счёт, присваемый по мере открытия

Корреспондентский счёт

Корреспондентский счет всегда начинается с 30101, а три последние цифры в нем совпадают с последними цифрами БИК. Пример:

  • БИК 044525411
  • к/с 30101810145250000411

1-3 цифры

301 - корреспондентский счёт

4-5 цифры

Кто открыл счёт:

  • 01 - кредитная организация
  • 04 - небанковская расчётная кредитная организация, которая не занимается депозитными и кредитными операциями
  • 25 - небанковская расчётная кредитная организация, которая занимается депозитными и кредитными операциями

6-8 цифры

Валюта

9 цифра

Генерируется на основе остальных цифр счёта и БИК

10-13 цифры

Номер подразделения.

14-20 цифры

Порядковый номер счёта. Причем последние цифры (3 цифры) совпадают с последними цифрами БИК банка.

БИК

БИК — это уникальный банковский номер, принадлежащий конкретному отделению кредитной организации (9 цифр). Центральный Банк РФ присваивает БИК для обозначения вида участия организации в платежной системе, а также ведет учет всех номеров в специальном справочнике.

1 цифра

Участник платёжной системы:

  • 0 - обозначает прямого участника — организацию, которая открыла счет в ЦБ. Это, например, любой российский коммерческий банк.
  • 1 - косвенного участника. Это финансовые кредитные организации, которые открыли счет не в Центробанке, а у прямого участника платежной системы (ОАО). Например, ОАО «Коммерческий банк КЫРГЫЗСТАН»
  • 2 - клиент ЦБ, который не является участником платежной системы Банка России (АО). Это, например, оператор платежной системы «МИР».

2 цифра

Код страны. Для РФ это 4.

3-4 цифры

Код региона.

5-6 цифры

Номер структурного подразделения Банка России. За нижегородские банки, например, отвечает подразделение 02, а за московские — 25.

7-9 цифры

Условный номер банка в структуре ЦБ:

  • коммерческим банкам выдают значения от 050 до 999
  • 000, 001, 002 - получают подразделения Банка России.

ИНН

Не является генерируемыми данными сервиса. Важно лишь отметить, что ИНН физического лица состоит из 12 цифр, а ИП, который также использует ИНН физического лица - состоит из 12 цифр.

Код причины постановки на учет (КПП)

Филиалам, отделениям и другим структурным подразделениям присваивается КПП — код причины постановки на учет. Например, самая распространенная причина — «по месту нахождения». КПП всегда указывается в паре с ИНН, а сам номер состоит из 9 цифр.

1-2 цифры

Код субъекта РФ.

3-4 цифры

Код налоговой инспекции, поставившей на учет.

5-6 цифры

Отражают причину постановки на учет (по месту нахождения, по месту расположения структурного подразделения, по месту регистрации имущества и т. д.).

7-9 цифры

Показывают, какое количество раз юридическое лицо вставало на учет.

Пример

Рассмотрим пример одного из филиалов ВТБ. Его КПП — 770943003, где:

  • 77 — регистрация в г. Москве,
  • 09 — номер налоговой инспекции по месту регистрации, Центральный АО,
  • 43 — постановка на учет по месту нахождения филиала,
  • 003 — по данной причине юридическое лицо встало на учет в 3-й раз.

БД

Таблица счетов

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)

Таблица причин резервирования счёта

acc_uuid reserve_reason
char(16) char(512)

reserve_reason - содержит причину резервации счёта в виде текстовой строки Записи в этой таблице исчезают, когда статус счёта меняется с RESERVED на любой другой.

Выполняемые операции сервисом

  • резервирование счёта
  • создание счёта
  • открытие счёта
  • закрытие счёта
  • блокировка счёта
  • получение данных счёта
  • пополнение счёта
  • снятия со счёта

Резервирование счёта

Название запроса: reserv_acc Описание: Изменяет статус записи счета на RESERVED, попутно проверяя переданные данные. В случае удачной проверки добавляет запись в таблицу причин резервации. Интерфейс входных данных:

{
    "acc_culc_number_data": {          # данные для первой части расчётного номера
        "owner": "408",                # принадлежность счёта
        "additional_account": "03",    # 4 и 5 цифра
        "currency": "810",             # валюта
        "branch_number": "1234"        # номер филиала
    },
    "acc_corr_number_data": {          # данные для корр. счёта
        "discoverer": "01",            # кто открывает счёт
        "currency": "810",             # валюта
        "branch_number": "1234"        # номер филиала
    },
    "acc_bic": {                       # данные для БИК
        "participant": "0",            # участник платёжной системы
        "countrys_subject_code": "01", # код субъекта РФ
        "CB_division": "01",           # подразделение ЦБ
        "CB_conditional_number": "123" # условный номер банка в структуре ЦБ
    }
    "acc_cio_data": {                  # данные причины постановки на учёт
        "countrys_subject_code": "01", # код субъекта РФ
        "tax_inspection_code": "01",   # код налоговой инспекции
        "statement_reason": "01",      # причина постановки
        "reason_counter": "001"        # счётчик того, сколько раз юридическое лицо вставало на учет по данной причине
    },
    "reserve_reason": "reason ..."     # причина резервации счёта
}

Ответ на данный запрос:

{
    "status": 201,                    # статус ответа
    "info": "строка с информацией"    # информация по поводу статуса ответа
}

Возможные статусы:

  • 201 - счёт зарезервирован
  • 412 - ошибка в переданных данных
  • 50* - внутренние ошибки сервиса

Создание счёта

Название запроса: create_acc Описание: Изменяет статус записи счета на CREATED и удаляет запись причины резервации из соответствующей таблицы.

{
    "acc_uuid": "123456789abcdef" # uuid счёта
}

Ответ на данный запрос:

{
    "status": 200,                    # статус ответа
    "info": "строка с информацией"    # информация по поводу статуса ответа
}

Возможные статусы:

  • 200 - счёт закрыт
  • 404 - счёт не найден
  • 412 - ошибка в переданных данных
  • 50* - внутренние ошибки сервиса

Открытие счёта

Название запроса: open_acc Интерфейсы и статусы аналогичны методу create_acc. Описание: Изменяет статус записи счета на OPEN.

Закрытие счёта

Название запроса: close_acc Интерфейсы и статусы аналогичны методу create_acc. Описание: Изменяет статус переданного счёта в CLOSE.

Заблокировать счёт

Название запроса: block_acc Интерфейсы и статусы аналогичны методу create_acc. Описание: Изменяет статус переданного счёта в BLOCKED.

Получение данных счёта

Название запроса: get_acc_info Описание: Получение данных счёта. Интерфейс входных данных:

{
    "acc_uuid": "123456789abcdef" # uuid счёта
}

Ответ на данный запрос:

{
    "status": 200,                                 # статус ответа
    "info": "строка с информацией",                # информация по поводу статуса ответа
    "data": {
        "acc_status": "10",                        # статус счёта
        "acc_culc_number": "01234567890123456789", # расчётный номер
        "acc_corr_number": "01234567890123456789", # корреспондентский номер
        "acc_bic": "01234567890123456789",         # БИК
        "acc_cio": "01234567890123456789"          # КПП
        "acc_money_value": 1,                      # валюта
        "acc_money_amount": 123...456,             # сколько на счету денег
        "reserve_reason": "smth"                   # причина резервирования, поле будет пустым (т.е. ""), если статус счета не соответствует 
                                                   # статусу резервирования счёта
    }
}

Возможные статусы:

  • 200 - данные найдены и переданы в поле data
  • 404 - не был найден такой счёт
  • 412 - ошибка в данных сервиса
  • 50* - внутренние ошибки сервиса

Во всех статусах, кроме 200 поле data имеет вид "data": {}.

Пополнение счёта

Название запроса: adding_acc Описание: Увеличивает денежную сумму на счету.

{
    "acc_uuid": "123456789abcdef", # uuid счёта
    "money": 123456789             # величина, на которую увеличится сумма на счету, поле не должно быть отрицательным
}

Ответ на данный запрос:

{
    "status": 200,                    # статус ответа
    "info": "строка с информацией"    # информация по поводу статуса ответа
}

Возможные статусы:

  • 200 - пополнение выполнено успешно
  • 404 - счёт не найден
  • 412 - ошибка в переданных данных
  • 50* - внутренние ошибки сервиса

Снятие со счёта

Название запроса: withd_acc Интерфейсы и статусы аналогичны методу adding_acc. Описание: Уменьшает денежную сумму на счету.