BME: Bridging Message Extension
3DS v2.3 introduces data elements in the message extension that may duplicate those present in 3DS v2.1 and v2.2 versions, but with new or different values. According to the Basic Specification v2.3, these values are set in the message extension, while in v2.1 and v2.2 they are found in the core part of the 3DS messages. In these cases, the value of the data element in the message extension prevails over the corresponding value in the core part of the 3DS message. Additionally, the 3DS Server generates the AReq message v2.1 or v2.2 under the assumption that the ACS does not support the Bridging Message Extension, and subsequently provides the additional information through said extension. If the Bridging Message Extension is supported, the 3DS component must be compatible with at least one of the data objects such as recurring data, challenge data, additional data, or file URL data in the message extension and implement the corresponding requirements of the Basic Specification v2.3.
Session with Bridging Message Extension
To improve the approval rate in authentications, we have extended this requirement by creating the BMS extension. This extension facilitates access to information available in protocol version 2.3.1 that was not accessible in previous versions 2.1.0 and 2.2.0. In this way, both the ACS and the directory server can make more informed decisions.
Specifications
Transaction with initial BME
In this version, we will make several elements available in the session API that you can send to optimize the use of this extension.
cardSecurityCode: Security code associated with credit or debit cards.
threeDSRequestorAuthenticationInd: Authentication indicator requested by 3DS.
threeRIInd: Indicates the type of 3RI requested. This data element provides additional information to the ACS to determine the best approach to deliver a 3RI request.
transChar: Indicates to the ACS specific transactions identified by the Merchant.
See more details in Rules to consider for the session API
The Extension will only be created if it is sent in the session request bridgingMessageExtension
Important: The specific values of the fields may vary depending on the implementations and requirements of each payment processor. These examples are a general guide to illustrate the concepts.
Get more details on how to use 3DSS with Recurring payments with 3RI. In this section, you will find detailed information on how it works and an example of the response you can expect
Example of data in the request
{
"acctNumber": "4005580000000040",
"cardExpiryDate": "2411",
"purchaseAmount": "8.25",
"redirectURI": "https://www.placetopay.com",
"purchaseCurrency": "USD",
"addPriorInformation": "Y",
"threeDSAuthenticationInd": "PAYMENT_TRANSACTION",
"messageCategory": "PA",
"deviceChannel": "RI",
"threeRIInd": "RECURRING_TRANSACTION",
"recurringFrequency": "031",
"recurringExpiry": "20241020",
"bridgingMessageExtension": {
"data": {
"addData": {
"transChar": "CRYPTOCURRENCY_TRANSACTION",
"threeRIInd": "SPLIT_PAYMENT",
"cardSecurityCode": "123",
"threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT"
},
"recurringData": {
"recurringDate": "20241023",
"recurringInd": {
"frequencyInd": "VARIABLE_FREQUENCY",
"amountInd": "VARIABLE_PURCHASE"
}
}
}
}
}
Example of the extension created by 3DSS
{
"0": {
"id": "A000000802-004",
"data": {
"version": "2.0",
"addData": {
"transChar": "02",
"threeRIInd": "DELAYED_SHIPMENT",
"cardSecurityCode": "123",
"acquirerCountryCode": "170",
"acquirerCountryCodeSource": "01",
"threeDSRequestorAuthenticationInd": "10"
},
"recurringData": {
"recurringInd": {
"amountInd": "VARIABLE_PURCHASE",
"frequencyInd": "VARIABLE_FREQUENCY"
},
"recurringDate": "20241023",
"recurringAmount": "8.25",
"recurringExpiry": "20241020",
"recurringCurrency": "USD",
"recurringFrequency": "031"
}
},
"name": "Bridging",
"criticalityIndicator": false
}
}
Version 2 (v2):
- Supported Attributes:
addData: This version only includes support for the addData attribute, which contains additional information about the transaction, such as the authentication indicator and other relevant data.
recurringData: In v2, support for the recurringData attribute is introduced, allowing management of information about recurring transactions such as amount, frequency, and expiry date.
- JSON example for v2:
{
"addData": {
"transChar": "CRYPTOCURRENCY_TRANSACTION",
"threeRIInd": "DELAYED_SHIPMENT",
"cardSecurityCode": "123",
"threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT"
},
"recurringData": {
"recurringDate": "20241023",
"recurringInd": {
"frequencyInd": "VARIABLE_FREQUENCY",
"amountInd": "VARIABLE_PURCHASE"
}
}
}
Additional data for a recurring transaction
Recurring Transaction Attributes
The recurring transaction attributes for BME are valid if the value of the threeRIInd field is equal to any of the following:
- RECURRING_TRANSACTION (02)
- INSTALMENT_TRANSACTION (03)
When any of these values is the indicator in threeRIInd, the following rules apply for the recurrence indicators on the base request data:
Data Associated with the BME Extension
The following data will be associated with the BME extension according to the previously mentioned indicators:
1. recurringAmount
The recurringAmount field will be added to the BME extension in the recurrence data section under the following conditions:
- Condition 1: The value of
recurringInd.amountIndis equal to FIXED_FREQUENCY.
AND
- Condition 2: The value of
threeDSAuthenticationIndis equal to: RECURRING_TRANSACTION (02), INSTALMENT_TRANSACTION (03) or the value ofthreeRIIndis equal to RECURRING_TRANSACTION (01), INSTALMENT_TRANSACTION (02).
If the above conditions are met, the value of recurringAmount will be added to the BME extension. The value of recurringAmount will be taken from the purchaseAmount field in the base request.
2. recurringCurrency
The recurringCurrency field will be added to the BME extension under the following conditions:
- Condition: The value of
threeDSAuthenticationIndis equal to: RECURRING_TRANSACTION (02), INSTALMENT_TRANSACTION (03) or the value ofthreeRIIndis equal to RECURRING_TRANSACTION (01), INSTALMENT_TRANSACTION (02).
When this condition is met, the value of recurringCurrency will be added to the BME extension, and will correspond to the value provided in the base request under the purchaseCurrency field.
3. recurringExponent
The recurringExponent field will be added to the BME extension under the following conditions:
- Condition 2: The value of
threeDSAuthenticationIndis equal to: RECURRING_TRANSACTION (02), INSTALMENT_TRANSACTION (03) or the value ofthreeRIIndis equal to RECURRING_TRANSACTION (01), INSTALMENT_TRANSACTION (02).
When this condition is met, the value of recurringExponent will be added to the BME extension, and will correspond to the value provided in the base request under the purchaseExponent field.
4. recurringDate
The recurringDate field will be added to the BME extension under the following conditions:
- Condition: The value of
recurringInd.frequencyIndis equal to: FIXED_FREQUENCY (01).
If this condition is met, the recurringDate field will be added to the BME extension, as long as it is present in the base request in bridgingMessageExtension.data.recurringData.recurringDate.
5. recurringExpiry
The value of recurringExpiry is automatically calculated by the system according to the following conditions.
- Condition 2: The value of
threeDSAuthenticationIndis equal to: RECURRING_TRANSACTION (02), INSTALMENT_TRANSACTION (03) or the value ofthreeRIIndis equal to RECURRING_TRANSACTION (01), INSTALMENT_TRANSACTION (02). - Condition: If the value of
deviceChannelin the attributes is equal to RI and there is no previous value forrecurringExpiryin the base request. - The
recurringExpiryfield is taken from the data sent in the base request.
6. recurringFrequency
The value of recurringFrequency will be taken from the base request under the following conditions:
- Condition: The value of
recurringInd.frequencyIndis equal to FIXED_FREQUENCY (01).
If this condition is met, the value of recurringFrequency will be taken directly from the base request; otherwise, no value will be assigned to the extension.
7. recurringInd
The recurringInd field consists of two subfields: amountInd and frequencyInd. Both will be added to the BME extension under the following conditions:
- Condition 2: The value of
threeDSAuthenticationIndis equal to: RECURRING_TRANSACTION (02), INSTALMENT_TRANSACTION (03) or the value ofthreeRIIndis equal to RECURRING_TRANSACTION (01), INSTALMENT_TRANSACTION (02).
When this condition is met, the following subfields will be added:
Subfields
-
amountInd: The value provided inbridgingMessageExtension.data.recurringData.recurringInd.amountIndwill be added if present in the base request, and if not provided,amountIndwill have a default value of FIXED_PURCHASE (01). -
frequencyInd: The value provided inbridgingMessageExtension.data.recurringData.recurringInd.frequencyIndwill be added if present in the base request, and if not provided,frequencyIndwill have a default value of FIXED_FREQUENCY (01).
Benefits of Protocol V2.3.1 with BME in 3DS and its new indicators
See more details in Rules to consider for the session API with BME
threeDSRequestorAuthenticationInd: used in the base request as: threeDSAuthenticationInd, this field includes new indicators available in version 2.3.1
-
BILLING_AGREEMENT (07): This indicator refers to a billing agreement between the customer and the merchant, where the customer authorizes recurring or future payments without the need to authenticate each individual transaction. It is common in subscriptions or ongoing services where payments are processed periodically.
-
SPLIT_SHIPMENT (08): Indicates that the order will be shipped in multiple shipments. This can occur when the merchant does not have all items in stock or for logistical convenience. In this case, the total charge may be split and processed based on partial shipments.
-
DELAYED_SHIPMENT (09): Refers to a transaction in which the shipment of the order is intentionally delayed, either at the customer's request or for the merchant's logistical reasons. Payment may be processed at the time of purchase, but shipment will take place later.
-
SPLIT_PAYMENT (10): This indicator signals that the payment for a transaction is split into several parts, either between different payment methods or at different times. For example, the customer could pay part with a credit card and the rest with another method, or pay in several installments.
-
MASTERCARD_THE_PAYMENT_REQUEST_IS_FOR_AN_AGENT_PAYMENT_TRANSACTION (85): This indicator is used when the payment request is related to a transaction managed by an agent on behalf of the merchant or customer. It is common in cases where an agency or other intermediary manages the payment, acting as a third party facilitating the transaction between the merchant and the customer.
-
MASTERCARD_FOR_UNKNOWN_OR_UNDEFINED_FINAL_AMOUNT_BEFORE_PURCHASE_TRANSACTION (86): This indicator is used when the final amount of the transaction is not known or not defined at the time of purchase. It is useful in situations where the total amount may vary, such as when making reservations or purchases that may involve additional charges, but the exact amount is determined later (e.g., hotel reservations, car rentals, or services with variable rates).
threeRIInd: This field includes new indicators available in version 2.3.1
-
DEVICE_BINDING_STATUS_CHECK (13): This indicator is used to check the status of device binding. It refers to situations where it is necessary to verify if a device is correctly linked to an account or card, which can improve the security of recurring or payment transactions.
-
CARD_SECURITY_CODE_STATUS_CHECK (14): This indicator allows checking the status of the card security code (CVV or CVC). It is common in transactions where additional authentication of the security code is required to validate the legitimacy of the card used.
-
DELAYED_SHIPMENT (15): This indicator is used for transactions where the shipment of the product or service will be made at a later date. It is useful for cases where payment is processed immediately, but delivery is delayed or made later.
-
SPLIT_PAYMENT (16): Refers to a transaction in which the payment is split into several parts. This can occur when the buyer chooses to pay in different installments or by different payment methods for a single transaction.
-
FIDO_CREDENTIAL_DELETION (17): This indicator is used when the deletion of FIDO (Fast Identity Online) credentials associated with an account or device is requested. FIDO is an authentication standard that allows credential deletion to improve security.
-
FIDO_CREDENTIAL_REGISTRATION (18): Used when registering new FIDO credentials. This process links a device or account to a more secure authentication method, independent of traditional passwords.
-
DECOUPLED_AUTHENTICATION_FALLBACK (19): This indicator is activated when a failure occurs in the decoupled authentication process. Decoupled authentication allows the cardholder to authenticate on a channel other than the merchant's (e.g., via a banking app), and this code indicates that the method has failed and an alternative is required.
transChar: This field includes new indicators available in version 2.3.1
-
CRYPTOCURRENCY_TRANSACTION (01): This indicator is used to identify transactions related to cryptocurrencies. It allows the issuer and other actors in the payment system to explicitly recognize when the transaction involves the purchase, sale, or exchange of cryptocurrencies, which may require special treatment due to the nature of this type of asset.
-
NFT_TRANSACTION (02): This indicator is designed for transactions involving the purchase or exchange of non-fungible tokens (NFTs). NFTs are unique digital assets based on blockchain technology, and this code helps differentiate these transactions from traditional purchases, providing an additional layer of relevant information for authentication and risk analysis.
amountInd: This field includes new indicators available in version 2.3.1
-
FIXED_PURCHASE (01): Indicates that the transaction amount is fixed and does not vary. This type of purchase is common in standard transactions where the value of the product or service is predefined and does not change during the payment process.
-
VARIABLE_PURCHASE (02): Indicates that the transaction amount may vary. It is used in cases where the final value of the purchase is not determined at the time of initial authentication, such as in situations of split shipment, additional charges, or adjustments for variable services or products. This indicator provides flexibility in handling transactions with adjustable amounts.
frequencyInd: This field includes new indicators available in version 2.3.1
-
FIXED_FREQUENCY (01): Indicates that the frequency of the recurring transaction is fixed. It is used when payments are made at regular and predefined intervals, such as monthly payments, subscriptions, or loan installments. The periodicity is constant and does not change over time.
-
VARIABLE_FREQUENCY (02): Indicates that the frequency of the recurring transaction may vary. It applies in cases where payments are not made at regular intervals, or the frequency changes according to needs or circumstances, such as in sporadic payments or when the interval between payments is not predictable. This indicator provides flexibility to handle recurring payments that do not follow a strict pattern.
Recurring Payments
Relevant Indicators:
- threeRIInd: RECURRING_TRANSACTION (01)
- amountInd: FIXED_PURCHASE (01) or VARIABLE_PURCHASE (02)
- frequencyInd: FIXED_FREQUENCY (01) or VARIABLE_FREQUENCY (02)
Use Case: When a merchant wants to process a recurring transaction with a fixed or variable amount (such as a monthly subscription to a service or loan payment installments), the BME can be used to indicate the type of recurring transaction, the frequency of payments, and whether the amount will be fixed or variable.
Example: A streaming platform wants to charge a fixed monthly subscription (for example, $10), but can also handle cases where the user pays variable amounts based on usage, with a non-predefined frequency.
{
"acctNumber": "4005580000000040",
"cardExpiryDate": "2411",
"purchaseAmount": "8.25",
"redirectURI": "https://www.placetopay.com",
"purchaseCurrency": "USD",
"addPriorInformation": "Y",
"threeDSAuthenticationInd": "RECURRING_TRANSACTION",
"messageCategory": "PA",
"deviceChannel": "RI",
"threeRIInd": "RECURRING_TRANSACTION",
"recurringFrequency": "031",
"recurringExpiry": "20241020",
"bridgingMessageExtension": {
"data": {
"addData": {
"threeRIInd": "RECURRING_TRANSACTION",
"cardSecurityCode": "123"
},
"recurringData": {
"recurringDate": "20241023",
"recurringInd": {
"frequencyInd": "FIXED_FREQUENCY",
"amountInd": "FIXED_PURCHASE"
}
}
}
}
}
For variable amount payments, Mastercard only allows a value that is above 20% of the initial transaction. For example, if the initial payment was 1,000, in recurring transactions you can charge up to 1,200 maximum.
Fixed frequency, Fixed amount
Use case: Monthly subscription to a streaming service with a fixed cost.
CIT
{
"deviceChannel": "BRW",
"threeDSAuthenticationInd": "RECURRING_TRANSACTION",
"threeDSChallengeInd": "CHALLENGE_REQUESTED_MANDATE",
"recurringExpiry": "20250101",
"recurringFrequency": "10",
"acctNumber": "4931119220729333",
"cardExpiryDate": "2902",
"purchaseAmount": "55",
"redirectURI": "https://www.placetopay.com/web",
"purchaseCurrency": "USD",
"reference": "Enero 2024",
"messageVersion": "2.2.0",
"bridgingMessageExtension": {
"data": {
"addData": {
"threeRIInd": "RECURRING_TRANSACTION",
"cardSecurityCode": "123"
},
"recurringData": {
"recurringDate": "20241020",
"recurringInd": {
"frequencyInd": "FIXED_FREQUENCY",
"amountInd": "FIXED_PURCHASE"
}
}
}
},
"billAddrCity": "Medellín",
"billAddrCountry": "COL",
"billAddrLine1": "Carrera 65 # 45 - 20",
"billAddrPostCode": "050004",
"billAddrState": "ANT",
"email": "[email protected]",
"mobilePhone": {
"cc": "57",
"subscriber": "3111111111"
}
}
MIT
{
"deviceChannel": "RI",
"threeRIInd": "RECURRING_TRANSACTION",
"recurringExpiry": "20250101",
"recurringFrequency": "10",
"threeDSChallengeInd": "NO_PREFERENCE",
"threeDSRequestorPriorAuthenticationInfo": {
"threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED",
"threeDSReqPriorAuthTimestamp": "2024-10-10T16:36:52+00:00",
"threeDSReqPriorRef": "6d517cb2-9383-4839-afd3-2e92e5d601c7"
},
"acctNumber": "4931119220729333",
"cardExpiryDate": "2902",
"purchaseAmount": "55",
"redirectURI": "https://www.placetopay.com/web",
"purchaseCurrency": "USD",
"reference": "Febrero 2024",
"messageVersion": "2.2.0",
"bridgingMessageExtension": {
"data": {
"addData": {
"threeRIInd": "RECURRING_TRANSACTION",
"cardSecurityCode": "123"
},
"recurringData": {
"recurringDate": "20241209",
"recurringInd": {
"frequencyInd": "FIXED_FREQUENCY",
"amountInd": "FIXED_PURCHASE"
}
}
}
},
"billAddrCity": "Medellín",
"billAddrCountry": "COL",
"billAddrLine1": "Carrera 65 # 45 - 20",
"billAddrPostCode": "050004",
"billAddrState": "ANT",
"email": "[email protected]",
"mobilePhone": {
"cc": "57",
"subscriber": "3111111111"
}
}
- frequencyInd: Indicates that the payment frequency is fixed.
- amountInd: Indicates that the payment amount is fixed.
- recurringAmount: Specifies the exact amount of each payment. The value of purchaseAmount will be used for the recurringAmount of the BME
- recurringCurrency: Indicates the payment currency. The value of purchaseCurrency will be used for the recurringCurrency of the BME
- recurringFrequency: Defines the frequency in a readable format (monthly, weekly, etc.). The value of recurringFrequency will be used for the recurringFrequency of the BME
Variable frequency, Fixed amount
Use case: Pay-per-use for a cloud service, where the usage frequency may vary but the cost per unit is fixed.
CIT
{
"deviceChannel": "BRW",
"threeDSAuthenticationInd": "RECURRING_TRANSACTION",
"threeDSChallengeInd": "CHALLENGE_REQUESTED_MANDATE",
"recurringExpiry": "20250101",
"recurringFrequency": "10",
"acctNumber": "5107000000010018",
"cardExpiryDate": "2902",
"purchaseAmount": "50",
"redirectURI": "https://www.placetopay.com/web",
"purchaseCurrency": "USD",
"reference": "Enero 2024",
"messageVersion": "2.2.0",
"bridgingMessageExtension": {
"data": {
"addData": {
"threeRIInd": "RECURRING_TRANSACTION",
"cardSecurityCode": "123"
},
"recurringData": {
"recurringInd": {
"frequencyInd": "VARIABLE_FREQUENCY",
"amountInd": "FIXED_PURCHASE"
}
}
}
},
"billAddrCity": "Medellín",
"billAddrCountry": "COL",
"billAddrLine1": "Carrera 65 # 45 - 20",
"billAddrPostCode": "050004",
"billAddrState": "ANT",
"email": "[email protected]",
"mobilePhone": {
"cc": "57",
"subscriber": "3111111111"
}
}
MIT
{
"deviceChannel": "RI",
"threeRIInd": "RECURRING_TRANSACTION",
"recurringExpiry": "20250101",
"recurringFrequency": "10",
"threeDSRequestorPriorAuthenticationInfo": {
"threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED",
"threeDSReqPriorAuthTimestamp": "2024-10-10T14:43:04+00:00",
"threeDSReqPriorRef": "a1ed9882-2c0f-4591-a0fb-d92c652d81ed"
},
"acctNumber": "5107000000010018",
"cardExpiryDate": "2902",
"purchaseAmount": "50",
"redirectURI": "https://www.placetopay.com/web",
"purchaseCurrency": "USD",
"reference": "Febrero 2024",
"messageVersion": "2.2.0",
"bridgingMessageExtension": {
"data": {
"addData": {
"threeRIInd": "RECURRING_TRANSACTION",
"cardSecurityCode": "123"
},
"recurringData": {
"recurringInd": {
"frequencyInd": "VARIABLE_FREQUENCY",
"amountInd": "FIXED_PURCHASE"
}
}
}
},
"billAddrCity": "Medellín",
"billAddrCountry": "COL",
"billAddrLine1": "Carrera 65 # 45 - 20",
"billAddrPostCode": "050004",
"billAddrState": "ANT",
"email": "[email protected]",
"mobilePhone": {
"cc": "57",
"subscriber": "3111111111"
}
}
- frequencyInd: Indicates that the payment frequency is variable.
- amountInd: Indicates that the unit amount is fixed. The value of purchaseAmount will be used for the recurringAmount of the BME
- recurringAmount: Specifies the cost per unit, the total amount will be calculated according to usage.
Fixed frequency, Variable amount
Use case: Monthly payments for a service that includes additional charges based on usage.
CIT
{
"deviceChannel": "BRW",
"threeDSAuthenticationInd": "RECURRING_TRANSACTION",
"threeDSChallengeInd": "CHALLENGE_REQUESTED_MANDATE",
"recurringExpiry": "20250101",
"recurringFrequency": "10",
"acctNumber": "4931119220729333",
"cardExpiryDate": "2902",
"purchaseAmount": "50",
"redirectURI": "https://www.placetopay.com/web",
"purchaseCurrency": "USD",
"reference": "Enero 2024",
"messageVersion": "2.2.0",
"bridgingMessageExtension": {
"data": {
"addData": {
"threeRIInd": "RECURRING_TRANSACTION",
"cardSecurityCode": "123"
},
"recurringData": {
"recurringDate": "20241018",
"recurringInd": {
"frequencyInd": "FIXED_FREQUENCY",
"amountInd": "VARIABLE_PURCHASE"
}
}
}
},
"billAddrCity": "Medellín",
"billAddrCountry": "COL",
"billAddrLine1": "Carrera 65 # 45 - 20",
"billAddrPostCode": "050004",
"billAddrState": "ANT",
"email": "[email protected]",
"mobilePhone": {
"cc": "57",
"subscriber": "3111111111"
}
}
MIT
{
"deviceChannel": "RI",
"threeRIInd": "RECURRING_TRANSACTION",
"recurringExpiry": "20250101",
"recurringFrequency": "10",
"threeDSRequestorPriorAuthenticationInfo": {
"threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED",
"threeDSReqPriorAuthTimestamp": "2024-10-08T22:19:31+00:00",
"threeDSReqPriorRef": "16b910d6-6921-42e5-a5f8-00ba328b5bf6"
},
"acctNumber": "4931119220729333",
"cardExpiryDate": "2902",
"purchaseAmount": "520",
"redirectURI": "https://www.placetopay.com/web",
"purchaseCurrency": "USD",
"reference": "Febrero 2024",
"messageVersion": "2.2.0",
"bridgingMessageExtension": {
"data": {
"addData": {
"threeRIInd": "RECURRING_TRANSACTION",
"cardSecurityCode": "123"
},
"recurringData": {
"recurringDate": "20241107",
"recurringInd": {
"frequencyInd": "FIXED_FREQUENCY",
"amountInd": "VARIABLE_PURCHASE"
}
}
}
},
"billAddrCity": "Medellín",
"billAddrCountry": "COL",
"billAddrLine1": "Carrera 65 # 45 - 20",
"billAddrPostCode": "050004",
"billAddrState": "ANT",
"email": "[email protected]",
"mobilePhone": {
"cc": "57",
"subscriber": "3111111111"
}
}
- frequencyInd: Indicates that the payment frequency is fixed.
- amountInd: Indicates that the total payment amount may vary.
- recurringFrequency: Defines the frequency in a readable format (monthly, weekly, etc.). The value of recurringFrequency from the base request will be used for the recurringFrequency of the BME
The total amount will be calculated in each billing cycle based on usage.
Variable frequency, Variable amount
Use case: Payments for professional services where both the frequency and amount may vary depending on the project.
CIT
{
"deviceChannel": "BRW",
"threeDSAuthenticationInd": "RECURRING_TRANSACTION",
"threeDSChallengeInd": "CHALLENGE_REQUESTED_MANDATE",
"recurringExpiry": "20250101",
"recurringFrequency": "2",
"acctNumber": "4931119220729333",
"cardExpiryDate": "2902",
"purchaseAmount": "50",
"redirectURI": "https://www.placetopay.com/web",
"purchaseCurrency": "USD",
"reference": "Enero 2024",
"messageVersion": "2.2.0",
"bridgingMessageExtension": {
"data": {
"addData": {
"threeRIInd": "RECURRING_TRANSACTION",
"cardSecurityCode": "123"
},
"recurringData": {
"recurringInd": {
"frequencyInd": "VARIABLE_FREQUENCY",
"amountInd": "VARIABLE_PURCHASE"
}
}
}
},
"billAddrCity": "Medellín",
"billAddrCountry": "COL",
"billAddrLine1": "Carrera 65 # 45 - 20",
"billAddrPostCode": "050004",
"billAddrState": "ANT",
"email": "[email protected]",
"mobilePhone": {
"cc": "57",
"subscriber": "3111111111"
}
}
MIT
{
"deviceChannel": "RI",
"threeRIInd": "RECURRING_TRANSACTION",
"recurringExpiry": "20250101",
"recurringFrequency": "2",
"threeDSRequestorPriorAuthenticationInfo": {
"threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED",
"threeDSReqPriorAuthTimestamp": "2024-10-08T20:32:58+00:00",
"threeDSReqPriorRef": "e85f6a78-8687-4ae1-a775-a09c450d830b"
},
"acctNumber": "4931119220729333",
"cardExpiryDate": "2902",
"purchaseAmount": "520",
"redirectURI": "https://www.placetopay.com/web",
"purchaseCurrency": "USD",
"reference": "Febrero 2024",
"messageVersion": "2.2.0",
"bridgingMessageExtension": {
"data": {
"addData": {
"threeRIInd": "RECURRING_TRANSACTION",
"cardSecurityCode": "123"
},
"recurringData": {
"recurringInd": {
"frequencyInd": "VARIABLE_FREQUENCY",
"amountInd": "VARIABLE_PURCHASE"
}
}
}
},
"billAddrCity": "Medellín",
"billAddrCountry": "COL",
"billAddrLine1": "Carrera 65 # 45 - 20",
"billAddrPostCode": "050004",
"billAddrState": "ANT",
"email": "[email protected]",
"mobilePhone": {
"cc": "57",
"subscriber": "3111111111"
}
}
- frequencyInd: Indicates that the payment frequency is variable.
- amountInd: Indicates that the total payment amount may vary.
Both the frequency and the amount will be determined in each transaction.
Split or Delayed Shipment
Relevant Indicators:
threeRIInd: DELAYED_SHIPMENT (15) or SPLIT_PAYMENT (16)
Use Case: For scenarios where a customer's order is split into several shipments or where the shipment is delayed, the BME can provide additional details about the nature of the payment. This is useful for managing transactions where part of the order is shipped now and another later, or when the shipment is postponed.
Example: A customer makes a purchase of multiple items, but some products are not available for immediate shipment. DELAYED_SHIPMENT is used to signal to the issuing bank that the transaction includes delayed shipments.
SPLIT SHIPMENT
CIT
{
"deviceChannel": "BRW",
"threeDSAuthenticationInd": "PAYMENT_TRANSACTION",
"threeDSChallengeInd": "CHALLENGE_REQUESTED_MANDATE",
"acctNumber": "5107000000010018",
"cardExpiryDate": "2902",
"purchaseAmount": "3000",
"redirectURI": "https://www.placetopay.com/web",
"purchaseCurrency": "USD",
"reference": "Enero 2024",
"messageVersion": "2.2.0",
"bridgingMessageExtension": {
"data": {
"addData": {
"threeRIInd": "SPLIT_OR_DELAYED_SHIPMENT",
"cardSecurityCode": "123"
}
}
},
"billAddrCity": "Medellín",
"billAddrCountry": "COL",
"billAddrLine1": "Carrera 65 # 45 - 20",
"billAddrPostCode": "050004",
"billAddrState": "ANT",
"email": "[email protected]",
"mobilePhone": {
"cc": "57",
"subscriber": "3111111111"
}
}
MIT
{
"deviceChannel": "RI",
"threeRIInd": "SPLIT_OR_DELAYED_SHIPMENT",
"threeDSRequestorPriorAuthenticationInfo": {
"threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED",
"threeDSReqPriorAuthTimestamp": "2024-10-30T22:11:07+00:00",
"threeDSReqPriorRef": "1760a097-5779-44d1-9ba1-77bab5b4fe64"
},
"acctNumber": "5107000000010018",
"cardExpiryDate": "2902",
"purchaseAmount": "500",
"redirectURI": "https://www.placetopay.com/web",
"purchaseCurrency": "USD",
"reference": "Febrero 2024",
"messageVersion": "2.2.0",
"bridgingMessageExtension": {
"data": {
"addData": {
"threeRIInd": "SPLIT_OR_DELAYED_SHIPMENT",
"cardSecurityCode": "123"
},
"recurringData": {
"recurringInd": {
"frequencyInd": "VARIABLE_FREQUENCY",
"amountInd": "FIXED_PURCHASE"
}
}
}
},
"billAddrCity": "Medellín",
"billAddrCountry": "COL",
"billAddrLine1": "Carrera 65 # 45 - 20",
"billAddrPostCode": "050004",
"billAddrState": "ANT",
"email": "[email protected]",
"mobilePhone": {
"cc": "57",
"subscriber": "3111111111"
}
}
Transactions with Digital Currencies (Cryptocurrency/NFT)
Relevant Indicators:
transChar: CRYPTOCURRENCY_TRANSACTION (01) or NFT_TRANSACTION (02)
Use Case: In situations where payment is made with cryptocurrencies or NFTs (non-fungible tokens), the BME can be used to indicate that the payment is not with traditional currency, but with digital assets. This helps issuing banks to correctly assess the risk associated with the transaction.
Example: A customer buys an NFT on a digital art platform using cryptocurrencies. The BME would indicate that the transaction is associated with an NFT_TRANSACTION or CRYPTOCURRENCY_TRANSACTION.
{
"acctNumber": "4005580000000040",
"cardExpiryDate": "2411",
"purchaseAmount": "8.25",
"redirectURI": "https://www.placetopay.com",
"purchaseCurrency": "USD",
"addPriorInformation": "Y",
"threeDSAuthenticationInd": "PAYMENT_TRANSACTION",
"messageCategory": "PA",
"deviceChannel": "RI",
"threeRIInd": "RECURRING_TRANSACTION",
"recurringFrequency": "031",
"recurringExpiry": "20241020",
"bridgingMessageExtension": {
"data": {
"addData": {
"transChar": "NFT_TRANSACTION",
"cardSecurityCode": "123",
"threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT"
}
}
}
}
Card Security Code Status Check
Relevant Indicators:
threeRIInd: CARD_SECURITY_CODE_STATUS_CHECK (14)
Use Case: This case is relevant when the merchant needs to perform a check of the card security code (CVV) associated with the card without making an immediate payment. The BME allows adding additional information indicating that the transaction is only a CVV verification.
Example: A card verification service performs a CVV check before a future transaction is completed. The BME would indicate this scenario without the need to process a payment.
{
"acctNumber": "4005580000000040",
"cardExpiryDate": "2411",
"purchaseAmount": "8.25",
"redirectURI": "https://www.placetopay.com",
"purchaseCurrency": "USD",
"addPriorInformation": "Y",
"threeDSAuthenticationInd": "ADD_CARD",
"messageCategory": "PA",
"deviceChannel": "RI",
"threeRIInd": "RECURRING_TRANSACTION",
"recurringFrequency": "031",
"recurringExpiry": "20241020",
"bridgingMessageExtension": {
"data": {
"addData": {
"threeRIInd": "CARD_SECURITY_CODE_STATUS_CHECK",
"cardSecurityCode": "123"
}
}
}
}
FIDO Credential Deletion and Registration
Relevant Indicators:
threeRIInd: FIDO_CREDENTIAL_DELETION (17) or FIDO_CREDENTIAL_REGISTRATION (18)
Use Case: These indicators are used when managing FIDO credentials, a standard for passwordless authentication. The BME can include information about the deletion or registration of FIDO credentials in the context of a transaction, improving the security of the process.
Example: A bank updates FIDO credentials linked to a user account. The BME would include indicators that register or delete such credentials in the transaction.
{
"acctNumber": "4005580000000040",
"cardExpiryDate": "2411",
"purchaseAmount": "8.25",
"redirectURI": "https://www.placetopay.com",
"purchaseCurrency": "USD",
"addPriorInformation": "Y",
"threeDSAuthenticationInd": "ADD_CARD",
"messageCategory": "PA",
"deviceChannel": "RI",
"threeRIInd": "RECURRING_TRANSACTION",
"recurringFrequency": "031",
"recurringExpiry": "20241020",
"bridgingMessageExtension": {
"data": {
"addData": {
"threeRIInd": "FIDO_CREDENTIAL_REGISTRATION",
"cardSecurityCode": "123"
}
}
}
}
Other cases
- Split Shipment threeDSAuthenticationInd SPLIT_SHIPMENT 08, threeRIInd SPLIT_OR_DELAYED_SHIPMENT 06 applies for EMV 3DS 2.2 with Bridging Message Extension or for version EMV 3DS 2.3.1
- Delayed Shipment threeDSAuthenticationInd DELAYED_SHIPMENT 09, threeRIInd 15 DELAYED_SHIPMENT applies for EMV 3DS 2.2 with Bridging Message Extension or for version EMV 3DS 2.3.1
- Split Payment threeDSAuthenticationInd SPLIT_PAYMENT 10, threeRIInd 16 SPLIT_PAYMENT applies for EMV 3DS 2.2 with Bridging Message Extension or for version EMV 3DS 2.3.1
Improve authentication rates with additional data
We invite you to visit the Additional Data section in our API documentation. This section provides crucial information to optimize the 3DS authentication process.
Including this additional data in your requests allows issuers to make a more accurate assessment, which can significantly improve the rate of successful authentications.
We recommend reviewing these guidelines to make the most of the API's features and thus offer your users a safer and more efficient experience.