Guide on Bluefin 3DS Integration for PayConex™ V4 API
Overview
This section is an addition to the 3D Secure page and it specifically targets the configuration and usage of 3D Secure for the PayConex™ V4 API.
To understand the basics and purposes of 3DS protocol and Bluefin 3DS support in the PayConex™ environment, we recommend that you first familiarise yourself with some background information in the following documentation:
Checkout Component 3DS flow
It is essential to understand the communication bridge that takes place between the Checkout Component and 3D Secure to efficiently use this feature.
Note
3DS feature is only supported for iframe configurations selecting card payments. For more, see Creating a Configuration and Creating an Instance.

PayConex™ Checkout Component with Bluefin 3DS Flow
- Challenge Initiation: The Checkout Component is loaded with
bearerToken. Once the customer fills out the initial form, and if the 3DS feature is enabled, a request is sent via the PayConex™ V4 API to the issuers to initiate a challenge. At this point, the communication bridge between the issuers and the Checkout Component is established. - Challenge Completion: The challenge is displayed to the customer, awaiting completion.
- Tokenization: After the customer successfully completes the challenge, the Checkout Component again communicates with PayConex™ V4 API and ShieldConex® to tokenize the sensitive data and returned 3DS data.
- Token for Transaction Processing: The token is returned to the Checkout Component and prepared for vaulting for reuse, completing the workflow.
Did you know?
This 3DS solution is also integrated in the Bluefin TECS Web for all kinds of transactions including MITs, CITs, and COF transactions. To compare the PayConex™ system and TECS Web integrations, check out TECS 3D Secure Transaction.
Requirements
The user must enable the 3D Secure option in the PayConex™ Portal settings, under the Security Features section, using our Bluefin 3DS solution as the 3DS service. In the PayConex™ Portal, this service is labeled and referred to as BLUEFIN, as shown in the example below.

