Adyen: Provide either threeds2.fingerprint or threeds2.challengeResult (14_032)
Fixes Adyen Checkout error 14_032 asking for either threeds2.fingerprint or threeds2.challengeResult. Covers matching the details field to the completed step (fingerprint after IdentifyShopper, challengeResult after ChallengeShopper), sending exactly one field per step, and not reusing one fixed payload shape. Not for skipped fingerprint steps or invalid fingerprint data.
Adyen: Provide either threeds2.fingerprint or threeds2.challengeResult (14_032)
TL;DR: The /payments/details call needs the field that matches the step you just completed: threeds2.fingerprint right after IdentifyShopper, threeds2.challengeResult right after ChallengeShopper. Sending the wrong one, both, or neither gives 14_032.
14_032 - Provide either threeds2.fingerprint or threeds2.challengeResultSteps
- Look at the last resultCode. IdentifyShopper means the fingerprint step just ran; ChallengeShopper means the challenge just ran. That tells you which field to send.
- Success check: you can name the step you are responding to.
- After IdentifyShopper, send threeds2.fingerprint. Include the fingerprint data plus paymentData in /payments/details.
- Success check: the details payload has threeds2.fingerprint and no challengeResult.
- After ChallengeShopper, send threeds2.challengeResult. Include the challenge result plus paymentData instead.
- Success check: the details payload has threeds2.challengeResult and no fingerprint.
- Never send both or an empty details object. One field per step, matching the step.
- Success check: /payments/details advances the flow instead of returning 14_032.
When to use this
- /payments/details fails with 14_032 during 3DS2.
- Your details-call code uses one fixed payload shape for every step.
When NOT to use this
- 14_0402 (missing fingerprint). That is the fingerprint step skipped entirely.
- 14033/14034 (fingerprint invalid). Those mean the field was present but the data was bad.
Compatibility
Adyen Checkout API 3DS2 native flows, all channels.
Why it happens
Each 3DS2 step produces a different artifact and Adyen expects exactly that artifact back. Generic "send the details" code that always posts the same field, or posts an empty object, fails the check.
Edge cases
- Redirect (non-native) flows use PaRes/MD instead of these fields. Dont mix the two vocabularies.
- If the shopper abandons the challenge and you retry, you go back to a fresh fingerprint step, not a challengeResult resend.