Chuyển tới nội dung chính

Khởi tạo VCN

⚠️ API này trả về kết quả tiếp nhận yêu cầu, không phải kết quả khởi tạo VCN cuối cùng (status chỉ có giá trị 2-Đang xử lý hoặc 4-Thất bại). Kết quả khởi tạo VCN thực tế (thông tin thẻ) được gửi qua Webhook thông báo thông tin VCN.

Quy trình​

  • MERCHANT gọi API để khởi tạo VCN.

Thông tin API​

URL: /b2b-iccp-service/api/ext/mm/iccp/vcn-create

Method: POST

Request​

Bảng tham số chính​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1request_idString(100)✅Id duy nhất ứng với mỗi Request từ MERCHANT sang Baokim.
2request_timeString(20)✅Thời gian gửi Request. Format: YYYY-MM-DD H:i:s
3master_merchant_codeString(50)✅Mã định danh duy nhất cho MASTER MERCHANT
4sub_merchant_codeString(50)✅Mã định danh duy nhất cho SUB MERCHANT
5reference_idString(50)✅Mã tham chiếu
6customer_nameString(255)✅Tên khách hàng
7expiryString(7)✅Ngày hết hạn trên thẻ VCN, format MM/YYYY
expiry lớn hơn tối thiểu 1 tháng so với thời gian hiện tại và max 24 tháng so với thời điểm hiện tại
8control_typeNumber✅1: accountControl
2: inControlRules
9account_controlObject❌Bắt buộc nếu control_type = 1
10in_control_rulesObject❌Bắt buộc nếu control_type = 2
11real_card_guidString✅Mã định danh thẻ vật lý RCN Baokim cung cấp

Thông tin account_control​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1aliasString✅Mã unique gợi nhớ của Control
2card_limitObject❌Thiết lập giới hạn chung cho thẻ - trong suốt vòng đời thẻ
3monthly_limitObject❌Thiết lập giới hạn cho thẻ theo tháng
4daily_limitObject❌Thiết lập giới hạn cho thẻ theo ngày
5weekly_limitObject❌Thiết lập giới hạn cho thẻ theo tuần
6quarterly_limitObject❌Thiết lập giới hạn cho thẻ theo quý
7yearly_limitObject❌Thiết lập giới hạn cho thẻ theo năm
8geographiesObject❌Thiết lập sử dụng thẻ theo khu vực địa lý
9merchant_category_codesObject❌Thiết lập sử dụng thẻ theo MCC
10start_dateString❌Thời gian sử dụng thẻ - Bắt đầu
11end_dateString❌Thời gian sử dụng thẻ - Kết thúc

Thông tin account_control.card_limit​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1card_amountNumber✅Giá trị giao dịch
2available_balanceNumber❌Số dư khả dụng
readOnly -> Có giá trị thì truyền, MasterCard chỉ dùng để collect thông tin (nếu có), không dùng để validate thông tin
3authorisation_countNumber✅Số lượng giao dịch

Thông tin account_control.monthly_limit​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1card_amountNumber✅Giá trị giao dịch
2available_balanceNumber❌Số dư khả dụng
readOnly -> Có giá trị thì truyền, MasterCard chỉ dùng để collect thông tin (nếu có), không dùng để validate thông tin
3authorisation_countNumber✅Số lượng giao dịch

Thông tin account_control.daily_limit​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1card_amountNumber✅Giá trị giao dịch
2available_balanceNumber❌Số dư khả dụng
readOnly -> Có giá trị thì truyền, MasterCard chỉ dùng để collect thông tin (nếu có), không dùng để validate thông tin
3authorisation_countNumber✅Số lượng giao dịch

Thông tin account_control.weekly_limit​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1card_amountNumber✅Giá trị giao dịch
2available_balanceNumber❌Số dư khả dụng
readOnly -> Có giá trị thì truyền, MasterCard chỉ dùng để collect thông tin (nếu có), không dùng để validate thông tin
3authorisation_countNumber✅Số lượng giao dịch

Thông tin account_control.quarterly_limit​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1card_amountNumber✅Giá trị giao dịch
2available_balanceNumber❌Số dư khả dụng
readOnly -> Có giá trị thì truyền, MasterCard chỉ dùng để collect thông tin (nếu có), không dùng để validate thông tin
3authorisation_countNumber✅Số lượng giao dịch

