Testing
This guide provides test card numbers, banking numbers, and additional information to ensure your integration functions correctly. Utilize these resources to simulate various scenarios within the sandbox environment and verify that they are handled appropriately.
Card Payments
BRAND | REGION | CARD NUMBER | CVV / CVC | EXPIRATION DATE |
---|---|---|---|---|
Visa (Credit) | US and Canada | 4111 1111 1111 1111 | Any 3 digits, except 333 or 666 | Any future date |
Visa (Credit) | US and Canada | 4900 7700 0000 0001 | Any 3 digits, except 333 or 666 | Any future date |
Mastercard | US and Canada | 5100 4000 0000 0000 | Any 3 digits, except 333 or 666 | Any future date |
Discover | US only | 6011 2345 6789 0123 | Any 3 digits, except 333 or 666 | Any future date |
American Express | US only | 3701 234567 89017 | Any 4 digits | Any future date |
Bank-to-Bank Payments
ACH Debit (USD)
BANK NAME | ROUTING NUMBER | ACCOUNT NUMBER |
---|---|---|
Bank of America | 011000138 | Any 4-17 digit number, except ‘123456789’ |
Chase | 021000021 | Any 4-17 digit number, except ‘123456789’ |
Wells Fargo Bank | 021101108 | Any 4-17 digit number, except ‘123456789’ |
HSBC | 021004823 | Any 4-17 digit number, except ‘123456789’ |
TD Bank Connecticut | 011103093 | Any 4-17 digit number, except ‘123456789’ |
EFT Debit (CAD)
BANK NAME | INSTITUTION ID | ACCOUNT NUMBER | TRANSIT NUMBER |
---|---|---|---|
Bank of Montreal | 001 | Any 4-12 digit number | 22446 |
Scotiabank (The Bank of Nova Scotia) | 002 | Any 4-12 digit number | 81349 |
Royal Bank of Canada | 003 | Any 4-12 digit number | 04356 |
The Toronto-Dominion Bank | 004 | Any 4-12 digit number | 00012 |
National Bank of Canada | 006 | Any 4-12 digit number | 48121 |
Declines
To simulate a decline, pass-through the respective amount when Creating a Payment IntentAPI. An amount of 777701 represents $7777.01.
FAILURE CODE | FAILURE MESSAGE | AMOUNT |
---|---|---|
insufficient_funds | The account has insufficient funds to complete the purchase. | 777701 |
avs_check_failed | The AVS check failed. | 777702 |
generic_decline | The payment was declined for an unknown reason. | 777703 |
call_issuer | The card was declined by the issuer for an unknown reason. | 777704 |
expired_card | The card has expired. | 777705 |
pickup_card | The card cannot be used for payment as it my have been reported lost or stolen. | 777706 |
invalid_number | The card number is incorrect. | 777707 |
limit_exceeded | The customer has exceeded their balance or credit limit. | 777708 |
not_permitted | The payment is not permitted. | 777709 |
incorrect_cvc | The CVV/CVC number is incorrect. | 777710 |
service_not_allowed | The card was declined by the issuer due to its proprietary card activity regulations. | 777711 |
invalid_expiry | The expiration date is incorrect. | 777712 |
card_not_supported | The card does not support this type of purchase. | 777713 |
restricted_card | The card cannot be used for payment as it may have been reported lost or stolen. | 777714 |
fraudulent | The payment is suspected to be fraudulent. | 777715 |
processing_error | An error occurred while processing the payment. | 777716 |
ACH Returns
To simulate an ACH return, pass-through the respective amount when Creating a Payment IntentAPI. An amount of 888801 represents $8888.01.
ACH payments will move from a status of processing
to failed
at 8 AM EST the day after the payment is initiated.
FAILURE CODE | FAILURE MESSAGE | AMOUNT |
---|---|---|
R01 | The account has insufficient funds to complete the purchase. | 888801 |
R02 | The account is closed. | 888802 |
R03 | The account number or routing information doesn’t match any accounts at the receiving bank. | 888803 |
R04 | The account number provided is incorrect. | 888804 |
R05 | A corporate Standard Entry Class (SEC) code was incorrectly used for a consumer account. | 888805 |
R06 | The originating bank returned the payment. | 888806 |
R07 | The customer revoked the authorization of the payment. | 888807 |
R08 | The account holder placed a stop payment order on this specific payment. | 888808 |
R09 | The account may have deposits that have not yet cleared, resulting in insufficient funds for the payment. | 888809 |
R10 | The customer stated that the payment was not authorized. | 888810 |
R11 | A truncation (check-clearing) error occurred. | 888811 |
AVS Responses
By default, card transactions that include valid billing_details
addresses will successfully pass address verification checks. To test different outcomes, you can prefix the billing_details.address.street
property with a single letter code listed in the table below.
For example, setting billing_details.address.street
to 'A11 123 Main Street' will simulate the address check failing because the postal code doesn't match. You can find the results of these checks in the payment_method.card.checks
property.
DESCRIPTION | CHECK RESULTS | PREFIX |
---|---|---|
Both street and postal code match | address_line1_check=pass address_postal_code_check=pass | 10 |
Street matches, but postal code does not | address_line1_check=pass address_postal_code_check=fail | 11 |
Postal code matches, but street does not | address_line1_check=fail address_postal_code_check=pass | 12 |
Address information is unavailable | address_line1_check=unchecked address_postal_code_check=unchecked | 18 |
Address information is unavailable | address_line1_check=unavailable address_postal_code_check=unavailable | 15 |
Disputes
To simulate a dispute, pass-through the respective amount when Creating a Payment IntentAPI. An amount of 777797 represents $7,777.97.
DESCRIPTION | DISPUTE STATUS | STATUS HISTORY | AMOUNT |
---|---|---|---|
Inquiry | warning_under_review | warning_needs_response warning_under_review | 777797 |
Inquiry followed by a formal dispute | needs_response | warning_needs_response warning_under_review needs_response | 777798 |
Formal dispute | needs_response | needs_response | 777799 |
When you submit evidence, using the precise phrases provided below in the evidence_description
will trigger the dispute to be resolved as won or lost.
RESULTING DISPUTE STATUS | EVIDENCE DESCRIPTION |
---|---|
won | REVERSAL |
lost | LOSS |
For the purposes of certification, you will need to submit dispute evidence. You must use 777798
or 777799
as the amount to trigger the dispute status of needs_response
, allowing you to respond to the dispute and complete the checklist task.
Bank Account Verification
To test the Plaid Bank Account Verification feature within the hosted merchant application:
- Navigate to the Bank Account section within the merchant application and click on the Connect Account button. Then, in the popup that appears, click Continue.
- On the "Select your institution" page, pick any of the banks listed that are supported by Plaid and click Continue.
- When prompted to sign in, use these test credentials:
- Username: user_good
- Password: pass_good
- After inputting the credentials, you'll be taken to the "Verify your identity" page. Here, click the Get code button. For the code input, use 1234 and then click Submit.
- Select any of the test accounts and click Continue.
You can then proceed with the remainder of the application. If you submit a test application and choose manual bank verification instead of Plaid, the merchant application's status will change from in-review to approved within 5 minutes. Using the tax ID 909909909 will keep the application in the in-review
status, preventing it from changing to approved
.
Webhooks
You can test your integration by completing actions in the sandbox environment that send events to your needed endpoint, and then verifying the results by checking the API for the correct event data. For example, creating a charge will trigger the charge.succeeded
event which will hold the correct charge data.
Refer to our Webhook documentation for more details.