← Chương trước: Phần 1 — Tư duy Kế toán Kép & Sổ Cái | Mục lục Series | Chương tiếp theo: Phần 3 — Giao dịch ACID & Concurrency trong Core Banking →


Answer-first: Ba phân hệ lõi của Core Banking gồm: CIF (Customer Information File) quản lý định danh khách hàng 360 độ và eKYC/AML; CASA (Current & Savings Accounts) xử lý tiền gửi với quy tắc số dư khả dụng (Available Balance); và Lending quản lý vòng đời khoản vay cùng công thức phân kỳ nợ (EMI) và trích lập dự phòng.


Tổng quan ba module lõi

Hầu hết các hệ thống Core Banking đều được tổ chức xoay quanh ba domain nghiệp vụ này. Hiểu rõ chúng giúp bạn đọc đặc tả yêu cầu của khách hàng (ngân hàng) và chuyển thành thiết kế hệ thống chính xác.


Module 1: CIF — Customer Information File

CIF là nền tảng định danh khách hàng của toàn hệ thống. Mỗi khách hàng — dù là cá nhân hay doanh nghiệp — đều có một mã CIF duy nhất. Mọi sản phẩm khác (tài khoản, khoản vay, thẻ) đều được liên kết với CIF này.

Tại sao CIF lại quan trọng?

Nếu không có CIF được thiết kế tốt, bạn sẽ gặp tình trạng “Customer 360” bị vỡ — ngân hàng không biết rằng người mở tài khoản tiết kiệm và người vay tiền là cùng một người, dẫn đến không thể xét duyệt tín dụng chính xác.

Thiết kế CIF cơ bản

