KYC / eKYC / ODC — Kiến trúc triển khai

SWIFTNET_LINK + VNLH-VND SDK | ISO 20022 auth.012/013 | Ngân hàng Nhà nước Việt Nam
✅  Build status: 0 TypeScript errors  |  Tests: 23/23 pass  |  Nodes mới: 9 files (4 Node.js + 1 TypeScript + 1 EJS view + 3 cập nhật)

Luồng xử lý KYC end-to-end

1
NHTM/PSP nộp hồ sơ POST /kyc/submit → Bearer JWT xác thực → KYC Service
2
ODC Scan tài liệu đính kèm odcScannerService: OCR field extraction → integrity check → expiry validation → contract analysis
3
AML Risk Scoring FATF R.10/R.12 — PEP check, sanctions screening, country risk, document risk
4
Auto-status decision LOW risk + valid docs → APPROVED | HIGH/CRITICAL → IN_REVIEW | Sanctioned → REJECTED
5
Sinh ISO 20022 messages auth.012 (request) + auth.013 (response) XML được trả về tức thì
6
Gov-Chain anchoring recordHash neo lên VNLH ledger sau khi APPROVED (M1→M3)

Files đã tạo / cập nhật

SWIFTNET_LINK (Node.js)

FileLoạiChức năng
models/KycRecord.js Model Mongoose schema — hồ sơ KYC, ODC documents[], risk assessment, Gov-Chain anchor
services/odcScannerService.js Service ODC Scanner: OCR field extraction, integrity check, expiry validation, contract analysis, anti-tampering
services/kycService.js Service KYC Engine: submitKyc, getKycStatus, searchKyc, reviewKyc, computeRiskScore, buildAuth012/013
routes/kycRoutes.js Router 9 endpoints KYC/ODC (xem bảng endpoints bên dưới)
views/kycPortal.ejs View KYC/ODC Portal — UI nộp KYC, quét tài liệu, phân tích hợp đồng, tra cứu
server.js updated Server Mount kycRoutes tại BASE/kyc + comment endpoints đầy đủ
routes/sdkGatewayRoutes.js updated Proxy Thêm 5 KYC entries vào ROUTE_MAP để proxy sang ISO20022 GW
.env.example updated Config Thêm 8 biến KYC_*: OCR engine, sanctions URL, validity years, webhook

VNLH-VND SDK (TypeScript)

FileLoạiChức năng
src/vnlh/kyc-engine.ts Engine KycSubmitInput, OdcScanResult, processKycSubmit(), scanOdcDocument(), computeKycRisk(), buildAuth012/013Xml()
src/vnlh/index.ts updated Export Export * from kyc-engine
src/gateway/vnlh-router.ts updated Router 4 KYC endpoints: /kyc/submit, /kyc/scan, /kyc/contract, /kyc/schemas
src/index.ts updated Server Thêm log startup cho KYC endpoints

Endpoint Map đầy đủ