Thông tin account_control.yearly_limit​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1card_amountNumber✅Giá trị giao dịch
2available_balanceNumber❌Số dư khả dụng
readOnly -> Có giá trị thì truyền, MasterCard chỉ dùng để collect thông tin (nếu có), không dùng để validate thông tin
3authorisation_countNumber✅Số lượng giao dịch

Thông tin account_control.geographies​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1country_codesArray✅Danh sách mã quốc gia - format 3 ký tự
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin account_control.merchant_category_codes​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1mccsArray✅Danh sách MCC
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin in_control_rules​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1aliasString✅Mã unique gợi nhớ của Control
2transaction_limitsObject❌Thiết lập giới hạn số tiền/ mỗi giao dịch thẻ
3geographiesObject❌Thiết lập sử dụng thẻ theo khu vực địa lý
4velocitiesObject✅Thiết lập giới hạn tần suất và/hoặc tổng số tiền giao dịch thẻ trong một khoảng thời gian nhất định
5validity_periodsObject❌Kiểm soát thời gian hiệu lực của control
6amount_rangesObject❌Kiểm soát giá trị giao dịch trong khoảng min, max
7acceptor_idsObject❌Thiết lập kiểm soát cho phép các Merchant/Acquirer nào thẻ được phép thực hiện giao dịch
8ageing_velocitiesObject❌Thiết lập và kiểm soát hạn mức tín dụng khả dụng trên thẻ
9curfewsObject❌Thiết lập kiểm soát giao dịch thẻ theo khung giờ trong các ngày nhất định, và có thể xác định múi giờ áp dụng
10time_of_daysObject❌Thiết lập kiểm soát giao dịch thẻ theo trong các khung giờ cụ thể của từng ngày
11merchant_category_codesObject❌Thiết lập kiểm soát GD thẻ theo mã ngành nghề MCC của merchant
12merchant_namesObject❌Thiết lập kiểm soát GD thẻ theo tên của Merchant (ĐVi chấp nhận thẻ)
13merchant_amountsObject❌Thiết lập kiểm soát GD thẻ theo số tiền mỗi giao dịch trên 1 loại tiền tệ cụ thể
14transaction_environmentsObject❌Thiết lập kiểm soát giao dịch thẻ theo Phương thức giao dịch
15approve_controlObject❌Thiết lập kiểm soát GD thẻ - Toàn bộ rule thiết lập sẽ là cho approve/decline GD
16entry_modesObject❌Thiết lập kiểm soát GD theo loại hình thẻ

Thông tin in_control_rules.transaction_limits​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1amountFloat✅Giá trị giao dịch tối đa/ 1 giao dịch
Giá trị này được setup theo billing currency của RCN đã đăng ký BPC
min: 0
max: 99999999999999
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin in_control_rules.geographies​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1country_codesArray✅Danh sách mã quốc gia - format 3 ký tự
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin in_control_rules.velocities​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1max_transNumber✅Số lượng giao dịch tối đa được phép giao dịch trong 1 khoảng thời gian nhất định
min: 1
max: 99999999
2cumulative_limitNumber✅Số tiền giao dịch cộng dồn tối đa được phép giao dịch trong 1 khoảng thời gian nhất định
min: 1000
max: 5000000
3periodString✅Kỳ áp dụng
- DAILY -> Hàng ngày
- WEEKLY -> Hàng tuần
- QUARTERLY -> Hàng quý
- CONTINUOUS -> Từ lúc thiết lập và ko có ngày reset đếm/cộng dồn lại (bao giờ chạm ngưỡng thì báo)
- MONTHLY -> Hàng tháng
- YEARLY -> Hàng năm
4negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin in_control_rules.validity_periods​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1fromString✅Thời gian bắt đầu hiệu lực của control
2toString✅Thời gian kết thúc hiệu lực của control
3negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin in_control_rules.amount_ranges​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1min_amountFloat✅Số tiền giao dịch tối thiểu
min: 0
max: 99999999999999
min_amount < max_amount
2max_amountFloat✅Số tiền giao dịch tối đa
min: 0
max: 99999999999999
min_amount < max_amount
3negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin in_control_rules.acceptor_ids​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1acceptorsObject✅Có thể set merchant hoặc acquire
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Mô tả dữ liệu bên trong in_control_rules.acceptor_ids.acceptors(1)

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1acceptor_idString✅Mã Merchant ID – định danh của đơn vị chấp nhận thẻ (merchant) nơi giao dịch diễn ra.
2acquirer_idString✅Mã Acquirer ID – định danh của ngân hàng/đơn vị thanh toán (acquirer) xử lý giao dịch cho merchant.

