Skip to main content

Webhook VCN Information Notification

Process​

  • Baokim calls the MERCHANT's webhook API to send the VCN creation result notification along with the VCN information encrypted using Baokim's encryption mechanism.

  • If the Partner does not want to receive the webhook, respond with code = 1600 to reject it.

API Information​

URL: Provided by the Merchant

Method: POST

  • Header:

    • Content-Type: Application/json

    • Signature: $signature

Baokim Sends to the Partner (Webhook)​

Main Parameters Table​

No.Field NameData TypeRequiredDescription
1request_idString(100)✅Unique ID for each Request sent from Baokim to the Merchant
2request_timeString(20)✅Request sent time. Format: YYYY-MM-DD H:i:s
3master_merchant_codeString(50)✅Unique identifier for MASTER MERCHANT
4sub_merchant_codeString(50)✅Unique identifier for SUB MERCHANT
5operationString(50)✅CREATE_VCN
6reference_idString(50)✅Reference code for the VCN creation request
7statusNumber✅VCN creation status
3: Success
4: Failed
8card_dataObject❌Card data
NULL if the VCN creation status is failed
9created_atDateTime✅Time the request was received
10updated_atDateTime✅Time the request was updated

card_data Information​

No.Field NameData TypeRequiredDescription
1vcn_idNumber✅VCN ID
2card_info_encryptString✅Encrypted VCN card data
3card_statusNumber✅VCN card status
4control_typeNumber✅1: accountControl
2: inControlRules
5account_controlObject❌Required if control_type = 1
6in_control_rulesObject❌Required if control_type = 2

object after decrypting card_data.card_info_encrypt Information​

No.Field NameData TypeRequiredDescription
1card_numberString✅VCN card number
2cvcString✅Card CVC number
3expiryString(7)✅Card expiry date
4card_holderString✅Cardholder name

card_data.account_control Information​

No.Field NameData TypeRequiredDescription
1aliasString✅Unique memorable code for the Control
2card_limitObject❌Sets the general limit for the card - throughout the card's lifetime
3monthly_limitObject❌Sets a monthly limit for the card
4daily_limitObject❌Sets a daily limit for the card
5weekly_limitObject❌Sets a weekly limit for the card
6quarterly_limitObject❌Sets a quarterly limit for the card
7yearly_limitObject❌Sets a yearly limit for the card
8geographiesObject❌Sets card usage by geographic region
9merchant_category_codesObject❌Sets card usage by MCC
10start_dateString❌Card usage period - Start
11end_dateString❌Card usage period - End

card_data.account_control.card_limit Information​

No.Field NameData TypeRequiredDescription
1card_amountNumber✅Transaction value
2available_balanceNumber❌Available balance
readOnly -> Pass a value if available; MasterCard only uses it to collect information (if any), not to validate information
3authorisation_countNumber✅Number of transactions

card_data.account_control.monthly_limit Information​

No.Field NameData TypeRequiredDescription
1card_amountNumber✅Transaction value
2available_balanceNumber❌Available balance
readOnly -> Pass a value if available; MasterCard only uses it to collect information (if any), not to validate information
3authorisation_countNumber✅Number of transactions

card_data.account_control.daily_limit Information​

No.Field NameData TypeRequiredDescription
1card_amountNumber✅Transaction value
2available_balanceNumber❌Available balance
readOnly -> Pass a value if available; MasterCard only uses it to collect information (if any), not to validate information
3authorisation_countNumber✅Number of transactions

card_data.account_control.weekly_limit Information​

No.Field NameData TypeRequiredDescription
1card_amountNumber✅Transaction value
2available_balanceNumber❌Available balance
readOnly -> Pass a value if available; MasterCard only uses it to collect information (if any), not to validate information
3authorisation_countNumber✅Number of transactions

card_data.account_control.quarterly_limit Information​

No.Field NameData TypeRequiredDescription
1card_amountNumber✅Transaction value
2available_balanceNumber❌Available balance
readOnly -> Pass a value if available; MasterCard only uses it to collect information (if any), not to validate information
3authorisation_countNumber✅Number of transactions

card_data.account_control.yearly_limit Information​

No.Field NameData TypeRequiredDescription
1card_amountNumber✅Transaction value
2available_balanceNumber❌Available balance
readOnly -> Pass a value if available; MasterCard only uses it to collect information (if any), not to validate information
3authorisation_countNumber✅Number of transactions

card_data.account_control.geographies Information​

No.Field NameData TypeRequiredDescription
1country_codesArray✅List of country codes - 3-character format
2negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.account_control.merchant_category_codes Information​

No.Field NameData TypeRequiredDescription
1mccsArray✅List of MCCs
2negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules Information​

