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
7statusNumberVCN creation status
3: Success
4: Failed
8card_dataObjectCard data
NULL if the VCN creation status is failed
9created_atDateTimeTime the request was received
10updated_atDateTimeTime the request was updated

card_data Information

No.Field NameData TypeRequiredDescription
1vcn_idNumberVCN ID
2card_info_encryptStringEncrypted VCN card data
3card_statusNumberVCN card status
4control_typeNumber1: accountControl
2: inControlRules
5account_controlObjectRequired if control_type = 1
6in_control_rulesObjectRequired if control_type = 2

object after decrypting card_data.card_info_encrypt Information

No.Field NameData TypeRequiredDescription
1card_numberStringVCN card number
2cvcStringCard CVC number
3expiryString(7)Card expiry date
4card_holderStringCardholder name

card_data.account_control Information

No.Field NameData TypeRequiredDescription
1aliasStringUnique memorable code for the Control
2card_limitObjectSets the general limit for the card - throughout the card's lifetime
3monthly_limitObjectSets a monthly limit for the card
4daily_limitObjectSets a daily limit for the card
5weekly_limitObjectSets a weekly limit for the card
6quarterly_limitObjectSets a quarterly limit for the card
7yearly_limitObjectSets a yearly limit for the card
8geographiesObjectSets card usage by geographic region
9merchant_category_codesObjectSets card usage by MCC
10start_dateStringCard usage period - Start
11end_dateStringCard usage period - End

card_data.account_control.card_limit Information

No.Field NameData TypeRequiredDescription
1card_amountNumberTransaction value
2available_balanceNumberAvailable balance
readOnly -> Pass a value if available; MasterCard only uses it to collect information (if any), not to validate information
3authorisation_countNumberNumber of transactions

card_data.account_control.monthly_limit Information

No.Field NameData TypeRequiredDescription
1card_amountNumberTransaction value
2available_balanceNumberAvailable balance
readOnly -> Pass a value if available; MasterCard only uses it to collect information (if any), not to validate information
3authorisation_countNumberNumber of transactions

card_data.account_control.daily_limit Information

No.Field NameData TypeRequiredDescription
1card_amountNumberTransaction value
2available_balanceNumberAvailable balance
readOnly -> Pass a value if available; MasterCard only uses it to collect information (if any), not to validate information
3authorisation_countNumberNumber of transactions

card_data.account_control.weekly_limit Information

No.Field NameData TypeRequiredDescription
1card_amountNumberTransaction value
2available_balanceNumberAvailable balance
readOnly -> Pass a value if available; MasterCard only uses it to collect information (if any), not to validate information
3authorisation_countNumberNumber of transactions

card_data.account_control.quarterly_limit Information

No.Field NameData TypeRequiredDescription
1card_amountNumberTransaction value
2available_balanceNumberAvailable balance
readOnly -> Pass a value if available; MasterCard only uses it to collect information (if any), not to validate information
3authorisation_countNumberNumber of transactions

card_data.account_control.yearly_limit Information

No.Field NameData TypeRequiredDescription
1card_amountNumberTransaction value
2available_balanceNumberAvailable balance
readOnly -> Pass a value if available; MasterCard only uses it to collect information (if any), not to validate information
3authorisation_countNumberNumber of transactions

card_data.account_control.geographies Information

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

card_data.account_control.merchant_category_codes Information

No.Field NameData TypeRequiredDescription
1mccsArrayList of MCCs
2negateNumberDetermines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules Information