Thông tin in_control_rules.ageing_velocities​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1authorization_hold_daysNumber✅Số ngày hold giao dịch trên thẻ ảo để tính toán khi nào reset lại Hạn mức tín dụng đang thiết lập
min: 0
max: 9999
2cumulative_limitNumber✅Hạn mức tổng
Nếu truyền vào = 0 - Đồng nghĩa với unlimited (Bỏ qua giới hạn thiết lập này)
min: 0
max: 99999999999999
3time_zoneString✅Múi giờ áp dụng cho việc tính ngày và giờ để thực hiện unhold giao dịch để loại bỏ khỏi phần tính avaliableCredit
4negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin in_control_rules.curfews​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1from_timeString✅Thời gian bắt đầu cho phép giao dịch.
2to_timeString✅Thời gian kết thúc cho phép giao dịch
(sau thời gian này, giao dịch bị từ chối)
3time_zoneString(3)❌Múi giờ áp dụng khung giờ trên
Ví dụ: UTC
4daysArray✅Danh sách các ngày trong tuần áp dụng giới hạn SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY. Được truyền multi, cách nhau dấu phẩy
5negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin in_control_rules.time_of_days​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1timesArray✅Danh sách object cấu hình thời gian cho phép giao dịch
(sau thời gian này, giao dịch bị từ
chối)
Có thể truyền 1 mảng các config
2time_zoneString✅Múi giờ áp dụng cho khung giờ trên (fromTime-toTime)
Lưu ý default áp dụng là GMT (không phải là timezone register cho RCN)
Nên lưu ý phải truyền vào
Example: UTC
3negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Mô tả dữ liệu object bên trong in_control_rules.time_of_days.times(1)

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1from_timeString✅Thời gian bắt đầu cho phép giao dịch.
2to_timeString✅Thời gian kết thúc cho phép giao dịch
(sau thời gian này, giao dịch bị từ chối)
3daysArray✅Các ngày trong tuần áp dụng giới hạn SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY. Được truyền multi, cách nhau dấu phẩy

