> ## Documentation Index
> Fetch the complete documentation index at: https://docs.y.uno/llms.txt
> Use this file to discover all available pages before exploring further.

# 3DS Configuration and Testing

Use this step-by-step guide to configure and test 3D Secure in Yuno. You’ll set up a 3DS-enabled connection and provider credentials, add 3DS to your routing, enable Card in Checkout Builder, and validate payments using either the Yuno Testing Gateway, the Yuno SDK, or the API. Scheme-specific test cards, OTP codes, and troubleshooting notes are included to verify frictionless and challenge scenarios.

## Testing cards for 3DS flow

Use the scheme-specific cards below to validate 3DS in sandbox. In the preview environment, a simulator mocks the Directory Server (DS) and Access Control Server (ACS) so you can test both frictionless and challenge outcomes. Each table shows the card number with expected 3DS2 results and 3DS1 VERes (Verification Response)/PARes (Payer Authentication Response) responses. Use the one-time password (OTP) codes at the end to complete challenge scenarios.

<AccordionGroup>
  <Accordion title="Amex">
    <table>
      <thead>
        <tr>
          <th>Card Number</th>
          <th>Expected Response 3DS 2.x</th>
          <th>Expected Response 3DS 1.x DS (VERes)</th>
          <th>Expected Response 3DS 1.x ACS (PARes)</th>
        </tr>
      </thead>

      <tbody>
        <tr><td>341502098634895</td><td>AUTHENTICATED\_APPLICATION\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_Y</td></tr>
        <tr><td>348638267931507</td><td>BROWSER\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_CHALLENGE\_OTP</td></tr>
        <tr><td>345695399207589</td><td>NOT\_AUTHENTICATED\_APPLICATION\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>349531373081938</td><td>APPLICATION\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>342316317472410</td><td>APPLICATION\_CHALLENGE\_SDK\_TRANS\_ID\_INVALID\_FORMAT</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>347899129656655</td><td>AUTHENTICATED\_BROWSER\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_Y</td></tr>
        <tr><td>345197771649926</td><td>NOT\_AUTHENTICATED\_BROWSER\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>372021106351394</td><td>BROWSER\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_CHALLENGE\_OTP</td></tr>
        <tr><td>3734123412340000</td><td>NOT\_AUTHENTICATED\_BROWSER\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>3434567891111005</td><td>BROWSER\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_CHALLENGE\_OTP</td></tr>
        <tr><td>3794521996036850</td><td>BROWSER\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_CHALLENGE\_OTP</td></tr>
      </tbody>
    </table>
  </Accordion>

  <Accordion title="Mastercard">
    <table>
      <thead>
        <tr>
          <th>Card Number</th>
          <th>Expected Response 3DS 2.x</th>
          <th>Expected Response 3DS 1.x DS (VERes)</th>
          <th>Expected Response 3DS 1.x ACS (PARes)</th>
        </tr>
      </thead>

      <tbody>
        <tr><td>5333259155643223</td><td>AUTHENTICATED\_APPLICATION\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_Y</td></tr>
        <tr><td>5306889942833340</td><td>BROWSER\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_CHALLENGE\_OTP</td></tr>
        <tr><td>5328720384582224</td><td>NOT\_AUTHENTICATED\_APPLICATION\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>5267648608924299</td><td>APPLICATION\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>5187434643593002</td><td>APPLICATION\_CHALLENGE\_SDK\_TRANS\_ID\_INVALID\_FORMAT</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>5512459816707531</td><td>AUTHENTICATED\_BROWSER\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_Y</td></tr>
        <tr><td>5487971631330522</td><td>NOT\_AUTHENTICATED\_BROWSER\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>5424184049821670</td><td>BROWSER\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_CHALLENGE\_OTP</td></tr>
        <tr><td>5204240438720050123</td><td>BROWSER\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_CHALLENGE\_OTP</td></tr>
        <tr><td>5250548692069390</td><td>BROWSER\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_CHALLENGE\_OTP</td></tr>
        <tr><td>5641523891636636</td><td>BROWSER\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_CHALLENGE\_OTP</td></tr>
      </tbody>
    </table>
  </Accordion>

  <Accordion title="Visa">
    <table>
      <thead>
        <tr>
          <th>Card Number</th>
          <th>Expected Response 3DS 2.x</th>
          <th>Expected Response 3DS 1.x DS (VERes)</th>
          <th>Expected Response 3DS 1.x ACS (PARes)</th>
        </tr>
      </thead>

      <tbody>
        <tr><td>4556557955726624</td><td>AUTHENTICATED\_APPLICATION\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_Y</td></tr>
        <tr><td>4916994064252017</td><td>BROWSER\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_CHALLENGE\_OTP</td></tr>
        <tr><td>4556104160382032</td><td>NOT\_AUTHENTICATED\_APPLICATION\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>4024007189449340</td><td>APPLICATION\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>4024007179872394</td><td>APPLICATION\_CHALLENGE\_SDK\_TRANS\_ID\_INVALID\_FORMAT</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>4929251897047956</td><td>AUTHENTICATED\_BROWSER\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_Y</td></tr>
        <tr><td>4716429323842524</td><td>NOT\_AUTHENTICATED\_BROWSER\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>4234123412340003</td><td>BROWSER\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_CHALLENGE\_OTP</td></tr>
        <tr><td>4604633194219929</td><td>BROWSER\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_CHALLENGE\_OTP</td></tr>
        <tr><td>4485436455354151</td><td>BROWSER\_FRICTIONLESS\_MISSING\_DS\_TRANS\_ID</td><td /><td /></tr>
        <tr><td>4556962659911995</td><td>APPLICATION\_FRICTIONLESS\_MISSING\_SDK\_TRANS\_ID</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>4539837572943550</td><td>BROWSER\_FRICTIONLESS\_MISSING\_DS\_TRANS\_ID</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>4024007176265022</td><td>BROWSER\_CHALLENGE\_MISSING\_ACS\_URL</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>4716125059847899</td><td>THREE\_RI</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>4556362626719763</td><td>PROTOCOL\_ERROR</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>4234123412340000</td><td>AUTHENTICATED\_BROWSER\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_Y</td></tr>
        <tr><td>4234123412340006</td><td>UNAVAILABLE\_BROWSER\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_U</td></tr>
        <tr><td>4234123412340007</td><td>ATTEMPTED\_BROWSER\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_A</td></tr>
        <tr><td>4234123412340001</td><td>NOT\_ENROLLED</td><td>ENROLLED\_N</td><td /></tr>
        <tr><td>4234123412340002</td><td>NOT ENROLLED (VeRes is error 404 "Card account number not found in card ranges from Directory Server")</td><td>ENROLLED\_N (NOT APPLICABLE)</td><td /></tr>
        <tr><td>4234123412340100</td><td>MISSING\_ROOT</td><td /><td /></tr>
        <tr><td>4234123412340101</td><td>MISSING\_MESSAGE</td><td /><td /></tr>
        <tr><td>4234123412340102</td><td>INVALID\_MESSAGE</td><td /><td /></tr>
        <tr><td>4234123412340103</td><td>MISSING\_VERSION</td><td /><td /></tr>
        <tr><td>4234123412340104</td><td>ILLEGAL\_VERSION</td><td /><td /></tr>
        <tr><td>4234123412340105</td><td>MISSING\_URL</td><td /><td /></tr>
        <tr><td>4234123412340106</td><td>ILLEGAL\_URL</td><td /><td /></tr>
        <tr><td>4234123412340107</td><td>MISSING\_ENROLLED</td><td /><td /></tr>
        <tr><td>4234123412340108</td><td>ILLEGAL\_ENROLLED</td><td /><td /></tr>
        <tr><td>4234123412340109</td><td>ILLEGAL\_EXTENSION</td><td /><td /></tr>
        <tr><td>4234123412340200</td><td>ERROR\_CUSTOM</td><td /><td /></tr>
        <tr><td>4234123412340201</td><td>ERROR\_1</td><td /><td /></tr>
        <tr><td>4234123412340202</td><td>ERROR\_2</td><td /><td /></tr>
        <tr><td>4234123412340203</td><td>ERROR\_3</td><td /><td /></tr>
        <tr><td>4234123412340204</td><td>ERROR\_4</td><td /><td /></tr>
        <tr><td>4234123412340205</td><td>ERROR\_5</td><td /><td /></tr>
        <tr><td>4234123412340206</td><td>ERROR\_6</td><td /><td /></tr>
        <tr><td>4234123412340220</td><td>ERROR\_CUSTOM\_WITH\_DIFFERENT\_MESSAGE\_ID</td><td /><td /></tr>
        <tr><td>4234123412340250</td><td>ERROR\_50</td><td /><td /></tr>
        <tr><td>4234123412340251</td><td>ERROR\_51</td><td /><td /></tr>
        <tr><td>4234123412340252</td><td>ERROR\_52</td><td /><td /></tr>
        <tr><td>4234123412340253</td><td>ERROR\_53</td><td /><td /></tr>
        <tr><td>4234123412340258</td><td>ERROR\_58</td><td /><td /></tr>
        <tr><td>4234123412340298</td><td>ERROR\_98</td><td /><td /></tr>
        <tr><td>4234123412340299</td><td>ERROR\_99</td><td /><td /></tr>
        <tr><td>4234123412340300</td><td>IREQ\_CUSTOM</td><td /><td /></tr>
        <tr><td>4234123412340301</td><td>IREQ\_ENROLLED\_Y</td><td /><td /></tr>
        <tr><td>4234123412340350</td><td>IREQ\_50</td><td /><td /></tr>
        <tr><td>4234123412340351</td><td>IREQ\_51</td><td /><td /></tr>
        <tr><td>4234123412340352</td><td>IREQ\_52</td><td /><td /></tr>
        <tr><td>4234123412340353</td><td>IREQ\_53</td><td /><td /></tr>
        <tr><td>4234123412340354</td><td>IREQ\_54</td><td /><td /></tr>
        <tr><td>4234123412340355</td><td>IREQ\_55</td><td /><td /></tr>
        <tr><td>4234123412340356</td><td>IREQ\_56</td><td /><td /></tr>
        <tr><td>4234123412340358</td><td>IREQ\_58</td><td /><td /></tr>
        <tr><td>4234123412340398</td><td>IREQ\_98</td><td /><td /></tr>
        <tr><td>4234123412340399</td><td>IREQ\_99</td><td /><td /></tr>
        <tr><td>4234123412340400</td><td>UNSUPPORTED\_VERSION</td><td /><td /></tr>
        <tr><td>4234123412340401</td><td>UNRECOGNIZED\_CRITICAL\_EXTENSION</td><td /><td /></tr>
        <tr><td>4234123412340402</td><td>SERVER\_ERROR</td><td /><td /></tr>
        <tr><td>4234123412340403</td><td>TIMEOUT</td><td /><td /></tr>
      </tbody>
    </table>
  </Accordion>

  <Accordion title="Diners">
    <table>
      <thead>
        <tr>
          <th>Card Number</th>
          <th>Expected Response 3DS 2.x</th>
          <th>Expected Response 3DS 1.x DS (VERes)</th>
          <th>Expected Response 3DS 1.x ACS (PARes)</th>
        </tr>
      </thead>

      <tbody>
        <tr><td>3095000000000000</td><td>AUTHENTICATED\_APPLICATION\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_Y</td></tr>
        <tr><td>3095000000000001</td><td>BROWSER\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_CHALLENGE\_OTP</td></tr>
        <tr><td>3095000000000002</td><td>NOT\_AUTHENTICATED\_APPLICATION\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>3095000000000005</td><td>AUTHENTICATED\_BROWSER\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_Y</td></tr>
        <tr><td>3095000000000006</td><td>NOT\_AUTHENTICATED\_BROWSER\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
      </tbody>
    </table>
  </Accordion>

  <Accordion title="JCB">
    <table>
      <thead>
        <tr>
          <th>Card Number</th>
          <th>Expected Response 3DS 2.x</th>
          <th>Expected Response 3DS 1.x DS (VERes)</th>
          <th>Expected Response 3DS 1.x ACS (PARes)</th>
        </tr>
      </thead>

      <tbody>
        <tr><td>3528000000000000</td><td>AUTHENTICATED\_APPLICATION\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_Y</td></tr>
        <tr><td>3528000000000001</td><td>BROWSER\_CHALLENGE</td><td>ENROLLED\_Y</td><td>TRANSACTION\_CHALLENGE\_OTP</td></tr>
        <tr><td>3528000000000002</td><td>NOT\_AUTHENTICATED\_APPLICATION\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
        <tr><td>3528000000000005</td><td>AUTHENTICATED\_BROWSER\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_Y</td></tr>
        <tr><td>3528000000000006</td><td>NOT\_AUTHENTICATED\_BROWSER\_FRICTIONLESS</td><td>ENROLLED\_Y</td><td>TRANSACTION\_STATUS\_N</td></tr>
      </tbody>
    </table>
  </Accordion>

  <Accordion title="Ranges">
    <table>
      <thead>
        <tr>
          <th>Start range</th>
          <th>End range</th>
          <th>Scheme</th>
        </tr>
      </thead>

      <tbody>
        <tr><td>340000000000000</td><td>349999999999999</td><td>Amex</td></tr>
        <tr><td>370000000000000</td><td>379999999999999</td><td>Amex</td></tr>
        <tr><td>2221000000000000</td><td>2223000000000022</td><td>Mastercard</td></tr>
        <tr><td>2223000000000024</td><td>2720999999999999</td><td>Mastercard</td></tr>
        <tr><td>5100000000000000</td><td>5111111111111117</td><td>Mastercard</td></tr>
        <tr><td>5111111111111119</td><td>5599999999999999</td><td>Mastercard</td></tr>
        <tr><td>4000000000000000</td><td>4111110000000210</td><td>Visa</td></tr>
        <tr><td>4111110000000212</td><td>4234123412339999</td><td>Visa</td></tr>
        <tr><td>4234123412340000</td><td>4234123412349999</td><td>Visa</td></tr>
        <tr><td>4234123412350000</td><td>4999999999999999</td><td>Visa</td></tr>
        <tr><td>3000000000000000</td><td>3099999999999999</td><td>Diners</td></tr>
        <tr><td>3528000000000000</td><td>3589009999999999</td><td>JCB</td></tr>
      </tbody>
    </table>
  </Accordion>

  <Accordion title="3DS2 OTP Codes">
    <table>
      <thead>
        <tr>
          <th>OTP Code</th>
          <th>Transaction Status</th>
          <th>Transaction Status reason</th>
          <th>ECI</th>
          <th>authenticationValue</th>
        </tr>
      </thead>

      <tbody>
        <tr><td>1234</td><td>Y</td><td>/</td><td>01</td><td>JAmi21makAifmwqo2120cjq1AAA=</td></tr>
        <tr><td>1111</td><td>N</td><td>01</td><td>01</td><td>/</td></tr>
        <tr><td>2222</td><td>R</td><td>01</td><td>01</td><td>/</td></tr>
        <tr><td>3333</td><td>U</td><td>01</td><td>01</td><td>/</td></tr>
        <tr><td>4444</td><td>A</td><td>01</td><td>01</td><td>Qm181okmdyqh6yQmYuq1890QAAA=</td></tr>
      </tbody>
    </table>

    The same OTP codes are valid for Visa, Mastercard and Amex scenarios.
  </Accordion>

  <Accordion title="3DS1 OTP Codes">
    <table>
      <thead>
        <tr>
          <th>OTP Code</th>
          <th>Transaction Status</th>
          <th>CAVV</th>
          <th>CAVV Algorithm</th>
          <th>ECI</th>
        </tr>
      </thead>

      <tbody>
        <tr><td>1234</td><td>Y</td><td>VGhpcyBpcyBhIHRlc3QgYmFzZTY=</td><td>7</td><td>05</td></tr>
        <tr><td>1111</td><td>N</td><td>/</td><td>/</td><td>/</td></tr>
      </tbody>
    </table>
  </Accordion>