No.Field NameData TypeRequiredDescription
1aliasStringUnique memorable code for the Control
2transaction_limitsObjectSets the amount limit per card transaction
3geographiesObjectSets card usage by geographic region
4velocitiesObjectSets the frequency limit and/or total card transaction amount within a given time period
5validity_periodsObjectControls the validity period of the control
6amount_rangesObjectControls the transaction value within a min, max range
7acceptor_idsObjectSets which Merchants/Acquirers the card is allowed to transact with
8ageing_velocitiesObjectSets and controls the available credit limit on the card
9curfewsObjectSets card transaction controls by time slot on given days, and can specify the applicable timezone
10time_of_daysObjectSets card transaction controls within specific time slots of each day
11merchant_category_codesObjectSets card transaction controls by the merchant's MCC
12merchant_namesObjectSets card transaction controls by Merchant name (card acceptance unit)
13merchant_amountsObjectSets card transaction controls by amount per transaction for a specific currency
14transaction_environmentsObjectSets card transaction controls by transaction method
15approve_controlObjectSets card transaction controls - the entire rule setup will be for approving/declining the transaction
16entry_modesObjectSets transaction controls by card entry type

card_data.in_control_rules.transaction_limits Information

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

card_data.in_control_rules.geographies Information

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

card_data.in_control_rules.velocities Information

No.Field NameData TypeRequiredDescription
1max_transNumberMaximum number of transactions allowed within a given time period
min: 1
max: 99999999
2cumulative_limitNumberMaximum cumulative transaction amount allowed within a given time period
If passed as 0 - it means
unlimited (ignore this
limit setting)
min: 0
max: 99999999999999
3periodStringApplicable 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
4negateNumberDetermines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.validity_periods Information

No.Field NameData TypeRequiredDescription
1fromStringStart time of the control's validity
2toStringEnd time of the control's validity
3negateNumberDetermines 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_amountFloatMinimum transaction amount
min: 0
max: 99999999999999
min_amount < max_amount
2max_amountFloatMaximum transaction amount
min: 0
max: 99999999999999
min_amount < max_amount
3negateNumberDetermines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.acceptor_ids Information

No.Field NameData TypeRequiredDescription
1acceptorsObjectCan set merchant or acquirer
2negateNumberDetermines 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_idStringMerchant ID – identifier of the card-accepting unit (merchant) where the transaction takes place.
2acquirer_idStringAcquirer 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_daysNumberNumber of days the transaction on the virtual card is held to calculate when the currently set credit limit resets
min: 0
max: 9999
2cumulative_limitNumberTotal limit
If passed as 0 - it means unlimited (ignore this limit setting)
min: 0
max: 99999999999999
3time_zoneStringTimezone applied to calculating the date and time for unholding the transaction to remove it from the availableCredit calculation
4negateNumberDetermines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.curfews Information

No.Field NameData TypeRequiredDescription
1from_timeStringStart time transactions are allowed.
2to_timeStringEnd time transactions are allowed
(after this time, the transaction is rejected)
3time_zoneStringTimezone applied to the above time slot
Example: UTC
4daysArrayList 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
5negateNumberDetermines 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
1timesArrayList of objects configuring the time allowed for transactions
(after this time, the transaction is
rejected)
An array of configs can be passed
2time_zoneStringTimezone 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
3negateNumberDetermines 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_timeStringStart time transactions are allowed.
2to_timeStringEnd time transactions are allowed
(after this time, the transaction is rejected)
3daysArrayDays 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
1mccsArrayList of MCCs
2negateNumberDetermines 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_namesArrayList 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)
2negateNumberDetermines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.merchant_amounts Information

No.Field NameData TypeRequiredDescription
1valueFloatMaximum amount per transaction according to the currency_code set below
min: 0
max: 99999999999999
2currency_codeStringCurrency code according to (ISO) 4217 standard
3negateNumberDetermines 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_codesArrayList 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).
2negateNumberDetermines whether the rule is applied in reverse?
1. true
0. false => Default

card_data.in_control_rules.approve_control Information

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

card_data.in_control_rules.entry_modes Information

No.Field NameData TypeRequiredDescription
1modeStringCard entry type accepted for payment
Default: EMV
2negateNumberDetermines 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
1codeStringcode returned to Baokim, confirming that the MERCHANT has received it
2messageStringMessage returned to Baokim
3dataObjectMerchant data returned to Baokim, if any