Từ khoá: Số Hiệu, Tiêu đề hoặc Nội dung ngắn gọn của Văn Bản...

Đăng nhập

Dùng tài khoản LawNet
Quên mật khẩu?   Đăng ký mới

Đang tải văn bản...

Số hiệu: 64/2024/TT-NHNN Loại văn bản: Thông tư
Nơi ban hành: Ngân hàng Nhà nước Việt Nam Người ký: Phạm Tiến Dũng
Ngày ban hành: 31/12/2024 Ngày hiệu lực: Đã biết
Ngày công báo: Đã biết Số công báo: Đã biết
Tình trạng: Đã biết

Triển khai Open API trong ngành Ngân hàng từ ngày 01/3/2025

Ngày 31/12/2024, Thống đốc Ngân hàng Nhà nước Việt Nam ban hành Thông tư 64/2024/TT-NHNN quy định về triển khai giao diện lập trình ứng dụng mở (Open API) trong ngành Ngân hàng.

Triển khai Open API trong ngành Ngân hàng

Cụ thể, Thông tư 64 quy định nguyên tắc triển khai Open API trong ngành Ngân hàng từ ngày 01/03/2025 như sau:

(1) Khi triển khai Open API cơ bản quy định tại Điều 6 Thông tư 64/2024, Ngân hàng phải tuân thủ quy định tại Phụ lục 01, Phụ lục 02 ban hành kèm theo Thông tư 64/2024.

Cụ thể, danh mục Open API cơ bản được tổ chức thành các nhóm sau:

(i) Open API truy vấn thông tin tỷ giá, lãi suất của Ngân hàng gồm: API Lấy thông tin lãi suất, API Lấy thông tin tỷ giá;

(ii) Open API truy vấn thông tin của khách hàng gồm: API Xác nhận và lấy sự đồng ý của khách hàng, API Lấy mã truy cập, API Làm mới mã truy cập, API Thu hồi mã truy cập, API Lấy danh sách tài khoản, API Lấy thông tin tài khoản, API Lấy lịch sử giao dịch;

(iii) Open API khởi tạo thanh toán, nạp tiền vào ví điện tử, rút tiền ra khỏi ví điện tử gồm:

- Open API khởi tạo thanh toán gồm: API Khởi tạo thanh toán, API Xác nhận khách hàng Luồng Redirect, API Lấy mã truy cập Luồng Redirect. API Cập nhật trạng thái xác nhận thanh toán của khách hàng luồng Decoupled, API Xác nhận thanh toán, API Lấy trạng thái giao dịch, API Lấy trạng thái xác nhận thanh toán của khách hàng luồng Decoupled:

- Open API Nạp tiền vào ví điện tử gồm: API Nạp ví điện tử, API Xác nhận OTP, API Cập nhật trạng thái xác nhận nạp ví điện tử của khách hàng luồng Decoupled, API Lấy trạng thái xác nhận nạp ví điện tử của khách hàng luồng Decoupled, API Xác nhận nạp ví điện tử, API Lấy trạng thái giao dịch;

- Open API Rút tiền ra khỏi ví điện tử.

(2) Khi triển khai Open API khác theo nhu cầu thực tế và phù hợp quy định của pháp luật ngoài danh mục Open API, Ngân hàng phải tuân thủ quy định tại Phụ lục 02 ban hành kèm theo Thông tư 64/2024.

(3) Ngân hàng chỉ được phép triển khai Open API quy định tại điểm (iii) cho bên thứ ba là Ngân hàng, tổ chức cung ứng dịch vụ trung gian thanh toán.

Thông tư 64/2024/TT-NHNN có hiệu lực thi hành từ ngày 01/3/2025.

NGÂN HÀNG NHÀ NƯỚC
VIỆT NAM

-------

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
---------------

Số: 64/2024/TT-NHNN

Hà Nội, ngày 31 tháng 12 năm 2024

 

THÔNG TƯ

QUY ĐỊNH VỀ TRIỂN KHAI GIAO DIỆN LẬP TRÌNH ỨNG DỤNG MỞ TRONG NGÀNH NGÂN HÀNG

Căn cứ Luật Ngân hàng Nhà nước Việt Nam ngày 16 tháng 6 năm 2010;

Căn cứ Luật Các tổ chức tín dụng ngày 18 tháng 01 năm 2024;

Căn cứ Luật Giao dịch điện tử ngày 22 tháng 6 năm 2023;

Căn cứ Luật An toàn thông tin mạng ngày 19 tháng 11 năm 2015;

Căn cứ Nghị định số 52/2024/NĐ-CP ngày 15 tháng 5 năm 2024 của Chính phủ quy định về thanh toán không dùng tiền mặt;

Căn cứ Nghị định số 13/2023/NĐ-CP ngày 17 tháng 4 năm 2023 của Chính phủ quy định về bảo vệ dữ liệu cá nhân;

Căn cứ Nghị định số 102/2022/NĐ-CP ngày 12 tháng 12 năm 2022 của Chính phủ quy định chức năng, nhiệm vụ, quyền hạn và cơ cấu tổ chức của Ngân hàng Nhà nước Việt Nam;

Theo đề nghị của Cục trưởng Cục Công nghệ thông tin;

Thống đốc Ngân hàng Nhà nước Việt Nam ban hành Thông tư quy định về triển khai giao diện lập trình ứng dụng mở trong ngành Ngân hàng.

Chương I

QUY ĐỊNH CHUNG

Điều 1. Phạm vi điều chỉnh

1. Thông tư này quy định về việc triển khai giao diện lập trình ứng dụng mở trong ngành Ngân hàng.

2. Thông tư này không điều chỉnh việc kết nối, xử lý dữ liệu chứa thông tin thuộc phạm vi bí mật nhà nước. Việc xử lý dữ liệu chứa thông tin thuộc phạm vi bí mật nhà nước được thực hiện theo quy định của pháp luật hiện hành.

3. Thông tư này không điều chỉnh việc kết nối, xử lý dữ liệu trực tiếp giữa:

a) Hệ thống thông tin của Ngân hàng và hệ thống thông tin của tổ chức qua giao diện lập trình ứng dụng để phục vụ nghiệp vụ nội bộ của chính tổ chức đó;

b) Hệ thống thông tin của Ngân hàng và hệ thống thông tin của Tổ chức chủ trì hệ thống bù trừ điện tử. Tổ chức chủ trì hệ thống bù trừ điện tử được xác định theo quy định của Ngân hàng Nhà nước Việt Nam về hoạt động cung ứng dịch vụ trung gian thanh toán.

Điều 2. Đối tượng áp dụng

1. Ngân hàng thương mại, ngân hàng hợp tác xã, chi nhánh ngân hàng nước ngoài (sau đây gọi chung là Ngân hàng).

2. Tổ chức, cá nhân có liên quan trong việc triển khai dịch vụ qua giao diện lập trình ứng dụng mở trong ngành ngân hàng.

Điều 3. Giải thích từ ngữ

Trong Thông tư này, các thuật ngữ dưới đây được hiểu như sau:

1. Giao diện lập trình ứng dụng (tên tiếng anh là: Application Programming Interface, sau đây viết tắt là API) là giao diện cho phép giao tiếp giữa các ứng dụng phần mềm trong một tổ chức hoặc giữa các tổ chức với nhau.

2. Giao diện lập trình ứng dụng mở trong ngành Ngân hàng (Open API) là tập hợp các API được Ngân hàng cung cấp cho bên thứ ba trực tiếp kết nối, xử lý dữ liệu để cung ứng dịch vụ cho khách hàng. Open API gồm: Open API cơ bản và Open API khác.

3. Hệ thống thử nghiệm Open API là hệ thống thông tin của Ngân hàng cung cấp cho bên thứ ba để thử nghiệm các Open API trước khi triển khai chính thức.

4. Khách hàng là cá nhân sử dụng dịch vụ của Ngân hàng.

5. Bên thứ ba là tổ chức hoặc Ngân hàng khác có thỏa thuận bằng hợp đồng với Ngân hàng trong việc kết nối, xử lý dữ liệu qua Open API để cung ứng dịch vụ cho khách hàng.

6. Sự đồng ý của khách hàng là việc thể hiện rõ ràng, tự nguyện, khẳng định việc cho phép xử lý dữ liệu cá nhân của khách hàng.

Điều 4. Nguyên tắc chung

Ngân hàng, khách hàng và bên thứ ba (sau đây gọi là các bên) khi triển khai Open API phải tuân thủ các yêu cầu sau:

1. Tuân thủ các quy định của pháp luật về giữ bí mật, cung cấp thông tin khách hàng và bảo vệ dữ liệu cá nhân. Việc xử lý dữ liệu cá nhân của khách hàng chỉ phục vụ cho chính khách hàng đó, trừ trường hợp theo quy định của pháp luật.

2. Dữ liệu trong quá trình xử lý phải được quản lý, lưu trữ, khai thác, sử dụng đúng mục đích tại hợp đồng giữa các bên và phù hợp với quy định của pháp luật.

3. Dữ liệu trong quá trình xử lý phải bảo đảm tính cập nhật và chính xác. Trường hợp có sai lệch phải thực hiện đính chính, hiệu chỉnh kịp thời theo thỏa thuận giữa các bên.

Chương II

QUY ĐỊNH CỤ THỂ VỀ TRIỂN KHAI OPEN API

Mục 1. QUY ĐỊNH TRIỂN KHAI OPEN API

Điều 5. Nguyên tắc triển khai Open API

1. Khi triển khai Open API cơ bản quy định tại Điều 6 Thông tư này, Ngân hàng phải tuân thủ quy định tại Phụ lục 01, Phụ lục 02 ban hành kèm theo Thông tư này.

2. Khi triển khai Open API khác theo nhu cầu thực tế và phù hợp quy định của pháp luật ngoài danh mục Open API quy định tại Điều 6 Thông tư này, Ngân hàng phải tuân thủ quy định tại Phụ lục 02 ban hành kèm theo Thông tư này.

3. Ngân hàng chỉ được phép triển khai Open API quy định tại điểm c khoản 1 Điều 6 cho bên thứ ba là Ngân hàng, tổ chức cung ứng dịch vụ trung gian thanh toán.

Điều 6. Danh mục Open API

1. Danh mục Open API cơ bản được tổ chức thành các nhóm sau:

a) Open API truy vấn thông tin tỷ giá, lãi suất của Ngân hàng gồm: API Lấy thông tin lãi suất, API Lấy thông tin tỷ giá;

b) Open API truy vấn thông tin của khách hàng gồm: API Xác nhận và lấy sự đồng ý của khách hàng, API Lấy mã truy cập, API Làm mới mã truy cập, API Thu hồi mã truy cập, API Lấy danh sách tài khoản, API Lấy thông tin tài khoản, API Lấy lịch sử giao dịch;

c) Open API khởi tạo thanh toán, nạp tiền vào ví điện tử, rút tiền ra khỏi ví điện tử gồm:

(i) Open API khởi tạo thanh toán gồm: API Khởi tạo thanh toán, API Xác nhận khách hàng Luồng Redirect, API Lấy mã truy cập luồng Redirect, API Cập nhật trạng thái xác nhận thanh toán của khách hàng luồng Decoupled, API Xác nhận thanh toán, API Lấy trạng thái giao dịch, API Lấy trạng thái xác nhận thanh toán của khách hàng luồng Decoupled;

(ii) Open API Nạp tiền vào ví điện tử gồm: API Nạp ví điện tử, API Xác nhận OTP, API Cập nhật trạng thái xác nhận nạp ví điện tử của khách hàng luồng Decoupled, API Lấy trạng thái xác nhận nạp ví điện tử của khách hàng luồng Decoupled, API Xác nhận nạp ví điện tử, API Lấy trạng thái giao dịch;

(iii) Open API Rút tiền ra khỏi ví điện tử.

2. Chi tiết đặc tả danh mục Open API tại khoản 1 Điều này được quy định cụ thể tại Phụ lục 01 ban hành kèm theo Thông tư này.

Điều 7. Danh mục tiêu chuẩn kỹ thuật

1. Các tiêu chuẩn kỹ thuật triển khai Open API gồm tiêu chuẩn kiến trúc, tiêu chuẩn dữ liệu và tiêu chuẩn an toàn thông tin.

2. Tiêu chuẩn kỹ thuật triển khai Open API trong ngành Ngân hàng quy định cụ thể tại Phụ lục 02 ban hành kèm theo Thông tư này.

Điều 8. Hợp đồng giữa Ngân hàng với bên thứ ba

Ngân hàng phải ký kết hợp đồng với bên thứ ba về việc triển khai Open API, bao gồm tối thiểu các nội dung sau:

1. Cam kết bảo mật thông tin, trong đó có thỏa thuận về việc bảo đảm an toàn, bảo mật thông tin khi thực hiện xử lý dữ liệu qua Open API do Ngân hàng cung cấp.

2. Cam kết sử dụng dữ liệu do Ngân hàng cung cấp đúng phạm vi, mục đích.

3. Bên thứ ba phải thông báo cho Ngân hàng khi phát hiện nhân sự vi phạm quy định về an toàn thông tin mạng khi triển khai Open API.

4. Thông tin về dịch vụ cung cấp cho khách hàng được triển khai qua Open API.

5. Thông tin về phí dịch vụ cung cấp cho khách hàng được triển khai qua Open API (nếu có).

6. Điều khoản về hệ thống thông tin của bên thứ ba kết nối, xử lý dữ liệu qua Open API phải được đánh giá, xác định cấp độ theo quy định của Chính phủ về bảo đảm an toàn hệ thống thông tin theo cấp độ.

7. Quyền truy cập dữ liệu của bên thứ ba khi triển khai Open API.

8. Điều khoản chấm dứt hợp đồng.

Điều 9. Công khai thông tin Open API

Trước khi chính thức kết nối, xử lý dữ liệu với bên thứ ba, Ngân hàng phải công khai thông tin Open API trên trang thông tin điện tử chính thức của Ngân hàng bao gồm tối thiểu các nội dung sau:

1. Thông tin về Hệ thống thử nghiệm Open API.

2. Danh mục các Open API Ngân hàng triển khai.

Mục 2. QUYỀN VÀ TRÁCH NHIỆM CỦA NGÂN HÀNG VÀ BÊN THỨ BA

Điều 10. Quyền của Ngân hàng

1. Yêu cầu bên thứ ba cung cấp các thông tin cần thiết liên quan đến quá trình kết nối, xử lý dữ liệu qua Open API.

2. Các quyền khác quy định trong hợp đồng với bên thứ ba.

Điều 11. Trách nhiệm của Ngân hàng

1. Hoàn thiện cơ sở hạ tầng hệ thống thông tin phục vụ triển khai Open API để sẵn sàng kết nối, xử lý dữ liệu.

2. Xây dựng và hoàn thiện các tài liệu hướng dẫn kết nối, xử lý dữ liệu.

3. Bảo đảm chất lượng dữ liệu trong quá trình triển khai Open API. Thông báo kịp thời cho bên thứ ba khi có sai lệch dữ liệu và phối hợp với bên thứ ba đính chính, hiệu chỉnh kịp thời.

4. Bảo đảm an toàn, an ninh mạng cho hệ thống thông tin triển khai Open API, đáp ứng tối thiểu cấp độ 3 theo quy định của Chính phủ về bảo đảm an toàn hệ thống thông tin theo cấp độ và tuân thủ quy định của Ngân hàng Nhà nước Việt Nam về an toàn hệ thống thông tin trong hoạt động ngân hàng.

5. Cung cấp công cụ hoặc chức năng cho phép khách hàng thực hiện:

a) Tra cứu các dữ liệu mà khách hàng đồng ý cho bên thứ ba xử lý;

b) Rút lại sự đồng ý của khách hàng theo quy định của pháp luật.

6. Thiết lập thời hạn được thực hiện truy vấn thông tin của khách hàng sau khi được khách hàng đồng ý không quá 180 ngày, trừ trường hợp có thỏa thuận khác giữa khách hàng với Ngân hàng.

7. Cung cấp thông tin tình hình triển khai Open API cho Ngân hàng Nhà nước Việt Nam (thông qua Cục Công nghệ thông tin) khi được yêu cầu.

8. Phối hợp với bên thứ ba theo thỏa thuận và với cơ quan có thẩm quyền để giải quyết vướng mắc, tranh chấp trong quá trình triển khai Open API.

9. Có giải pháp công nghệ giới hạn số lần truy vấn tự động thông tin của khách hàng từ bên thứ ba.

10. Chịu trách nhiệm lựa chọn, thẩm định, giám sát và quản lý bên thứ ba.

11. Thực hiện cập nhật hoặc thu hồi quyền truy cập dữ liệu của bên thứ ba khi có thay đổi theo hợp đồng.

12. Giám sát hoạt động truy cập:

a) Có hệ thống giám sát để phát hiện và ngăn chặn các hành vi truy cập bất thường hoặc trái phép từ bên thứ ba;

b) Ghi nhật ký toàn bộ việc sử dụng Open API từ bên thứ ba tối thiểu trong vòng 03 tháng và sao lưu tối thiểu 01 năm để phục vụ kiểm tra khi cần thiết.

Điều 12. Quyền và trách nhiệm của bên thứ ba

1. Bên thứ ba có các quyền theo hợp đồng hoặc thỏa thuận với Ngân hàng, khách hàng.

2. Trách nhiệm của bên thứ ba:

a) Cung cấp công cụ hoặc chức năng cho phép khách hàng thực hiện trực tuyến:

(i) Tra cứu các dữ liệu mà khách hàng đồng ý cho bên thứ ba xử lý;

(ii) Rút lại sự đồng ý của khách hàng theo quy định của pháp luật.

b) Thông báo cho khách hàng các điều khoản, điều kiện về việc sử dụng dịch vụ và hướng dẫn khách hàng cách thức sử dụng dịch vụ.

c) Ban hành quy trình quản lý rủi ro; quy trình chăm sóc khách hàng; quy trình xử lý khiếu nại; quy trình giải quyết tranh chấp; quy trình bảo đảm hoạt động liên tục và quy trình sử dụng dịch vụ khi cung cấp dịch vụ cho khách hàng.

d) Khai thác và sử dụng dữ liệu đúng phạm vi theo thỏa thuận giữa các bên và theo quy định của pháp luật.

đ) Thông báo kịp thời cho Ngân hàng khi xảy ra sự cố về công nghệ thông tin, an toàn thông tin khi triển khai Open API. Hình thức và thời gian thông báo theo thỏa thuận giữa Ngân hàng và bên thứ ba.

e) Thông báo kịp thời cho Ngân hàng khi có sai lệch dữ liệu và phối hợp với Ngân hàng đính chính, hiệu chỉnh kịp thời. Hình thức và thời gian thông báo theo thỏa thuận giữa Ngân hàng và bên thứ ba.

Chương III

ĐIỀU KHOẢN THI HÀNH

Điều 13. Trách nhiệm của Cục Công nghệ thông tin

1. Chủ trì, phối hợp với các đơn vị liên quan thuộc Ngân hàng Nhà nước Việt Nam xử lý các vướng mắc phát sinh trong quá trình thực hiện Thông tư này.

2. Theo dõi, tổng hợp, báo cáo Thống đốc Ngân hàng Nhà nước tình hình thực hiện của các Ngân hàng theo quy định tại Thông tư này.

3. Kiểm tra Ngân hàng trong việc thực hiện Thông tư này.

Điều 14. Hiệu lực thi hành

Thông tư này có hiệu lực thi hành kể từ ngày 01 tháng 3 năm 2025.

Điều 15. Điều khoản chuyển tiếp

Các Ngân hàng đã kết nối, xử lý dữ liệu trực tiếp với bên thứ ba qua API hoặc Open API để cung cấp dịch vụ cho khách hàng cá nhân trước thời điểm Thông tư này có hiệu lực thi hành phải thực hiện:

1. Lập danh mục API, Open API đang triển khai và kế hoạch thực hiện chi tiết bảo đảm tuân thủ quy định Thông tư này gửi Ngân hàng Nhà nước Việt Nam (thông qua Cục Công nghệ thông tin), hoàn thành trước ngày 01 tháng 7 năm 2025.

2. Tuân thủ các quy định tại Thông tư này, hoàn thành trước ngày 01 tháng 3 năm 2027.

Điều 16. Tổ chức thực hiện

Thủ trưởng các đơn vị thuộc Ngân hàng Nhà nước Việt Nam, ngân hàng thương mại, ngân hàng hợp tác xã, chi nhánh ngân hàng nước ngoài chịu trách nhiệm tổ chức thực hiện Thông tư này./.

 


Nơi nhận:
- Như Điều 16;
- Ban Lãnh đạo NHNN;
- Văn phòng Chính phủ;
- Bộ Tư pháp (để kiểm tra);
- Công báo;
- Cổng TTĐT của NHNN;
- Lưu: VP, PC, CNTT (03 bản).

KT. THỐNG ĐỐC
PHÓ THỐNG ĐỐC




Phạm Tiến Dũng

 

PHỤ LỤC 01

ĐẶC TẢ TIÊU CHUẨN KỸ THUẬT CÁC OPEN API TRONG NGÀNH NGÂN HÀNG
(Ban hành kèm theo Thông tư số 64/2024/TT-NHNN ngày 31 tháng 12 năm 2024 của Thống đốc Ngân hàng Nhà nước Việt Nam)

Bảng Thuật ngữ

STT

Thuật ngữ

Mô tả

1

PSU (Payment Service User)

Khách hàng

2

TPP (Third Party Provider)

Bên thứ ba

3

Bank Auth Server

Hệ thống xác nhận của Ngân hàng

4

Bank Open API

Hệ thống của Ngân hàng

5

access_token

Mã truy cập

6

refresh_token

Mã làm mới

7

UUID (Universally Unique Identifier)

Mã định danh duy nhất

8

INF (INFormation)

Các Open API truy vấn thông tin tỷ giá, lãi suất của Ngân hàng

9

AIS (Account Information Service)

Các Open API truy vấn thông tin của khách hàng

10

PIS (Payment Initiation Service)

Các Open API khởi tạo thanh toán

11

EWLTS (Ewallet Service)

Các Open API nạp tiền vào ví điện tử, rút tiền ra khỏi ví điện tử

 

Bảng Danh mục các Open API chia theo các nhóm quy định tại Điều 6

STT

Danh sách Open API

I

Open API truy vấn thông tin tỷ giá, lãi suất của Ngân hàng (điểm a khoản 1)

1

API Lấy thông tin lãi suất

2

API Lấy thông tin tỷ giá

II

Open API truy vấn thông tin của khách hàng (điểm b khoản 1)

1

API Xác nhận và lấy sự đồng ý của khách hàng

2

API Lấy mã truy cập

3

API Làm mới mã truy cập

4

API Thu hồi mã truy cập

5

API Lấy danh sách tài khoản

6

API Lấy thông tin tài khoản

7

API Lấy lịch sử giao dịch

III

Open API khởi tạo thanh toán, nạp tiền vào ví điện tử, rút tiền ra khỏi ví điện tử (điểm c khoản 1)

A

Open API khởi tạo thanh toán

1

API Khởi tạo thanh toán

2

API Xác nhận khách hàng luồng Redirect

3

API Lấy mã truy cập luồng Redirect

4

API Cập nhật trạng thái xác nhận thanh toán của khách hàng luồng Decoupled

5

API Xác nhận thanh toán