SWIFTNET_LINK — /SWIFT/kyc/*

MethodPathAuthMô tả
POST/SWIFT/kyc/submitBearer JWTNộp hồ sơ KYC đầy đủ → trả auth.012 + auth.013 XML
GET/SWIFT/kyc/status/:kycIdBearer JWTTra cứu trạng thái KYC + auth.013 XML
POST/SWIFT/kyc/scanBearer JWTODC quét tài liệu đơn lẻ
POST/SWIFT/kyc/scan/batchBearer JWTODC quét nhiều tài liệu (max 20)
POST/SWIFT/kyc/verify-contractBearer JWTPhân tích hợp đồng / văn bản pháp lý
GET/SWIFT/kyc/searchSession AdminTìm kiếm hồ sơ KYC
PUT/SWIFT/kyc/review/:kycIdSession AdminDuyệt/từ chối KYC
GET/SWIFT/kyc/statsSession AdminThống kê tổng hợp
GET/SWIFT/kyc/schemasPublicDanh sách loại tài liệu ODC hỗ trợ
GET/SWIFT/kyc-portalPublicKYC/ODC Web Portal (EJS)

VNLH-VND SDK (TypeScript) — /api/v1/iso20022/vnlh/kyc/*

MethodPathISO 20022Mô tả
POST/vnlh/kyc/submitauth.012.001.02KYC submission + ODC scan + risk scoring
POST/vnlh/kyc/scanODC document scan đơn lẻ
POST/vnlh/kyc/contractContract/legal document analysis
GET/vnlh/kyc/schemasODC docType registry + legal refs

ODC — Loại tài liệu hỗ trợ

docTypeTài liệuOCR FieldsHiệu lực
NATIONAL_IDCMND/CCCD Việt NamidNumber, fullName, dateOfBirth, gender, address, issueDate, expiryDate, MRZ15 năm
PASSPORTHộ chiếupassportNo, fullName, dateOfBirth, nationality, issueDate, expiryDate, MRZ10 năm
DRIVING_LICBằng lái xelicenseNo, fullName, dateOfBirth, licenseClass, expiryDate10 năm
BUSINESS_REGĐăng ký kinh doanhtaxCode, companyName, legalRepresentative, registrationDate, businessAddressKhông hết hạn
CONTRACTHợp đồng tín dụng/dịch vụcontractNo, parties, effectiveDate, expiryDate, value, currency, detectedClausesPer contract
LEGAL_DOCVăn bản pháp lýdocNumber, docType, issuer, issuedDate, effectiveDate, subjectPer document
FINANCIAL_STMTBáo cáo tài chínhreportingPeriod, entityName, totalAssets, netRevenue, auditorNamePer period

AML Risk Scoring

RuleĐiểm cộngFlagChuẩn pháp lý
Quốc tịch FATF Black List (KP, IR, SY)+50FATF_BLACK_LISTFATF Updated Statement
Quốc tịch FATF Grey List+25FATF_GREY_LISTFATF Increased Monitoring
PEP suspected (keyword match)+25PEP_SUSPECTEDFATF Recommendation 12
Thiếu tài liệu định danh bắt buộc+20MISSING_ID_DOCUMENTLuật PCRT 2022 — Điều 11
Tài liệu INVALID/EXPIRED+10 mỗi docINVALID_DOCUMENTSTT09/2023/TT-NHNN
Tài liệu TAMPERED+60TAMPERED_DOCUMENTĐiều 20 Luật GDĐT 2023
Sanctions hit (OFAC/UN/EU)+50SANCTIONS_HITFATF Recommendation 6
Risk ScoreRisk LevelHành động tự động
0–29LOWAPPROVED tự động (nếu docs VALID)
30–59MEDIUMPENDING — cần duyệt
60–79HIGHIN_REVIEW — EDD required
80–100CRITICALREJECTED tự động

Contract Analyzer — Risk Clauses

CodeMô tảMức độ
PENALTY_RATELãi suất phạt bất thường caoMEDIUM
VOID_CLAUSEĐiều khoản vô hiệu hoá hợp đồngHIGH
CONFIDENTIALITYBảo mật tuyệt đối (cản trở khiếu nại)MEDIUM
IRREVOCABLE_POAỦy quyền không hủy ngangHIGH
EXTRAJUDICIALXử lý tài sản không qua tòa ánHIGH
HIGH_INTERESTLãi suất > ngưỡng hợp lýMEDIUM

Khung pháp lý áp dụng

Chuẩn / Văn bảnNội dung áp dụng
ISO 20022 auth.012.001.02MoneyLaunderingRiskReport — KYC Request message
ISO 20022 auth.013.001.02InvestigationRequestResponse — KYC Response message
Luật PCRT 2022 (Luật số 14/2022/QH15)Nhận biết khách hàng, đánh giá rủi ro, lưu trữ hồ sơ
Nghị định 19/2023/NĐ-CPHướng dẫn Luật PCRT 2022 — CDD thực hành
Thông tư 09/2023/TT-NHNNeKYC điện tử — yêu cầu kỹ thuật
Thông tư 16/2021/TT-NHNNNhận biết khách hàng điện tử tại ngân hàng
FATF Recommendation 10Customer Due Diligence (CDD)
FATF Recommendation 12Politically Exposed Persons (PEP)
Nghị định 13/2023/NĐ-CPBảo vệ dữ liệu cá nhân — mask PII trong log
Điều 20 Luật GDĐT 2023Gov-Chain blockHash làm bằng chứng điện tử
Bộ luật Dân sự 2015 — Điều 385-408Phân tích hiệu lực điều khoản hợp đồng