Tại sao chuẩn quốc tế lại quan trọng?
Core Banking không hoạt động biệt lập. Nó phải giao tiếp với:
- Hệ thống thẻ: Visa, Mastercard, NAPAS — để xử lý giao dịch ATM/POS.
- Thanh toán liên ngân hàng trong nước: CITAD (Hệ thống bù trừ điện tử NHNN).
- Chuyển tiền quốc tế: SWIFT — kết nối hơn 11.000 tổ chức tài chính toàn cầu.
Mọi hệ thống này “nói chuyện” với nhau bằng hai chuẩn thông điệp: ISO 8583 và ISO 20022.
ISO 8583 — Chuẩn Giao dịch Thẻ
Đây là gì?
ISO 8583 là chuẩn định dạng thông điệp cho các giao dịch thẻ (ATM rút tiền, POS thanh toán, chuyển tiền qua thẻ). Mỗi lần bạn cà thẻ tại siêu thị, một thông điệp ISO 8583 được gửi từ máy POS → ngân hàng thụ hưởng (Acquiring Bank) → Visa/Mastercard/NAPAS → ngân hàng phát hành thẻ (Issuing Bank) → Core Banking và ngược lại, tất cả trong vòng dưới 2 giây.
Cấu trúc thông điệp ISO 8583
Một thông điệp ISO 8583 gồm ba phần:
┌─────────────────┬──────────────────────┬──────────────────────┐
│ Message Type │ Bitmap │ Data Elements │
│ Indicator (MTI)│ (64 or 128 bits) │ (Variable fields) │
│ 4 digits │ │ │
└─────────────────┴──────────────────────┴──────────────────────┘
Message Type Indicator (MTI) — Loại thông điệp
| MTI | Ý nghĩa |
|---|---|
0100 | Authorization Request (Xin cấp phép giao dịch) |
0110 | Authorization Response (Phản hồi cấp phép) |
0200 | Financial Transaction Request (Yêu cầu giao dịch tài chính) |
0210 | Financial Transaction Response |
0400 | Reversal Request (Yêu cầu đảo giao dịch) |
0800 | Network Management Request (Kiểm tra kết nối) |
Bitmap — Bản đồ trường dữ liệu
Bitmap là một chuỗi 64 bit (hoặc 128 bit). Mỗi bit tương ứng với một Data Element. Nếu bit = 1, trường đó có mặt trong thông điệp; bit = 0, trường đó vắng mặt.
Bitmap (hex): F2 30 00 00 00 00 04 00
Binary: 1111 0010 0011 0000 ... 0000 0100 0000 0000
Bit 1 = 1 → Field 2 (Primary Account Number - PAN) có mặt
Bit 2 = 1 → Field 3 (Processing Code) có mặt
Bit 3 = 1 → Field 4 (Transaction Amount) có mặt
Bit 4 = 1 → Field 7 (Transmission Date & Time) có mặt
...
Các Data Element quan trọng nhất
| Field | Tên | Ví dụ |
|---|---|---|
| DE 2 | Primary Account Number (PAN) | 4111111111111111 (số thẻ) |
| DE 3 | Processing Code | 000000 (mua hàng), 010000 (rút tiền mặt) |
| DE 4 | Transaction Amount | 000000100000 (1.000.000 VNĐ) |
| DE 7 | Transmission Date & Time | 0506143025 (ngày giờ GMT) |
| DE 11 | System Trace Audit Number | 123456 (số thứ tự duy nhất) |
| DE 37 | Retrieval Reference Number | 123456789012 (mã tra soát) |
| DE 39 | Response Code | 00 (Approved), 51 (Insufficient Funds) |
| DE 41 | Card Acceptor Terminal ID | Mã máy ATM/POS |
| DE 49 | Currency Code | 704 (VNĐ theo ISO 4217) |
Response Codes quan trọng
| Code | Ý nghĩa |
|---|---|
00 | Approved — Giao dịch thành công |
05 | Do not honor — Từ chối (lý do tổng quát) |
14 | Invalid card number |
51 | Insufficient funds — Không đủ số dư |
54 | Expired card |
55 | Incorrect PIN |
91 | Issuer unavailable — Core Banking đang down |
Thư viện mã nguồn mở để thực hành
Bạn có thể thực hành parse và tạo thông điệp ISO 8583 bằng các thư viện này (không cần mua chuẩn gốc):
- Java: jPOS — Thư viện ISO 8583 đầy đủ nhất, production-grade.
- Go: moov-io/iso8583 — Được dùng bởi nhiều fintech Mỹ.
- Python: pyiso8583
ISO 20022 — Chuẩn Tài chính Thế hệ Mới
Đây là gì?
ISO 20022 là chuẩn thay thế toàn cầu cho mọi loại thông điệp tài chính — chuyển tiền, báo cáo tài khoản, thanh toán bù trừ. Nó dùng XML/JSON thay vì định dạng nhị phân của ISO 8583, giàu dữ liệu hơn nhiều và hỗ trợ nhiều trường hợp sử dụng hơn.
Từ 2022-2025, SWIFT đang migrating toàn bộ mạng lưới sang ISO 20022, bắt buộc toàn bộ ngân hàng kết nối SWIFT phải hỗ trợ chuẩn này.
Các Message Type quan trọng
| Message | Tên | Dùng cho |
|---|---|---|
pain.001 | CustomerCreditTransferInitiation | Khởi tạo lệnh chuyển tiền |
pain.002 | CustomerPaymentStatusReport | Trạng thái lệnh thanh toán |
camt.053 | BankToCustomerStatement | Sao kê tài khoản |
camt.054 | BankToCustomerDebitCreditNotification | Thông báo ghi Nợ/Có |
pacs.008 | FIToFICustomerCreditTransfer | Chuyển tiền liên ngân hàng |
Ví dụ thông điệp pain.001 (Lệnh chuyển tiền)
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>MSG-2026-001</MsgId>
<CreDtTm>2026-05-06T10:00:00</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<CtrlSum>1000000</CtrlSum>
</GrpHdr>
<PmtInf>
<PmtMtd>TRF</PmtMtd>
<DbtrAcct>
<Id><IBAN>VN12345678901234567890</IBAN></Id>
</DbtrAcct>
<CdtTrfTxInf>
<Amt>
<InstdAmt Ccy="VND">1000000</InstdAmt>
</Amt>
<CdtrAcct>
<Id><IBAN>VN09876543210987654321</IBAN></Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Thanh toan hoa don thang 5</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
Tại sao ISO 20022 quan trọng hơn ISO 8583?
| Đặc điểm | ISO 8583 | ISO 20022 |
|---|---|---|
| Định dạng | Binary, fixed-length | XML / JSON |
| Dữ liệu ngữ nghĩa | Hạn chế | Rất phong phú (structured remittance info) |
| Mục đích chính | Card payments | Tất cả loại thanh toán tài chính |
| AML/Compliance | Khó | Dễ dàng — chứa đầy đủ thông tin |
| Tương lai | Legacy | Chuẩn toàn cầu bắt buộc |
NAPAS & CITAD — Bối cảnh Việt Nam
| Hệ thống | Chuẩn | Dùng cho |
|---|---|---|
| NAPAS | ISO 8583 (bản mở rộng) | Thanh toán thẻ nội địa, Interbank QR |
| CITAD | Định dạng riêng (tương tự ISO 20022) | Chuyển tiền liên ngân hàng giá trị lớn |
| SWIFT | ISO 20022 | Chuyển tiền quốc tế |
| VietQR | ISO 20022 (pain.001 mở rộng) | Thanh toán QR Code |
Nguồn tài liệu để tự học
- ISO 20022 chính thức: iso20022.org — Có thể download message schemas miễn phí.
- jPOS Book: jpos.org/doc/javadoc/ — Sách miễn phí về ISO 8583 và xây dựng payment switch.
- Swift Standards: swift.com/standards/iso-20022
- NAPAS: Tài liệu kỹ thuật yêu cầu đối tác ký NDA, nhưng có thể tham khảo qua các ngân hàng thành viên.
Tiếp theo, chúng ta sẽ tìm hiểu một trong những khía cạnh khó nhất và quan trọng nhất của Core Banking: bảo mật, kiểm toán và tuân thủ pháp lý. Đọc tiếp Phần 6 — Bảo mật, Tuân thủ & Kiểm toán.