6

API Lấy trạng thái giao dịch

7

API Lấy trạng thái xác nhận thanh toán của khách hàng luồng Decoupled

B

Open API Nạp tiền vào ví điện tử

1

API Nạp ví điện tử

2

API Xác nhận OTP

3

API Cập nhật trạng thái xác nhận nạp ví điện tử của khách hàng luồng Decoupled

4

API Lấy trạng thái xác nhận nạp ví điện tử của khách hàng luồng Decoupled

5

API Xác nhận nạp ví điện tử

6

API Lấy trạng thái giao dịch

C

Open API Rút tiền ra khỏi ví điện tử

 

1. Nguyên tắc và quy định kỹ thuật chung

- Đường dẫn của các Open API quy định tại Phụ lục này được đặt tên theo nguyên tắc thống nhất như sau: “https://<domain>/api/v1/….”

- Tham số trong các Open API quy định tại Phụ lục này là tối thiểu.

- Bên thứ ba (TPP) sử dụng mã số thuế hợp lệ còn hoạt động tại Việt Nam (TPP-ID) làm mã định danh.

- Ngân hàng sử dụng mã ngân hàng dùng trong hoạt động nghiệp vụ ngân hàng do Ngân hàng Nhà nước Việt Nam cấp cho các ngân hàng (Provider-ID) làm mã định danh.

- Sau khi kết nối và bảo đảm an toàn truyền thông giữa Ngân hàng và TPP theo tiêu chuẩn quy định tại Phụ lục 02, TPP phải đăng ký mã định danh của ứng dụng (client_id) và mã xác nhận định danh (client_secret) với Ngân hàng.

- Ngân hàng quản lý kết nối và quyền truy cập Open API với các TPP theo chuẩn OAuth 2.0 Authorization Framework trong RFC 6749. Tùy theo các nhóm API, các Ngân hàng sử dụng các luồng lấy mã truy cập trong RFC 6749 như sau:

+ Client credentials grant flow (mục 4.4 trong RFC 6749).

+ Authorization code grant flow (mục 4.1 trong RFC 6749) và kết hợp kỹ thuật PKCE trong RFC 7636 đối với một số API lấy mã truy cập.

- Căn cứ vào quy định tại Thông tư, phạm vi cung cấp Open API của các Ngân hàng chia thành các nhóm sau: INF, AIS, PIS và EWLTS.

- Thời gian hiệu lực của token cho từng nhóm nêu trên được quy định như sau:

+ Authorization Code (GET/authorize): loại token sử dụng một lần, thời gian hiệu lực 180 giây.

+ Access Token với grant_type là client_credentials (POST/token): thời gian hiệu lực tối đa 3600 giây.

+ Access Token với grant_type là authorization_code (POST/token): đối với nhóm AIS thời gian hiệu lực tối đa 3600 giây; đối với nhóm PIS token sử dụng một lần và có thời gian hiệu lực tối đa 300 giây.

+ Refresh token với grant_type là refresh_token (POST/token): chỉ áp dụng cho nhóm AIS, thời gian hiệu lực theo quy định đồng ý chia sẻ dữ liệu khách hàng tại khoản 6 Điều 11. Trong khoảng thời gian refresh_token đang còn hiệu lực, TPP có thể sử dụng refresh_token để lấy access_token mới từ hệ thống xác nhận của Ngân hàng mà không cần yêu cầu khách hàng phải thực hiện lại luồng lấy mã truy cập tại mục 3 phụ lục này.

- Thời gian hiệu lực của consentId (giá trị được sinh ra sau khi xác thực thành công khách hàng theo luồng Decoupled trong các nhóm PIS; EWLTS và luồng OTP nhóm EWLTS) là 300 giây.

- Giá trị của cột “Bắt buộc” trong các bảng mô tả các Open API phía dưới được quy định như sau:

+ M: bắt buộc.

+ O: tùy chọn.

+ C: điều kiện.

- Các Open API có tham số trong Body được ký theo tiêu chuẩn RFC 7515 dạng Detached JWS.

- Các thành phần trong các hình vẽ luồng thực hiện trong Phụ lục này được thể hiện ở mức logic.

2. Các Open API truy vấn thông tin tỷ giá, lãi suất của Ngân hàng (điểm a khoản 1 Điều 6)

Hình 1: Luồng truy vấn thông tin tỷ giá, lãi suất của Ngân hàng (INF)

- Mô tả chi tiết luồng:

+ Bước 1: Trên ứng dụng của TPP, khách hàng thực hiện yêu cầu truy vấn thông tin tỷ giá hoặc lãi suất của một ngân hàng.

+ Bước 2: TPP thực hiện yêu cầu lấy access_token theo tiêu chuẩn OAuth2.0 với grant_type là client_credentials (Chi tiết được mô tả tại mục 4.4 trong RFC 6749).

+ Bước 2.1. Hệ thống xác nhận của Ngân hàng kiểm tra thông tin trong yêu cầu và phản hồi cho TPP access_token.

Nếu khách hàng yêu cầu truy vấn thông tin lãi suất thì thực hiện tiếp bước 3:

+ Bước 3: TPP thực hiện gửi yêu cầu truy vấn lãi suất tới hệ thống của Ngân hàng thông qua API “API Lấy thông tin lãi suất” tại mục 2.1

+ Bước 3.1. Hệ thống của Ngân hàng phản hồi kết quả cho TPP.

+ Bước 3.2. Ứng dụng của TPP hiển thị kết quả trên giao diện cho khách hàng.

Nếu khách hàng yêu cầu truy vấn thông tin tỷ giá thì thực hiện tiếp bước 4:

+ Bước 4: TPP thực hiện gửi yêu cầu truy vấn tỷ giá tới hệ thống của Ngân hàng thông qua API “API Lấy thông tin tỷ giá” tại mục 2.2

+ Bước 4.1. Hệ thống của Ngân hàng phản hồi kết quả cho TPP.

+ Bước 4.2. Ứng dụng của TPP hiển thị kết quả trên giao diện cho khách hàng.

2.1. API Lấy thông tin lãi suất

Endpoint

/v1/interestrate?currency={currency}

Method

GET

Scope

INF

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.4 trong RFC 6749 (với grant_type là client_credentials).

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID.

PSU-IP-Address

String [50]

O

Địa chỉ IP của khách hàng.

Giá trị này phải ở dạng Ipv4 hoặc Ipv6.

PSU-User-Agent

String [200]

O

Thông tin trình duyệt trong trường hợp khách hàng sử dụng ứng dụng web của TPP hoặc các thông tin khác trong trường hợp khách hàng sử dụng ứng dụng khác của TPP.

PSU-Device-OS

String [100]

O

Hệ điều hành trên thiết bị (máy tính/di động,…) của khách hàng.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

TPP-ID

String [15]

M

Mã định danh của TPP được quy định tại Mục 1.

Client-ID

String [50]

O

Giá trị client_id được nêu tại Mục 1.

- Query parameter:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

currency

String [3]

M

Loại tiền tệ quy định theo mã của bộ ISO 4217 với 3 ký tự viết hoa.

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

String

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Mức 2

Loại dữ liệu

Bắt buộc

Mô tả

interests

 

Array

M

Danh sách lãi suất

 

currency

String [3]

M

Loại tiền tệ quy định theo mã của bộ ISO 4217 với 3 ký tự viết hoa.

 

productCode

String [100]

O

Mã loại sản phẩm tiền gửi

 

productDesc

String [300]

M

Mô tả loại sản phẩm tiền gửi

 

termCode

String [100]

M

Kỳ hạn gửi

 

minAmount

Number

M

Số tiền gửi tối thiểu

 

customerType

String [4]

M

Loại khách hàng theo ISO 20022.

Giá trị mặc định: “PRVT” (Khách hàng cá nhân)

 

interestRate

String [5]

M

Lãi suất

 

effectiveDate

Datetime

M

- Ngày hiệu lực.

- Định dạng: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

 

additionalInfo

Object

O

Thông tin bổ sung (nếu có)

+ Error Code: Tham chiếu tại mục 7.2.1. Định dạng phản hồi lỗi và 7.2.2 Bảng mã lỗi chung.

2.2. API Lấy thông tin tỷ giá

Endpoint

/v1/exchangerate?currency={currency}

Method

GET

Scope

INF

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.4 trong RFC 6749 (với grant_type là client_credentials).

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID

PSU-IP-Address

String [50]

O

Địa chỉ IP của khách hàng. Giá trị này phải ở dạng Ipv4 hoặc Ipv6.

PSU-User-Agent

String [200]

O

Thông tin trình duyệt trong trường hợp khách hàng sử dụng ứng dụng web của TPP hoặc các thông tin khác trong trường hợp khách hàng sử dụng ứng dụng khác của TPP.

PSU-Device-OS

String [100]

O

Hệ điều hành trên thiết bị (máy tính/ di động,…) của khách hàng.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

TPP-ID

String [15]

M

Mã định danh của TPP được quy định tại Mục 1.

Client-ID

String [50]

O

Giá trị client_id được nêu tại Mục 1.

- Query parameter:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

currency

String [3]

O

Loại tiền tệ quy định theo mã của bộ ISO 4217 với 3 ký tự viết hoa.

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

String

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Mức 2

Loại dữ liệu

Bắt buộc

Mô tả

rates

 

Array

M

Danh sách tỷ giá

 

currency

String [3]

M

Loại tiền tệ quy định theo mã của bộ ISO 4217 với 3 ký tự viết hoa

 

buyCashRate

Number

M

Tỷ giá mua vào bằng tiền mặt

 

buyTransferRate

Number

M

Tỷ giá mua vào bằng chuyển khoản

 

sellCashRate

Number

M

Tỷ giá bán ra bằng tiền mặt

 

sellTransferRate

Number

M

Tỷ giá bán ra bằng chuyển khoản

 

additionalInfo

Object

O

Thông tin bổ sung (nếu có)

applyDate

 

DateTime

M

- Thời điểm áp dụng tỷ giá trên hệ thống của Ngân hàng.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

+ Error Code: Tham chiếu tại mục 7.2.1. Định dạng phản hồi lỗi và 7.2.2 Bảng mã lỗi chung.

3. Các Open API truy vấn thông tin của khách hàng (điểm b khoản 1 Điều 6)

Chỉ áp dụng với các truy vấn mà khách hàng chủ động thực hiện trên ứng dụng của TPP.

- Luồng lấy mã truy cập của khách hàng được thực hiện khi lấy sự đồng ý chia sẻ dữ liệu của khách hàng được khởi tạo trên ứng dụng của TPP được mô tả như sau:

Hình 2: Luồng lấy mã truy cập

+ Bước 1: Khách hàng đăng nhập vào ứng dụng của TPP và thực hiện dịch vụ liên quan tới sự đồng ý chia sẻ dữ liệu của khách hàng do TPP cung cấp.

● Nếu khách hàng chưa thực hiện đồng ý chia sẻ dữ liệu hoặc đã hết thời gian đồng ý được quy định tại khoản 6 Điều 11 thì tiếp tục thực hiện các Bước từ 1.1 đến Bước 2.4.

● Nếu thời gian đồng ý còn hiệu lực và access_token hết hiệu lực thì thực hiện tiếp từ Bước 3.

+ Bước 1.1. Hệ thống của TPP sẽ điều hướng khách hàng tới trang xác nhận của Ngân hàng.

+ Bước 2: Khách hàng được điều hướng tới trang xác nhận của Ngân hàng để lấy sự đồng ý chia sẻ dữ liệu của khách hàng thông qua API “Xác nhận và lấy sự đồng ý của khách hàng” tại mục 3.1. Tại đây, khách hàng thực hiện đăng nhập vào hệ thống xác nhận của Ngân hàng.

+ Bước 2.1. Hệ thống xác nhận của Ngân hàng xác nhận khách hàng. Sau khi xác nhận thành công, khách hàng xác nhận đồng ý chia sẻ dữ liệu thông qua giao diện của Ngân hàng.

+ Bước 2.2: Hệ thống xác nhận của Ngân hàng chuyển hướng khách hàng về ứng dụng của TPP kèm mã đồng ý (authorization code). Chi tiết được mô tả tại mục 3.1

+ Bước 2.3: TPP gửi yêu cầu lấy access_token và refresh_token tới hệ thống xác nhận của Ngân hàng. Chi tiết được mô tả tại API “Lấy mã truy cập” tại mục 3.2.

+ Bước 2.3.1: Hệ thống xác nhận của Ngân hàng thực hiện phản hồi kết quả cho TPP. TPP sử dụng access_token để thực hiện các truy vấn liên quan về AIS. TPP sử dụng refresh_token để thực hiện làm mới access_token khi access_token hết hạn thực hiện tại Bước 3.

+ Bước 3: Trường hợp access_token hết hạn, TPP thực hiện gọi yêu cầu làm mới access_token dựa trên refresh_token. Chi tiết được mô tả tại API “Làm mới mã truy cập” tại mục 3.3.

+ Bước 3.1: Hệ thống xác nhận của Ngân hàng thực hiện phản hồi kết quả cho TPP.

- Luồng truy vấn thông tin tài khoản với access_token được lấy ở luồng lấy mã truy cập (hình 2) được mô tả như sau:

Hình 3: Luồng truy vấn thông tin tài khoản

+ Bước 4: Khách hàng gửi yêu cầu lấy danh sách tài khoản trên ứng dụng của TPP.

+ Bước 4.1: TPP gửi yêu cầu lấy danh sách tài khoản tới hệ thống của Ngân hàng thông qua API “Lấy danh sách tài khoản” tại mục 3.5.

+ Bước 4.2: Hệ thống của Ngân hàng phản hồi kết quả cho TPP.

+ Bước 4.3: Ứng dụng TPP hiển thị kết quả danh sách tài khoản trên giao diện cho khách hàng.

Nếu khách hàng yêu cầu lấy thông tin một tài khoản thì thực hiện tiếp bước 5:

+ Bước 5: Khách hàng gửi yêu cầu lấy thông tin một tài khoản trên ứng dụng của TPP.

+ Bước 5.1: TPP gửi yêu cầu lấy thông tin một tài khoản tới hệ thống của Ngân hàng thông qua API “Lấy thông tin tài khoản” tại mục 3.6.

+ Bước 5.2: Hệ thống của Ngân hàng phản hồi kết quả cho TPP.

+ Bước 5.3: Ứng dụng TPP hiển thị kết quả thông tin tài khoản trên giao diện cho khách hàng.

Nếu khách hàng yêu cầu lấy lịch sử giao dịch thì thực hiện tiếp bước 6:

+ Bước 6: Khách hàng gửi yêu cầu lấy lịch sử giao dịch trên ứng dụng của TPP.

+ Bước 6.1: TPP gửi yêu cầu lấy lịch sử giao dịch tới hệ thống của Ngân hàng thông qua API “Lấy lịch sử giao dịch” tại mục 3.7.

+ Bước 6.2: Hệ thống của Ngân hàng phản hồi kết quả cho TPP.

+ Bước 6.3: Ứng dụng TPP hiển thị kết quả thông tin lịch sử giao dịch trên giao diện cho khách hàng.

3.1. API Xác nhận và lấy sự đồng ý của khách hàng

Endpoint

/authorize

Method

GET

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

application/x-www-form-urlencoded

Host

String

O

Xác định tên miền của máy chủ mà request đang gửi đến

- Query Parameter:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

response_type

String

M

Mặc định “code”

client_id

String

M

Giá trị client_id được nêu tại Mục 1.

scope

String

M

Phạm vi truy cập: AIS

redirect_uri

String

M

Đường dẫn dùng để điều hướng khách hàng về ứng dụng của TPP sau khi hệ thống xác nhận của Ngân hàng hoàn thành xác nhận khách hàng.

state

String

M

Giá trị này được TPP tạo ra để duy trì trạng thái giữa request và respone, được sử dụng để ngăn chặn các cuộc tấn công trong lĩnh vực bảo mật web (Cross-site request forgery)

code_challenge

String

M

code_challenge = BASE64URL- ENCODE(SHA256(ASCII(code_verifier)))

Chi tiết tham khảo thêm tại RFC 7636

code_challenge_method

String

O

Thuật toán được sử dụng để tạo ra code_challenge.

Mặc định “S256”

- Response:

+ Hệ thống xác nhận của Ngân hàng điều hướng khách hàng về ứng dụng của TPP thông qua redirect_uri kèm với tham số trên đường dẫn được mô tả ở bảng dưới đây:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

code

String

M

Mã đồng ý

state

String

M

Giá trị state từ request của TPP.

+ Error Code: Tham chiếu tại mục 7.1.2. Mã lỗi API xác nhận và lấy sự đồng ý của khách hàng.

3.2. API Lấy mã truy cập

Endpoint

/token

Method

POST

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

application/x-www-form-urlencoded

Authorization

String

M

Basic BASE64(client_id + “:” + client_secret)

Host

String

O

Xác định tên miền của máy chủ mà request đang gửi đến

- Request body:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

grant_type

String

M

Mặc định “authorization_code”

code

String

M

Mã đồng ý mà Ngân hàng đã cấp cho TPP thông qua luồng lấy mã truy cập.

redirect_uri

String

M

Đường dẫn dùng để điều hướng khách hàng trở lại ứng dụng của TPP. Giá trị này phải khớp với giá trị redirect_uri đã truyền tại API Xác nhận và lấy sự đồng ý của khách hàng mục 3.1.

code_verifier

String

M

Giá trị code_verifier được sử dụng để tạo ra code_challenge mà TPP đã truyền tại API Xác nhận và lấy sự đồng ý của khách hàng mục 3.1. Chi tiết tham khảo thêm RFC 7636.

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

- Response body:

+ HTTP STATUS CODE 200 OK:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

access_token

String

M

Mã truy cập.

refresh_token

String

M

Mã làm mới.

token_type

String

M

Mặc định “Bearer”

expires_in

Number

M

Giá trị hiệu lực của access_token đã được mô tả tại Mục 1 đối với nhóm AIS

scope

String

M

Phạm vi của access_token. Giá trị này khớp với scope tại API Xác nhận và lấy sự đồng ý của khách hàng mục 3.1.

+ Error Code: Tham chiếu tại mục 7.1.2. Mã lỗi API Lấy mã truy cập.

3.3. API Làm mới mã truy cập

Endpoint

/token

Method

POST

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

application/x-www-form-urlencoded

Authorization

String

M

Basic BASE64(client_id + “:” + client_secret)

Host

String

O

Xác định tên miền của máy chủ mà request đang gửi đến

- Request body:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

grant_type

String

M

Mặc định “refresh_token”

refresh_token

String

M

Giá trị refresh_token được trả về tại mục API Lấy mã truy cập

scope

String

O

Phạm vi (scope) không được vượt quá phạm vi (scope) tại API Xác nhận và lấy sự đồng ý của khách hàng mục 3.1.

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

- Response body:

+ HTTP STATUS CODE 200 OK:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

access_token

String

M

Mã truy cập.

refresh_token

String

O

Mã làm mới (Mã này có thể khác giá trị mã làm mới được sinh ra từ luồng lấy mã truy cập với grant_type authorization_code)

token_type

String

M

Mặc định “Bearer”

expires_in

Number

M

Giá trị hiệu lực của access_token đã được mô tả tại Mục 1 đối với nhóm AIS

+ Error code: Tham chiếu tại mục 7.1.2. Mã lỗi API Lấy mã truy cập.

3.4. API Thu hồi mã truy cập

TPP thực hiện gọi API này khi khách hàng thực hiện rút lại sự đồng ý trên ứng dụng của TPP.

Endpoint

/revoke

Method

POST

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

application/x-www-form-urlencoded

Authorization

String

M

Basic BASE64(client_id + “:” + client_secret)

Host

String

O

Xác định tên miền của máy chủ mà request đang gửi đến

- Request body:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

token

String

M

Giá trị của access_token hoặc refresh_token cần thu hồi

token_type_hint

String

O

Loại token cần thu hồi “access_token” hoặc “refresh_token”

- Response:

+ HTTP STATUS CODE 200 OK và không có dữ liệu trả về. Tham khảo chi tiết RFC 7009.

+ Error code: Tham chiếu tại mục 7.1.2. Mã lỗi API Lấy mã truy cập.

3.5. API Lấy danh sách tài khoản

Endpoint

/v1/accounts

Method

GET

Scope

AIS

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.1 trong RFC 6749 (Authorization Code Grant).

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID

PSU-IP-Address

String [50]

O

Địa chỉ IP của khách hàng. Giá trị này phải ở dạng IPv4 hoặc IPv6.

PSU-User-Agent

String [200]

O

Thông tin trình duyệt trong trường hợp khách hàng sử dụng ứng dụng web của TPP hoặc các thông tin khác trong trường hợp khách hàng sử dụng ứng dụng khác của TPP.

PSU-Device-OS

String [100]

O

Hệ điều hành trên thiết bị (máy tính/di động,…) của khách hàng.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

TPP-ID

String [15]

M

Mã định danh của TPP được quy định tại Mục 1.

Client-ID

String [50]

O

Giá trị client_id được nêu tại Mục 1

- Query parameter: Không có

- Response Header:

Tham số

Loại Dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

DateTime

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Mức 2

Mức 3

Loại dữ liệu

Bắt buộc

Mô tả

accounts

 

 

Array

 

Danh sách tài khoản

 

identification

 

Object

M

Thông tin tài khoản của khách hàng mở tại Ngân hàng.

 

 

accountId

String [34]

M

Số tài khoản của khách hàng

 

name

 

String [70]

M

Tên tài khoản của khách hàng.

 

type

 

String [4]

M

Loại tài khoản quy định trong ISO 20022.

 

currency

 

String [3]

M

Loại tiền tệ quy định theo mã của bộ ISO 4217 với 3 ký tự viết hoa.

 

bankCode

 

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1

 

additionalInfo

 

Object

O

Thông tin bổ sung (nếu có)

+ Error Code: Tham chiếu tại mục 7.2.1. Định dạng phản hồi lỗi và 7.2.2 Bảng mã lỗi chung.

3.6. API Lấy thông tin tài khoản

Endpoint

/v1/accounts/information

Method

POST

Scope

AIS

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.1 trong RFC 6749 (Authorization Code Grant).

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID

PSU-IP-Address

String [50]

O

Địa chỉ IP của khách hàng. Giá trị này phải ở dạng IPv4 hoặc IPv6.

PSU-User-Agent

String [200]

O

Thông tin trình duyệt trong trường hợp khách hàng sử dụng ứng dụng web của TPP hoặc các thông tin khác trong trường hợp khách hàng sử dụng ứng dụng khác của TPP.

PSU-Device-OS

String [100]

O

Hệ điều hành trên thiết bị (máy tính/di động,…) của khách hàng.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

TPP-ID

String [15]

M

Mã định danh của TPP được quy định tại Mục 1.

Client-ID

String [50]

O

Giá trị client_id được nêu tại Mục 1

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Request Body:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

accountId

String [34]

M

Số tài khoản của khách hàng.

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

DateTime

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Mức 2

Mức 3

Loại dữ liệu

Bắt buộc

Mô tả

identification

 

 

Object

M

Thông tin số tài khoản của khách hàng

 

accountId

 

String [34]

M

Số tài khoản của khách hàng

name

 

 

String [70]

M

Tên tài khoản của khách hàng.

type

 

 

String [4]

M

Loại tài khoản quy định trong ISO 20022.