No.Field NameData TypeRequiredDescription
1aliasString✅Unique memorable code for the Control
2transaction_limitsObject❌Sets the amount limit per card transaction
3geographiesObject❌Sets card usage by geographic region
4velocitiesObject❌Sets the frequency limit and/or total card transaction amount within a given time period
5validity_periodsObject❌Controls the validity period of the control
6amount_rangesObject❌Controls the transaction value within a min, max range
7acceptor_idsObject❌Sets which Merchants/Acquirers the card is allowed to transact with
8ageing_velocitiesObject❌Sets and controls the available credit limit on the card
9curfewsObject❌Sets card transaction controls by time slot on given days, and can specify the applicable timezone
10time_of_daysObject❌Sets card transaction controls within specific time slots of each day
11merchant_category_codesObject❌Sets card transaction controls by the merchant's MCC
12merchant_namesObject❌Sets card transaction controls by Merchant name (card acceptance unit)
13merchant_amountsObject❌Sets card transaction controls by amount per transaction for a specific currency
14transaction_environmentsObject❌Sets card transaction controls by transaction method
15approve_controlObject❌Sets card transaction controls - the entire rule setup will be for approving/declining the transaction
16entry_modesObject❌Sets transaction controls by card entry type

card_data.in_control_rules.transaction_limits Information​

No.Field NameData TypeRequiredDescription
1amountFloat✅Maximum transaction value per transaction
This value is set according to the billing currency of the RCN registered with BPC
min: 0
max: 99999999999999
2negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.geographies Information​

No.Field NameData TypeRequiredDescription
1country_codesArray✅List of country codes - 3-character format
2negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.velocities Information​

No.Field NameData TypeRequiredDescription
1max_transNumber✅Maximum number of transactions allowed within a given time period
min: 1
max: 99999999
2cumulative_limitNumber❌Maximum cumulative transaction amount allowed within a given time period
If passed as 0 - it means
unlimited (ignore this
limit setting)
min: 0
max: 99999999999999
3periodString✅Applicable period
- DAILY -> Daily
- WEEKLY -> Weekly
- QUARTERLY -> Quarterly
- CONTINUOUS -> From the time of setup with no reset date for counting/accumulating (reports whenever the threshold is reached)
- MONTHLY -> Monthly
- YEARLY -> Yearly
4negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.validity_periods Information​

No.Field NameData TypeRequiredDescription
1fromString✅Start time of the control's validity
2toString✅End time of the control's validity
3negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.amount_ranges Information​

No.Field NameData TypeRequiredDescription
1min_amountFloat✅Minimum transaction amount
min: 0
max: 99999999999999
min_amount < max_amount
2max_amountFloat✅Maximum transaction amount
min: 0
max: 99999999999999
min_amount < max_amount
3negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.acceptor_ids Information​

No.Field NameData TypeRequiredDescription
1acceptorsObject✅Can set merchant or acquirer
2negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.acceptor_ids.acceptors Information​

No.Field NameData TypeRequiredDescription
1acceptor_idString✅Merchant ID – identifier of the card-accepting unit (merchant) where the transaction takes place.
2acquirer_idString✅Acquirer ID – identifier of the bank/payment unit (acquirer) processing the transaction for the merchant.

card_data.in_control_rules.ageing_velocities Information​

No.Field NameData TypeRequiredDescription
1authorization_hold_daysNumber✅Number of days the transaction on the virtual card is held to calculate when the currently set credit limit resets
min: 0
max: 9999
2cumulative_limitNumber✅Total limit
If passed as 0 - it means unlimited (ignore this limit setting)
min: 0
max: 99999999999999
3time_zoneString✅Timezone applied to calculating the date and time for unholding the transaction to remove it from the availableCredit calculation
4negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.curfews Information​

No.Field NameData TypeRequiredDescription
1from_timeString✅Start time transactions are allowed.
2to_timeString✅End time transactions are allowed
(after this time, the transaction is rejected)
3time_zoneString❌Timezone applied to the above time slot
Example: UTC
4daysArray✅List of days of the week the limit applies to: SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY. Can be passed as multiple values, separated by commas
5negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.time_of_days Information​

No.Field NameData TypeRequiredDescription
1timesArray✅List of objects configuring the time allowed for transactions
(after this time, the transaction is
rejected)
An array of configs can be passed
2time_zoneString✅Timezone applied to the above time slot (fromTime-toTime)
Note that the default applied is GMT (not the timezone registered for the RCN)
Be sure to pass this in
Example: UTC
3negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

Description of the object inside card_data.in_control_rules.time_of_days.times(1)

No.Field NameData TypeRequiredDescription
1from_timeString✅Start time transactions are allowed.
2to_timeString✅End time transactions are allowed
(after this time, the transaction is rejected)
3daysArray✅Days of the week the limit applies to: SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY. Can be passed as multiple values, separated by commas

card_data.in_control_rules.merchant_category_codes Information​

No.Field NameData TypeRequiredDescription
1mccsArray✅List of MCCs
2negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.merchant_names Information​

