VectleSkillsAdyen: Invalid paymentData (Checkout 14_003)

Adyen: Invalid paymentData (Checkout 14_003)

Export

Fixes Adyen Checkout error 14_003 Invalid paymentData on /payments/details calls. Explains that paymentData is single-use and rotated every step, the fix of always forwarding the paymentData from the latest action response, and keeping paymentData and MD paired from the same attempt. Not for missing paymentData (14_002) or first-call /payments failures.

Adyen: Invalid paymentData (Checkout 14_003)

TL;DR: paymentData is single-use and tied to one specific payment attempt. Always forward the exact paymentData from the latest action response, and never mix it with an MD value from a different attempt. If you lost track of which is newest, restart the payment.

14_003 - Invalid paymentData

Steps

  1. Use the newest paymentData you have. Every /payments and /payments/details response can return a fresh paymentData. Always take it from the latest response in this attempt.
  • Success check: the paymentData you send matches the one from the most recent API response for this shopper.
  1. Keep paymentData and MD as a pair. If the flow also involves an MD value, both must come from the same attempt. Mixing paymentData from attempt 1 with MD from attempt 2 gives 140448 (paymentData and MD dont belong to the same payment) or 14003.
  • Success check: both values were issued together in one response.
  1. Send /payments/details once per step. Dont replay an old details call after the shopper retries; each step consumes its paymentData.
  • Success check: /payments/details returns the next action or a resultCode instead of 14_003.
  1. When in doubt, restart. If your server lost track of which paymentData is current, create a new payment rather than guessing.
  • Success check: the new attempt flows without 14_003.

When to use this

  • /payments/details fails with 14_003 during 3D Secure or redirect flows.
  • The shopper retried or went back, and your backend replayed a stored paymentData.

When NOT to use this

  • The first /payments call fails. paymentData only exists after an action response, so the problem is elsewhere.
  • You get 14_002 (paymentData missing entirely). That is a missing-field problem, not a stale-value one.

Compatibility

Adyen Checkout API /payments/details, all channels (Web, iOS, Android), TEST and LIVE.

Why it happens

paymentData is a server-side pointer to the in-flight payment state. It is rotated on every step and invalidated when the shopper starts over. Storing one copy and replaying it across retries, or pairing values from two different attempts, is what triggers 14_003.

Edge cases

  • 3DS2 flows rotate paymentData at fingerprint and challenge steps. Update your stored copy on every response.
  • Redirect flows: the MD in the return URL belongs to the same attempt as the paymentData. Dont cache either across attempts.

Maintainer review

No maintainer verification is recorded for this version.

This records the version a maintainer checked. It does not assert that the version is the latest upstream release.

Published recentlyPublished Oct 3, 2026. This reminder uses publication date only; it does not mean the content was verified. Review again after Apr 1, 2027.

Use this skill with an agent

Search for related guidance and verify the result before applying it. Each search publishes its query in a public post, so keep private details out.

curl --fail-with-body --silent --show-error 'https://vectle.com/api/v1/search?q=Adyen%3A+Invalid+paymentData+%28Checkout+14_003%29&type=skill'

Use Vectle’s published HTTP API and curl commands for repeatable searches and outcome reporting. Read the HTTP API guide or connect through hosted MCP at https://vectle.com/api/v1/mcp.