currency

 

 

String [3]

M

Loại tiền tệ quy định theo mã của bộ ISO 4217 với 3 ký tự viết hoa.

bankCode

 

 

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1 của Phụ lục.

creationDate

 

 

Datetime

M

- Ngày tạo tài khoản.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

balances

 

 

Array

M

Thông tin về chi tiết số dư

 

amount

 

Object

M

Thông tin về số dư khả dụng

 

 

value

Number

M

Số dư khả dụng trên tài khoản của khách hàng

 

 

currency

String [3]

O

Loại tiền tệ quy định theo mã của bộ ISO 4217 với 3 ký tự viết hoa.

 

dateTime

 

DateTime

M

- Ngày giờ hệ thống thực hiện.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

additionalInfo

 

 

Object

O

Thông tin bổ sung (nếu có)

+ Error Code: Tham chiếu tại mục 7.2.1. Định dạng phản hồi lỗi và 7.2.2 Bảng mã lỗi chung.

3.7. API Lấy lịch sử giao dịch

- Khoảng thời gian cho phép truy vấn lịch sử giao dịch tùy thuộc vào quy định của Ngân hàng.

Endpoint

/v1/accounts/transactions

Method

POST

Scope

AIS

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.1 trong RFC 6749 (Authorization Code Grant).

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID.

PSU-IP-Address

String [50]

O

Địa chỉ IP của khách hàng. Giá trị này phải ở dạng Ipv4 hoặc Ipv6.

PSU-User-Agent

String [200]

O

Thông tin trình duyệt trong trường hợp khách hàng sử dụng ứng dụng web của TPP hoặc các thông tin khác trong trường hợp khách hàng sử dụng ứng dụng khác của TPP.

PSU-Device-OS

String [100]

O

Hệ điều hành trên thiết bị (máy tính/ di động,…) của khách hàng.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

TPP-ID

String [15]

M

Mã định danh của TPP được quy định tại Mục 1.

Client-ID

String [50]

O

Giá trị client_id được nêu tại Mục 1.

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1.

- Request Body:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

accountId

String [34]

M

Số tài khoản của khách hàng.

fromDate

DateTime

M

- Thời gian giao dịch từ ngày.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

toDate

DateTime

M

- Thời gian giao dịch đến ngày.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

page

Number

O

Xác định số trang được yêu cầu. Các trang được đánh số từ 1. Nếu tham số không được chỉ định, API sẽ trả về trang số 1.

size

Number

O

Xác định số lượng bản ghi trên một trang. Nếu tham số không được chỉ định, API sẽ trả về toàn bộ các bản ghi thỏa mãn yêu cầu.

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request- DateTime

DateTime

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Mức 2

Mức 3

Mức 4

Loại dữ liệu

Bắt buộc

Mô tả

pageCount

 

 

 

Number

M

Tổng số trang

pageNumber

 

 

 

Number

M

Trang hiện tại

nextPage

 

 

 

Number

O

Trang tiếp theo

pageSize

 

 

 

Number

M

Số bản ghi trên một trang.

totalCount

 

 

 

Number

O

Tống số bản ghi trên tất cả các trang

transactions

 

 

 

Array

M

Danh sách dữ liệu về lịch sử giao dịch

 

amount

 

 

Object

M

Thông tin số tiền giao dịch

 

 

value

 

Number

M

Số tiền giao dịch

 

 

currency

 

String [3]

M

Loại tiền tệ quy định theo mã của bộ ISO 4217 với 3 ký tự viết hoa

 

balances

 

 

Object

M

Thông tin số dư

 

 

value

 

Number

M

Số dư ở thời điểm giao dịch

 

 

currency

 

String [3]

M

Loại tiền tệ quy định theo mã của bộ ISO 4217 với 3 ký tự viết hoa

 

creditDebitIndicator

 

 

String [4]

M

- CRDT (Credit) nếu là số dư ghi có

- DBIT (Debit) nếu là số dư ghi nợ

 

reversalIndicator

 

 

boolean

O

Chỉ ra một giao dịch đã bị đảo ngược hoặc hủy bỏ. Có thể bao gồm các giao dịch bị hoàn tiền, bị hủy bỏ.

 

valueDate

 

 

DateTime

M

- Thời gian giao dịch.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

 

references

 

 

Object

M

Thông tin mã định danh giao dịch

 

 

instructio nIdentific ation

 

String [70]

M

Mã định danh duy nhất cho mỗi giao dịch

 

relatedParties

 

 

Object

O

Thông tin gửi nhận

 

 

debtor

 

Object

O

Thông tin bên chuyển tiền

 

 

 

name

String [140]

O

Tên của bên chuyển tiền

 

 

 

bankCode

String [8]

O

Mã định danh của Ngân hàng của bên chuyển được quy định tại Mục 1

 

 

 

accountId

String [34]

O

Số tài khoản.

 

 

creditor

 

Object

O

Thông tin bên nhận

 

 

 

name

String [140]

O

Tên của bên nhận

 

 

 

bankCode

String [8]

O

Mã định danh của Ngân hàng của bên nhận được quy định tại Mục 1

 

 

 

accountId

String [34]

O

Số tài khoản của bên nhận

 

additional TransactionInform ation

 

 

String [255]

M

Nội dung giao dịch

 

additionalInfo

 

 

Object

O

Thông tin bổ sung (nếu có)

+ Error Code: Tham chiếu tại mục 7.2.1. Định dạng phản hồi lỗi và 7.2.2 Bảng mã lỗi chung.

4. Các Open API khởi tạo thanh toán (điểm c khoản 1 Điều 6)

Chỉ áp dụng với các lệnh thanh toán mà khách hàng chủ động thực hiện trên ứng dụng của TPP.

- Luồng triển khai các API khởi tạo thanh toán:

Hình 4: Luồng triển khai các API thanh toán (PIS)

- Mô tả chi tiết luồng:

+ Bước 1: Khách hàng thực hiện yêu cầu thanh toán trên ứng dụng của TPP.

+ Bước 2: TPP thực hiện yêu cầu lấy access_token theo tiêu chuẩn OAuth2.0 với grant_type là client_credentials (Chi tiết được mô tả tại mục 4.4 trong RFC 6749).

+ Bước 2.1. Hệ thống xác nhận của Ngân hàng kiểm tra thông tin trong yêu cầu và phản hồi cho TPP access_token.

+ Bước 3: TPP thực hiện gửi yêu cầu khởi tạo thanh toán tới Ngân hàng thông qua API “Khởi tạo thanh toán” tại mục 4.1.

+ Bước 3.1. Hệ thống của Ngân hàng thực hiện kiểm tra các thông tin từ yêu cầu của TPP. Khi các thông tin hợp lệ, hệ thống của Ngân hàng trả về cho TPP một mã giao dịch duy nhất (paymentId), trạng thái consentStatus có giá trị là “AWAITTING_AUTH”.

Với luồng redirect (các bước từ 4 đến 5.1):

+ Bước 4: Sau khi TPP nhận được paymentId, TPP điều hướng khách hàng tới trang xác nhận của Ngân hàng để thực hiện xác nhận thanh toán.

+ Bước 4.1: Khách hàng thực hiện đăng nhập. Chi tiết được mô tả tại API “Xác nhận khách hàng” tại mục 4.2.

+ Bước 4.1.1. Khách hàng xác nhận thông tin thanh toán trên giao diện của Ngân hàng.

+ Bước 4.1.2. Khách hàng xác nhận thanh toán theo các phương thức xác nhận của Ngân hàng bảo đảm tuân thủ quy định của pháp luật.

+ Bước 4.1.3: Hệ thống xác nhận của Ngân hàng chuyển hướng khách hàng về ứng dụng của TPP kèm mã đồng ý (authorization code).

+ Bước 4.2: TPP gửi yêu cầu lấy access_token tới hệ thống xác nhận của Ngân hàng. Chi tiết được mô tả tại API “Lấy mã truy cập” tại mục 4.3

+ Bước 4.2.1: Hệ thống xác nhận của Ngân hàng thực hiện kiểm tra các thông tin mã đồng ý từ yêu cầu của TPP.

+ Bước 4.2.2: Hệ thống xác nhận của Ngân hàng thực hiện phản hồi access_token cho TPP.

+ Bước 5: TPP thực hiện gửi yêu cầu xác nhận thanh toán tới Ngân hàng thông qua API “Xác nhận thanh toán” tại mục 4.5.

+ Bước 5.1. Ngân hàng phản hồi kết quả thanh toán.

Với luồng decoupled (các bước từ 4’ đến 5.1’):

+ Bước 4’: Tùy theo thiết kế ứng dụng của TPP và Hệ thống của Ngân hàng mà Hệ thống xác nhận của Ngân hàng thực hiện hoặc không thực hiện gửi thông báo tới khách hàng có một thanh toán cần được xác nhận.

+ Bước 4.1’: Khách hàng truy cập ứng dụng của Ngân hàng.

+ Bước 4.1.1’: Khách hàng xác nhận thông tin thanh toán trên giao diện của Ngân hàng.

+ Bước 4.1.2’: Khách hàng xác nhận thanh toán theo các phương thức xác nhận do Ngân hàng quy định và bảo đảm tuân thủ quy định của pháp luật.

+ Bước 4.2’: Hệ thống của Ngân hàng gửi yêu cầu cập nhật trạng thái xác nhận thanh toán của khách hàng tới TPP thông qua API “Cập nhật trạng thái xác nhận thanh toán của khách hàng luồng decoupled” tại mục 4.4.

+ Bước 4.2.1’: TPP nhận được trạng thái xác nhận thanh toán của khách hàng và phản hồi kết quả lại cho hệ thống của Ngân hàng, chi tiết tại mục 4.4.

+ Bước 4.3’: Trong trường hợp TPP không nhận được trạng thái xác nhận thanh toán của khách hàng thông qua API “Cập nhật trạng thái xác nhận thanh toán của khách hàng luồng decoupled” tại mục 4.4 từ hệ thống của Ngân hàng thì TPP có thể gửi yêu cầu lấy trạng thái xác nhận thanh toán của khách hàng tới hệ thống của Ngân hàng thông qua API “Lấy trạng thái xác nhận thanh toán của khách hàng luồng Decoupled” tại mục 4.7.

+ Bước 4.3.1’: Hệ thống của Ngân hàng nhận được yêu cầu và phản hồi kết quả lại cho TPP.

+ Bước 5’: TPP thực hiện gửi yêu cầu xác nhận thanh toán tới Ngân hàng thông qua API “Xác nhận thanh toán” kèm thông tin consentId tại mục 4.5.

+ Bước 5.1’: Hệ thống của Ngân hàng nhận được yêu cầu và phản hồi kết quả lại cho TPP, chi tiết tại mục 4.5.

+ Bước 6: Trong trường hợp TPP không nhận được phản hồi kết quả hạch toán từ Ngân hàng, TPP gửi yêu cầu lấy trạng thái giao dịch tới hệ thống của Ngân hàng thông qua API “Lấy trạng thái giao dịch” tại mục 4.6.

+ Bước 6.1: Hệ thống của Ngân hàng nhận được yêu cầu và phản hồi kết quả lại cho TPP.

+ Bước 7: TPP hiển thị kết quả thanh toán cho khách hàng.

4.1. API Khởi tạo thanh toán

Endpoint

/v1/payments

Method

POST

Scope

PIS

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.4 trong RFC 6749 (với grant_type là client_credentials).

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID

PSU-IP-Address

String [50]

O

Địa chỉ IP của khách hàng. Giá trị này phải ở dạng IPv4 hoặc IPv6.

PSU-User-Agent

String [200]

O

Thông tin trình duyệt trong trường hợp khách hàng sử dụng ứng dụng web của TPP hoặc các thông tin khác trong trường hợp khách hàng sử dụng ứng dụng khác của TPP.

PSU-Device-OS

String [100]

O

Hệ điều hành trên thiết bị (máy tính/di động,…) của khách hàng.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

TPP-ID

String [15]

M

Mã định danh của TPP được quy định tại Mục 1.

Client-ID

String [50]

O

Giá trị client_id được nêu tại Mục 1.

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Request Body:

Mức 1

Mức 2

Loại dữ liệu

Bắt buộc

Mô tả

instructionIdentification

 

String [50]

M

Mã giao dịch do TPP khởi tạo

debtor

 

Object

C

Thông tin người thực hiện thanh toán, không bắt buộc trong trường hợp thanh toán với dịch vụ Cổng thanh toán

 

name

String [70]

C

Tên tài khoản của người thực hiện thanh toán

 

accountId

String [34]

C

Số tài khoản của người thực hiện thanh toán

 

bankCode

String [8]

C

Mã định danh của Ngân hàng của người thực hiện thanh toán được quy định tại Mục 1.

remittanceInformation

 

String [255]

M

Nội dung giao dịch

instructedAmount

 

Object

M

Thông tin số tiền giao dịch

 

value

Number

M

Số tiền giao dịch

 

currency

String [3]

M

Loại tiền tệ quy định theo mã của bộ ISO 4217 với 3 ký tự viết hoa.

requestedExecutionDate

 

DateTime

M

- Ngày thực hiện giao dịch.

- Định dạng: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

additionalInfo

 

Object

O

Thông tin bổ sung (nếu có)

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

String

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp.

status

String [4]

M

Mã trạng thái của giao dịch. Theo tiêu chuẩn của ISO 20022.

statusDateTime

DateTime

M

- Thời điểm cập nhật trạng thái.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

consentStatus

String [20]

M

Mặc định: “AWAITTING_AUTH”

+ Error Code: Tham chiếu tại mục 7.2.1. Định dạng phản hồi lỗi và 7.2.2 Bảng mã lỗi chung.

4.2. API Xác nhận khách hàng luồng Redirect

Endpoint

/authorize

Method

GET

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

application/x-www-form-urlencoded

Host

String

O

Xác định tên miền của máy chủ mà request đang gửi đến

- Query Parameter:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

response_type

String

M

Giá trị mặc định “code id_token”

client_id

String

M

Giá trị client_id được nêu tại Mục 1.

scope

String

M

Phạm vi truy cập: PIS

redirect_uri

String

M

Đường dẫn dùng để điều hướng khách hàng về ứng dụng của TPP sau khi hệ thống xác nhận của Ngân hàng hoàn thành xác nhận khách hàng.

state

String

M

Giá trị này được TPP tạo ra để duy trì trạng thái giữa request và respone, được sử dụng để ngăn chặn các cuộc tấn công trong lĩnh vực bảo mật web (Cross-site request forgery)

code_challenge

String

M

code_challenge = BASE64URL- ENCODE(SHA256(ASCII(code_verifier)))

Chi tiết tham khảo thêm tại RFC 7636

code_challenge _method

String

O

Thuật toán được sử dụng để tạo ra code_challenge.

Mặc định “S256”

request

String

M

Json Web Token (JWT).

Sử dụng giá trị paymentId nhận được từ API khởi tạo thanh toán mục 4.1 đưa vào claim trong payload.

Chuỗi thông tin JWT bao gồm:

+ JOSE Header - theo JWT trong RFC 7519, JWS trong RFC 7515. Thuật toán trong header “alg” theo mục 3.1 trong RFC 7518.

+ payload

+ signature - JWS trong RFC 7515

- Response:

+ Hệ thống xác nhận của Ngân hàng điều hướng khách hàng về ứng dụng của TPP thông qua redirect_uri kèm với giá trị ở bảng dưới đây:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

code

String

M

Mã đồng ý

state

String

M

Giá trị state từ request của TPP.

id_token

String

O

Json Web Token (JWT).

Sử dụng giá trị paymentId nhận được từ API khởi tạo thanh toán mục 4.1 đưa vào trong payload.

- Chuỗi thông tin JWT bao gồm:

+ JOSE Header - theo JWT trong RFC 7519, JWS trong RFC 7515. Thuật toán trong header “alg” theo mục 3.1 trong RFC 7518;

+ payload;

+ signature - theo JWS trong RFC7515.

+ Error Code: Tham chiếu tại mục 7.1.2. Mã lỗi API Lấy mã truy cập.

4.3. API Lấy mã truy cập luồng Redirect

Endpoint

/token

Method

POST

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

application/x-www-form-urlencoded

Authorization

String

M

Basic BASE64(client_id + “:” + client_secret)

Host

String

O

Xác định tên miền của máy chủ mà request đang gửi đến

- Request body:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

grant_type

String

M

Mặc định “authorization_code”

code

String

M

Mã đồng ý mà Ngân hàng đã cấp cho TPP thông qua API xác nhận khách hàng luồng Redirect mục 4.2.

redirect_uri

String

M

Đường dẫn dùng để điều hướng khách hàng trở lại ứng dụng của TPP. Giá trị này phải khớp với giá trị redirect_uri đã truyền ở API xác nhận khách hàng luồng Redirect mục 4.2

code_verifier

String

M

Giá trị code verifier được sử dụng để tạo ra code_challenge mà TPP đã truyền tại API xác nhận khách hàng luồng Redirect mục 4.2. Chi tiết tham khảo thêm RFC 7636.

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

- Response body:

+ HTTP STATUS CODE 200 OK:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

access_token

String

M

Mã truy cập.

token_type

String

M

Mặc định “Bearer”

expires_in

Number

M

Giá trị hiệu lực của access_token đã được mô tả tại Mục 1 đối với nhóm PIS.

scope

String

M

Phạm vi của access_token. Giá trị này khớp với scope tại API Xác nhận khách hàng luồng Redirect mục 4.2.

+ Error Code: Tham chiếu tại mục 7.1.2. Mã lỗi API Lấy mã truy cập.

4.4. API Cập nhật trạng thái xác nhận thanh toán của khách hàng luồng Decoupled

- Hệ thống của Ngân hàng thực hiện gọi API này của TPP để trả về trạng thái xác nhận thanh toán của khách hàng cụ thể như sau:

Endpoint

/v1/update-consent

Method

POST

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.4 trong RFC 6749 (với grant_type là client_credentials).

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Request Body:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp cho TPP trong API khởi tạo thanh toán mục 4.1

consentId

String [36]

M

Giá trị do Ngân hàng sinh ra sau khi xác nhận thành công trên Ứng dụng của Ngân hàng trong luồng Decoupled.

consentStatus

String [20]

M

Nhận một trong các giá trị sau:

- “AUTHORISED” khi khách hàng xác nhận thành công.

- “REJECTED” khi khách hàng xác nhận sai quy định của Ngân hàng.

- “CANCEL” khi khách hàng không xác nhận trên Ứng dụng của Ngân hàng.

expireIn

Number

M

Thời gian hiệu lực của consentId quy định tại Mục 1

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

String

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

message

String [20]

M

Mặc định “Success”

+ Error Code: Theo quy định của TPP.

4.5. API Xác nhận thanh toán

Endpoint

/v1/payments/submit

Method

POST

Scope

PIS

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Đối với Redirect Flow: Mã access_token được cấp theo quy định tại mục 4.1 trong RFC 6749 (Authorization Code Grant).

- Đối với Decoupled flow: Mã access_token được cấp theo quy định tại mục 4.4 trong RFC 6749 (với grant_type là client_credentials).

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID

PSU-IP-Address

String [50]

O

Địa chỉ IP của khách hàng. Giá trị này phải ở dạng IPv4 hoặc IPv6.

PSU-User-Agent

String [200]

O

Thông tin trình duyệt trong trường hợp khách hàng sử dụng ứng dụng web của TPP hoặc các thông tin khác trong trường hợp khách hàng sử dụng ứng dụng khác của TPP.

PSU-Device-OS

String [100]

O

Hệ điều hành trên thiết bị (máy tính/di động,…) của khách hàng.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

TPP-ID

String [15]

M

Mã định danh của TPP được quy định tại Mục 1.

Client-ID

String [50]

O

Giá trị client_id được nêu tại Mục 1.

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Request Body:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp cho TPP trong API khởi tạo thanh toán mục 4.1

consentId

String [36]

C

Giá trị do Ngân hàng sinh ra sau khi xác nhận thành công trên Ứng dụng của Ngân hàng trong luồng Decoupled.

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

String

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp cho TPP trong API khởi tạo thanh toán mục 4.1.

status

String [4]

M

Mã trạng thái của giao dịch. Theo tiêu chuẩn của ISO 20022.

statusDateTime

DateTime

M

- Thời điểm cập nhật trạng thái.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

+ Error Code: Tham chiếu tại mục 7.2.1. Định dạng phản hồi lỗi và 7.2.2 Bảng mã lỗi chung.

4.6. API Lấy trạng thái giao dịch

Endpoint

/v1/payments/status

Method

POST

Scope

PIS

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”.

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.4 trong RFC 6749 (với grant_type là client_credentials)

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID.

PSU-IP-Address

String [50]

O

Địa chỉ IP của khách hàng. Giá trị này phải ở dạng IPv4 hoặc IPv6.

PSU-User-Agent

String [200]

O

Thông tin trình duyệt trong trường hợp khách hàng sử dụng ứng dụng web của TPP hoặc các thông tin khác trong trường hợp khách hàng sử dụng ứng dụng khác của TPP.

PSU-Device-OS

String [100]

O

Hệ điều hành trên thiết bị (máy tính/di động,…) của khách hàng.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

TPP-ID

String [15]

M

Mã định danh của TPP được quy định tại Mục 1.

Client-ID

String [50]

O

Giá trị client_id được nêu tại Mục 1.

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1.

- Request Body:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp cho TPP trong API khởi tạo thanh toán mục 4.1.

- Response Header:

Tham số

Loại

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

String

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp cho TPP trong API khởi tạo thanh toán mục 4.1.

status

String [4]

M

Mã trạng thái của giao dịch. Theo tiêu chuẩn của ISO 20022.

statusDateTime

DateTime

M

- Thời điểm cập nhật trạng thái.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

+ Error Code: Tham chiếu tại mục 7.2.1. Định dạng phản hồi lỗi và 7.2.2 Bảng mã lỗi

4.7. API Lấy trạng thái xác nhận thanh toán của khách hàng luồng Decoupled

TPP gọi API này của Ngân hàng để lấy về trạng thái xác nhận thanh toán của khách hàng cụ thể như sau:

Endpoint

/v1/get-consent

Method

POST

Scope

PIS

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.4 trong RFC 6749(với grant_type là client_credentials).

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID

PSU-IP-Address

String [50]

O

Địa chỉ IP của khách hàng. Giá trị này phải ở dạng IPv4 hoặc IPv6.

PSU-User-Agent

String [200]

O

Thông tin trình duyệt trong trường hợp khách hàng sử dụng ứng dụng web của TPP hoặc các thông tin khác trong trường hợp khách hàng sử dụng ứng dụng khác của TPP.

PSU-Device-OS

String [100]

O

Hệ điều hành trên thiết bị (máy tính/di động,…) của khách hàng.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

TPP-ID

String [15]

M

Mã định danh của TPP được quy định tại Mục 1.

Client-ID

String [50]

O

Giá trị client_id được nêu tại Mục 1.

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1.

- Request Body:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp cho TPP trong API khởi tạo thanh toán mục 4.1.

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

String

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp cho TPP trong API khởi tạo thanh toán mục 4.1.

consentId

String [36]

M

Giá trị do Ngân hàng sinh ra sau khi xác nhận thành công trên Ứng dụng của Ngân hàng trong luồng Decoupled.

consentStatus

String [20]

M

Nhận một trong các giá trị sau:

