← 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ểm | Lã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ạn | 0.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ày | 0.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 |
|---|---|
| Principal | Vốn gốc đang còn dư nợ |
| Outstanding Balance | Tổng dư nợ = Vốn gốc + Lãi phát sinh |
| EMI | Khoản thanh toán cố định hàng kỳ (vốn gốc + lãi) |
| Amortization Schedule | Bảng phân kỳ trả nợ (schedule) |
| NPA | Non-Performing Asset — khoản nợ xấu (quá hạn >90 ngày) |
| Provisioning | Trí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óm | Tình trạng | Yêu cầu trích lập dự phòng |
|---|---|---|
| Nhóm 1 | Nợ đủ tiêu chuẩn (< 10 ngày quá hạn) | 0% |
| Nhóm 2 | Nợ cần chú ý (10 - 90 ngày) | 5% |
| Nhóm 3 | Nợ dưới tiêu chuẩn (90 - 180 ngày) | 20% |
| Nhóm 4 | Nợ nghi ngờ (180 - 360 ngày) | 50% |
| Nhóm 5 | Nợ 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.
