Docs
Resources
Testing

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

BRANDREGIONCARD NUMBERCVV / CVCEXPIRATION DATE
Visa (Credit)US and Canada4111 1111 1111 1111Any 3 digits, except 333 or 666Any future date
Visa (Credit)US and Canada4900 7700 0000 0001Any 3 digits, except 333 or 666Any future date
MastercardUS and Canada5100 4000 0000 0000Any 3 digits, except 333 or 666Any future date
DiscoverUS only6011 2345 6789 0123Any 3 digits, except 333 or 666Any future date
American ExpressUS only3701 234567 89017Any 4 digitsAny future date

Bank-to-Bank Payments

ACH Debit (USD)

BANK NAMEROUTING NUMBERACCOUNT NUMBER
Bank of America011000138Any 4-17 digit number, except ‘123456789’
Chase021000021Any 4-17 digit number, except ‘123456789’
Wells Fargo Bank021101108Any 4-17 digit number, except ‘123456789’
HSBC021004823Any 4-17 digit number, except ‘123456789’
TD Bank Connecticut011103093Any 4-17 digit number, except ‘123456789’

EFT Debit (CAD)

BANK NAMEINSTITUTION IDACCOUNT NUMBERTRANSIT NUMBER
Bank of Montreal001Any 4-12 digit number22446
Scotiabank (The Bank of Nova Scotia)002Any 4-12 digit number81349
Royal Bank of Canada003Any 4-12 digit number04356
The Toronto-Dominion Bank004Any 4-12 digit number00012
National Bank of Canada006Any 4-12 digit number48121

Declines

To simulate a decline, pass-through the respective amount when Creating a Payment IntentAPI. An amount of 777701 represents $7777.01.

FAILURE CODEFAILURE MESSAGEAMOUNT
insufficient_fundsThe account has insufficient funds to complete the purchase.777701
avs_check_failedThe AVS check failed.777702
generic_declineThe payment was declined for an unknown reason.777703
call_issuerThe card was declined by the issuer for an unknown reason.777704
expired_cardThe card has expired.777705
pickup_cardThe card cannot be used for payment as it my have been reported lost or stolen.777706
invalid_numberThe card number is incorrect.777707
limit_exceededThe customer has exceeded their balance or credit limit.777708
not_permittedThe payment is not permitted.777709
incorrect_cvcThe CVV/CVC number is incorrect.777710
service_not_allowedThe card was declined by the issuer due to its proprietary card activity regulations.777711
invalid_expiryThe expiration date is incorrect.777712
card_not_supportedThe card does not support this type of purchase.777713
restricted_cardThe card cannot be used for payment as it may have been reported lost or stolen.777714
fraudulentThe payment is suspected to be fraudulent.777715
processing_errorAn 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 CODEFAILURE MESSAGEAMOUNT
R01The account has insufficient funds to complete the purchase.888801
R02The account is closed.888802
R03The account number or routing information doesn’t match any accounts at the receiving bank.888803
R04The account number provided is incorrect.888804
R05A corporate Standard Entry Class (SEC) code was incorrectly used for a consumer account.888805
R06The originating bank returned the payment.888806
R07The customer revoked the authorization of the payment.888807
R08The account holder placed a stop payment order on this specific payment.888808
R09The account may have deposits that have not yet cleared, resulting in insufficient funds for the payment.888809
R10The customer stated that the payment was not authorized.888810
R11A 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.

DESCRIPTIONCHECK RESULTSPREFIX
Both street and postal code matchaddress_line1_check=pass address_postal_code_check=pass10
Street matches, but postal code does notaddress_line1_check=pass address_postal_code_check=fail11
Postal code matches, but street does notaddress_line1_check=fail address_postal_code_check=pass12
Address information is unavailableaddress_line1_check=unchecked address_postal_code_check=unchecked18
Address information is unavailableaddress_line1_check=unavailable address_postal_code_check=unavailable15

Disputes

To simulate a dispute, pass-through the respective amount when Creating a Payment IntentAPI. An amount of 777797 represents $7,777.97.

DESCRIPTIONDISPUTE STATUSSTATUS HISTORYAMOUNT
Inquirywarning_under_reviewwarning_needs_response warning_under_review777797
Inquiry followed by a formal disputeneeds_responsewarning_needs_response warning_under_review needs_response777798
Formal disputeneeds_responseneeds_response777799

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 STATUSEVIDENCE DESCRIPTION
wonREVERSAL
lostLOSS

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:

  1. 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.
  2. On the "Select your institution" page, pick any of the banks listed that are supported by Plaid and click Continue.
  3. When prompted to sign in, use these test credentials:
    1. Username: user_good
    2. Password: pass_good
  4. 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.
  5. 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.