- “AUTHORISED” khi khách hàng xác nhận thành công.

- “REJECTED” khi khách hàng xác nhận sai quy định của Ngân hàng.

- “CANCEL” khi khách hàng không xác nhận trên Ứng dụng của Ngân hàng.

expireIn

Number

M

Thời gian hiệu lực của consentId quy định tại Mục 1.

+ Error Code: Tham chiếu tại mục 7.2.1. Định dạng phản hồi lỗi và 7.2.2 Bảng mã lỗi

5. Các Open API Nạp tiền vào ví điện tử (điểm c khoản 1 Điều 6)

- Luồng triển khai các API Nạp tiền vào ví điện tử (sau đây gọi là nạp ví điện tử) sau khi khách hàng thực hiện liên kết ví điện tử theo quy định. Khách hàng thực hiện nạp ví điện tử từ tài khoản liên kết trên ứng dụng của TPP.

Hình 5: Luồng nạp ví điện tử (EWLTS)

- Mô tả chi tiết luồng:

+ Bước 1: Sau khi đăng nhập vào ứng dụng của TPP, khách hàng thực hiện yêu cầu nạp ví điện tử.

+ Bước 2: TPP thực hiện một yêu cầu lấy access_token theo tiêu chuẩn OAuth2.0 với grant_type là client_credentials (Chi tiết được mô tả tại mục 4.4 trong RFC 6749) tới hệ thống xác nhận của Ngân hàng.

+ Bước 2.1. Hệ thống xác nhận của Ngân hàng kiểm tra thông tin trong yêu cầu và phản hồi access_token cho TPP.

+ Bước 3: TPP thực hiện gửi yêu cầu khởi tạo nạp ví điện tử tới hệ thống của Ngân hàng thông qua API “Nạp ví điện tử” tại mục 5.1

+ Bước 3.1. Hệ thống của Ngân hàng thực hiện kiểm tra các thông tin từ yêu cầu của TPP. Khi các thông tin hợp lệ, hệ thống của Ngân hàng trả về cho TPP một mã giao dịch duy nhất (paymentId).

Việc xác nhận giao dịch nạp ví điện tử theo quy định của Thống đốc Ngân hàng Nhà nước Việt Nam quy định về an toàn, bảo mật cho việc cung cấp dịch vụ trực tuyến trong ngành Ngân hàng. Trong trường hợp thực hiện xác nhận nạp ví điện tử theo OTP hoặc Decoupled thì thực hiện như sau[1]:

Với luồng OTP (các bước từ 4 đến 4.2.2):

+ Bước 4: Hệ thống của Ngân hàng gửi OTP cho khách hàng.

+ Bước 4.1: Khách hàng nhập OTP trên ứng dụng của TPP.

+ Bước 4.2: TPP thực hiện gửi yêu cầu xác nhận OTP tới hệ thống của Ngân hàng thông qua API “Xác nhận OTP” tại mục 5.2.

+ Bước 4.2.1: Hệ thống của Ngân hàng thực hiện kiểm tra các thông tin từ yêu cầu của TPP.

+ Bước 4.2.2: Hệ thống của Ngân hàng thực hiện phản hồi kết quả cho TPP.

Với luồng decoupled (các bước từ 4’ đến 4.3.1’):

+ Bước 4’: Tùy theo thiết kế ứng dụng của TPP và Hệ thống của Ngân hàng mà Hệ thống xác nhận của Ngân hàng thực hiện hoặc không thực hiện gửi thông báo tới khách hàng có giao dịch nạp ví điện tử cần được xác nhận.

+ Bước 4.1’: Khách hàng truy cập vào ứng dụng Ngân hàng.

+ Bước 4.1.1’: Khách hàng xác nhận thông tin nạp ví điện tử.

+ Bước 4.1.2’: Khách hàng xác nhận nạp ví điện tử theo các phương thức xác nhận do Ngân hàng cung cấp và bảo đảm tuân thủ quy định về an toàn, bảo mật cho việc cung cấp dịch vụ trực tuyến trong ngành Ngân hàng.

+ Bước 4.2’: Hệ thống của Ngân hàng gửi yêu cầu cập nhật trạng thái xác nhận nạp ví điện tử của khách hàng tới TPP thông qua API “Cập nhật trạng thái xác nhận nạp ví điện tử của khách hàng luồng decoupled” tại mục 5.3.

+ Bước 4.2.1’: TPP nhận được trạng thái và phản hồi kết quả cho Hệ thống của Ngân hàng, chi tiết tại mục 5.3.

+ Bước 4.3’: Trong trường hợp TPP không nhận được trạng thái xác nhận nạp ví điện tử của khách hàng thông qua API “Cập nhật trạng thái xác nhận nạp ví điện tử của khách hàng luồng Decoupled” tại mục 5.3 từ hệ thống của Ngân hàng thì TPP có thể gửi yêu cầu lấy trạng thái xác nhận nạp ví điện tử của khách hàng tới hệ thống của Ngân hàng thông qua API “Lấy trạng thái xác nhận nạp ví điện tử của khách hàng luồng Decoupled” tại mục 5.4.

+ Bước 4.3.1’: Hệ thống của Ngân hàng nhận được yêu cầu và phản hồi kết quả lại cho TPP.

+ Bước 5: TPP thực hiện gửi yêu cầu xác nhận nạp ví điện tử tới Ngân hàng thông qua API “Xác nhận nạp ví điện tử” tại mục 5.5.

+ Bước 5.1. Ngân hàng phản hồi kết quả cho TPP về trạng thái giao dịch.

+ Bước 6: Trong trường hợp TPP không nhận được phản hồi kết quả hạch toán từ Ngân hàng, TPP gửi yêu cầu lấy trạng thái giao dịch tới hệ thống của Ngân hàng thông qua API “Lấy trạng thái giao dịch” tại mục 5.6.

+ Bước 6.1: Hệ thống của Ngân hàng nhận được yêu cầu và phản hồi kết quả lại cho TPP.

+ Bước 7. TPP hiển thị kết quả thực hiện nạp ví điện tử cho khách hàng.

5.1. API Nạp ví điện tử

Endpoint

/v1/cash-in

Method

POST

Scope

EWLTS

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.4 trong RFC 6749 (với grant_type là client_credentials).

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID.

PSU-IP-Address

String [50]

O

Địa chỉ IP của khách hàng. Giá trị này phải ở dạng IPv4 hoặc IPv6.

PSU-User-Agent

String [200]

O

Thông tin trình duyệt trong trường hợp khách hàng sử dụng ứng dụng web của TPP hoặc các thông tin khác trong trường hợp khách hàng sử dụng ứng dụng khác của TPP.

PSU-Device-OS

String [100]

O

Hệ điều hành trên thiết bị (máy tính/di động,…) của khách hàng.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

TPP-ID

String [15]

M

Mã định danh của TPP được quy định tại Mục 1.

Client-ID

String [50]

O

Giá trị client_id được nêu tại Mục 1.

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1.

- Request Body:

Mức 1

Mức 2

Loại dữ liệu

Bắt buộc

Mô tả

instructionIdentification

 

String [50]

M

Mã giao dịch do TPP khởi tạo

remittanceInformation

 

String [255]

M

Nội dung giao dịch

instructedAmount

 

Object

M

Thông tin số tiền giao dịch

 

value

Number

M

Số tiền giao dịch

 

currency

String [3]

M

Loại tiền tệ quy định theo mã của bộ ISO 4217 với 3 ký tự viết hoa.

requestedExecutionDate

 

DateTime

M

- Ngày thực hiện giao dịch.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

ewalletToken

 

String [30]

M

Mã được sinh ra khi thực hiện liên kết ví điện tử giữa TPP và ngân hàng.

additionalInfo

 

Object

O

Thông tin bổ sung (nếu có).

- Response Header:

Tham số

Bắt buộc

Loại

Mô tả

Content-Type

M

String

Mặc định “application/json”

Request-ID

M

String

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

M

String

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

M

String

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp.

status

String [4]

M

Mã trạng thái của giao dịch. Theo tiêu chuẩn của ISO 20022.

statusDateTime

DateTime

M

- Thời điểm cập nhật trạng thái.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime) , theo tiêu chuẩn RFC 3339.

authenType

String [10]

M

Nhận một trong các giá trị sau:

- “OTP”: thực hiện theo luồng OTP

- “DECOUPLED”: thực hiện theo luồng Decoupled.

- “NONE”: trong trường hợp không thực hiện theo luồng OTP và luồng Decoupled.

additionalInfo

Object

O

Thông tin bổ sung (nếu có)

+ Error Code: Tham chiếu tại mục 7.2.1. Định dạng phản hồi lỗi và 7.2.2 Bảng mã lỗi

5.2. API Xác nhận OTP

Endpoint

/v1/verify-otp-cash-in

Method

POST

Scope

EWLTS

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.4 trong RFC 6749 (với grant_type là client_credentials).

Request- DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID

PSU-IP-Address

String [50]

O

Địa chỉ IP của khách hàng. Giá trị này phải ở dạng IPv4 hoặc IPv6.

PSU-User-Agent

String [200]

O

Thông tin trình duyệt trong trường hợp khách hàng sử dụng ứng dụng web của TPP hoặc các thông tin khác trong trường hợp khách hàng sử dụng ứng dụng khác của TPP.

PSU-Device-OS

String [100]

O

Hệ điều hành trên thiết bị (máy tính/di động,…) của khách hàng.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

TPP-ID

String [15]

M

Mã định danh của TPP được quy định tại Mục 1.

Client-ID

String [50]

O

Giá trị client_id được nêu tại Mục 1.

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1.

- Request Body:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp trả về trong API Nạp ví điện tử mục 5.1.

otp

String [6]

M

Mã OTP Ngân hàng trả về cho khách hàng.

ewalletToken

String [30]

M

Mã được sinh ra khi thực hiện liên kết ví điện tử giữa TPP và ngân hàng.

additionalInfo

Object

O

Thông tin bổ sung (nếu có).

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

String

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp cho TPP trong API Nạp ví điện tử mục 5.1.

consentId

String [36]

M

Giá trị do Ngân hàng sinh ra sau khi verify OTP thành công trong luồng OTP.

expireIn

Number

M

Thời gian hiệu lực của consentId quy định tại Mục 1.

+ Error Code: Tham chiếu tại mục 7.2.1. Định dạng phản hồi lỗi và 7.2.2 Bảng mã lỗi

5.3. API Cập nhật trạng thái xác nhận nạp ví điện tử của khách hàng luồng Decoupled

Ngân hàng thực hiện gọi API này của TPP để trả về trạng thái xác nhận nạp ví điện tử của khách hàng cụ thể như sau:

Endpoint

/v1/update-consent-cash-in

Method

POST

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.4 trong RFC 6749 (với grant_type là client_credentials).

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1.

- Request Body:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp cho TPP trong API Nạp ví điện tử mục 5.1.

consentId

String [36]

M

Giá trị do Ngân hàng sinh ra sau khi xác nhận thành công trên Ứng dụng của Ngân hàng trong luồng Decoupled.

consentStatus

String [20]

M

Nhận một trong các giá trị sau:

- “AUTHORISED” khi khách hàng xác thực thành công.

- “REJECTED” khi khách hàng xác nhận sai quy định của Ngân hàng.

- “CANCEL” khi khách hàng không xác nhận trên Ứng dụng của Ngân hàng.

ewalletToken

String [30]

M

Mã được sinh ra khi thực hiện liên kết ví điện tử giữa TPP và ngân hàng

expireIn

Number

M

Thời gian hiệu lực của consentId quy định tại Mục 1.

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

String

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

message

String [20]

M

Mặc định “Success”

+ Error Code: Theo quy định của TPP.

5.4. API Lấy trạng thái xác nhận nạp ví điện tử của khách hàng luồng Decoupled

TPP gọi API này của Ngân hàng để lấy về trạng thái xác nhận nạp ví điện tử của khách hàng cụ thể như sau:

Endpoint

/v1/get-consent-cash-in

Method

POST

Scope

EWLTS

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.4 trong RFC 6749(với grant_type là client_credentials).

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID

PSU-IP-Address

String [50]

O

Địa chỉ IP của khách hàng. Giá trị này phải ở dạng IPv4 hoặc IPv6.

PSU-User-Agent

String [200]

O

Thông tin trình duyệt trong trường hợp khách hàng sử dụng ứng dụng web của TPP hoặc các thông tin khác trong trường hợp khách hàng sử dụng ứng dụng khác của TPP.

PSU-Device-OS

String [100]

O

Hệ điều hành trên thiết bị (máy tính/di động,…) của khách hàng.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

TPP-ID

String [15]

M

Mã định danh của TPP được quy định tại Mục 1.

Client-ID

String [50]

O

Giá trị client_id được nêu tại Mục 1.

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1.

- Request Body:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp cho TPP trong API Nạp ví điện tử mục 5.1.

ewalletToken

String [30]

M

Mã được sinh ra khi thực hiện liên kết ví điện tử giữa TPP và ngân hàng.

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

String

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp cho TPP trong API Nạp ví điện tử mục 5.1

consentId

String [36]

M

- Giá trị do Ngân hàng sinh ra sau khi xác nhận thành công trên Ứng dụng của Ngân hàng .

consentStatus

String [20]

M

Nhận một trong các giá trị sau:

- “AUTHORISED” khi khách hàng xác nhận thành công.

- “REJECTED” khi khách hàng xác nhận sai quy định của Ngân hàng.

- “CANCEL” khi khách hàng không xác nhận trên Ứng dụng của Ngân hàng.

expireIn

Number

M

Thời gian hiệu lực của consentId quy định tại Mục 1.

ewalletToken

String [30]

M

Mã được sinh ra khi thực hiện liên kết ví điện tử giữa TPP và ngân hàng.

+ Error Code: Tham chiếu tại mục 7.2.1. Định dạng phản hồi lỗi và 7.2.2 Bảng mã lỗi

5.5. API Xác nhận nạp ví điện tử

Endpoint

/v1/submit-cash-in

Method

POST

Scope

EWLTS

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.4 trong RFC 6749 (với grant_type là client_credentials).

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID.

PSU-IP-Address

String [50]

O

Địa chỉ IP của khách hàng. Giá trị này phải ở dạng IPv4 hoặc IPv6.

PSU-User-Agent

String [200]

O

Thông tin trình duyệt trong trường hợp khách hàng sử dụng ứng dụng web của TPP hoặc các thông tin khác trong trường hợp khách hàng sử dụng ứng dụng khác của TPP.

PSU-Device-OS

String [100]

O

Hệ điều hành trên thiết bị (máy tính/di động,…) của khách hàng.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

TPP-ID

String [15]

M

Mã định danh của TPP được quy định tại Mục 1.

Client-ID

String [50]

O

Giá trị client_id được nêu tại Mục 1.

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1.

- Request Body:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp cho TPP trong API Nạp ví điện tử mục 5.1.

consentId

String [36]

C

Giá trị do Ngân hàng sinh ra sau khi xác nhận thành công trên Ứng dụng của Ngân hàng trong luồng Decoupled hoặc xác nhận OTP thành công trong luồng OTP.

ewalletToken

String [30]

M

Mã được sinh ra khi thực hiện liên kết ví điện tử giữa TPP và ngân hàng.

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

String

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp cho TPP trong API Nạp ví điện tử mục 5.1.

status

String [4]

M

Mã trạng thái của giao dịch. Theo tiêu chuẩn của ISO 20022.

statusDateTime

DateTime

M

- Thời điểm cập nhật trạng thái.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

+ Error Code: Tham chiếu tại mục 7.2.1. Định dạng phản hồi lỗi và 7.2.2 Bảng mã lỗi chung.

5.6. API Lấy trạng thái giao dịch

Endpoint

/v1/get-status-cash-in

Method

POST

Scope

EWLTS

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.4 trong RFC 6749 (với grant_type là client_credentials)

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID.

PSU-IP-Address

String [50]

O

Địa chỉ IP của khách hàng. Giá trị này phải ở dạng IPv4 hoặc IPv6.

PSU-User-Agent

String [200]

O

Thông tin trình duyệt trong trường hợp khách hàng sử dụng ứng dụng web của TPP hoặc các thông tin khác trong trường hợp khách hàng sử dụng ứng dụng khác của TPP.

PSU-Device-OS

String [100]

O

Hệ điều hành trên thiết bị (máy tính/di động,…) của khách hàng.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

TPP-ID

String [15]

M

Mã định danh của TPP được quy định tại Mục 1.

Client-ID

String [50]

O

Giá trị client_id được nêu tại Mục 1.

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1.

- Request Body:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp cho TPP trong API Nạp ví điện tử mục 5.1.

ewalletToken

String [30]

M

Mã được sinh ra khi thực hiện liên kết ví điện tử giữa TPP và ngân hàng.

- Response Header:

Tham số

Loại

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

String

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

paymentId

String [35]

M

Mã giao dịch duy nhất do Ngân hàng cung cấp cho TPP trong API Nạp ví điện tử mục 5.1

status

String [4]

M

Mã trạng thái của giao dịch. Theo tiêu chuẩn của ISO 20022.

statusDateTime

DateTime

M

- Thời điểm cập nhật trạng thái.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

+ Error Code: Tham chiếu tại mục 7.2.1. Định dạng phản hồi lỗi và 7.2.2 Bảng mã lỗi

6. Open API Rút tiền ra khỏi ví điện tử (điểm c khoản 1 Điều 6)

- Luồng triển khai API Rút tiền ra khỏi ví điện tử (sau đây gọi là rút ví điện tử):

Hình 6: Luồng rút ví điện tử (EWLTS)

- Mô tả chi tiết luồng:

+ Bước 1: Sau khi đăng nhập vào ứng dụng của TPP, khách hàng thực hiện yêu cầu rút ví điện tử.

+ Bước 2: TPP thực hiện một yêu cầu lấy access_token theo tiêu chuẩn OAuth2.0 với grant_type là client_credentials (Chi tiết được mô tả tại mục 4.4 trong RFC 6749) tới hệ thống xác nhận của Ngân hàng.

+ Bước 2.1. Hệ thống xác nhận của Ngân hàng kiểm tra thông tin trong yêu cầu và phản hồi cho TPP access_token.

+ Bước 3: TPP thực hiện gửi yêu cầu rút ví điện tử tới Ngân hàng theo API mô tả dưới đây.

+ Bước 3.1. Hệ thống của Ngân hàng phản hồi kết quả cho TPP.

+ Bước 3.2. Ứng dụng của TPP hiển thị kết quả cho khách hàng.

Endpoint

/v1/cash-out

Method

POST

Scope

EWLTS

- Request Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Authorization

String

M

- Authorization định dạng: “Bearer + {access_token}”: theo tiêu chuẩn RFC 6750.

- Mã access_token được cấp theo quy định tại mục 4.4 trong RFC 6749(với grant_type là client_credentials).

Request-DateTime

DateTime

M

- Ngày giờ thực hiện.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

Request-ID

String [60]

M

Mã định danh duy nhất cho request, thường ở định dạng UUID.

PSU-IP-Address

String [50]

O

Địa chỉ IP của khách hàng. Giá trị này phải ở dạng IPv4 hoặc IPv6.

PSU-User-Agent

String [200]

O

Thông tin trình duyệt trong trường hợp khách hàng sử dụng ứng dụng web của TPP hoặc các thông tin khác trong trường hợp khách hàng sử dụng ứng dụng khác của TPP.

PSU-Device-OS

String [100]

O

Hệ điều hành trên thiết bị (máy tính/di động,…) của khách hàng.

Provider-ID

String [8]

M

Mã định danh của Ngân hàng được quy định tại Mục 1.

TPP-ID

String [15]

M

Mã định danh của TPP được quy định tại Mục 1.

Client-ID

String [50]

O

Giá trị client_id được nêu tại Mục 1.

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1.

- Request Body:

Mức 1

Mức 2

Loại dữ liệu

Bắt buộc

Mô tả

instructionIdentification

 

String [50]

M

Mã giao dịch do TPP khởi tạo

remittanceInformation

 

String [255]

M

Nội dung giao dịch

instructedAmount

 

Object

M

Thông tin số tiền giao dịch

 

value

Number

M

Số tiền giao dịch

 

currency

String [3]

M

Loại tiền tệ quy định theo mã của bộ ISO 4217 với 3 ký tự viết hoa.

requestedExecutionDate

 

DateTime

M

- Ngày thực hiện giao dịch.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

ewalletToken

 

String [30]

M

Mã được sinh ra khi thực hiện liên kết ví điện tử giữa TPP và ngân hàng

additionalInfo

 

Object

O

Thông tin bổ sung (nếu có)

- Response Header:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

Content-Type

String

M

Mặc định “application/json”

Request-ID

String

M

Giá trị được lấy từ request header trong API của TPP

Request-DateTime

String

M

Giá trị được lấy từ request header trong API của TPP

JWS-Signature

String

M

Chữ ký JWS theo quy định tại Mục 1

- Response Body:

+ HTTP STATUS CODE 200 OK:

Mức 1

Loại dữ liệu

Bắt buộc

Mô tả

status

String [4]

M

Mã trạng thái của giao dịch. Theo tiêu chuẩn của ISO 20022.

statusDateTime

DateTime

M

- Thời điểm cập nhật trạng thái.

- Định dạng: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), theo tiêu chuẩn RFC 3339.

+ Error Code: Tham chiếu tại mục 7.2.1. Định dạng phản hồi lỗi và 7.2.2 Bảng mã lỗi chung.

7. Mã lỗi

7.1. Mã lỗi luồng lấy mã truy cập của khách hàng.

7.1.1. Mã lỗi API xác nhận và lấy sự đồng ý của khách hàng

Trường hợp tham số “redirect_uri” thiếu hoặc không khớp đường dẫn mà TPP đã đăng ký với Ngân hàng. Ngân hàng cần điều hướng khách hàng tới trang thông báo lỗi và mô tả rõ lỗi cho khách hàng.

Trường hợp lỗi như khách hàng từ chối đồng ý hoặc lỗi ở đây không liên quan đến đường dẫn điều hướng “redirect_uri” thì Ngân hàng sẽ thông báo cho TPP bằng cách thêm các giá trị, tham số ở bảng bên dưới vào đường dẫn “redirect_uri”:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

error

String

M

Mã lỗi do hệ thống trả về. Danh sách mã lỗi được áp dụng dựa trên tiêu chuẩn OAuth 2.0. Được liệt kê ở bảng mã lỗi

error_description

String

M

Cung cấp thông tin bổ sung, được sử dụng để hỗ trợ TPP hiểu lỗi đã xảy ra.

state

String

M

Giá trị từ request của TPP.

Bảng mã lỗi:

TT

Tham số

Mô tả

1

INVALID_REQUEST

Request bị thiếu tham số bắt buộc hoặc tham số không hợp lệ, không đúng định dạng.

2

UNAUTHORIZED_CLIENT

TPP không được phép yêu cầu lấy mã đồng ý bằng phương pháp này

3

ACCESS_DENIED

Chủ sở hữu tài nguyên hoặc máy chủ lấy sự đồng ý đã từ chối yêu cầu.

4

UNSUPPORTED_RESPONSE_TYPE

Máy chủ lấy sự đồng ý không hỗ trợ lấy mã đồng ý bằng phương pháp này.

5

INVALID_SCOPE

