---
updatedAt: 2026-06-22T20:47:21.000Z
agentTools:
  projectIndex: https://docs.nmi.com/llms.txt
---

# Testing

Testing Values for Payer Authentication

The following Test Cards simulate example authentication scenarios. We recommend running these Test Cards before going live to ensure your integration is successful and accurate.

## 1. Put your account in Test Mode

## 2. Provide test cards

Provide these test cards to `ThreeDSecure#createUI()`.

### Test Card 1: Successful Frictionless Flow

This test demonstrates that the issuing bank has authenticated the cardholder without needing to challenge them.

**Card Number:** 4000000000002701\
**Result:** ThreeDSecureUI will emit a complete event.

```Text Test Card 1
{  
    xid: null,  
    cavv: "Y2FyZGluYWxjb21tZXJjZWF1dGg=",  
    eci: "05",  
    cardHolderAuth: "verified",  
    threeDsVersion: "2.2.0",  
    directoryServerId: "3f6fb1f8-f719-46c9-905b-bab446f4de30"  
    cardHolderInfo: null,  
}
```

### Test Card 2: Failed Frictionless

This test demonstrates that the issuing bank has failed to authenticate the cardholder without needing to challenge them. This does not indicate a technical problem.

**Card Number:** 4000000000002925\
**Result:** ThreeDSecureUI will emit a failure event.

```Text Test Card 2
{
    code: "TRANSACTION_STATUS_N",
    message: "Not Authenticated/Account Not Verified; Transaction denied"
}
```

### Test Card 3: Attempted Frictionless Flow

This test demonstrates a cardholder that is enrolled in 3DSecure but the issuing bank does not support it.

**Card Number:** 4000000000002719\
**Result:** ThreeDSecureUI will emit a complete event.

```Text Test Card 3
{
    xid: null,
    cavv: "Y2FyZGluYWxjb21tZXJjZWF1dGg=",
    eci: "06",
    cardHolderAuth: "attempted",
    threeDsVersion: "2.2.0",
    directoryServerId: "3f6fb1f8-f719-46c9-905b-bab446f4de30"
    cardHolderInfo: null,
}
```

### Test Card 4: Unavailable Authentication

This test demonstrates that authentication is unavailable for some technical reasons.

**Card Number:** 4000000000002313\
**Result:** ThreeDSecureUI will emit a failure event.

```Text Test Card 4
{
    code: "TRANSACTION_STATUS_U",
    message: "Authentication/Account Verification Could Not Be Performed; Technical or other problem"
}
```

### Test Card 5: Rejected Authentication

This test demonstrates that the issuing bank has rejected authentication for the cardholder without needing to challenge them. This does not indicate a technical problem.

**Card Number:** 4000000000002537\
**Result:** ThreeDSecureUI will emit a failure event.

```Text Test Card 5
{
    code: "TRANSACTION_STATUS_R",
    message: "Authentication/ Account Verification Rejected; Issuer is rejecting authentication/verification"
}
```

### Test Card 6: Unknown Error

This test demonstrates that an unknown error has occurred due to a technical error.

**Card Number:** 4000000000002990\
**Result:** ThreeDSecureUI will emit an error event with:

```Text Test Card 6
{  
    refId: '1234',  
    message: "Invalid Formatted Message Invalid Formatted Message",  
    type: 'gatewayError',  
    error: new Error("...")  
}
```

### Test Card 7: Timeout Error

This test demonstrates that an error has occurred due to a technical error.

**Card Number:** 4000000000002354\
**Result:** ThreeDSecureUI will emit an error event with:

```Text Test Card 7
{  
    refId: '1234',  
    message: "Transaction Timed Out",  
    type: 'gatewayError',  
    error: new Error("...")  
}
```

### Test Card 8: Successful Step Up

This test demonstrates that the issuing bank has decided to challenge the user and successfully authenticates the result.

**Card Number:** 4000000000002503\
**Result:** After the ThreeDSecureUI is started, it will display an interface prompting the user for a password. When completed, the ThreeDSecureUI will emit a complete event with:

```Text Test Card 8
{  
    xid: null,  
    cavv: "MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=",  
    eci: "05",  
    cardHolderAuth: "verified",  
    threeDsVersion: "2.2.0",  
    directoryServerId: "19304dc2-58e0-497f-8508-f434c45a7a05"  
    cardHolderInfo: null,  
}
```

### Test Card 9: Failed Step Up

This test demonstrates that the issuing bank has decided to challenge the user and fails to authenticate the cardholder.

**Card Number:** 4000000000002370\
**Result**: After the ThreeDSecureUI is started, it will display an interface prompting the user for a password. When completed, the ThreeDSecureUI will emit a failure event with:

```Text Test Card 9
{  
    code: "TRANSACTION_STATUS_N",  
    message: "Not Authenticated/Account Not Verified; Transaction denied"  
}
```

### Test Card 10: Unavailable Step Up

This test demonstrates that the issuing bank has decided to challenge the user and authentication is unavailable.

**Card Number:** 4000000000002420\
**Result:** After the ThreeDSecureUI is started, it will display an interface prompting the user for a password. When completed, the ThreeDSecureUI will emit a failure event with:

```Text Test Card 10
{  
    code: "TRANSACTION_STATUS_U",  
    message: "Authentication/Account Verification Could Not Be Performed; Technical or other problem"  
}
```

### Test Card 11: Error on Authentication

This test demonstrates that an unknown error occurred during authentication.

**Card Number:** 4000000000002644\
**Result:** After the ThreeDSecureUI is started, it will display an interface prompting the user for a password. When completed, the ThreeDSecureUI will emit an error event with:

```Text Test Card 11
{  
    refId: null,  
    message: "A 3DS error occurred: Error Processing PARes",  
    type: "gatewayError",  
    error: Error("A 3DS error occurred: Error Processing PARes)"  
}
```