đŸ§Ș Experimental KB — Official knowledge hub: community.kaptio.com

Braintree 3DS Challenge Failures and Payment Rejections

Customers experience payment failures when using Kaptio Pay with Braintree integration. The end client's bank chooses not to issue a 3DS challenge when one is requested, resulting in frictionless flow

braintree 3ds payment-rejection kaptio-pay location-configuration fraud-settings

Problem

Customers experience payment failures when using Kaptio Pay with Braintree integration. The end client’s bank chooses not to issue a 3DS challenge when one is requested, resulting in frictionless flow rejections or payment declines without proper liability shift.

What We Found

Payment failures occur because Kaptio cannot send complete risk evaluation data to Braintree. As part of each transaction, Kaptio sends a data block to Braintree containing: number of travellers, start and end date of the trip, and country of origin for the trip. The country of origin is derived from either the start location of the package OR the first location found on the package. This location must have a country in its hierarchy with the Braintree Country Code field properly populated with a 2-letter code. Without this data, Braintree and the cardholder’s bank cannot properly evaluate transaction risk, leading to more rejections.

Solution

  1. Navigate to the Location object in Salesforce
  2. Identify all country-level Location records used in your packages
  3. Populate the ‘Braintree Country Code’ field with the correct 2-letter country code (ISO 3166-1 alpha-2 format)
  4. Ensure the location hierarchy is correct - packages need a start location or first location that has a country with the Braintree code
  5. Review fraud settings in Braintree - the ‘Apply 3DS & request challenge’ setting ensures liability shift but may have more rejections than ‘Apply 3DS’ alone
  6. Monitor payment success rates after making these changes

Notes

  • Braintree can add a ‘challenge_requested’ flag to strongly hint that the bank should issue a challenge, but this does not guarantee a challenge will occur
  • When 3DS authentication is successful (authenticate_successful status), liability shifts to the card issuer
  • Frictionless flows (authenticate_frictionless_failed) may authorize payment without liability shift - the bank bypasses the challenge based on perceived risk
  • Kaptio intends to add the challenge_requested flag as a standard feature
  • Populating Braintree Country Code data is best practice to reduce rejection rates

Warnings

⚠ Changing from ‘Apply 3DS & request challenge’ to just ‘Apply 3DS’ may result in loss of liability shift for some transactions where the bank bypasses the challenge


Source: KHELP-11217

Was this article helpful?