Phạm vi scope được yêu cầu không hợp lệ, không xác định hoặc không đúng định dạng.

6

SERVER_ERROR

Máy chủ lấy sự đồng ý đã gặp phải một tình trạng không mong muốn khiến nó không thể thực hiện được yêu cầu.

7

TEMPORARILY_UNAVAILABLE

Máy chủ lấy sự đồng ý hiện không thể xử lý yêu cầu do máy chủ tạm thời bị quá tải hoặc bảo trì.

7.1.2. Mã lỗi API Lấy mã truy cập

Máy chủ xác nhận và lấy sự đồng ý trả về mã lỗi HTTP 400 (Bad Request) cho TPP kèm theo chi tiết các lỗi dưới đây và các lỗi này được tham khảo dựa trên mục “5.2 Error Response” của tiêu chuẩn RFC 6749:

Định dạng mã lỗi:

Tham số

Bắt buộc

Diễn giải

error

M

Mã lỗi do hệ thống trả về. Danh sách mã lỗi được áp dụng dựa trên tiêu chuẩn OAuth 2.0 được liệt kê ở bảng mã lỗi.

error_description

O

Cung cấp thông tin bổ sung, được sử dụng để hỗ trợ TPP hiểu lỗi đã xảy ra.

error_uri

O

URI xác định trang web mà con người có thể đọc được cùng với thông tin về lỗi, được sử dụng để cung cấp cho thông tin bổ sung về lỗi.

Bảng mã lỗi:

HTTP CODE

Mã lỗi (Error)

Mô tả

400

INVALID_REQUEST

Request bị thiếu tham số bắt buộc hoặc tham số không hợp lệ, không đúng định dạng.

400

INVALID_CLIENT

Xác nhận thông tin ứng dụng khách không thành công.

400

UNAUTHORIZED_CLIENT

TPP không được phép sử dụng mã loại truy cập này.

400

INVALID_SCOPE

Phạm vi scope được yêu cầu không hợp lệ, không xác định hoặc không đúng định dạng.

400

UNSUPPORTED_GRANT_TYPE

Loại cấp quyền không được máy chủ hỗ trợ.

7.2. Mã lỗi API khác trong phụ lục này

7.2.1. Định dạng phản hồi lỗi

Trong trường hợp có lỗi xảy ra thì hệ thống của Ngân hàng cần trả về nội dung trong body phản hồi theo bảng dưới đây:

Tham số

Loại dữ liệu

Bắt buộc

Mô tả

code

String

M

Mã lỗi trả về và HTTP code tham chiếu tại mục 7.2.2 Bảng mã lỗi chung

description

String

M

Thông tin bổ sung thêm chi tiết về lỗi

7.2.2. Bảng mã lỗi chung

HTTP CODE

CODE

DESCRIPTION

400

ACCOUNT_ID_REQUIRED

Dữ liệu trường accountId không được rỗng

400

ACCOUNT_NOT_EXISTED

Tài khoản không tồn tại

400

CONSENTID_NOT_EXISTED

consentId không tồn tại

400

CREDITOR_ACCOUNTID_ REQUIRED

Dữ liệu trường creditor accountId không được rỗng

400

CREDITOR_ACCOUNTID_ NOT_EXISTED

creditor accountId không tồn tại

400

CREDITOR_BANKCODE_ REQUIRED

Dữ liệu trường creditor bankCode không được rỗng

400

CREDITOR_NAME_REQUIRED

Dữ liệu trường creditor name không được rỗng

400

DEBTOR_ACCOUNTID_NOT_ EXISTED

debtor accountId không tồn tại

400

DEBTOR_ACCOUNTID_ REQUIRED

Dữ liệu trường debtor accountId không được rỗng

400

DEBTOR_NAME_REQUIRED

Dữ liệu trường debtor name không được rỗng

400

EWALLETTOKEN_ REQUIRED

Dữ liệu trường ewalletToken không được rỗng

400

EWALLETTOKEN_NOT_ EXISTED

ewalletToken không tồn tại

400

EXPIRE_CONSENTID

consentId đã hết hạn

400

FROMDATE_INVALID

Dữ liệu trường fromDate không hợp lệ

400

FROMDATE_REQUIRED

Dữ liệu trường fromDate không được rỗng

400

INSTRUCTED_AMOUNT_ CURRENCY_INVALID

Dữ liệu trường instructedAmount currency không hợp lệ

400

INSTRUCTED_AMOUNT_ CURRENCY_REQUIRED

Dữ liệu trường instructedAmount currency không được rỗng

400

INSTRUCTED_AMOUNT_ VALUE_REQUIRED

Dữ liệu trường instructedAmount value không được rỗng

400

INSTRUCTION_IDENTIFICAT ION_REQUIRED

Dữ liệu trường instructionIdentification không được rỗng

400

JWS_SIGNATURE_REQUIRED

Dữ liệu trường JWS-Signature không được rỗng

400

PAGE_INVALID

Dữ liệu trường page không hợp lệ

400

PAYMENTID_REQUIRED

Dữ liệu trường paymentId không được rỗng

400

PAYMENTID_NOT_EXISTED

paymentId không tồn tại

400

PROVIDER_ID_REQUIRED

Dữ liệu trường Provider-ID không không được rỗng

400

PSU_IP_ADDRESS_INVALID

Dữ liệu trường PSU-IP-Address không hợp lệ (Trường hợp có dữ liệu)

400

REMITTANCE_INFORMATIO N_REQUIRED

Dữ liệu trường remittanceInformation không được rỗng

400

REQUEST_DATETIME_ REQUIRED

Dữ liệu trường Request-DateTime không được rỗng

400

REQUEST_ID_REQUIRED

Dữ liệu trường Request-ID không không được rỗng

400

REQUESTED_EXECUTIONDA TE_REQUIRED

Dữ liệu trường requestedExecutionDate không được rỗng

400

SIZE_INVALID

Dữ liệu trường size không hợp lệ

400

TODATE_INVALID

Dữ liệu trường toDate không hợp lệ

400

TODATE_REQUIRED

Dữ liệu trường toDate không được rỗng

400

TPP_ID_REQUIRED

Dữ liệu trường TPP-ID không không được rỗng

400

TPP_UNVERIFIED

TPP chưa được xác nhận

400

OTHER

Lỗi khác liên quan tới yêu cầu API từ phía TPP do ngân hàng mô tả.

401

EXPIRED_TOKEN

OAuth 2 token đã hết hạn.

401

JWS_SIGNATURE_ UNVERIFIED

JWS-Signature xác nhận thất bại

403

FORBIDDEN

Mã thông báo OAuth hợp lệ đã được nhận, nhưng quyền truy cập đã bị từ chối.

405

WRONG_METHOD

Sai phương thức HTTP.

500

INTERNAL_ERROR

Máy chủ gặp phải tình trạng không mong muốn khiến nó không thể thực hiện yêu cầu.

502

BAD_GATEWAY

Máy chủ nhận được phản hồi không hợp lệ từ máy chủ đích.

504

GATEWAY_TIMEOUT

Máy chủ không nhận được phản hồi từ máy chủ đích để hoàn thành yêu cầu.

500

OTHER

Lỗi khác liên quan tới máy chủ xử lý yêu cầu API do ngân hàng mô tả.

 

PHỤ LỤC 02

TIÊU CHUẨN KỸ THUẬT TRIỂN KHAI OPEN API TRONG NGÀNH NGÂN HÀNG
(Ban hành kèm theo Thông tư số 64/2024/TT-NHNN ngày 31 tháng 12 năm 2024 của Thống đốc Ngân hàng Nhà nước Việt Nam)

Số TT

Loại tiêu chuẩn

Ký hiệu tiêu chuẩn

Tên đầy đủ của tiêu chuẩn

Quy định áp dụng

1

Tiêu chuẩn kiến trúc

1.1

Trao đổi dữ liệu

 

 

 

 

 

REST

REpresentational State Transfer

Bắt buộc áp dụng

 

 

SOAP

Simple Object Access Protocol

Khuyến nghị áp dụng đối với các API khác của Ngân hàng.

1.2

Định dạng trao đổi dữ liệu

 

 

 

 

 

JSON

JavaScript Object Notation

Bắt buộc áp dụng

 

 

XML

eXtensible Markup Language

Khuyến nghị áp dụng đối với các API khác của Ngân hàng

2

Tiêu chuẩn dữ liệu

 

Định dạng dữ liệu

ISO 20022

International Organization for Standardization 20022

Khuyến nghị áp dụng một trong các tiêu chuẩn đối với API khác của Ngân hàng

ISO 8583

International Organization for Standardization 8583

OFX

Open Financial Exchange

ISO 4217

International Organization for Standardization 4217

Bắt buộc áp dụng

RFC 3339

Date and Time on the Internet: Timestamps

Bắt buộc áp dụng

3

Tiêu chuẩn an toàn thông tin

3.1

Giải pháp xác thực, lấy sự đồng ý của khách hàng

RFC 6749

The OAuth 2.0 Authorization Framework

- Bắt buộc áp dụng theo tiêu chuẩn RFC 6749, RFC 6750, RFC 7636.

- Có thể kết hợp tiêu chuẩn RFC 6749, RFC 6750 với các tiêu chuẩn RFC 7636, OIDC tùy theo các trường hợp áp dụng

RFC 6750

The OAuth 2.0 Authorization Framework: Bearer Token Usage

RFC 7636

Proof Key for Code Exchange by OAuth Public Clients

RFC 7009

OAuth 2.0 Token Revocation

OIDC

OpenID Connect

SAML v2.0

Security Assertion Markup Language version 2.0

Khuyến nghị áp dụng đối với API khác của Ngân hàng

3.2

An toàn tầng giao vận

HTTPS

HyperText Transfer Protocol Secure

Bắt buộc áp dụng

TLS v1.2 trở lên[1]

Transport Layer Security version 1.2+

Bắt buộc áp dụng

3.3

Giải thuật mã hóa

TCVN 7816:2007

Công nghệ thông tin - Kỹ thuật mật mã - Thuật toán mã dữ liệu AES

Khuyến nghị áp dụng

PKCS #1

RSA Cryptography Standard

Khuyến nghị áp dụng

Sử dụng phiên bản 2.1 trở lên và lược đồ RSAES-OAEP để mã hóa. Độ dài khóa tối thiểu là 2048 bit

ECC

Elliptic Curve Cryptography

Khuyến nghị áp dụng. Độ dài khóa tối thiểu 256 bit

JWE

JSON Web Encryption

Khuyến nghị áp dụng theo tiêu chuẩn RFC 7516

TCVN 11367- 2:2016

Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật mã - Phần 2: Mật mã phi đối xứng.

Khuyến nghị áp dụng

3.4

Chữ ký điện tử

JWS

JSON Web Signature

Bắt buộc áp dụng:

- Theo tiêu chuẩn RFC 7515.

- Độ dài khóa tối thiểu là 2048 bit đối với RSA và 256 bit đối với ECDSA.

PKCS #1

RSA Cryptography Standard

Khuyến nghị áp dụng một trong các tiêu chuẩn.

- Đối với tiêu chuẩn RSA:

+ Sử dụng phiên bản 2.1 trở lên.

+ Độ dài khóa tối thiểu là 2048 bit.

- Đối với tiêu chuẩn ECDSA:

Độ dài khóa tối thiểu là 256 bit.

ECDSA

Elliptic Curve Digital Signature Algorithm

TCVN 7635:2007

Kỹ thuật mật mã - Chữ ký số

3.5

Giải thuật băm cho chữ ký số

FIPS PUB 180-4

Secure Hash Standard

Khuyến nghị áp dụng một trong các hàm băm sau: SHA2-56, SHA-384, SHA-512, SHA-512/256, SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256

FIPS PUB 202

SHA-3 Standard: Permutation Based Hash and Extendable Output Functions

3.6

An toàn Hệ thống thông tin

ISO27001:2022

International Organization for Standardization 27001:2022

Bắt buộc áp dụng một trong hai tiêu chuẩn.

TCVN 11930:2017

Công nghệ thông tin - Các kỹ thuật an toàn - Yêu cầu cơ bản về an toàn hệ thống thông tin theo cấp độ

 

 



[1] Trường hợp sử dụng Soft OTP thì có thể thực hiện theo luồng OTP hoặc luồng Decoupled.

[1] Khuyến nghị áp dụng mTLS.

THE STATE BANK OF VIETNAM
--------

THE SOCIALIST REPUBLIC OF VIETNAM
Independence - Freedom - Happiness
---------------

No. 64/2024/TT-NHNN

Hanoi, December 31, 2024

 

CIRCULAR

ON IMPLEMENTATION OF OPEN APPLICATION PROGRAMMING INTERFACE IN BANKING SECTOR

Pursuant to the Law on State Bank of Vietnam dated June 16, 2010;

Pursuant to the Law on Credit Institutions dated January 18, 2024;

Pursuant to the Law on Electronic Transactions dated June 22, 2023;

Pursuant to the Law on Cybersecurity dated November 19, 2015;

Pursuant to Decree No. 52/2024/ND-CP dated May 15, 2024 of the Government on cashless payments;

Pursuant to Decree No. 13/2023/ND-CP dated April 17, 2023 of the Government on protection of personal data;

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



At the request of the Director General of the Department of Information Technology;

The Governor of the State Bank of Vietnam promulgates the Circular on implementation of Open Application Programming Interface in banking sector.

Chapter I

GENERAL REGULATIONS

Article 1. Scope

1. This Circular promulgates regulations on implementation of Open Application Programming Interface in banking sector.

2. This Circular does not regulate the connection and processing of state secret data. The processing of state secret data shall be in accordance with the law.

3. This Circular does not regulate the direct connection and resolution of data between:

a) The information system of banks and the information system of organizations via Application Programming Interface to serve internal affairs of those organizations;

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Article 2. Regulated entities

1. Commercial banks, cooperative banks, foreign bank branches (hereinafter referred to as “banks”).

2. Relevant organizations and individuals in implementation of services via Application Programming Interface in banking sector

Article 3. Definitions

For the purposes of this Circular, the terms below shall be construed as follows:

1. Application Programming Interface (hereinafter referred to as “API”) is an interface that allows communication between software applications within an organization or between organizations.

2. Open API in banking sector (Open API) is a collection of APIs provided by banks to third parties for direct connection and data processing to provide services to customers. Open API includes basic Open API and other Open APIs

3. Open API testing system is the information system of banks provided to third parties to test Open APIs before official implementation.

4. Customers are

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



5. Third party is an organization or another bank that has a contractual agreement with the bank to connect, process data through Open APIs to provide services to customers.

6. Customer consent is the clear, voluntary expression affirming a customer’s permission for the processing of the his/her personal data.

Article 4. General principles

Banks, customers, third parties (hereinafter referred to as parties) shall comply with following principles during implementation of Open API:

1. Comply with the law on protection, provision of customer data and protection of personal data. The processing of personal data of a customer serves only the respective customer, unless otherwise prescribed by law.

2. Data during processing shall be managed, stored, exploited, and used for the intended purpose as prescribed in the contract between parties and in accordance with the law.

3. Data during processing shall be continuously updated and accurate. In case of discrepancies, timely corrections and adjustments shall be implemented according to the agreement between parties.

Chapter II

SPECIFIC REGULATIONS ON IMPLEMENTATION OF OPEN API

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Article  5. Principles of implementation of Open API

1. When implementing basic Open APIs prescribed in Article 6 of this Circular, banks shall comply with regulations in Appendices 01 and 02 attached to this Circular.

2. When implementing Open APIs other than those prescribed in Article 6 of this Circular according to practical needs and in accordance with the law, banks shall comply with regulations in Appendix 02 attached to this Circular.

3. Banks shall only implement Open API prescribed in point c clause 1 Article 6 for third parties which are banks and payment intermediary service providers.

Article 6. List of Open APIs

1. The list of basic Open APIs includes following groups:

a) Open APIs for querying exchange rates and interest rates of banks including API for retrieval of data on interest rates, API for retrieval of exchange rates;

b) Open APIs for querying data of customers including: API for authorization and consent, API for retrieval of access code, API for refresh of access code, API for revocation of access code, API for retrieval of account list, API for retrieval of account data, API for retrieval of transaction history;

c) Open APIs for payment initiation, e-wallet cash-in, and e-wallet cash-out including:

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 (ii) Open APIs for e-wallet cash-in including: API for e-wallet deposit, API for OTP confirmation, API for update of confirmation status of e-wallet deposit via Decoupled Flow, API for retrieval of confirmation status of e-wallet deposit via Decoupled Flow, API for e-wallet deposit confirmation, API for retrieval of transaction status;

(iii) Open API for e-wallet cash-out.

2. The detailed list of Open APIs in clause 1 of this Article is promulgated  in Appendix 01 attached to this Circular.

Article 7. List of technical standards

1. The technical standards for implementing Open API include architecture standards, data standards, and security standards.

2. The technical standards for implementing Open API in banking sector is promulgated in Appendix 02 attached to this Circular.

Article 8. Contracts between banks and third parties

The bank and the third party shall enter into a contract on implementing Open API including following content:

1. Commitment to data security including an agreement to ensure safety and security of data during data processing via Open API provided by the bank.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



3. The third party’s responsibility to notify the bank when they detect any personnel violating cybersecurity network during implementation of Open API.

4. Information on Open API  services provided to customers.

5. Information on Open API service fees for customers (if any).

6. Terms regarding the evaluation and classification of the information system of third parties, which connects and transmits data via Open API, in accordance with regulations on assurance of information system security at different levels of the Government.

7. Access rights of third parties during implementation of Open API.

8. Termination clause.

Article 9. Disclosure of information on Open API

Before connecting and processing data with the third parties, banks shall disclose information on Open AI on their official websites including the following content:

1. Information on Open API testing system.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Section 2. RIGHTS AND RESPONSIBILITIES OF BANKS AND THIRD PARTIES

Article 10. Rights of banks

1. Request third parties to provide information related to connection and processing data via Open API.

2. Other rights as prescribed in the contract with the third parties.

Article 11. Responsibilities of banks

1. Complete information technology infrastructure for connection and processing data via Open API.

2. Formulate and complete guidelines on connection and processing data.

3. Ensure the quality of data during the implementation of Open API. Timely notify the third parties in case of data discrepancies, and collaborate with the third parties to correct and adjust them promptly.

4. Ensure cybersecurity of the information system implementing Open API in accordance with level 3 of the Government on levels of information system security and of the State Bank of Vietnam on the information system in banking sector.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Search the data that customers have allowed the third party to process.

b) Withdraw their consent in accordance with the law.

6. Set a time limit of up to 180 days for accessing customer data after obtaining customer consent, except in cases where there is another agreement between customers and banks.

7. Provide information on the progress of implementation of Open API to the State Bank of Vietnam (through the Department of Information Technology) upon request.

8. Collaborate with the third parties based on agreements and with competent authorities in resolving issues or disputes during the implementation of Open API.

9. Implement a technological solution to limit the number of automated queries for customer information from third parties.

10. Take responsibility in selecting, appraising, supervising and managing the third parties.

11. Update or revoke the right to access to the data of the third parties in accordance with contract changes.

12. Supervise access activities:

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



b) Record a comprehensive log  of all Open AI usage of the third-parties at least 03 months and store the data for at least 01 year for inspection (if necessary).

Article 12. Rights and responsibilities of third parties

1. The third parties have the following rights according to contracts or agreements with banks and customers.

2. Responsibilities of third parties:

a) Provide tools and fuctions for customers to:

(i) Search the data that customers have allowed the third party to process.

(ii) Withdraw their consent in accordance with the law.

b) Notify the customers on clauses, requirements for using the services and provide guidelines for customers to use the services.

c) Issue procedures for risk management, customer care, complaint resolution, dispute resolution, assurance of continuous operation, and use of services when providing services to customer.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



dd) Promptly notify the banks if there are incidents related to information technology or information security when implementing Open API. The method and time of notification shall be in accordance with the agreement between banks and third parties.

e) Timely notify the banks in case of data discrepancies, and collaborate with the banks to correct and adjust them promptly. The method and time of notification shall be in accordance with the agreement between banks and third parties

Chapter III

IMPLEMENTATION CLAUSE

Article 13. Responsibilities of the Department of Information Technology

1. Take charge, collaborate with relevant units affiliated to the State Bank of Vietnam to resolve issues during the implementation of this Circular.

2. Supervise, consolidate, report the Governor of the State Bank of Vietnam the implementation status of banks in accordance with this Circular.

3. Inspect banks implementing this Circular.

Article 14. Effect

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Article 15. Transitional provision

Banks that have already connected and directly processed data with third parties via API or Open API to provide services to individual customers before the effective date of this Circular must:

1. Formulate a list of APIs, Open APIs that they are implementing and a detailed implementation plan in accordance with this Circular, and report to the State Bank of Vietnam (through the Department of Information Technology) by July 01, 2025.

2. Comply with regulations in this Circular by March 01, 2027.

Article 16. Implementation

Heads of units affiliated to the State Bank of Vietnam, commercial banks, cooperative banks, foreign bank branches shall implement this Circular./.

 

 

PP. THE GOVERNOR
DEPUTY GOVERNOR




Pham Tien Dung

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



APPENDIX 01

TECHNICAL SPECIFICATIONS FOR OPEN APIs IN THE BANKING SECTOR
(Attached with Circular No. 64/2024/TT-NHNN dated December 31, 2024 of the Governor of the State Bank of Vietnam)

Glossary

No.

Terminology

Description

1

PSU (Payment Service User)

Customer

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



TPP (Third Party Provider)

Third party provider

3

Bank Auth Server

Bank authorization server

4

Bank Open API

Bank Open API system

5

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Access token

6

refresh_token

Refresh token

7

UUID (Universally Unique Identifier)

Universally unique identifier

8

INF (INFormation)

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



9

AIS (Account Information Service)

Open APIs for querying customer information

10

PIS (Payment Initiation Service)

Payment initiation Open APIs

11

EWLTS (Ewallet Service)

Open APIs for e-wallet cash-in and cash-out

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



List of Open APIs by category under Article 6

No.

Open API list

I

Open APIs for querying the Bank’s exchange rates and interest rates (point a, clause 1)

1

API for querying interest rates

2

API for querying exchange rates

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Open APIs for querying customer information (point b, clause 1)

1

API for authentication and obtaining consent of customers

2

API for querying access token

3

API for refreshing access token

4

API for revoking access token

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



API for querying account list

6

API for querying account information

7

API for querying transaction history

III

Open APIs for payment initiation, e-wallet cash-in and cash-out (point c, clause 1)

A

Open APIs for payment initiation

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



API for payment initiation

2

API for authenticating customer — Redirect flow

3

API for querying access token — Redirect flow

4

API for updating customer payment authorization status — Decoupled flow

5

API for payment confirmation

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



API for querying transaction status

7

API querying customer payment authorization status — Decoupled flow

B

Open APIs for e-wallet cash-in

1

API for e-wallet cash-in

2

API for OTP verification

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



API for updating customer e-wallet cash-in authorization status — Decoupled flow

4

API for querying customer e-wallet cash-in authorization status — Decoupled flow

5

API for e-wallet cash-in confirmation

6

API for querying transaction status

C

Open API for e-wallet cash-out

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



1. General principles and technical requirements

- The Open API URLs specified in this Appendix shall follow this uniform naming convention: “https://<domain>/api/v1/….”

- The parameters for Open APIs specified in this Appendix are the minimum required set.