</AccordionGroup>

## Set up the 3D Secure connections

First, we'll set up a 3DS-enabled connection in the Yuno dashboard. Log into your dashboard and navigate to Connections. In this case, we'll use Yuno Test Payment Gateway as our provider, so we'll look for it and click **Connect**.

<Frame>
  <img src="https://mintcdn.com/yuno-3979e326/xfsBNkbN7r6yxkZH/images/reference/3ds-configuration-and-testing/image1.png?fit=max&auto=format&n=xfsBNkbN7r6yxkZH&q=85&s=e2544cc3e27029810dd0ffbce3855fb8" alt="" width="2776" height="958" data-path="images/reference/3ds-configuration-and-testing/image1.png" />
</Frame>

Name the connection and enable the 3D Secure credentials checkbox. Provide the following details. If you need test credentials, contact us and we'll provide them:

* Merchant Name
* Merchant URL
* Merchant Country Code
* MCC
* Brand
* Acquirer BIN
* Acquirer Merchant ID
* Merchant ID
* Processing Channel ID (optional)
* Acquirer Country Code
* SIRET (optional)

Click **Next** to complete all steps and **Save** your connection.

Next, configure your 3DS provider (we'll use Cybersource 3DS in this example). In Connections, select the provider and click **Connect**.

Name the connection and select **3D Secure** under Integration type. Using the information from your 3DS provider, fill in:

* Organization ID
* Secret
* Shared Secret
* Transaction identification from
* Transactions expire time (minutes) (optional)

<Frame>
  <img src="https://mintcdn.com/yuno-3979e326/xfsBNkbN7r6yxkZH/images/reference/3ds-configuration-and-testing/image2.png?fit=max&auto=format&n=xfsBNkbN7r6yxkZH&q=85&s=9249c121eafbaa0dac2fb9946ef855b1" alt="" width="2802" height="1624" data-path="images/reference/3ds-configuration-and-testing/image2.png" />
</Frame>

## Configure routing

* Navigate to Routing and find the Card route in either the Published or Not Published tab. Click **View** or **Set Up**, then **Create new route**.
* Add a step to the route: select **Cybersource 3DS** (or your provider) and click **Select**.
* Then, for the "Succeeded" path, add **Yuno Test Payment Gateway** and click **Select**.
* Click **Publish** to save your changes.

<Frame>
  <img src="https://mintcdn.com/yuno-3979e326/xfsBNkbN7r6yxkZH/images/reference/3ds-configuration-and-testing/image3.png?fit=max&auto=format&n=xfsBNkbN7r6yxkZH&q=85&s=40881c5ccbbbbe2768443576c3ed4844" alt="" width="2802" height="992" data-path="images/reference/3ds-configuration-and-testing/image3.png" />
</Frame>

## Configure Checkout Builder

Navigate to Checkout Builder, enable the Card payment method, then click **Publish settings** to save your changes.

<Frame>
  <img src="https://mintcdn.com/yuno-3979e326/xfsBNkbN7r6yxkZH/images/reference/3ds-configuration-and-testing/image4.png?fit=max&auto=format&n=xfsBNkbN7r6yxkZH&q=85&s=3f6910d7257413005bc4e6ed44e625a2" alt="" width="2930" height="1226" data-path="images/reference/3ds-configuration-and-testing/image4.png" />
</Frame>

## Testing 3DS with Yuno

You can test 3D Secure in three ways:

* Yuno Testing Gateway: Use the gateway configured above (sandbox only).
* Yuno SDK: Create a payment in your application using the Yuno SDK.
* Yuno API: Use the [Create Customer](/reference/create-customer) and [Create Payment](/reference/create-payment) endpoints to run a 3DS flow.

Refer to [Testing cards for 3DS flow](#testing-cards-for-3ds-flow) above for the test cards and OTP codes to use.