Thông tin in_control_rules.merchant_category_codes​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1mccsArray✅Danh sách MCC
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin in_control_rules.merchant_names​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1merchant_namesArray✅Danh sách merchant names (được gửi trong trường DE43 của thông điệp ủy quyền (authorization message)
Tên này phải khớp với tên trong dữ liệu thanh toán của ngân hàng (trường DE43)
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin in_control_rules.merchant_amounts​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1valueFloat✅Số tiền tối đa/giao dịch theo currency_code thiết lập bên dưới
min: 0
max: 99999999999999
2currency_codeString✅Mã tiền tệ áp dụng theo chuẩn (ISO) 4217
Mặc định: 704
3negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin in_control_rules.transaction_environments​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1environment_codesArray✅Danh sách các phương thức giao dịch
- ATM – Giao dịch tại máy rút tiền
tự động.
- ECOM – Giao dịch thương mại
điện tử (online).
- MOTO – Mail Order/Telephone Order (đặt hàng qua thư/điện thoại, không có mặt thẻ và chủ thẻ).
- PAYPASS – Thanh toán không tiếp xúc (contactless).
- POS – Giao dịch trực tiếp tại cửa hàng (quẹt trên máy POS).
- PWCB – Mua hàng kèm rút tiền
mặt (Purchase with Cash Back).
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin in_control_rules.approve_control​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin in_control_rules.entry_modes​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1modeString✅Truyền loại hình thẻ chấp nhận thanh toán
Default: EMV
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Ví dụ Request​

{
"request_id": "TT20260209163542",
"request_time": "2026-03-24 16:28:32",
"master_merchant_code": "MASTERMERCHANTCODE",
"sub_merchant_code": "SUBMERCHANTCODE",
"reference_id": "TT20260209163542",
"customer_name": "NGUYỄN VĂN A",
"expiry": "12/2026",
"control_type": 1,
"account_control": {
"alias": "TT20260209163542",
"card_limit": {
"card_amount": 10000000000,
"available_balance": 0,
"authorisation_count": 100
},
"daily_limit": {
"card_amount": 10000000000,
"available_balance": 10000000000,
"authorisation_count": 100
},
"weekly_limit": {
"card_amount": 10000000000,
"available_balance": 10000000000,
"authorisation_count": 100
},
"monthly_limit": {
"card_amount": 10000000000,
"available_balance": 10000000000,
"authorisation_count": 100
},
"quarterly_limit": {
"card_amount": 10000000000,
"available_balance": 10000000000,
"authorisation_count": 100
},
"yearly_limit": {
"card_amount": 10000000000,
"available_balance": 10000000000,
"authorisation_count": 100
},
"geographies": {
"country_codes": [
"704",
"840"
],
"negate": 0
},
"merchant_category_codes": {
"mccs": [
"3001",
"3005"
],
"negate": 0
},
"start_date": "2025-12-01",
"end_date": "2035-12-01"
},
"real_card_guid": "real_card_guid_test"
}

Ví dụ Request​

{
"request_id": "TT20260209163542",
"request_time": "2026-03-24 15:33:06",
"master_merchant_code": "MASTERMERCHANTCODE",
"sub_merchant_code": "SUBMERCHANTCODE",
"reference_id": "TT20260209163542",
"customer_name": "NGUYỄN VĂN A",
"expiry": "12/2026",
"control_type": 2,
"in_control_rules": {
"alias": "TT20260209163542",
"transaction_limits": {
"amount": 100,
"negate": 0
},
"velocities": {
"max_trans": 100,
"cumulative_limit": 1500000,
"period": "CONTINUOUS",
"negate": 0
},
"validity_periods": {
"from": "2026-07-24 15:35:06",
"to": "2035-12-01 00:00:00",
"negate": 0
},
"acceptor_ids": {
"acceptors": {
"acceptor_id": "126548888899997",
"acquirer_id": "12325435"
},
"negate": 0
},
"ageing_velocities": {
"authorization_hold_days": 0,
"cumulative_limit": 0,
"time_zone": "UTC",
"negate": 0
},
"time_of_days": {
"times": [
{
"from_time": "00:00",
"to_time": "23:59",
"days": [
"MONDAY",
"TUESDAY",
"WEDNESDAY"
]
}
],
"time_zone": "UTC",
"negate": 0
},
"merchant_names": {
"merchant_names": [
"Amazon"
],
"negate": 0
},
"merchant_amounts": {
"value": 10000000,
"currency_code": "704",
"negate": 0
},
"transaction_environments": {
"environment_codes": [
"ECOM",
"POS"
],
"negate": 0
},
"approve_control": {
"negate": 0
},
"entry_modes": {
"mode": "EMV",
"negate": 0
}
},
"real_card_guid": "real_card_guid_test"
}

Response​

Bảng tham số chính​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1codeNumber(3)✅Mã lỗi của Baokim
2messageString(200)✅Thông báo mã lỗi của Baokim
3dataObject✅Dữ liệu Baokim trả về

Thông tin data​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1reference_idString✅Mã tham chiếu yêu cầu tạo VCN
2statusNumber✅Trạng thái tạo VCN
2: Đang xử lý
4: Thất bại
3created_atDateTime✅Thời gian tiếp nhận yêu cầu
4updated_atDateTime✅Thời gian cập nhật yêu cầu

Ví dụ Response - khi tạo yêu cầu thành công​

{
"code": 100,
"message": "Success",
"data": {
"reference_id": "MERCHANT1774336134305",
"status": 2,
"created_at": "2026-03-24 16:33:47",
"updated_at": "2026-03-24 16:33:47"
}
}

Ví dụ Response - khi tạo yêu cầu thất bại​

{
"code": 11,
"message": "Fail",
"data": {
"reference_id": "MERCHANT1774336134305",
"status": 4,
"created_at": "2026-03-24 16:33:47",
"updated_at": "2026-03-24 16:33:47"
}
}

Bảng mã lỗi​

Mã lỗiMô tả
100Thành công
11Thất bại
104Không được uỷ quyền
401Merchant verify failed
422Lỗi validate
1000Lưu request ICCP thất bại
1001Lưu thẻ VCN thất bại
1100JWT không hợp lệ hoặc đã hết hạn
1101Xác thực chữ ký thất bại
1200master_merchant_code và sub_merchant_code không khớp cấu hình real_card_guid
1202real_card_guid không tồn tại
1500Request {request_id} đã tồn tại
1501reference_id đã tồn tại
1502Alias đã tồn tại