- A TPP shall use its valid and active Vietnamese tax identification number as its identifier (TPP-ID).

- A bank shall use the bank code assigned by the State Bank of Vietnam for banking operations as its identifier (Provider-ID).

- Once connectivity has been established and communications between the Bank and the TPP have been secured in accordance with the standards in Appendix 02, the TPP shall register its application identifier (client_id) and client secret (client_secret) with the Bank.

- Banks shall manage TPP connections and access to Open APIs in accordance with the OAuth 2.0 Authorization Framework in RFC 6749. Depending on the API category, banks shall use the following access token flows as specified in RFC 6749:

+ Client credentials grant flow (section 4.4 of RFC 6749).

+ Authorization code grant flow (section 4.1 of RFC 6749), combined with PKCE under RFC 7636 for certain APIs for querying access token.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Token validity periods for these categories are as follows:

+ Authorization Code (GET/authorize): single use, valid for 180 seconds.

+ Access Token where grant_type is client_credentials (POST/token): valid for a maximum of 3600 seconds.

+ Access Token where grant_type is authorization_code (POST/token): for AIS, valid for a maximum of 3600 seconds; for PIS, single use and valid for a maximum of 300 seconds.

+ Refresh token where grant_type is refresh_token (POST/token): applicable only to AIS; its validity period shall comply with the customer data-sharing consent as prescribed in clause 6 of Article 11. While the refresh_token remains valid, the TPP may use it to obtain a new access_token from the Bank’s authorization server without requiring the customer to repeat the access token flow in section 3 of this Appendix.

- A consentId (generated after successful customer authentication in the Decoupled flow for PIS and EWLTS, or the OTP flow for EWLTS) is valid for 300 seconds.

- The values in the “Req.” column of the Open API specification tables below have the following meanings:

+ M: mandatory.

+ O: optional.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Open APIs with parameters in the body shall be signed using Detached JWS in accordance with RFC 7515.

- The components shown in the flow diagrams in this Appendix are represented at the logical level.

2. Open APIs for querying the Bank’s exchange rates and interest rates (point a, clause 1, Article 6)

Figure 1: Bank exchange rate and interest rate querying flow (INF)

- Flow description:

+ Step 1: The customer requests for querying exchange rates or interest rates of a bank via the TPP application.

+ Step 2: The TPP requests an access_token under OAuth 2.0 with grant_type set to client_credentials (details in section 4.4 of RFC 6749).

+ Step 2.1. The Bank’s authorization server validates the request and returns an access_token to the TPP.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



+ Step 3: The TPP requests for querying interest rates from the Bank’s system via the “API for querying interest rates” in section 2.1.

+ Step 3.1. The Bank’s system returns the result to the TPP.

+ Step 3.2. The application of TPP displays the result to the customer.

If the customer requests for querying exchange rates, proceed to step 4:

+ Step 4: The TPP requests for querying exchange rates from the Bank’s system via the “API for querying exchange rates” in section 2.2.

+ Step 4.1. The Bank’s system returns the result to the TPP.

+ Step 4.2. The application of TPP displays the result to the customer.

2.1. API for querying interest rates

Endpoint

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Method

GET

Scope

INF

- Request Header:

Parameter

Data type

Req.

Description

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

M

Default: “application/json”

Authorization

String

M

- Authorization format: “Bearer + {access_token}”, in accordance with RFC 6750.

- The access_token is issued in accordance with section 4.4 of RFC 6749 (with grant_type set to client_credentials).

Request-DateTime

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

- Request date and time.

- Format: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

Request-ID

String [60]

M

Unique request identifier, usually in UUID format.

PSU-IP-Address

String [50]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Customer’s IP address.

This value must be in IPv4 or IPv6 format.

PSU-User-Agent

String [200]

O

Browser information if the customer uses the TPP’s website, or relevant information if the customer uses another TPP application.

PSU-Device-OS

String [100]

O

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Provider-ID

String [8]

M

Bank identifier specified in section 1.

TPP-ID

String [15]

M

TPP identifier specified in section 1.

Client-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



O

Client_id value specified in section 1.

- Query parameter:

Parameter

Data type

Req.

Description

currency

String [3]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Currency expressed as a three-letter uppercase in accordance with ISO 4217.

- Response Header:

Parameter

Data type

Req.

Description

Content-Type

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Request-ID

String

M

Value taken from the request header in the TPP’s API request.

Request-DateTime

String

M

Value taken from the request header in the TPP’s API request.

JWS-Signature

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

JWS signature as specified in section 1.

- Response Body:

+ HTTP STATUS CODE 200 OK:

Level 1

Level 2

Data type

Req.

Description

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

Array

M

List of interest rates

 

currency

String [3]

M

Currency expressed as a three-letter uppercase in accordance with ISO 4217.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



productCode

String [100]

O

Cash-in product code

 

productDesc

String [300]

M

Cash-in product description

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



termCode

String [100]

M

Deposit term

 

minAmount

Number

M

Minimum cash-in amount

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



customerType

String [4]

M

Customer type under ISO 20022.

Default value: “PRVT” (individual customer)

 

interestRate

String [5]

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

effectiveDate

Datetime

M

- Effective date.

- Format: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

 

additionalInfo

Object

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Additional information (if any)

+ Error Code: Refer to section 7.2.1 - Error response format, and section 7.2.2 - Common error codes.

2.2. API for querying exchange rates

Endpoint

/v1/exchangerate?currency={currency}

Method

GET

Scope

INF

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Parameter

Data type

Req.

Description

Content-Type

String

M

Default: “application/json”

Authorization

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

- Authorization format: “Bearer + {access_token}”, in accordance with RFC 6750.

- The access_token is issued in accordance with section 4.4 of RFC 6749 (with grant_type set to client_credentials).

Request-DateTime

DateTime

M

- Request date and time.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

Request-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Unique request identifier, usually in UUID format.

PSU-IP-Address

String [50]

O

Customer’s IP address. This value must be in IPv4 or IPv6 format.

PSU-User-Agent

String [200]

O

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



PSU-Device-OS

String [100]

O

Operating system on the customer’s device (computer, mobile device, etc.).

Provider-ID

String [8]

M

Bank identifier specified in section 1.

TPP-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

TPP identifier specified in section 1.

Client-ID

String [50]

O

Client_id value specified in section 1.

- Query parameter:

Parameter

Data type

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Description

currency

String [3]

O

Currency expressed as a three-letter uppercase in accordance with ISO 4217.

- Response Header:

Parameter

Data type

Req.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Content-Type

String

M

Default: “application/json”

Request-ID

String

M

Value taken from the request header in the TPP’s API request.

Request-DateTime

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Value taken from the request header in the TPP’s API request.

JWS-Signature

String

M

JWS signature as specified in section 1.

- Response Body:

+ HTTP STATUS CODE 200 OK:

Level 1

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Data type

Req.

Description

rates

 

Array

M

List of exchange rates

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String [3]

M

Currency expressed as a three-letter uppercase in accordance with ISO 4217

 

buyCashRate

Number

M

Cash buying rate

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Number

M

Transfer buying rate

 

sellCashRate

Number

M

Cash selling rate

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Number

M

Transfer selling rate

 

additionalInfo

Object

O

Additional information (if any)

applyDate

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



DateTime

M

- Time at which the exchange rates take effect in the Bank’s system.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

+ Error Code: Refer to section 7.2.1 - Error response format, and section 7.2.2 - Common error codes.

3. Open APIs for querying customer information (point b, clause 1, Article 6)

Applicable only to queries initiated by the customer through the application of TPP.

- The customer token grant flow, triggered when the process for obtaining the customer’s data-sharing consent is initiated through the TPP application, is described below:

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



+ Step 1: The customer logs in to the TPP application and uses a TPP service that involves the customer’s consent to data sharing.

● If the customer has not consented to data sharing, or the consent period specified in clause 6 of Article 11 has expired, proceed with steps 1.1 to 2.4.

● If the consent remains valid but the access_token has expired, proceed from step 3.

+ Step 1.1. The TPP’s system redirects the customer to the Bank’s authorization page.

+ Step 2: The customer is redirected to the Bank’s authorization page to provide data-sharing consent through the “API for authentication and obtaining consent of customers” in section 3.1. The customer then logs in to the Bank’s authorization server.

+ Step 2.1. The Bank’s authorization server authenticates the customer. After successful authentication, the customer consents to data sharing via the Bank’s interface.

+ Step 2.2: The Bank’s authorization server redirects the customer to the TPP application with an authorization code (details in section 3.1).

+ Step 2.3: The TPP requests an access_token and a refresh_token from the Bank’s authorization server (Details prescribed in “API for querying access token” in section 3.2).

+ Step 2.3.1: The Bank’s authorization server returns the result to the TPP. The TPP uses the access_token to perform AIS queries and the refresh_token to renew the access_token when it expires as described in step 3.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



+ Step 3.1: The Bank’s authorization server returns the result to the TPP.

- The account information query flow using the access_token obtained through the token grant flow (Figure 2) is described below:

Figure 3: Account information query flow

+ Step 4: The customer requests an account list via the TPP application.

+ Step 4.1: The TPP requests the account list from the Bank’s system through the “API for querying account list” in section 3.5.

+ Step 4.2: The Bank’s system returns the result to the TPP.

+ Step 4.3: The TPP application displays the account list to the customer.

If the customer requests information on a specific account, proceed to step 5:

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



+ Step 5.1: The TPP requests information on the account from the Bank’s system through the “API for querying account information” in section 3.6.

+ Step 5.2: The Bank’s system returns the result to the TPP.

+ Step 5.3: The TPP application displays the account information to the customer.

If the customer requests transaction history, proceed to step 6:

+ Step 6: The customer requests transaction history through the TPP application.

+ Step 6.1: The TPP requests transaction history from the Bank’s system via the “API for querying transaction history” in section 3.7.

+ Step 6.2: The Bank’s system returns the result to the TPP.

+ Step 6.3: The TPP application displays the transaction history to the customer.

3.1. API for authentication and obtaining consent of customers

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



/authorize

Method

GET

- Request Header:

Parameter

Data type

Req.

Description

Content-Type

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

application/x-www-form-urlencoded

Host

String

O

Identifies the domain name of the server to which the request is sent.

- Query Parameter:

Parameter

Data type

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Description

response_type

String

M

Default: “code”

client_id

String

M

Client_id value specified in section 1.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

M

Access scope: AIS

redirect_uri

String

M

URL used to redirect the customer to the TPP application after the Bank’s authorization server completes customer authentication.

state

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Value generated by the TPP to maintain the status between the request and response, and prevent cross-site request forgery attacks.

code_challenge

String

M

code_challenge = BASE64URL- ENCODE(SHA256(ASCII(code_verifier)))

Refer to RFC 7636 for details.

code_challenge_method

String

O

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Default: “S256”

- Response:

+ The Bank’s authorization server redirects the customer to the TPP application using redirect_uri with the URL parameters described in the table below:

Parameter

Data type

Req.

Description

code

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Authorization code

state

String

M

State value from the TPP’s request.

+ Error Code: Refer to section 7.1.2 - Error codes for the API for authentication and obtaining consent of customers.

3.2. API for querying access token

Endpoint

/token

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



POST

- Request Header:

Parameter

Data type

Req.

Description

Content-Type

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Authorization

String

M

Basic BASE64(client_id + “:” + client_secret)

Host

String

O

Identifies the domain name of the server to which the request is sent.

- Request body:

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Data type

Req.

Description

grant_type

String

M

Default: “authorization_code”

code

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Authorization code issued by the Bank to the TPP via the token grant flow.

redirect_uri

String

M

URL used to redirect the customer to the TPP application. This value must match the redirect_uri supplied to the API for authentication and obtaining consent of customers in section 3.1.

code_verifier

String

M

The code_verifier used to generate the code_challenge supplied by the TPP to the API for authentication and obtaining consent of customers in section 3.1 (Refer to RFC 7636 for details).

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Parameter

Data type

Req.

Description

Content-Type

String

M

Default: “application/json”

- Response body:

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Parameter

Data type

Req.

Description

access_token

String

M

Access token.

refresh_token

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Refresh token.

token_type

String

M

Default: “Bearer”

expires_in

Number

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



scope

String

M

Scope of the access_token. This value matches the scope in the API for authentication and obtaining consent of customers in section 3.1.

+ Error Code: Refer to section 7.1.2 - Error codes for the API for querying access token.

3.3. API for refreshing access token

Endpoint

/token

Method

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Request Header:

Parameter

Data type

Req.

Description

Content-Type

String

M

application/x-www-form-urlencoded

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

M

Basic BASE64(client_id + “:” + client_secret)

Host

String

O

Identifies the domain name of the server to which the request is sent.

- Request body:

Parameter

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Req.

Description

grant_type

String

M

Default: “refresh_token”

refresh_token

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



scope

String

O

The scope must not exceed the scope in the API for authentication and obtaining consent of customers in section 3.1.

- Response Header:

Parameter

Data type

Req.

Description

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

M

Default: “application/json”

- Response body:

+ HTTP STATUS CODE 200 OK:

Parameter

Data type

Req.

Description

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

M

Access token.

refresh_token

String

O

Refresh token (this may differ from the refresh token generated through the token grant flow with grant_type set to authorization_code).

token_type

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Default: “Bearer”

expires_in

Number

M

Validity period of the access_token for AIS as specified in section 1.

+ Error code: Refer to section 7.1.2 - Error codes for the API for querying access token.

3.4. API for revoking access token

The TPP calls this API when the customer withdraws consent via the TPP application.

Endpoint

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Method

POST

- Request Header:

Parameter

Data type

Req.

Description

Content-Type

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



application/x-www-form-urlencoded

Authorization

String

M

Basic BASE64(client_id + “:” + client_secret)

Host

String

O

Identifies the domain name of the server to which the request is sent.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Parameter

Data type

Req.

Description

token

String

M

The access_token or refresh_token to be revoked.

token_type_hint

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



O

Type of token to be revoked: “access_token” or “refresh_token”.

- Response:

+ HTTP STATUS CODE 200 OK with no response data (refer to RFC 7009 for details).

+ Error code: Refer to section 7.1.2 - Error codes for the API for querying access token.

3.5. API for querying account list

Endpoint

/v1/accounts

Method

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Scope

AIS

- Request Header:

Parameter

Data type

Req.

Description

Content-Type

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Default: “application/json”

Authorization

String

M

- Authorization format: “Bearer + {access_token}” in accordance with RFC 6750.

- The access_token is issued in accordance with section 4.1 of RFC 6749 (Authorization Code Grant).

Request-DateTime

DateTime

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Format: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime) in accordance with RFC 3339.

Request-ID

String [60]

M

Unique request identifier, usually in UUID format.

PSU-IP-Address

String [50]

O

Customer’s IP address. This value must be in IPv4 or IPv6 format.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String [200]

O

Browser information if the customer uses the TPP’s website, or relevant information if the customer uses another TPP application.

PSU-Device-OS

String [100]

O

Operating system on the customer’s device (computer, mobile device, etc.).

Provider-ID

String [8]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Bank identifier specified in section 1.

TPP-ID

String [15]

M

TPP identifier specified in section 1.

Client-ID

String [50]

O

Client_id value specified in section 1.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Response Header:

Parameter

Data type

Req.

Description

Content-Type

String

M

Default: “application/json”

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

M

Value taken from the request header in the TPP’s API request.

Request-DateTime

DateTime

M

Value taken from the request header in the TPP’s API request.

JWS-Signature

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



JWS signature as specified in section 1.

- Response body:

+ HTTP STATUS CODE 200 OK:

Level 1

Level 2

Level 3

Data type

Req.

Description

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

 

Array

 

Account list

 

identification

 

Object

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Information on the customer’s account opened at the Bank.

 

 

accountId

String [34]

M

Customer’s account number

 

name

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String [70]

M

Customer’s account name.

 

type

 

String [4]

M

Account type under ISO 20022.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



currency

 

String [3]

M

Currency expressed as a three-letter uppercase in accordance with ISO 4217.

 

bankCode

 

String [8]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Bank identifier as specified in section 1.

 

additionalInfo

 

Object

O

Additional information (if any)

+ Error Code: Refer to section 7.2.1 - Error response format, and section 7.2.2 - Common error codes.

3.6. API for querying account information

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



/v1/accounts/information

Method

POST

Scope

AIS

- Request Header:

Parameter

Data type

Req.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Content-Type

String

M

Default: “application/json”

Authorization

String

M

- Authorization format: “Bearer + {access_token}” in accordance with RFC 6750.

- The access_token is issued in accordance with section 4.1 of RFC 6749 (Authorization Code Grant).

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



DateTime

M

- Request date and time.

- Format: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

Request-ID

String [60]

M

Unique request identifier, usually in UUID format.

PSU-IP-Address

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



O

Customer’s IP address. This value must be in IPv4 or IPv6 format.

PSU-User-Agent

String [200]

O

Browser information if the customer uses the TPP’s website, or relevant information if the customer uses another TPP application.

PSU-Device-OS

String [100]

O

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Provider-ID

String [8]

M

Bank identifier as specified in section 1.

TPP-ID

String [15]

M

TPP identifier as specified in section 1.

Client-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



O

Client_id value as specified in section 1.

JWS-Signature

String

M

JWS signature as specified in section 1.

- Request Body:

Level 1

Data type

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Description

accountId

String [34]

M

Customer’s account number.

- Response Header:

Parameter

Data type

Req.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Content-Type

String

M

Default: “application/json”

Request-ID

String

M

Value taken from the request header in the TPP’s API request.

Request-DateTime

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Value taken from the request header in the TPP’s API request.

JWS-Signature

String

M

JWS signature as specified in section 1.

- Response Body:

+ HTTP STATUS CODE 200 OK:

Level 1

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Level 3

Data type

Req.

Description

identification

 

 

Object

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

accountId

 

String [34]

M

Customer’s account number

name

 

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Customer’s account name.

type

 

 

String [4]

M

Account type under ISO 20022.

currency

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

String [3]

M

Currency expressed as a three-letter uppercase in accordance with ISO 4217.

bankCode

 

 

String [8]

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



creationDate

 

 

Datetime

M

- Account creation date.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

balances

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Array

M

Detailed balance information

 

amount

 

Object

M

Available balance information

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

value

Number

M

Available balance in the customer’s account

 

 

currency

String [3]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Currency expressed as a three-letter uppercase in accordance with ISO 4217.

 

dateTime

 

DateTime

M

- Date and time of processing by the system.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

additionalInfo

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

Object

O

Additional information (if any)

+ Error Code: Refer to section 7.2.1 - Error response format, and section 7.2.2 - Common error codes.

3.7. API for querying transaction history

- The period for which transaction history may be queried is subject to the Bank’s rules.

Endpoint

/v1/accounts/transactions

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



POST

Scope

AIS

- Request Header:

Parameter

Data type

Req.

Description

Content-Type

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Default: “application/json”

Authorization

String

M

- Authorization format: “Bearer + {access_token}”, in accordance with RFC 6750.

- The access_token is issued in accordance with section 4.1 of RFC 6749 (Authorization Code Grant).

Request-DateTime

DateTime

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Request date and time.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

Request-ID

String [60]

M

Unique request identifier, usually in UUID format.

PSU-IP-Address

String [50]

O

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



PSU-User-Agent

String [200]

O

Browser information if the customer uses the TPP’s website, or relevant information if the customer uses another TPP application.

PSU-Device-OS

String [100]

O

Operating system on the customer’s device (computer, mobile device, etc.).

Provider-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Bank identifier as specified in section 1.

TPP-ID

String [15]

M

TPP identifier as specified in section 1.

Client-ID

String [50]

O

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



JWS-Signature

String

M

JWS signature as specified in section 1.

- Request Body:

Level 1

Data type

Req.

Description

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String [34]

M

Customer’s account number.

fromDate

DateTime

M

- Transaction start date.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

toDate

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

- Transaction end date.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

page

Number

O

Specifies the requested page number. Pages are numbered from 1. If this parameter is omitted, the API returns page 1.

size

Number

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Specifies the number of records per page. If this parameter is omitted, the API returns all records matching the request.

- Response Header:

Parameter

Data type

Req.

Description

Content-Type

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Request-ID

String

M

Value taken from the request header in the TPP’s API request.

Request- DateTime

DateTime

M

Value taken from the request header in the TPP’s API request.

JWS-Signature

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

JWS signature as specified in section 1.

- Response Body:

+ HTTP STATUS CODE 200 OK:

Level 1

Level 2

Level 3

Level 4

Data type

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Description

pageCount

 

 

 

Number

M

Total number of pages

pageNumber

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

 

Number

M

Current page

nextPage

 

 

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



O

Next page

pageSize

 

 

 

Number

M

Number of records per page.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

 

 

Number

O

Total number of records across all pages

transactions

 

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Array

M

Transaction history records

 

amount

 

 

Object

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

 

value

 

Number

M

Transaction amount

 

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

String [3]

M

Currency expressed as a three-letter uppercase in accordance with ISO 4217.

 

balances

 

 

Object

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Balance information

 

 

value

 

Number

M

Balance at the time of the transaction

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



currency

 

String [3]

M

Currency expressed as a three-letter uppercase in accordance with ISO 4217.

 

creditDebitIndicator

 

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

- CRDT (Credit) for a credit balance

- DBIT (Debit) for a debit balance

 

reversalIndicator

 

 

boolean

O

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

valueDate

 

 

DateTime

M

- Transaction date and time.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

 

Object

M

Transaction identifier information

 

 

instructio nIdentific ation

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Unique identifier for each transaction

 

relatedParties

 

 

Object

O

Sender and recipient information

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

debtor

 

Object

O

Sender information

 

 

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String [140]

O

Sender’s name

 

 

 

bankCode

String [8]

O

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

 

 

accountId

String [34]

O

Account number.

 

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

Object

O

Recipient information

 

 

 

name

String [140]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Recipient’s name

 

 

 

bankCode

String [8]

O

Recipient’s bank identifier as specified in section 1.

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

accountId

String [34]

O

Recipient’s account number

 

additional TransactionInform ation

 

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Transaction details

 

additionalInfo

 

 

Object

O

Additional information (if any)

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



4. Open APIs for payment initiation (point c, clause 1, Article 6)

Applicable only to payment orders initiated by the customer via the TPP application.

- API for payment initiation flow:

Figure 4: API for payment initiation flow (PIS)

- Flow description:

+ Step 1: The customer initiates a payment request via the TPP application.

+ Step 2: The TPP requests an access_token under OAuth 2.0 with grant_type set to client_credentials (refer to section 4.4 of RFC 6749 for details).

+ Step 2.1. The Bank’s authorization server validates the request and returns an access_token to the TPP.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



+ Step 3.1. The Bank’s system validates the information in the TPP’s request. If the information is valid, it returns a unique transaction identifier (paymentId) to the TPP, with consentStatus set to “AWAITTING_AUTH”.

For the Redirect flow (steps 4 to 5.1):

+ Step 4: After receiving the paymentId, the TPP redirects the customer to the Bank’s authorization page to authorize the payment.

+ Step 4.1: The customer logs in (refer to the “API for authenticating customer” in section 4.2 for details).

+ Step 4.1.1. The customer confirms the payment details via the Bank’s interface.

+ Step 4.1.2. The customer authorizes the payment using the Bank’s authentication methods in accordance with the laws.