PayConex™ Portal Security Features
Note
The Bluefin Administrators must first enable this security feature for iframe configurations to support and integrate 3D Secure. If you do not see it in the
Settings, please reach out to the Bluefin Technical Team for assistance.
Configuring 3D Secure
In the V4 API environment, 3D Secure is enabled and configured during the setup of the iframe configuration and instance. This can also be done at the time of iframe instance creation, where it is also possible to override a configuration. Once the bearerToken is generated, the Checkout Component instance is securely loaded.
Note
threeDSecureInitSettings are individual 3D Secure settings that are defined per instance.
The
threeDSecureInitSettingsparameter is required only with withthreeDSecureset to"required"and one of theallowedPaymentMethodsbeing"CARD"or"GOOGLE_PAY".
Iframe Configuration
To support 3D Secure, we must first set threeDSecure to "required" in our iframe configuration. Alternatively, it can be overwritten at the time of instance creation. This is defined in cardSettings.
POST /api/v4/accounts/{accountId}/payment-iframe
{
"label": "Multi-Payment iframe",
"language": "ENGLISH",
"timeout": 600,
"allowedPaymentMethods": [
"CARD"
],
"allowedParentDomains": [
"tools.bluefin.com"
],
"cardSettings": {
"cvv": "required",
"billingAddress": {
"address1": "required",
"address2": "optional",
"city": "required",
"state": "required",
"zip": "required"
},
"capturePhone": "omit",
"threeDSecure": "required",
"captureEmail": "omit",
"captureShippingAddress": false
},
"currency": "USD",
"savePaymentOption": "required"
}
*Required Scopes: pcx:iframe:*, pcx:iframe:create
Also See
Before digging into the iframe configuration request, make sure you have brushed up on Iframe Configuration.
Iframe Instance
When creating an iframe instance, along with many other options comes the main 3DS initialization settings that qualify for 3D Secure chargeback protections. The following endpoint returns the bearerToken that loads our Checkout Component.
POST /api/v4/accounts/{accountId}/payment-iframe/{resourceId}/instance/init
{
"label": "my-instance-1",
"amount": "20",
"threeDSecureInitSettings": {
"transactionType": "GOODS_SERVICE_PURCHASE",
"deliveryTimeFrame": "ELECTRONIC_DELIVERY",
"threeDSecureChallengeIndicator": "NO_PREFERENCE",
"reorderIndicator": "FIRST_TIME_ORDERED",
"shippingIndicator": "BILLING_ADDRESS"
}
}
*Required Scopes: pcx:iframe:instance:*, pcx:iframe:instance:create
Also See
Before digging into the iframe instance request, make sure you have brushed up on Iframe Instance Creation.
Iframe Instance Overwriting cardSettings
cardSettingsAs mentioned above, it is possible to configure the 3DS settings during the iframe instance creation.
POST /api/v4/accounts/{accountId}/payment-iframe/{resourceId}/instance/init
{
"label": "my-instance-1",
"amount": "20",
"cardSettings": {
"cvv": "required",
"billingAddress": {
"address1": "required",
"address2": "optional",
"city": "required",
"state": "required",
"zip": "required"
},
"capturePhone": "omit",
"threeDSecure": "required",
"captureEmail": "omit",
"captureShippingAddress": false
},
"threeDSecureInitSettings": {
"transactionType": "GOODS_SERVICE_PURCHASE",
"deliveryTimeFrame": "ELECTRONIC_DELIVERY",
"threeDSecureChallengeIndicator": "NO_PREFERENCE",
"reorderIndicator": "FIRST_TIME_ORDERED",
"shippingIndicator": "BILLING_ADDRESS"
}
}
*Required Scopes: pcx:iframe:instance:*, pcx:iframe:instance:create
Here is a breakdown of the 3D Secure settings shown in the example request.
cardSettings.threeDSecure
cardSettings.threeDSecure| Option | Description |
|---|---|
"required" | The iframe instance requires the 3D Secure to be completed. |
"omit" | The iframe instance omits the 3D Secure altogether. |
threeDSecureInitSettings
threeDSecureInitSettingstransactionType
transactionTypeEach option provides context about the nature of the transaction, helping to ensure accurate processing and risk assessment.
| Option | Description |
|---|---|
"GOODS_SERVICE_PURCHASE" | Indicates a purchase of goods or services. This is the most common type of transaction for retail or eCommerce. |
"CHECK_ACCEPTANCE" | Refers to the acceptance of a check as a form of payment. |
"ACCOUNT_FUNDING" | Represents a transaction that involves funding an account, such as adding funds to a digital wallet or prepaid card. |
"QUSAI_CASH_TRANSACTION" | Refers to transactions similar to cash withdrawals, such as purchasing traveler’s checks, foreign currency, or gambling tokens. |
"PREPAID_ACTIVATION" | Refers to activating a prepaid account or card, often involving an initial funding transaction. |
deliveryTimeFrame
deliveryTimeFrameAs the setting name suggests, this is the time for the goods to be delivered. The descriptions are pretty much self-explanatory given the options.
| Option | Description |
|---|---|
"ELECTRONIC_DELIVERY" | Electronic Delivery. |
"SAME_DAY_SHIPPING" | Same day shipping. |
"OVERNIGHT_SHIPPING" | Overnight shipping. |
"TWO_DAYS_OR_MOSRE_SHIPPING" | Two-day or more shipping. |
threeDSecureChallengeIndicator
threeDSecureChallengeIndicator| Option | Description |
|---|---|
"NO_PREFERENCE" | We suggest that our merchants leave this option blank. This option is the most frictionless. |
"PREFER_NO_CHALLENGE" | Preference for no challenge to be presented to the end user. |
"PREFER_A_CHALLENGE" | Preference for the issuing bank to present a challenge to the end user. |
"OVERWRITE_NO_CHALLENGE" | Challenge is never presented to the end user. |
"REQUIRES_MANDATE_CHALLENGE" | This option dictates that a challenge must be presented to the end users. |
reorderIndicator
reorderIndicatorThis setting indicates whether the order is new or was ordered before.
| Option | Description |
|---|---|
"FIRST_TIME_ORDERED" | First time ordered. |
"REORDER" | Reordered. |
shippingIndicator
shippingIndicator| Option | Description |
|---|---|
"BILLING_ADDRESS" | Ship to cardholder's billing address. See Transaction Metadata billingAddress. |
"MERCHANT_VERIFIED_ADDRESS" | Ship to another verified address on file with merchant. |
"NOT_BILLING_ADDRESS" | Ship to address that is different than the cardholder's billing address. |
"SHIP_TO_STORE" | Ship to Store / Pick-up at local store (Store address will be populated in shipping address fields). |
"DIGITAL_GOODS" | Digital goods (includes online services, electronic gift cards and redemption codes). |
"TRAVEL_AND_EVENT_TICKETS" | Travel and Event tickets, not shipped. |
"PICK_UP_AND_GO_DELIVERY" | Indicates that the customer will pick up the purchased items in person or that the delivery service is immediate and does not involve standard shipping processes. Often used for express orders or convenience-driven transactions like curbside pickup. |
"LOCKER_DELIVERY" | Indicates that the purchased items will be delivered to a secure locker for the customer to retrieve at their convenience. Commonly used in scenarios like package lockers at residential complexes, stores, or designated pick-up locations. |
"OTHER" | Other (for example, Gaming, digital services not shipped, emedia subscriptions, etc.). |
3D Secure Transaction Processing
Finally, we include the token returned by the Checkout Component via the JavaScript SDK and we are set to make a transaction request. To see how to get this token, check out Using the SDK section and the checkoutComplete event.
Note
The PayConex™ token already includes the 3DS-Authenticated data, so we simply use it in the transaction request.
Request
POST /api/v4/accounts/{accountId}/payments/sale
{
"bfTokenReference": "PAYCONEX_TOKEN",
"posProfile": "ECOMMERCE",
"amounts": {
"total": "5.00",
"currency": "USD"
}
}
*Required Scopes: pcx:payments:*, pcx:payments:card_not_present:*, pcx:payments:card_not_present:sale
Response
The transaction request generates a result similar to the following when it comes to 3D Secure metadata.
{
"transactionId": "000000048726",
"status": "CAPTURED",
"timestamp": "2025-04-10T20:01:32.000000Z",
"customer": {
"name": "Jane Smith",
"email": "[email protected]",
"phone": "+14441234321",
"billingAddress": {
"address1": "123 Plain St",
"address2": "West Side",
"city": "Atlanta",
"state": "GA",
"zip": "90210",
"country": "USA"
}
},
"trace": {
"history": [
{
"action": "transaction",
"requestId": "784232bb-e082-4701-a3bb-4f7a955577fc",
"correlationId": "24c2269c-e8a9-49dc-99ba-a907e6a8a325",
"timestamp": "2025-04-10T15:01:29-05:00"
}
],
"networkTransactionId": "015100666209509G467"
},
"amounts": {
"currency": "USD",
"approved": "5.00",
"requested": "5.00",
"balance": "5.00"
},
"auth": {
"code": "OK5137",
"processorMessage": "APPROVED",
"message": "APPROVED",
"networkName": "VISA",
"avsResponseCode": "Y"
},
"card": {
"name": "Jane Smith",
"last4": "9990",
"expiry": "1225",
"brand": "VISA"
},
"binData": {
"program": "STANDARD"
},
"threeDSecure": {
"protectionEnabled": true,
"eci": "05",
"status": "Y",
"statusResult": "Authenticated",
"version": "2.2.0",
"token": "ji+A0S72pd/RFOrr1fwCKXKqDno=",
"transactionId": "2abe7b65-45cd-4a58-bcd3-8b10b8f8f50e"
},
"transactionType": "SALE",
"entryMode": "KEYED",
"refundObject": {
"refundBalance": "5.00"
}
}
threeDSecure
threeDSecureAs part of the transaction metadata shown in the example response above, this is 3DS-related data indicating whether 3DS was enabled for that certain transaction including status, version, token, etc.
Here is a comprehensive breakdown.
| Parameter | Type | Description | Example |
|---|---|---|---|
protectionEnabled | boolean | Whether the transaction has the 3D Secure enabled. | true |
eci | string | Electronic Commerce Indicator: A payment system-specific value provided by the ACS to indicate the outcome of the cardholder authentication attempt. This code is returned by the issuing banks and credit card-specific networks to notify a merchant about the authentication of the cardholder and the status of the card holder's issuing bank under the 3D Secure Authentication program. This value is represented by 2 characters. For Visa ECI values, check out 5.1 Electronic Commerce Indicator (ECI). For Mastercard ECI values, see E-Commerce Commerce Indicator. | "05" |
status | string | 3DS status from 3rd party. For Mastercard 3DS status values, check out Mastercard Identity Check Program Guide under Whitelisting Status Response. For Visa 3DS status values, check out Common Visa 3DS Status Values. Enumerations: [ Y, A, I, N, U, C, R ] | "Y" |
statusResult | string | Whether the transaction was successfully 3DS-Authenticated with the protection enabled. | "Authenticated" |
version | string | 3DS Protocol version | "2.2.0" |
token | string | Payment System-specific authentication value provided as part of the ACS registration for each supported DS. It is 28 characters long. | "ji+A0S72pd/RFOrr1fwCKXKqDno=" |
transactionId | string | A universally unique transaction identifier assigned by the DS to distinguish a single transaction. It is 36 characters long. | "2abe7b65-45cd-4a58-bcd3-8b10b8f8f50e" |
Test Card Numbers
The following set of test card numbers can be used to evaluate the different ECI values and 3DS statuses. Where the status and ECI are a ? the card number is triggering a challenge, the results will depend on the option selected in the dropdown on the challenge dialog set in the iFrame options.
Note
These cards are intended solely for testing purposes and should only be used in the Testing/Certification environment. They allow merchants and developers to simulate real-life scenarios to gain a better understanding of how 3D Secure operates.
3D Secure 2.0 Test Cards
| Card Number | Network | Prompt | ECI | Status/Success |
|---|---|---|---|---|
4124 9399 9999 9990 | Visa | N | 5 | Y |
4485 6600 0000 0007 | Visa | N | 7 | N |
4485 6666 6666 6668 | Visa | Y | ? | ? - Depends on the challenge completion |
4160 2944 4444 4449 | Visa | - | - | Error: Card Not Enrolled |
5406 0044 4444 4443 | Mastercard | N | 2 | Y |
5415 2444 4444 4444 | Mastercard | N | 0 | N |
5472 0655 5555 5557 | Mastercard | Y | ? | ? - Depends on the challenge completion |
6011 9933 3333 3334 | Discover | N | 5 | Y |
6011 4023 4444 4445 | Discover | N | 7 | N |
6011 9922 2222 2228 | Discover | Y | ? | ? - Depends on the challenge completion |
3700 009999 99990 | AmEx | N | 5 | Y |
3700 002222 22228 | AmEx | N | 7 | N |
3400 001111 11117 | AmEx | Y | ? | ? - Depends on the challenge completion |
