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 8583ISO 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
0100Authorization Request (Xin cấp phép giao dịch)
0110Authorization Response (Phản hồi cấp phép)
0200Financial Transaction Request (Yêu cầu giao dịch tài chính)
0210Financial Transaction Response
0400Reversal Request (Yêu cầu đảo giao dịch)
0800Network 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

FieldTênVí dụ
DE 2Primary Account Number (PAN)4111111111111111 (số thẻ)
DE 3Processing Code000000 (mua hàng), 010000 (rút tiền mặt)
DE 4Transaction Amount000000100000 (1.000.000 VNĐ)
DE 7Transmission Date & Time0506143025 (ngày giờ GMT)
DE 11System Trace Audit Number123456 (số thứ tự duy nhất)
DE 37Retrieval Reference Number123456789012 (mã tra soát)
DE 39Response Code00 (Approved), 51 (Insufficient Funds)
DE 41Card Acceptor Terminal IDMã máy ATM/POS
DE 49Currency Code704 (VNĐ theo ISO 4217)

Response Codes quan trọng

CodeÝ nghĩa
00Approved — Giao dịch thành công
05Do not honor — Từ chối (lý do tổng quát)
14Invalid card number
51Insufficient funds — Không đủ số dư
54Expired card
55Incorrect PIN
91Issuer 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

MessageTênDùng cho
pain.001CustomerCreditTransferInitiationKhởi tạo lệnh chuyển tiền
pain.002CustomerPaymentStatusReportTrạng thái lệnh thanh toán
camt.053BankToCustomerStatementSao kê tài khoản
camt.054BankToCustomerDebitCreditNotificationThông báo ghi Nợ/Có
pacs.008FIToFICustomerCreditTransferChuyể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ểmISO 8583ISO 20022
Định dạngBinary, fixed-lengthXML / JSON
Dữ liệu ngữ nghĩaHạn chếRất phong phú (structured remittance info)
Mục đích chínhCard paymentsTất cả loại thanh toán tài chính
AML/ComplianceKhóDễ dàng — chứa đầy đủ thông tin
Tương laiLegacyChuẩn toàn cầu bắt buộc

NAPAS & CITAD — Bối cảnh Việt Nam

Hệ thốngChuẩnDùng cho
NAPASISO 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
SWIFTISO 20022Chuyển tiền quốc tế
VietQRISO 20022 (pain.001 mở rộng)Thanh toán QR Code

Nguồn tài liệu để tự học

  1. ISO 20022 chính thức: iso20022.org — Có thể download message schemas miễn phí.
  2. jPOS Book: jpos.org/doc/javadoc/ — Sách miễn phí về ISO 8583 và xây dựng payment switch.
  3. Swift Standards: swift.com/standards/iso-20022
  4. 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.