+ Step 4.1.3: The Bank’s authorization server redirects the customer to the TPP application with an authorization code.

+ Step 4.2: The TPP requests an access_token from the Bank’s authorization server (refer to the “API for querying access toekn” in section 4.3 for details).

+ Step 4.2.1: The Bank’s authorization server validates the authorization code in the TPP’s request.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



+ Step 5: The TPP sends a payment confirmation request to the Bank through the “API for payment confirmation” in section 4.5.

+ Step 5.1. The Bank returns the payment result.

For the Decoupled flow (steps 4’ to 5.1’):

+ Step 4’: Depending on the design of the TPP application and the Bank’s system, the Bank’s authorization server may or may not notify the customer that a payment requires authorization.

+ Step 4.1’: The customer opens the Bank’s application.

+ Step 4.1.1’: The customer confirms the payment details via the Bank’s interface.

+ Step 4.1.2’: The customer authorizes the payment using the authentication methods prescribed by the Bank in accordance with the laws.

+ Step 4.2’: The Bank’s system sends the customer’s payment authorization status to the TPP via the “API for updating customer payment authorization status — Decoupled flow” in section 4.4.

+ Step 4.2.1’: The TPP receives the customer’s payment authorization status and returns a response to the Bank’s system as prescribed in section 4.4.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



+ Step 4.3.1’: The Bank’s system receives the request and returns the result to the TPP.

+ Step 5’: The TPP sends a payment confirmation request, including the consentId, to the Bank via the “API for payment confirmation” in section 4.5.

+ Step 5.1’: The Bank’s system receives the request and returns the result to the TPP as prescribed in section 4.5.

+ Step 6: If the TPP does not receive the accounting result from the Bank, it requests the transaction status from the Bank’s system via the “API for querying transaction status” in section 4.6.

+ Step 6.1: The Bank’s system receives the request and returns the result to the TPP.

+ Step 7: The TPP displays the payment result to the customer.

4.1. API for payment initiation

Endpoint

/v1/payments

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



POST

Scope

PIS

- Request Header:

Parameter

Data type

Req.

Description

Content-Type

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Default: “application/json”

Authorization

String

M

- Authorization format: “Bearer + {access_token}”, in accordance with RFC 6750.

- The access_token is issued in accordance with section 4.4 of RFC 6749 (with grant_type set to client_credentials).

Request-DateTime

DateTime

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Request date and time.

- Format: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

Request-ID

String [60]

M

Unique request identifier, usually in UUID format.

PSU-IP-Address

String [50]

O

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



PSU-User-Agent

String [200]

O

Browser information if the customer uses the TPP’s website, or relevant information if the customer uses another TPP application.

PSU-Device-OS

String [100]

O

Operating system on the customer’s device (computer, mobile device, etc.).

Provider-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Bank identifier as specified in section 1.

TPP-ID

String [15]

M

TPP identifier as specified in section 1.

Client-ID

String [50]

O

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



JWS-Signature

String

M

JWS signature as specified in section 1.

- Request Body:

Level 1

Level 2

Data type

Req.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



instructionIdentification

 

String [50]

M

Transaction identifier generated by the TPP

debtor

 

Object

C

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

name

String [70]

C

Payer’s account name

 

accountId

String [34]

C

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

bankCode

String [8]

C

Payer’s bank identifier as specified in section 1.

remittanceInformation

 

String [255]

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



instructedAmount

 

Object

M

Transaction amount information

 

value

Number

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

currency

String [3]

M

Currency expressed as a three-letter uppercase in accordance with ISO 4217.

requestedExecutionDate

 

DateTime

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Format: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

additionalInfo

 

Object

O

Additional information (if any)

- Response Header:

Parameter

Data type

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Description

Content-Type

String

M

Default: “application/json”

Request-ID

String

M

Value taken from the request header in the TPP’s API request.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

M

Value taken from the request header in the TPP’s API request.

JWS-Signature

String

M

JWS signature as specified in section 1.

- Response Body:

+ HTTP STATUS CODE 200 OK:

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Data type

Req.

Description

paymentId

String [35]

M

Unique transaction identifier assigned by the Bank.

status

String [4]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Transaction status code under ISO 20022.

statusDateTime

DateTime

M

- Status update time.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

consentStatus

String [20]

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



+ Error Code: Refer to section 7.2.1 - Error response format, and section 7.2.2 - Common error codes.

4.2. API for authenticating customer — Redirect flow

Endpoint

/authorize

Method

GET

- Request Header:

Parameter

Data type

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Description

Content-Type

String

M

application/x-www-form-urlencoded

Host

String

O

Identifies the domain name of the server to which the request is sent.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Parameter

Data type

Req.

Description

response_type

String

M

Default value: “code id_token”

client_id

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Client_id value as specified in section 1.

scope

String

M

Access scope: PIS

redirect_uri

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



state

String

M

Value generated by the TPP to maintain the status between the request and response, and prevent cross-site request forgery attacks.

code_challenge

String

M

code_challenge = BASE64URL- ENCODE(SHA256(ASCII(code_verifier)))

Refer to RFC 7636 for details.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

O

Algorithm used to generate code_challenge.

Default: “S256”

request

String

M

Json Web Token (JWT).

Include the paymentId received from the API for payment initiation in section 4.1 as a claim in the payload.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



+ JOSE Header — in accordance with JWT under RFC 7519 and JWS under RFC 7515; the algorithm under the “alg” header under section 3.1 of RFC 7518.

+ payload

+ signature — JWS under RFC 7515

- Response:

+ The Bank’s authorization server redirects the customer to the TPP application using redirect_uri together with the values in the table below:

Parameter

Data type

Req.

Description

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

M

Authorization code

state

String

M

State value from the TPP’s request.

id_token

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Json Web Token (JWT).

Include the paymentId received from the Initiate Payment API in section 4.1 in the payload.

- The JWT consists of:

+ JOSE Header — in accordance with JWT under RFC 7519 and JWS under RFC 7515; the algorithm under the “alg” header under section 3.1 of RFC 7518;

+ payload;

+ signature — in accordance with JWS under RFC7515.

+ Error Code: Refer to section 7.1.2 - Error codes for the API for querying access token.

4.3. API for querying access token — Redirect flow

Endpoint

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Method

POST

- Request Header:

Parameter

Data type

Req.

Description

Content-Type

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



application/x-www-form-urlencoded

Authorization

String

M

Basic BASE64(client_id + “:” + client_secret)

Host

String

O

Identifies the domain name of the server to which the request is sent.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Parameter

Data type

Req.

Description

grant_type

String

M

Default: “authorization_code”

code

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Authorization code issued by the Bank to the TPP via the API for authenticating customer — Redirect flow in section 4.2.

redirect_uri

String

M

URL used to redirect the customer to the TPP application. This value must match the redirect_uri supplied to the API for authenticating customer — Redirect flow in section 4.2.

code_verifier

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Response Header:

Parameter

Data type

Req.

Description

Content-Type

String

M

Default: “application/json”

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



+ HTTP STATUS CODE 200 OK:

Parameter

Data type

Req.

Description

access_token

String

M

Access token.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

M

Default: “Bearer”

expires_in

Number

M

Validity period of the access_token for PIS as specified in section 1.

scope

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Scope of the access_token. This value matches the scope in the API for authenticating customer — Redirect flow in section 4.2.

+ Error Code: Refer to section 7.1.2 - Error codes for the API for querying access token.

4.4. API for updating customer payment authorization status — Decoupled flow

- The Bank’s system calls this API of TPP to return the customer’s payment authorization status as specified below:

Endpoint

/v1/update-consent

Method

POST

- Request Header:

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Data type

Req.

Description

Content-Type

String

M

Default: “application/json”

Authorization

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Authorization format: “Bearer + {access_token}”, in accordance with RFC 6750.

- The access_token is issued in accordance with section 4.4 of RFC 6749 (with grant_type set to client_credentials).

Request-DateTime

DateTime

M

- Request date and time.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

Request-ID

String [60]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Unique request identifier, usually in UUID format.

JWS-Signature

String

M

JWS signature as specified in section 1.

- Request Body:

Level 1

Data type

Req.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



paymentId

String [35]

M

Unique transaction identifier issued by the Bank to the TPP via the API for payment initiation in section 4.1.

consentId

String [36]

M

Value generated by the Bank after successful authorization via the Bank’s application in the Decoupled flow.

consentStatus

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Takes one of the following values:

- “AUTHORISED” when the customer successfully authorizes the transaction.

- “REJECTED” when the customer’s authorization does not comply with the Bank’s requirements.

- “CANCEL” when the customer does not authorize the transaction via the Bank’s application.

expireIn

Number

M

Validity period of the consentId as specified in section 1.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Parameter

Data type

Req.

Description

Content-Type

String

M

Default: “application/json”

Request-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Value taken from the request header in the TPP’s API request.

Request-DateTime

String

M

Value taken from the request header in the TPP’s API request.

JWS-Signature

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Response Body:

+ HTTP STATUS CODE 200 OK:

Level 1

Data type

Req.

Description

message

String [20]

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



+ Error Code: As specified by the TPP.

4.5. API for payment confirmation

Endpoint

/v1/payments/submit

Method

POST

Scope

PIS

- Request Header:

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Data type

Req.

Description

Content-Type

String

M

Default: “application/json”

Authorization

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Authorization format: “Bearer + {access_token}”, in accordance with RFC 6750.

- For the Redirect flow: The access_token is issued in accordance with section 4.1 of RFC 6749 (Authorization Code Grant).

- For the Decoupled flow: The access_token is issued in accordance with section 4.4 of RFC 6749 (with grant_type set to client_credentials).

Request-DateTime

DateTime

M

- Request date and time.

- Format: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

Request-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Unique request identifier, usually in UUID format.

PSU-IP-Address

String [50]

O

Customer’s IP address. This value must be in IPv4 or IPv6 format.

PSU-User-Agent

String [200]

O

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



PSU-Device-OS

String [100]

O

Operating system on the customer’s device (computer, mobile device, etc.).

Provider-ID

String [8]

M

Bank identifier as specified in section 1.

TPP-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

TPP identifier as specified in section 1.

Client-ID

String [50]

O

Client_id value as specified in section 1.

JWS-Signature

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Request Body:

Level 1

Data type

Req.

Description

paymentId

String [35]

M

Unique transaction identifier issued by the Bank to the TPP via the API for payment initiation in section 4.1.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String [36]

C

Value generated by the Bank after successful authorization via the Bank’s application in the Decoupled flow.

- Response Header:

Parameter

Data type

Req.

Description

Content-Type

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Default: “application/json”

Request-ID

String

M

Value taken from the request header in the TPP’s API request.

Request-DateTime

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



JWS-Signature

String

M

JWS signature as specified in section 1.

- Response Body:

+ HTTP STATUS CODE 200 OK:

Level 1

Data type

Req.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



paymentId

String [35]

M

Unique transaction identifier issued by the Bank to the TPP via the API for payment initiation in section 4.1.

status

String [4]

M

Transaction status code under ISO 20022.

statusDateTime

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

- Status update time.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

+ Error Code: Refer to section 7.2.1 - Error response format, and section 7.2.2 - Common error codes.

4.6. API for querying transaction status

Endpoint

/v1/payments/status

Method

POST

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



PIS

- Request Header:

Parameter

Data type

Req.

Description

Content-Type

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Authorization

String

M

- Authorization format: “Bearer + {access_token}”, in accordance with RFC 6750.

- The access_token is issued in accordance with section 4.4 of RFC 6749 (with grant_type set to client_credentials).

Request-DateTime

DateTime

M

- Request date and time.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Request-ID

String [60]

M

Unique request identifier, usually in UUID format.

PSU-IP-Address

String [50]

O

Customer’s IP address. This value must be in IPv4 or IPv6 format.

PSU-User-Agent

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



O

Browser information if the customer uses the TPP’s website, or relevant information if the customer uses another TPP application.

PSU-Device-OS

String [100]

O

Operating system on the customer’s device (computer, mobile device, etc.).

Provider-ID

String [8]

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



TPP-ID

String [15]

M

TPP identifier as specified in section 1.

Client-ID

String [50]

O

Client_id value as specified in section 1.

JWS-Signature

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

JWS signature as specified in section 1.

- Request Body:

Level 1

Data type

Req.

Description

paymentId

String [35]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Unique transaction identifier issued by the Bank to the TPP via the API for payment initiation in section 4.1.

- Response Header:

Parameter

Type

Req.

Description

Content-Type

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Request-ID

String

M

Value taken from the request header in the TPP’s API request.

Request-DateTime

String

M

Value taken from the request header in the TPP’s API request.

JWS-Signature

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

JWS signature as specified in section 1.

- Response Body:

+ HTTP STATUS CODE 200 OK:

Level 1

Data type

Req.

Description

paymentId

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Unique transaction identifier issued by the Bank to the TPP via the API payment initiation in section 4.1.

status

String [4]

M

Transaction status code under ISO 20022.

statusDateTime

DateTime

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

+ Error Code: Refer to section 7.2.1 - Error response format, and section 7.2.2 - Error codes.

4.7. API retrieving customer payment authorization status — Decoupled flow

The TPP calls this API of the Bank to query the customer’s payment authorization status as specified below:

Endpoint

/v1/get-consent

Method

POST

Scope

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Request Header:

Parameter

Data type

Req.

Description

Content-Type

String

M

Default: “application/json”

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

M

- Authorization format: “Bearer + {access_token}”, in accordance with RFC 6750.

- The access_token is issued in accordance with section 4.4 of RFC 6749 (with grant_type set to client_credentials).

Request-DateTime

DateTime

M

- Request date and time.

- Format: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String [60]

M

Unique request identifier, usually in UUID format.

PSU-IP-Address

String [50]

O

Customer’s IP address. This value must be in IPv4 or IPv6 format.

PSU-User-Agent

String [200]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Browser information if the customer uses the TPP’s website, or relevant information if the customer uses another TPP application.

PSU-Device-OS

String [100]

O

Operating system on the customer’s device (computer, mobile device, etc.).

Provider-ID

String [8]

M

Bank identifier as specified in section 1.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String [15]

M

TPP identifier as specified in section 1.

Client-ID

String [50]

O

Client_id value as specified in section 1.

JWS-Signature

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



JWS signature as specified in section 1.

- Request Body:

Level 1

Data type

Req.

Description

paymentId

String [35]

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Response Header:

Parameter

Data type

Req.

Description

Content-Type

String

M

Default: “application/json”

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

M

Value taken from the request header in the TPP’s API request.

Request-DateTime

String

M

Value taken from the request header in the TPP’s API request.

JWS-Signature

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



JWS signature as specified in section 1.

- Response Body:

+ HTTP STATUS CODE 200 OK:

Level 1

Data type

Req.

Description

paymentId

String [35]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Unique transaction identifier issued by the Bank to the TPP via API for payment initiation in section 4.1.

consentId

String [36]

M

Value generated by the Bank after successful authorization via the Bank’s application in the Decoupled flow.

consentStatus

String [20]

M

Takes one of the following values:

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- “REJECTED” when the customer’s authorization does not comply with the Bank’s requirements.

- “CANCEL” when the customer does not authorize the transaction via the Bank’s application.

expireIn

Number

M

Validity period of the consentId as specified in section 1.

+ Error Code: Refer to section 7.2.1 - Error response format, and section 7.2.2 - Error codes.

5. Open APIs for e-wallet cash-in (point c, clause 1, Article 6)

- The APIs for e-wallet cash-in flow are used after the customer has linked the e-wallet in accordance with applicable requirements. The customer may deposit money to the e-wallet from the linked account via the TPP application.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Figure 5: E-wallet cash-in flow (EWLTS)

- Flow description:

+ Step 1: After logging in to the TPP application, the customer requests an e-wallet cash-in.

+ Step 2: The TPP requests an access_token from the Bank’s authorization server under OAuth 2.0 with grant_type set to client_credentials (refer to section 4.4 of RFC 6749 for details).

+ Step 2.1. The Bank’s authorization server validates the request and returns an access_token to the TPP.

+ Step 3: The TPP sends an e-wallet cash-in initiation request to the Bank’s system via the “API for e-wallet cash-in” in section 5.1.

+ Step 3.1. The Bank’s system validates the information in the TPP’s request. If the information is valid, it returns a unique transaction identifier (paymentId) to the TPP.

E-wallet cash-in transactions shall be authenticated in accordance with regulations of the Governor of the State Bank of Vietnam on safety and security in the provision of online banking services. Where OTP or Decoupled authentication is used for an e-wallet cash-in, the following procedures shall apply:

For the OTP flow (steps 4 to 4.2.2):

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



+ Step 4.1: The customer enters the OTP in the TPP application.

+ Step 4.2: The TPP sends an OTP verification request to the Bank’s system via the “API for OTP verification” in section 5.2.

+ Step 4.2.1: The Bank’s system validates the information in the TPP’s request.

+ Step 4.2.2: The Bank’s system returns the result to the TPP.

For the Decoupled flow (steps 4’ to 4.3.1’):

+ Step 4’: Depending on the design of the TPP application and the Bank’s system, the Bank’s authorization server may or may not notify the customer that an e-wallet cash-in requires authorization.

+ Step 4.1’: The customer opens the Bank’s application.

+ Step 4.1.1’: The customer confirms the e-wallet cash-in information.

+ Step 4.1.2’: The customer authorizes the e-wallet cash-in using the Bank’s authentication methods in accordance with the regulations on safety and security in the provision of online banking services.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



+ Step 4.2.1’: The TPP receives the status and returns a response to the Bank’s system as prescribed in section 5.3.

+ Step 4.3’: If the TPP does not receive the customer’s e-wallet cash-in authorization status from the Bank’s system via the “API for updating customer e-wallet cash-in authorization status — Decoupled flow” in section 5.3, it may request that status from the Bank’s system through the “API for querying customer e-wallet cash-in authorization status — Decoupled flow” in section 5.4.

+ Step 4.3.1’: The Bank’s system receives the request and returns the result to the TPP.

+ Step 5: The TPP sends an e-wallet cash-in confirmation request to the Bank via the “API for e-wallet cash-in confirmation” in section 5.5.

+ Step 5.1. The Bank returns the transaction status to the TPP.

+ Step 6: If the TPP does not receive the posting result from the Bank, it requests the transaction status from the Bank’s system via the “API for querying transaction status” in section 5.6.

+ Step 6.1: The Bank’s system receives the request and returns the result to the TPP.

+ Step 7. The TPP displays the e-wallet cash-in result to the customer.

5.1. API for e-wallet cash-in

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



/v1/cash-in

Method

POST

Scope

EWLTS

- Request Header:

Parameter

Data type

Req.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Content-Type

String

M

Default: “application/json”

Authorization

String

M

- Authorization format: “Bearer + {access_token}”, in accordance with RFC 6750.

- The access_token is issued in accordance with section 4.4 of RFC 6749 (with grant_type set to client_credentials).

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



DateTime

M

- Request date and time.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

Request-ID

String [60]

M

Unique request identifier, usually in UUID format.

PSU-IP-Address

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



O

Customer’s IP address. This value must be in IPv4 or IPv6 format.

PSU-User-Agent

String [200]

O

Browser information if the customer uses the TPP’s website, or relevant information if the customer uses another TPP application.

PSU-Device-OS

String [100]

O

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Provider-ID

String [8]

M

Bank identifier as specified in section 1.

TPP-ID

String [15]

M

TPP identifier as specified in section 1.

Client-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



O

Client_id value as specified in section 1.

JWS-Signature

String

M

JWS signature as specified in section 1.

- Request Body:

Level 1

Level 2

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Req.

Description

instructionIdentification

 

String [50]

M

Transaction identifier generated by the TPP

remittanceInformation

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Transaction details

instructedAmount

 

Object

M

Transaction amount information

 

value

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Transaction amount

 

currency

String [3]

M

Currency expressed as a three-letter uppercase in accordance with ISO 4217.

requestedExecutionDate

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

- Transaction execution date.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

ewalletToken

 

String [30]

M

Token generated when the e-wallet is linked between the TPP and the Bank.

additionalInfo

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Object

O

Additional information (if any).

- Response Header:

Parameter

Req.

Type

Description

Content-Type

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

Default: “application/json”

Request-ID

M

String

Value taken from the request header in the TPP’s API request.

Request-DateTime

M

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



JWS-Signature

M

String

JWS signature as specified in section 1.

- Response Body:

+ HTTP STATUS CODE 200 OK:

Level 1

Data type

Req.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



paymentId

String [35]

M

Unique transaction identifier assigned by the Bank.

status

String [4]

M

Transaction status code under ISO 20022.

statusDateTime

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

- Status update time.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

authenType

String [10]

M

Takes one of the following values:

- “OTP”: use the OTP flow.

- “DECOUPLED”: use the Decoupled flow.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



additionalInfo

Object

O

Additional information (if any)

+ Error Code: Refer to section 7.2.1 - Error response format, and section 7.2.2 - Error codes.

5.2. API for OTP verification

Endpoint

/v1/verify-otp-cash-in

Method

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Scope

EWLTS

- Request Header:

Parameter

Data type

Req.

Description

Content-Type

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Default: “application/json”

Authorization

String

M

- Authorization format: “Bearer + {access_token}”, in accordance with RFC 6750.

- The access_token is issued in accordance with section 4.4 of RFC 6749 (with grant_type set to client_credentials).

Request- DateTime

DateTime

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

Request-ID

String [60]

M

Unique request identifier, usually in UUID format.

PSU-IP-Address

String [50]

O

Customer’s IP address. This value must be in IPv4 or IPv6 format.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String [200]

O

Browser information if the customer uses the TPP’s website, or relevant information if the customer uses another TPP application.

PSU-Device-OS

String [100]

O

Operating system on the customer’s device (computer, mobile device, etc.).

Provider-ID

String [8]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Bank identifier as specified in section 1.

TPP-ID

String [15]

M

TPP identifier specified in section 1.

Client-ID

String [50]

O

Client_id value as specified in section 1.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

M

JWS signature as specified in section 1.

- Request Body:

Level 1

Data type

Req.

Description

paymentId

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Unique transaction identifier returned by the Bank via the API for e-wallet cash-in in section 5.1.

otp

String [6]

M

OTP sent by the Bank to the customer.

ewalletToken

String [30]

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



additionalInfo

Object

O

Additional information (if any).

- Response Header:

Parameter

Data type

Req.

Description

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

M

Default: “application/json”

Request-ID

String

M

Value taken from the request header in the TPP’s API request.

Request-DateTime

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Value taken from the request header in the TPP’s API request.

JWS-Signature

String

M

JWS signature as specified in section 1.

- Response Body:

+ HTTP STATUS CODE 200 OK:

Level 1

Data type

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Description

paymentId

String [35]

M

Unique transaction identifier issued by the Bank to the TPP via the API for e-wallet cash-in in section 5.1.

consentId

String [36]

M

Value generated by the Bank after successful OTP verification in the OTP flow.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Number

M

Validity period of the consentId as specified in section 1.

+ Error Code: Refer to section 7.2.1 - Error response format, and section 7.2.2 - Error codes.

5.3. API for updating customer e-wallet cash-in authorization status — Decoupled flow

The Bank calls this API of the TPP to return the customer’s e-wallet cash-in authorization status as specified below:

Endpoint

/v1/update-consent-cash-in

Method

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Request Header:

Parameter

Data type

Req.

Description

Content-Type

String