No.Field NameData TypeRequiredDescription
1merchant_namesArray✅List of merchant names (sent in field DE43 of the authorization message)
This name must match the name in the bank's payment data (field DE43)
2negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.merchant_amounts Information​

No.Field NameData TypeRequiredDescription
1valueFloat✅Maximum amount per transaction according to the currency_code set below
min: 0
max: 99999999999999
2currency_codeString✅Currency code according to (ISO) 4217 standard
3negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.transaction_environments Information​

No.Field NameData TypeRequiredDescription
1environment_codesArray✅List of transaction methods
- ATM – Transaction at an automated
teller machine.
- ECOM – E-commerce
transaction (online).
- MOTO – Mail Order/Telephone Order (ordered by mail/phone, card and cardholder not present).
- PAYPASS – Contactless
payment.
- POS – In-store transaction (swiped at a POS terminal).
- PWCB – Purchase with cash
back (Purchase with Cash Back).
2negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.approve_control Information​

No.Field NameData TypeRequiredDescription
1negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.entry_modes Information​

No.Field NameData TypeRequiredDescription
1modeString✅Card entry type accepted for payment
Default: EMV
2negateNumber✅Determines whether the rule is applied in reverse?
1. true
0. false => Default

Request Example​

{
"request_id": "818bca12-f0aa-4152-ba27-e3bd4dcb3abe",
"request_time": "2026-05-21 10:14:14",
"master_merchant_code": "mmthiither22",
"sub_merchant_code": "b2bthiither127",
"operation": "CREATE_VCN",
"status": 3,
"reference_id": "TT1774927943",
"card_data": {
"vcn_id": 2393,
"card_info_encrypt": "d3VY98QAQCvAmZsEj8u6JHHE7+sswy7cNluSXPy5HJc6Tf/fl9JFXK/GTdZdetE4sMw/bwjVn7HDRa/7Z2Lqjrmey5BHxYLBizRxZGsLMGSlm8PyBoZg8N8akGpORFa3cgWWbCOJji/MVl56jrN3UzoRgee43B+62HUObWwqAUM=",
"card_status": 1,
"control_type": 2,
"account_control": null,
"in_control_rules": {
"alias": "TT1774927943",
"velocities": {
"period": "CONTINUOUS",
"negate": 0,
"max_trans": 100,
"cumulative_limit": 1500000
},
"curfews": {
"days": [
"MONDAY",
"TUESDAY",
"WEDNESDAY"
],
"negate": 0,
"from_time": "00:00",
"to_time": "23:59",
"time_zone": "UTC"
},
"transaction_limits": {
"amount": 100,
"negate": 0
},
"validity_periods": {
"from": "2026-03-31 10:34:22",
"to": "2035-12-01 00:00:00",
"negate": 0
},
"amount_ranges": {
"negate": 0,
"min_amount": 0,
"max_amount": 100000000
},
"acceptor_ids": {
"acceptors": {
"acceptor_id": "126548888899997",
"acquirer_id": "12325435"
},
"negate": 0
},
"ageing_velocities": {
"negate": 0,
"authorization_hold_days": 0,
"cumulative_limit": 0,
"time_zone": "UTC"
},
"time_of_days": {
"times": [
{
"days": [
"MONDAY",
"TUESDAY",
"WEDNESDAY"
],
"from_time": "00:00",
"to_time": "23:59"
}
],
"negate": 0,
"time_zone": "UTC"
},
"merchant_category_codes": {
"mccs": [
"3001",
"3005"
],
"negate": 0
},
"merchant_names": {
"negate": 0,
"merchant_names": [
"Amazon"
]
},
"merchant_amounts": {
"value": 10000000,
"negate": 0,
"currency_code": "704"
},
"transaction_environments": {
"negate": 0,
"environment_codes": [
"ECOM",
"POS"
]
},
"approve_control": {
"negate": 0
},
"entry_modes": {
"mode": "EMV",
"negate": 0
}
}
},
"created_at": "2026-03-31 10:32:34",
"updated_at": "2026-05-21 10:14:14"
}

Request Example​

{
"request_id": "818bca12-f0aa-4152-ba27-e3bd4dcb3abe",
"request_time": "2026-05-21 10:14:14",
"master_merchant_code": "MASTERMERCHANTCODE",
"sub_merchant_code": "SUBMERCHANTCODE",
"operation": "CREATE_VCN",
"status": 4,
"reference_id": "TT1774927943",
"card_data": null,
"created_at": "2026-03-31 10:32:34",
"updated_at": "2026-05-21 10:14:14"
}

Partner Responds to Webhook​

Main Parameters Table​

No.Field NameData TypeRequiredDescription
1codeString✅code returned to Baokim, confirming that the MERCHANT has received it
2messageString✅Message returned to Baokim
3dataObject❌Merchant data returned to Baokim, if any

Response Example​

{
"code": 200,
"message": "Successfully",
"data": null
}