This Adyen test card has several "applications" programmed onto it that let you simulate different card types, currencies, and Cardholder Verification Methods (CVM).
You can view the details of test payments, including the result, in your test Customer Area under Transactions > Payments.
Card applications
To test transactions with a particular type of card, use the card details for the corresponding application on the test card.
Application | Payment method | Issuing country | Currency | Expiration date | Locale | PIN | PAN |
---|---|---|---|---|---|---|---|
MC NL | Mastercard | BE | EUR | 02/28 | Dutch | 1234 | 5413 3300 8909 9999 |
MS EN | Maestro | BE | EUR | 02/28 | English | 1234 | 6799 9989 0000 0099 990 |
MC F | Mastercard | US | USD | 02/28 | French | 1234 | 5413 3300 8999 9990 |
MC ES | Maestro | US | USD | 02/28 | Spanish | 1234 | 6799 9989 0000 0999 991 |
MSR | Mastercard | US | USD | 12/25 | English | 1234 | 5413 3300 8902 0037 |
Testing CVMs
To test different CVMs, use different combinations of transaction amount and currency.
If you enter a wrong PIN multiple times, the card is blocked and can't be used anymore.
Application | Amount | Currency | CVM |
---|---|---|---|
MC NL | >200.00 | EUR | CVM 1: Enciphered PIN verified online |
>100 | EUR | CVM 2: Enciphered PIN verified by EMV chip | |
0-100 | EUR | CVM 3: Signature | |
MS EN | >200.00 | EUR | CVM 1: Enciphered PIN verified online |
>100 | EUR | CVM 2: Enciphered PIN verified by EMV chip | |
0-100 | EUR | CVM 3: Signature | |
MC F | All | All | CVM 1: Enciphered PIN verified by EMV chip |
MC ES | All | All | CVM 1: Enciphered PIN verified by EMV chip |
MSR | All | All | CVM 1: Service code 101 - Signature |
Simulating declined payments
In general, test payments generate the result Approved. To simulate declined payments, you can change the last three digits of the RequestedAmount
that you specify in the payment request.
For example, to test how your integration responds when the issuer suspects fraud, specify an amount with 151 as the last three digits, such as 101.51 or 21.51.
In a classic library integration you can run the same simulations, but the response returns a generic DECLINED_ONLINE posResultCode
in most cases. To verify the details of a simulation, you can:
- Check the transaction in the Customer Area.
- Check the raw response in the notification for the transaction.
The following table shows:
- The last three digits of the amount to specify for simulating a specific response.
- The
Result
,ErrorCondition
,AdditionalResponse.refusalReason
, andAdditionalResponse.message
from the Terminal API response.
The refusalReason
and message
are included for additional insight, and should not be coded against. For instructions on how to handle declines, see Declined payments.
Amount ending in | Result |
ErrorCondition |
refusalReason |
message |
---|---|---|---|---|
121 | Failure | Refusal | 214 Declined online | CANCELLED |
122 | Failure | Refusal | 124 acquirer fraud | ACQUIRER_FRAUD |
123 | Failure | Refusal | 214 Declined online | DECLINED |
124 | Failure | Refusal | 210 Not enough balance | NOT_ENOUGH_BALANCE |
125 | Failure | Refusal | 199 Card blocked | BLOCK_CARD |
126 | Failure | Refusal | 228 Card expired | CARD_EXPIRED |
127 | Failure | Refusal | 214 Declined online | INVALID_AMOUNT |
128 | Failure | InvalidCard | 214 Declined online | INVALID_CARD |
129 | Failure | Refusal | 214 Declined online | NOT_SUPPORTED |
130 | Failure | Refusal | 214 Declined online | ERROR |
131 | Failure | Refusal | 214 Declined online | DECLINED |
132 | Failure | Refusal | 214 Declined online | DECLINED |
133 | Failure | Refusal | 214 Declined online | REFERRAL |
134 | Failure | WrongPIN | 129 Invalid online PIN | INVALID_PIN Remark: The terminal shows "Incorrect PIN" and then "Enter PIN". Cancel the payment on the terminal to get the failure response. |
135 | Failure | Refusal | 128 Online PIN tries exceeded | PIN_TRIES_EXCEEDED |
136 | Failure | Refusal | 207 Issuer unavailable | ISSUER UNAVAILABLE |
137 | Failure | Refusal | 211 Withdrawal amount exceeded | WITHDRAWAL_AMOUNT_EXCEEDED |
138 | Failure | Refusal | 212 Withdrawal count exceeded | WITHDRAWAL_COUNT_EXCEEDED |
139 | Failure | Refusal | 210 Not enough balance | NOT_ENOUGH_BALANCE |
142 or 143 | - | - | - | - Remark: Tap the card. The terminal shows Contactless limit exceeded, insert card. |
144 | Failure | Refusal | 214 Declined online | NOT_SUBMITTED |
145 | Failure | Refusal | 214 Declined online | DECLINED The raw response is FRAUD_CANCELLED |
146 | Failure | Refusal | 214 Declined online | TRANSACTION_NOT_PERMITTED |
147 | Failure | Refusal | 214 Declined online | CVC_DECLINED |
148 | Failure | Refusal | 214 Declined online | RESTRICTED_CARD |
149 | Failure | Refusal | 214 Declined online | DECLINED The raw response is REVOCATION_OF_AUTH |
150 | Failure | Refusal | 214 Declined online | DECLINED The raw response is DECLINED NON GENERIC |
151 | Failure | Refusal | 214 Declined online | ISSUER_SUSPECTED_FRAUD |
152 | Failure | Refusal | 214 Declined online | NO_CHECKING_ACCOUNT Note that the Customer Area reports "52: No savings account" |
153 | Failure | Refusal | 214 Declined online | NO_SAVINGS_ACCOUNT Note that the Customer Area reports "53: No checking account" |
154 | Failure | Cancel | 219 Shopper cancelled ctls fallback | 219 Shopper cancelled ctls fallback Remark: Tap the card. The payment falls back to a non-contactless payment. The terminal shows "Present card" again, but this time without the contactless icon. Cancel the payment on the terminal to get the failure response. |
155 | - | - | - | - Remark: Tap the card. The terminal shows See phone for instructions. |
Raw responses
In our back end, we receive the payment response from card schemes and issuers. In case of a declined payment, we map the raw response to a combination of ErrorCondition
, refusalReason
, and message
and return this in the Terminal API response.
Raw responses provide additional information, but you don't need to test them because you should not code against them. If you base your failure handling logic on raw responses, that might break your integration because acquirers and issuers sometimes change their raw responses without notification.
If nevertheless you want receive the raw response, you can:
- Set up standard notifications with the additional setting Add Raw Acquirer Result enabled.
- For a Terminal API integration: Configure receiving raw responses.