CREATE TABLE customers (
    cif_number      VARCHAR(20)  PRIMARY KEY,   -- Mã CIF duy nhất
    customer_type   VARCHAR(10)  NOT NULL,       -- 'INDIVIDUAL' hoặc 'CORPORATE'
    full_name       VARCHAR(255) NOT NULL,
    id_number       VARCHAR(20)  UNIQUE NOT NULL, -- CMND/CCCD/MST
    id_type         VARCHAR(20)  NOT NULL,        -- 'NATIONAL_ID', 'PASSPORT', 'TAX_CODE'
    date_of_birth   DATE,
    nationality     CHAR(3),                     -- ISO 3166 country code
    kyc_status      VARCHAR(20)  NOT NULL DEFAULT 'PENDING',
    -- 'PENDING', 'VERIFIED', 'REJECTED', 'EXPIRED'
    risk_rating     VARCHAR(10),                 -- 'LOW', 'MEDIUM', 'HIGH'
    created_at      TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at      TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

eKYC, AML & AI Integration (Chuẩn 2026)

CIF không thể tồn tại một mình — nó phải tích hợp với:

  • eKYC System: Xác minh danh tính điện tử (kết nối VNPT eKYC, VNeID).
  • AML (Anti-Money Laundering) & Agentic AI: Kiểm tra danh sách đen và sử dụng AI Agent để tự động phân tích các hành vi giao dịch đáng ngờ trong thời gian thực.
  • CIC (Credit Information Center): Kiểm tra lịch sử tín dụng trước khi cho vay, kết hợp với Hyper-Personalization AI để đưa ra gợi ý sản phẩm phù hợp.

Module 2: CASA — Current Account & Savings Account

CASA là nơi lưu trữ tiền của khách hàng. Đây là module tạo ra nguồn vốn giá rẻ nhất cho ngân hàng vì lãi suất thanh toán rất thấp.

Phân loại tài khoản

LoạiĐặc điểmLãi suất điển hình
Current Account (Tài khoản thanh toán)Rút/nạp tự do, không kỳ hạn0.1% - 0.5%/năm
Savings Account - Demand (Tiết kiệm không kỳ hạn)Rút tự do, tính lãi hàng ngày0.5% - 1%/năm
Savings Account - Term (Tiết kiệm có kỳ hạn)Khóa theo kỳ hạn (1,3,6,12,24 tháng)5% - 8%/năm

Thiết kế cơ sở dữ liệu cho CASA

CREATE TABLE accounts (
    account_number  VARCHAR(20)  PRIMARY KEY,
    cif_number      VARCHAR(20)  NOT NULL REFERENCES customers(cif_number),
    account_type    VARCHAR(30)  NOT NULL,
    -- 'CURRENT', 'SAVINGS_DEMAND', 'SAVINGS_TERM'
    currency        CHAR(3)      NOT NULL DEFAULT 'VND',
    status          VARCHAR(20)  NOT NULL DEFAULT 'ACTIVE',
    -- 'ACTIVE', 'DORMANT', 'BLOCKED', 'CLOSED'
    current_balance BIGINT       NOT NULL DEFAULT 0,  -- Số dư hiện tại (đơn vị: đồng)
    available_balance BIGINT     NOT NULL DEFAULT 0,  -- Số dư khả dụng (trừ hold)
    interest_rate   DECIMAL(6,4),                     -- Lãi suất (%/năm)
    maturity_date   DATE,                             -- Ngày đáo hạn (nếu có kỳ hạn)
    opened_at       TIMESTAMPTZ  NOT NULL DEFAULT NOW()
);

Business Rule quan trọng: Số dư khả dụng vs Số dư hiện tại

Đây là điểm nhiều developer hay nhầm:

current_balance   = Tổng tiền thực tế trong tài khoản
available_balance = current_balance - hold_amount

Hold (phong toả) xảy ra khi:
  - Khách hàng dùng thẻ để đặt phòng khách sạn (chưa thanh toán thực)
  - Tài khoản đang bị phong toả theo lệnh thi hành án
  - Đặt cọc cho giao dịch chưa hoàn tất

Khi khách hàng rút tiền, hệ thống chỉ được phép rút từ available_balance, không phải current_balance.

Tính lãi suất hàng ngày (Daily Interest Accrual)

Đây là một trong những quy trình batch quan trọng nhất chạy mỗi đêm (EOD - End of Day):

Lãi tích lũy hàng ngày = (Số dư cuối ngày × Lãi suất / 365)

Ví dụ:
  - Số dư: 100.000.000 VNĐ
  - Lãi suất: 5.5%/năm
  - Lãi 1 ngày = 100.000.000 × 0.055 / 365 = 15.068 VNĐ/ngày

Module 3: Lending — Nghiệp vụ Tín Dụng

Lending (cho vay) là module tạo ra doanh thu chính của ngân hàng. Đây cũng là module phức tạp nhất.

Vòng đời một khoản vay

[Khởi tạo hồ sơ] → [Thẩm định] → [Phê duyệt] → [Giải ngân] 
      → [Hoạt động (Thu nợ định kỳ)] → [Đóng khoản vay]

Các khái niệm bắt buộc phải hiểu

Thuật ngữÝ nghĩa
PrincipalVốn gốc đang còn dư nợ
Outstanding BalanceTổng dư nợ = Vốn gốc + Lãi phát sinh
EMIKhoản thanh toán cố định hàng kỳ (vốn gốc + lãi)
Amortization ScheduleBảng phân kỳ trả nợ (schedule)
NPANon-Performing Asset — khoản nợ xấu (quá hạn >90 ngày)
ProvisioningTrích lập dự phòng rủi ro tín dụng

Công thức tính EMI (Equated Monthly Installment)

EMI = P × r × (1 + r)^n / ((1 + r)^n - 1)

Trong đó:
  P = Số tiền vay ban đầu (Principal)
  r = Lãi suất theo kỳ (ví dụ: 12%/năm → r = 1%/tháng = 0.01)
  n = Số kỳ thanh toán (tháng)

Ví dụ: Vay 500.000.000 VNĐ, 12%/năm, 60 tháng
  r = 0.01, n = 60
  EMI = 500.000.000 × 0.01 × (1.01)^60 / ((1.01)^60 - 1)
      ≈ 11.122.222 VNĐ/tháng

Phân loại nợ (Debt Classification) — Quy định của NHNN Việt Nam

NhómTình trạngYêu cầu trích lập dự phòng
Nhóm 1Nợ đủ tiêu chuẩn (< 10 ngày quá hạn)0%
Nhóm 2Nợ cần chú ý (10 - 90 ngày)5%
Nhóm 3Nợ dưới tiêu chuẩn (90 - 180 ngày)20%
Nhóm 4Nợ nghi ngờ (180 - 360 ngày)50%
Nhóm 5Nợ có khả năng mất vốn (> 360 ngày)100%

Đây là quy định pháp lý — hệ thống Core Banking phải tự động phân loại và trích lập dự phòng theo các nhóm này trong quy trình EOD hàng ngày.

Tóm tắt mối quan hệ giữa ba module

Customer (CIF) ──── 1:N ──── Accounts (CASA)
Customer (CIF) ──── 1:N ──── Loans (Lending)
Accounts       ──── 1:N ──── Ledger Entries
Loans          ──── 1:N ──── Ledger Entries

← Chương trước: Phần 1 — Tư duy Kế toán Kép & Sổ Cái | Mục lục Series | Chương tiếp theo: Phần 3 — Giao dịch ACID & Concurrency trong Core Banking →


❓ Câu Hỏi Thường Gặp (FAQ)

Q1: Phần 2 — Nghiệp vụ Ngân hàng Lõi: CIF, CASA & Lending giải quyết vấn đề cốt lõi nào trong kiến trúc hệ thống?

Ba module nền tảng của Core Banking: Customer Information File (CIF), Current and Savings Accounts (CASA), và Lending — cùng cách thức triển khai của chúng.

Q2: Những lưu ý quan trọng nhất khi triển khai thực tế là gì?

Cần chú trọng phân tầng ranh giới trách nhiệm (bounded context), thiết lập cơ chế fallback dự phòng, và giám sát chặt chẽ qua metrics OpenTelemetry để phát hiện sớm các điểm nghẽn.

Q3: Làm sao để kiểm thử và đánh giá hiệu quả sau khi áp dụng?

Áp dụng kiểm thử tải (load test), benchmark độ trễ P95/P99 trước và sau triển khai, kết hợp tracing phân tán để xác minh tính ổn định dưới tải cao.