What is 3D Secure (3DS)?
3D Secure (also called “3DS”) is an extra security layer for online card payments. When required, customers authenticate directly with their bank. Why it matters:- Reduces fraud
- Helps with liability shift on supported processors and flows (processor/network dependent)
- Required in some regions (e.g., PSD2)
- May improve approval rates
3DS Version Support
Revolv3 supports EMV 3DS 2.x pass-through only. 3DS 1.x pass-through is not supported.Processor Support
If the request routes to an unsupported processor,
threeDS is not forwarded.
TSYS: Data-Only 3DS Only
For TSYS authorizations, Revolv3 supports data-only 3DS pass-through. This is not full 3DS:- No cardholder challenge step through Revolv3.
- No full authentication or liability shift (Visa ECI
07, not05). - Revolv3 does not accept
ecion the Payment API for TSYS — the platform maps the data-only path internally.
- Use challenge indicator
06(no challenge / data share) where your provider supports it. - Expect ECI
07on Visa from the MPI — do not send full-auth results (ECI05, authentication statusY) unless you have confirmed full TSYS 3DS support with Revolv3. - Your MPI returns
cavv,dsTransactionId, andthreeDsVersionfrom the data-only exchange. - If your MPI returns Base64
cavv, convert it to 40-character hex before calling Revolv3. Revolv3 does not convert for you.
Full 3DS on TSYS (ECI
05/06, liability shift) is not available in production today.The threeDS Object
Include the threeDS object in your payment request:
eci on Revolv3 Payment API requests. It is not supported on the threeDS object and is ignored if sent.
Field Reference
Note:
dsTransactionId is the Directory Server Transaction ID (transaction-level identifier), not a Directory Server ID. On Worldpay, Revolv3 forwards dsTransactionId for Mastercard only — still send it for every brand when your MPI returns it.
Example Requests
Worldpay (Base64 cavv)
Nuvei (Base64 cavv)
Nuvei expects the same Base64 cavv shape as Worldpay. Send values in the encoding your MPI returns for that authentication.
TSYS (Data-Only, Hex cavv)
cavv, convert to 40-character hex before calling Revolv3. Do not include eci or xid unless you have a true legacy XID.
Troubleshooting
Worldpay Sandbox Note (Base64 Padding)
Some Worldpay sandbox scenarios may rejectcavv values that include trailing base64 padding (=).
Example:
= padding if required. Do not modify any other characters. This applies to Worldpay only, not TSYS or Nuvei.
Best Practices
- Match MPI configuration to processor: Worldpay and TSYS both use merchant-supplied pass-through today; TSYS requires data-only MPI setup.
- Encoding: Base64
cavvfor Worldpay and Nuvei; hexcavvfor TSYS Visa/Amex/Discover. - EMV 3DS 2.x: put the directory-server UUID in
dsTransactionIdonly — leavexidempty unless you have a true legacy XID. - Do not send
ecion Revolv3 Payment API requests for TSYS. - Only include fields your MPI returned (plus any required encoding conversion for TSYS).
- Ensure
threeDsVersionmatches the authentication that producedcavv. - Test on the same processor family you use in production.
- If TSYS sales fail without
threeDSbut fail with full-auth MPI data, switch MPI to data-only (ECI07).
Common Questions
Can I use the same threeDS object for Worldpay and TSYS?
No. Worldpay uses Base64 cavv on a merchant-supplied 3DS Data Only path. TSYS requires hex cavv and data-only MPI results only.
Do I send a different threeDS object for Visa vs Mastercard on Worldpay?
No. Use the same object for every brand. Send cavv, dsTransactionId, and threeDsVersion when your MPI returns them. On Worldpay, Revolv3 forwards dsTransactionId for Mastercard only.
Is Worldpay full 3DS / liability shift?
Not with today’s mapping. Revolv3 passes your MPIcavv on a Worldpay 3DS Data Only path — not a hosted challenge and not full authentication / liability shift.
Where does the Directory Server UUID go?
IndsTransactionId. Do not put it in xid. Send it for every brand when your MPI returns it.
Should I send eci: "05" for TSYS?
No. Revolv3 does not accept eci for TSYS data-only pass-through. Sending full-auth ECI from your MPI while Revolv3 uses the data-only TSYS path can cause declines (for example 82 / INCORRECT CVV).
Will I get liability shift on TSYS?
Not with data-only pass-through. Liability shift requires full 3DS support, which is not available in production on TSYS today.Can I reuse a Worldpay threeDS payload on Nuvei?
Usually yes for cavv encoding (both expect Base64), but confirm threeDsVersion and dsTransactionId match what your MPI returned for that authentication.
Next Steps
- Make a Payment — See how to structure payment requests
- Sale with Payment Method Details — API reference for sale requests with
threeDS - Authorize with Payment Method Details — API reference for authorization requests with
threeDS - Error Responses — Learn how to handle API and processor errors