M

Default: “application/json”

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String

M

- Authorization format: “Bearer + {access_token}”, in accordance with RFC 6750.

- The access_token is issued in accordance with section 4.4 of RFC 6749 (with grant_type set to client_credentials).

Request-DateTime

DateTime

M

- Request date and time.

- Format: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String [60]

M

Unique request identifier, usually in UUID format.

Provider-ID

String [8]

M

Bank identifier as specified in section 1.

JWS-Signature

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



JWS signature as specified in section 1.

- Request Body:

Level 1

Data type

Req.

Description

paymentId

String [35]

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



consentId

String [36]

M

Value generated by the Bank after successful authorization via the Bank’s application in the Decoupled flow.

consentStatus

String [20]

M

Takes one of the following values:

- “AUTHORISED” when the customer is successfully authenticated.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- “CANCEL” when the customer does not authorize the transaction via the Bank’s application.

ewalletToken

String [30]

M

Token generated when the e-wallet is linked between the TPP and the Bank.

expireIn

Number

M

Validity period of the consentId as specified in section 1.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Parameter

Data type

Req.

Description

Content-Type

String

M

Default: “application/json”

Request-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Value taken from the request header in the TPP’s API request.

Request-DateTime

String

M

Value taken from the request header in the TPP’s API request.

JWS-Signature

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Response Body:

+ HTTP STATUS CODE 200 OK:

Level 1

Data type

Req.

Description

message

String [20]

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



+ Error Code: As specified by the TPP.

5.4. API for querying customer e-wallet cash-in authorization status — Decoupled flow

The TPP calls this API of the Bank to query the customer’s e-wallet cash-in authorization status as specified below:

Endpoint

/v1/get-consent-cash-in

Method

POST

Scope

EWLTS

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Parameter

Data type

Req.

Description

Content-Type

String

M

Default: “application/json”

Authorization

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

- Authorization format: “Bearer + {access_token}”, in accordance with RFC 6750.

- The access_token is issued in accordance with section 4.4 of RFC 6749 (with grant_type set to client_credentials).

Request-DateTime

DateTime

M

- Request date and time.

- Format: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

Request-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Unique request identifier, usually in UUID format.

PSU-IP-Address

String [50]

O

Customer’s IP address. This value must be in IPv4 or IPv6 format.

PSU-User-Agent

String [200]

O

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



PSU-Device-OS

String [100]

O

Operating system on the customer’s device (computer, mobile device, etc.).

Provider-ID

String [8]

M

Bank identifier as specified in section 1.

TPP-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

TPP identifier as specified in section 1.

Client-ID

String [50]

O

Client_id value as specified in section 1.

JWS-Signature

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Request Body:

Level 1

Data type

Req.

Description

paymentId

String [35]

M

Unique transaction identifier issued by the Bank to the TPP via the API for e-wallet cash-in in section 5.1.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String [30]

M

Token generated when the e-wallet is linked between the TPP and the Bank.

- Response Header:

Parameter

Data type

Req.

Description

Content-Type

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Default: “application/json”

Request-ID

String

M

Value taken from the request header in the TPP’s API request.

Request-DateTime

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



JWS-Signature

String

M

JWS signature as specified in section 1.

- Response Body:

+ HTTP STATUS CODE 200 OK:

Level 1

Data type

Req.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



paymentId

String [35]

M

Unique transaction identifier issued by the Bank to the TPP via the API for e-wallet cash-in in section 5.1.

consentId

String [36]

M

- Value generated by the Bank after successful authorization via the Bank’s application.

consentStatus

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Takes one of the following values:

- “AUTHORISED” when the customer successfully authorizes the transaction.

- “REJECTED” when the customer’s authorization does not comply with the Bank’s requirements.

- “CANCEL” when the customer does not authorize the transaction through the Bank’s application.

expireIn

Number

M

Validity period of the consentId as specified in section 1.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



String [30]

M

Token generated when the e-wallet is linked between the TPP and the Bank.

+ Error Code: Refer to section 7.2.1 - Error response format, and section 7.2.2 - Error codes.

5.5. API for e-wallet cash-in confirmation

Endpoint

/v1/submit-cash-in

Method

POST

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



EWLTS

- Request Header:

Parameter

Data type

Req.

Description

Content-Type

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Authorization

String

M

- Authorization format: “Bearer + {access_token}”, in accordance with RFC 6750.

- The access_token is issued in accordance with section 4.4 of RFC 6749 (with grant_type set to client_credentials).

Request-DateTime

DateTime

M

- Request date and time.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Request-ID

String [60]

M

Unique request identifier, usually in UUID format.

PSU-IP-Address

String [50]

O

Customer’s IP address. This value must be in IPv4 or IPv6 format.

PSU-User-Agent

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



O

Browser information if the customer uses the TPP’s website, or relevant information if the customer uses another TPP application.

PSU-Device-OS

String [100]

O

Operating system on the customer’s device (computer, mobile device, etc.).

Provider-ID

String [8]

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



TPP-ID

String [15]

M

TPP identifier as specified in section 1.

Client-ID

String [50]

O

Client_id value as specified in section 1.

JWS-Signature

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

JWS signature as specified in section 1.

- Request Body:

Level 1

Data type

Req.

Description

paymentId

String [35]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Unique transaction identifier issued by the Bank to the TPP via the API for e-wallet cash-in in section 5.1.

consentId

String [36]

C

Value generated by the Bank after successful authorization via the Bank’s application in the Decoupled flow, or successful OTP verification in the OTP flow.

ewalletToken

String [30]

M

Token generated when the e-wallet is linked between the TPP and the Bank.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Parameter

Data type

Req.

Description

Content-Type

String

M

Default: “application/json”

Request-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Value taken from the request header in the TPP’s API request.

Request-DateTime

String

M

Value taken from the request header in the TPP’s API request.

JWS-Signature

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Response Body:

+ HTTP STATUS CODE 200 OK:

Level 1

Data type

Req.

Description

paymentId

String [35]

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



status

String [4]

M

Transaction status code under ISO 20022.

statusDateTime

DateTime

M

- Status update time.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



5.6. API for querying transaction status

Endpoint

/v1/get-status-cash-in

Method

POST

Scope

EWLTS

- Request Header:

Parameter

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Req.

Description

Content-Type

String

M

Default: “application/json”

Authorization

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- The access_token is issued in accordance with section 4.4 of RFC 6749 (with grant_type set to client_credentials).

Request-DateTime

DateTime

M

- Request date and time.

- Format: yyyy-MM- ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

Request-ID

String [60]

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



PSU-IP-Address

String [50]

O

Customer’s IP address. This value must be in IPv4 or IPv6 format.

PSU-User-Agent

String [200]

O

Browser information if the customer uses the TPP’s website, or relevant information if the customer uses another TPP application.

PSU-Device-OS

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



O

Operating system on the customer’s device (computer, mobile device, etc.).

Provider-ID

String [8]

M

Bank identifier as specified in section 1.

TPP-ID

String [15]

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Client-ID

String [50]

O

Client_id value as specified in section 1.

JWS-Signature

String

M

JWS signature as specified in section 1.

- Request Body:

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Data type

Req.

Description

paymentId

String [35]

M

Unique transaction identifier issued by the Bank to the TPP via the API for e-wallet cash-in in section 5.1.

ewalletToken

String [30]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Token generated when the e-wallet is linked between the TPP and the Bank.

- Response Header:

Parameter

Type

Req.

Description

Content-Type

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Request-ID

String

M

Value taken from the request header in the TPP’s API request.

Request-DateTime

String

M

Value taken from the request header in the TPP’s API request.

JWS-Signature

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

JWS signature as specified in section 1.

- Response Body:

+ HTTP STATUS CODE 200 OK:

Level 1

Data type

Req.

Description

paymentId

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Unique transaction identifier issued by the Bank to the TPP via the API for e-wallet cash-in in section 5.1.

status

String [4]

M

Transaction status code under ISO 20022.

statusDateTime

DateTime

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

+ Error Code: Refer to section 7.2.1 - Error response format, and section 7.2.2 - Error codes.

6. Open API for e-wallet cash-out (point c, clause 1, Article 6)

- API for e-wallet cash-out flow:

Figure 6: E-wallet cash-out flow (EWLTS)

- Flow description:

+ Step 1: After logging in to the TPP application, the customer requests an e-wallet cash-out.

+ Step 2: The TPP requests an access_token from the Bank’s authorization server under OAuth 2.0 with grant_type set to client_credentials (refer to section 4.4 of RFC 6749 for details).

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



+ Step 3: The TPP sends an e-wallet cash-out request to the Bank via the API described below.

+ Step 3.1. The Bank’s system returns the result to the TPP.

+ Step 3.2. The TPP application displays the result to the customer.

Endpoint

/v1/cash-out

Method

POST

Scope

EWLTS

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Parameter

Data type

Req.

Description

Content-Type

String

M

Default: “application/json”

Authorization

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

- Authorization format: “Bearer + {access_token}”, in accordance with RFC 6750.

- The access_token is issued in accordance with section 4.4 of RFC 6749 (with grant_type set to client_credentials).

Request-DateTime

DateTime

M

- Request date and time.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

Request-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Unique request identifier, usually in UUID format.

PSU-IP-Address

String [50]

O

Customer’s IP address. This value must be in IPv4 or IPv6 format.

PSU-User-Agent

String [200]

O

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



PSU-Device-OS

String [100]

O

Operating system on the customer’s device (computer, mobile device, etc.).

Provider-ID

String [8]

M

Bank identifier as specified in section 1.

TPP-ID

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

TPP identifier as specified in section 1.

Client-ID

String [50]

O

Client_id value as specified in section 1.

JWS-Signature

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Request Body:

Level 1

Level 2

Data type

Req.

Description

instructionIdentification

 

String [50]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Transaction identifier generated by the TPP

remittanceInformation

 

String [255]

M

Transaction details

instructedAmount

 

Object

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Transaction amount information

 

value

Number

M

Transaction amount

 

currency

String [3]

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Currency expressed as a three-letter uppercase in accordance with ISO 4217.

requestedExecutionDate

 

DateTime

M

- Transaction execution date.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

ewalletToken

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

Token generated when the e-wallet is linked between the TPP and the Bank.

additionalInfo

 

Object

O

Additional information (if any)

- Response Header:

Parameter

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Req.

Description

Content-Type

String

M

Default: “application/json”

Request-ID

String

M

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Request-DateTime

String

M

Value taken from the request header in the TPP’s API request.

JWS-Signature

String

M

JWS signature as specified in section 1.

- Response Body:

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Level 1

Data type

Req.

Description

status

String [4]

M

Transaction status code under ISO 20022.

statusDateTime

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



M

- Status update time.

- Format: yyyy-MM-ddTHH:mm:ssZ (UTC DateTime), in accordance with RFC 3339.

+ Error Code: Refer to section 7.2.1 - Error response format, and section 7.2.2 - Common error codes.

7. Error codes

7.1. Error codes for the customer token grant flow

7.1.1. Error codes for the API for authentication and obtaining consent of customers

If “redirect_uri” is missing or does not match the URL registered by the TPP with the Bank, the Bank shall redirect the customer to an error page that clearly explains the error.

For errors such as the customer’s refusal to grant consent, or other errors unrelated to “redirect_uri”, the Bank shall notify the TPP by adding the values and parameters in the table below to “redirect_uri”:

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Data type

Req.

Description

error

String

M

Error code returned by the system. The applicable OAuth 2.0 error codes are listed in the error code table.

error_description

String

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Additional information to help the TPP understand the error.

state

String

M

Value from the TPP’s request.

Error code table:

No.

Parameter

Description

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



INVALID_REQUEST

The request is missing a required parameter, or contains an invalid or malformed parameter.

2

UNAUTHORIZED_CLIENT

The TPP is not authorized to request an authorization code using this method.

3

ACCESS_DENIED

The resource owner or authorization server denied the request.

4

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



The authorization server does not support obtaining an authorization code using this method.

5

INVALID_SCOPE

The requested scope is invalid, unknown or malformed.

6

SERVER_ERROR

The authorization server encountered an unexpected condition that prevented it from fulfilling the request.

7

TEMPORARILY_UNAVAILABLE

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



7.1.2. Error codes for the API for querying access token

The authorization server returns HTTP error code 400 (Bad Request) to the TPP, together with the error details below based on section 5.2 - “Error Response” of RFC 6749:

Error code format:

Parameter

Req.

Explanation

error

M

Error code returned by the system. The applicable OAuth 2.0 error codes are listed in the error code table.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



O

Additional information to help the TPP understand the error.

error_uri

O

URI identifying a human-readable web page containing information about the error, used to provide further details.

Error code table:

HTTP CODE

Error code (Error)

Description

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



INVALID_REQUEST

The request is missing a required parameter, or contains an invalid or malformed parameter.

400

INVALID_CLIENT

Client authentication failed.

400

UNAUTHORIZED_CLIENT

The TPP is not authorized to use this grant type.

400

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



The requested scope is invalid, unknown or malformed.

400

UNSUPPORTED_GRANT_TYPE

The grant type is not supported by the server.

7.2. Error codes for other APIs in this Appendix

7.2.1. Error response format

If an error occurs, the Bank’s system shall return a response body containing the information specified in the table below:

Parameter

Data type

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Description

code

String

M

Error code and HTTP status code as specified in section 7.2.2 - Common error codes.

description

String

M

Additional details about the error

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



HTTP CODE

CODE

DESCRIPTION

400

ACCOUNT_ID_REQUIRED

The accountId field must not be empty.

400

ACCOUNT_NOT_EXISTED

The account does not exist.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



CONSENTID_NOT_EXISTED

The consentId does not exist.

400

CREDITOR_ACCOUNTID_ REQUIRED

The creditor accountId field must not be empty.

400

CREDITOR_ACCOUNTID_ NOT_EXISTED

The creditor accountId does not exist.

400

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



The creditor bankCode field must not be empty.

400

CREDITOR_NAME_REQUIRED

The creditor name field must not be empty.

400

DEBTOR_ACCOUNTID_NOT_ EXISTED

The debtor accountId does not exist.

400

DEBTOR_ACCOUNTID_ REQUIRED

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



400

DEBTOR_NAME_REQUIRED

The debtor name field must not be empty.

400

EWALLETTOKEN_ REQUIRED

The ewalletToken field must not be empty.

400

EWALLETTOKEN_NOT_ EXISTED

The ewalletToken does not exist.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



EXPIRE_CONSENTID

The consentId has expired.

400

FROMDATE_INVALID

The fromDate field is invalid.

400

FROMDATE_REQUIRED

The fromDate field must not be empty.

400

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



The instructedAmount currency field is invalid.

400

INSTRUCTED_AMOUNT_ CURRENCY_REQUIRED

The instructedAmount currency field must not be empty.

400

INSTRUCTED_AMOUNT_ VALUE_REQUIRED

The instructedAmount value field must not be empty.

400

INSTRUCTION_IDENTIFICAT ION_REQUIRED

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



400

JWS_SIGNATURE_REQUIRED

The JWS-Signature field must not be empty.

400

PAGE_INVALID

The page field is invalid.

400

PAYMENTID_REQUIRED

The paymentId field must not be empty.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



PAYMENTID_NOT_EXISTED

The paymentId does not exist.

400

PROVIDER_ID_REQUIRED

The Provider-ID field must not be empty.

400

PSU_IP_ADDRESS_INVALID

The PSU-IP-Address field is invalid (if provided).

400

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



The remittanceInformation field must not be empty.

400

REQUEST_DATETIME_ REQUIRED

The Request-DateTime field must not be empty.

400

REQUEST_ID_REQUIRED

The Request-ID field must not be empty.

400

REQUESTED_EXECUTIONDA TE_REQUIRED

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



400

SIZE_INVALID

The size field is invalid.

400

TODATE_INVALID

The toDate field is invalid.

400

TODATE_REQUIRED

The toDate field must not be empty.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



TPP_ID_REQUIRED

The TPP-ID field must not be empty.

400

TPP_UNVERIFIED

The TPP has not been authenticated.

400

OTHER

Other errors related to API requests from the TPP as described by the Bank.

401

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



The OAuth 2 token has expired.

401

JWS_SIGNATURE_ UNVERIFIED

JWS-Signature verification failed.

403

FORBIDDEN

A valid OAuth token was received, but access was denied.

405

WRONG_METHOD

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



500

INTERNAL_ERROR

The server encountered an unexpected condition that prevented it from fulfilling the request.

502

BAD_GATEWAY

The server received an invalid response from the upstream server.

504

GATEWAY_TIMEOUT

The server did not receive a response from the upstream server to complete the request.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



OTHER

Other errors related to the server processing the API request as described by the Bank.

 

APPENDIX 02

TECHNICAL STANDARDS FOR DEPLOYMENT OF OPEN APIs IN THE BANKING SECTOR
(Attached with Circular No. 64/2024/TT-NHNN dated December 31, 2024 of the Governor of the State Bank of Vietnam)

No.

Standard category

Standard identifier

Full name of standard

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



1

Architecture standards

1.1

Data exchange

 

 

 

 

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



REpresentational State Transfer

Mandatory

 

 

SOAP

Simple Object Access Protocol

Recommended for the Bank’s other APIs.

1.2

Data exchange format

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



 

 

 

 

JSON

JavaScript Object Notation

Mandatory

 

 

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



eXtensible Markup Language

Recommended for the Bank’s other APIs.

2

Data standards

 

Data format

ISO 20022

International Organization for Standardization 20022

Use of one of these standards is recommended for the Bank’s other APIs.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



International Organization for Standardization 8583

OFX

Open Financial Exchange

ISO 4217

International Organization for Standardization 4217

Mandatory

RFC 3339

Date and Time on the Internet: Timestamps

Mandatory

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Information security standards

3.1

Customer authentication and consent solution

RFC 6749

The OAuth 2.0 Authorization Framework

- Compliance with RFC 6749, RFC 6750 and RFC 7636 is mandatory.

- RFC 6749 and RFC 6750 may be combined with RFC 7636 and OIDC, depending on the use case.

RFC 6750

The OAuth 2.0 Authorization Framework: Bearer Token Usage

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Proof Key for Code Exchange by OAuth Public Clients

RFC 7009

OAuth 2.0 Token Revocation

OIDC

OpenID Connect

SAML v2.0

Security Assertion Markup Language version 2.0

Recommended for the Bank’s other APIs.

3.2

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



HTTPS

HyperText Transfer Protocol Secure

Mandatory

TLS v1.2 or later

Transport Layer Security version 1.2+

Mandatory

3.3

Encryption algorithms

TCVN 7816:2007

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Recommended

PKCS #1

RSA Cryptography Standard

Recommended

Use version 2.1 or later and the RSAES-OAEP encryption scheme. Minimum key length: 2048 bits.

ECC

Elliptic Curve Cryptography

Recommended. Minimum key length: 256 bits.

JWE

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Compliance with RFC 7516 is recommended.

TCVN 11367- 2:2016

Information technology — Security techniques — Cryptographic algorithms — Part 2: Asymmetric ciphers.

Recommended

3.4

Electronic signatures

JWS

JSON Web Signature

Mandatory requirements:

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



- Minimum key length: 2048 bits for RSA and 256 bits for ECDSA.

PKCS #1

RSA Cryptography Standard

Use of one of these standards is recommended.

- For RSA:

+ Version 2.1 or later.

+ Minimum key length: 2048 bits.

- For ECDSA:

Minimum key length: 256 bits.

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



Elliptic Curve Digital Signature Algorithm

TCVN 7635:2007

Cryptographic techniques — Digital signatures

3.5

Hash algorithms for digital signatures

FIPS PUB 180-4

Secure Hash Standard

Use of one of the following hash functions is recommended: SHA2-56, SHA-384, SHA-512, SHA-512/256, SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256.

FIPS PUB 202

...

...

...

Hãy đăng nhập hoặc đăng ký Thành viên Pro tại đây để xem toàn bộ văn bản tiếng Anh.



3.6

Information system security

ISO27001:2022

International Organization for Standardization 27001:2022

Use of one of these two standards is mandatory.

TCVN 11930:2017

Information technology — Security techniques — Baseline information system security requirements by security level

 

 

Bạn Chưa Đăng Nhập Thành Viên!


Vì chưa Đăng Nhập nên Bạn chỉ xem được Thuộc tính của văn bản.
Bạn chưa xem được Hiệu lực của Văn bản, Văn bản liên quan, Văn bản thay thế, Văn bản gốc, Văn bản tiếng Anh,...


Nếu chưa là Thành Viên, mời Bạn Đăng ký Thành viên tại đây


Bạn Chưa Đăng Nhập Thành Viên!


Vì chưa Đăng Nhập nên Bạn chỉ xem được Thuộc tính của văn bản.
Bạn chưa xem được Hiệu lực của Văn bản, Văn bản liên quan, Văn bản thay thế, Văn bản gốc, Văn bản tiếng Anh,...


Nếu chưa là Thành Viên, mời Bạn Đăng ký Thành viên tại đây


Bạn Chưa Đăng Nhập Thành Viên!


Vì chưa Đăng Nhập nên Bạn chỉ xem được Thuộc tính của văn bản.
Bạn chưa xem được Hiệu lực của Văn bản, Văn bản liên quan, Văn bản thay thế, Văn bản gốc, Văn bản tiếng Anh,...


Nếu chưa là Thành Viên, mời Bạn Đăng ký Thành viên tại đây


Bạn Chưa Đăng Nhập Thành Viên!


Vì chưa Đăng Nhập nên Bạn chỉ xem được Thuộc tính của văn bản.
Bạn chưa xem được Hiệu lực của Văn bản, Văn bản liên quan, Văn bản thay thế, Văn bản gốc, Văn bản tiếng Anh,...


Nếu chưa là Thành Viên, mời Bạn Đăng ký Thành viên tại đây


Thông tư 64/2024/TT-NHNN ngày 31/12/2024 quy định về triển khai giao diện lập trình ứng dụng mở trong ngành Ngân hàng do Thống đốc Ngân hàng Nhà nước Việt Nam ban hành

Bạn Chưa Đăng Nhập Thành Viên!


Vì chưa Đăng Nhập nên Bạn chỉ xem được Thuộc tính của văn bản.
Bạn chưa xem được Hiệu lực của Văn bản, Văn bản liên quan, Văn bản thay thế, Văn bản gốc, Văn bản tiếng Anh,...


Nếu chưa là Thành Viên, mời Bạn Đăng ký Thành viên tại đây


Văn bản liên quan

Ban hành: 15/05/2024

Hiệu lực: Đã biết

Tình trạng: Đã biết

Cập nhật: 20/05/2024

Ban hành: 18/01/2024

Hiệu lực: Đã biết

Tình trạng: Đã biết

Cập nhật: 19/02/2024

Ban hành: 22/06/2023

Hiệu lực: Đã biết

Tình trạng: Đã biết

Cập nhật: 18/07/2023

Ban hành: 17/04/2023

Hiệu lực: Đã biết

Tình trạng: Đã biết

Cập nhật: 18/04/2023

Ban hành: 19/11/2015

Hiệu lực: Đã biết

Tình trạng: Đã biết

Cập nhật: 19/12/2015

Ban hành: 16/06/2010

Hiệu lực: Đã biết

Tình trạng: Đã biết

Cập nhật: 02/07/2010

13.770

DMCA.com Protection Status

IP: 216.73.216.147