# Testing Your Integration

Learn how to test your integration to confirm failures get triggered correctly.

## Testing Transactions

Before taking your integration live, use the information below to test it thoroughly on the `DUMMY_V1` processor.

### Testing ACH Returns

Use the following bank details to trigger the respective ACH Return Code.

For more information about the different ACH Return Codes, see [ACH Direct Debit](/guides/online-payments/bank-payments/ach-direct-debits).

| ACH Return Code | Failure Code | Failure Message | Bank Details |
|  --- | --- | --- | --- |
| R01: Insufficient Funds | `INSUFFICIENT_FUNDS` | The account has insufficient funds for the transaction. The account holder needs to use a new form of payment. | Bank Code: `122105278`Account Number: `123120006` |
| R02: Account is Closed | `BANK_ACCOUNT_CLOSED` | The bank account has been closed. The bank account owner should use an active bank account. | Bank Code: `122105278`Account Number: `123120007` |
| R03: No account on file | `NO_BANK_ACCOUNT_FOUND` | The account number structure is valid; however, the number does not correspond to the account holder or it's not an open account. The account holder should create a new bank account with the correct details. | Bank Code: `122105278`Account Number: `123120008` |
| R04: Invalid Account Number | `INVALID_BANK_ACCOUNT_NUMBER` | The account number structure is valid; however, the number does not correspond to the account holder or it's not an open account. The account holder should create a new bank account with the correct details. | Bank Code: `122105278`Account Number: `123120009` |


- The `Merchant#ready_to_settle_upon` must be `PROCESSOR_WINDOW` or `RECONCILIATION`. Currently, `SUCCESSFUL_CAPTURE` is not supported.
- The `failure_code` and `failure_message` is populated on the original `Transfer` resource.
- The `tags` of the new return `Transfer` that's created includes the ACH Return Code and `failure_message` associated with the return.


### Testing Account Updater

| Account Update Type | Brand | Initial card number | Initial expiration (M/Y) | New number | New expiration (M/Y) |
|  --- | --- | --- | --- | --- | --- |
| `CLOSED_CARD` | Visa | `4402087389579601` | `1/2030` | - | - |
| `CONTACT_CARDHOLDER` | Visa | `4349990631704016` | `1/2030` | - | - |
| `EXPIRATION_UPDATED` | Visa | `4208862673740549` | `1/2030` | `4307730606824385` | `1/2040` |
| `FRAUD_REPORTED` | American Express | `340452801563455` | `1/2030` | - | - |
| `INACTIVE_MERCHANT` | American Express | `3403470175812488` | `1/2030` | - | - |
| `NO_TRANSACTIONAL_ACTIVITY` | American Express | `3019542985188444` | `1/2030` | - | - |
| `NOT_FOUND` | Visa | `4543267787982264` | `1/2030` | - | - |
| `NUMBER_AND_EXPIRATION_UPDATED` | Visa | `4496772882855767` | `1/2030` | `4887005601746919` | `3/2040` |
| `NUMBER_AND_EXPIRATION_UPDATED` | Mastercard | `5103504002919260` | `1/2030` | `5213076676875406` | `11/2040` |
| `NUMBER_AND_EXPIRATION_UPDATED` | American Express | `3883494643244974` | `1/2030` | `3969967933006770` | `08/2040` |
| `NUMBER_AND_EXPIRATION_UPDATED` | Discover | `6588849539088200` | `1/2030` | `6011174500160749` | `12/2040` |
| `NUMBER_AND_EXPIRATION_UPDATED` | Visa | `4496772882855767` | `1/2030` | `4887005601746919` | `3/2040` |
| `NUMBER_UPDATED` | Visa | `4036161292637501` | `1/2030` | `4649777215746100` | `4/2040` |


### Testing AVS/CVV

Pass the following amount to trigger the respective payment failure. Note, once a `Payment Instrument` has been flagged with an AVS or CVC failure, it will continue to throw that respective error.

| Amount | Description |
|  --- | --- |
| `102` | Declined amount |
| `103` | Canceled amount |
| `888888` | Disputed amount |
| `193` | Insufficient funds amount |
| `194` | Invalid card number amount |
| `889986` | AVS total failure amount |
| `889987` | CVC failure amount |


### Testing Payment Instrument Name Verification

Use the following sentinel values to simulate name verification results on `DUMMY_V1`. By default, if none of the sentinel values below are provided, all fields in `name_verification_results` return `UNKNOWN`. Sentinel values are not case-sensitive.

**Via [`POST /payment_instruments/{id}/verifications`](/api/payment-instruments/createpaymentinstrumentverificationpushtocard)**

Use the `name` field on the `Payment Instrument` to trigger a specific result. All four fields in `name_verification_results` (`first_name`, `last_name`, `middle_name`, and `name`) return the same value.

| `Payment Instrument` `name` | `name_verification_results` |
|  --- | --- |
| `Billy NameVerification` | `MATCH` |
| `Joey NameVerification` | `NO_MATCH` |
| `Sarah NameVerification` | `PARTIAL_MATCH` |
| `Amanda NameVerification` | `NOT_SUPPORTED` |


**Via [`PUT /payment_instruments/{id}`](/api/payment-instruments/createpaymentinstrumentverification)**

Use the `first_name` and `last_name` fields in `name_verification_details` to trigger a specific result. All four fields in `name_verification_results` return the same value.

| `first_name` | `last_name` | `name_verification_results` |
|  --- | --- | --- |
| `Billy` | `NameVerification` | `MATCH` |
| `Joey` | `NameVerification` | `NO_MATCH` |
| `Sarah` | `NameVerification` | `PARTIAL_MATCH` |
| `Amanda` | `NameVerification` | `NOT_SUPPORTED` |


### Testing Bank Account Validations

| Bank Account Validation Check | Bank Code | Account Number |
|  --- | --- | --- |
| `VALID` | `122105278` | `0000000016` |
| `INVALID` | `122105278` | `0000000005` |
| `INCONCLUSIVE` | `121000358` | `123123128` |


### Testing Card Type

Use the following card numbers to trigger the respective `card_type`. For more information about the different `card_types`, see [Payment Instrument](/api/payment-instruments/createpaymentinstrument).

| Card Type | Card Number | Brand |
|  --- | --- | --- |
| `CREDIT` | `6011000000004675` | Discover |
| `DEBIT` | `5200820000007201` | Mastercard |
| `HSA_FSA` | `4393420000002680` | Visa |
| `NON_RELOADABLE_PREPAID` | `5223100000008423` | Mastercard |
| `RELOADABLE_PREPAID` | `379032000006086` | American Express |
| `UNKNOWN` | `386214000009097` | Discover |


### Testing Failure Codes

For more information about the different ACH Return Codes, see [ACH Direct Debit](/guides/online-payments/bank-payments/ach-direct-debits#ach-returns). Please note, it can take up to 15 minutes for the ACH Return to generate.

To review `failure_codes` on `Transfers`, [get the individual `Transfer`](/api/transfers/gettransfer) using the `Transfer` ID.

| Failure Code  | Card Number | Brand |
|  --- | --- | --- |
| `GENERIC_DECLINE` | `4000000000009979` | Visa |
| `GENERIC_DECLINE` | `378282246310005` | American Express |
| `GENERIC_DECLINE` | `5555555555554444` | Mastercard |
| `GENERIC_DECLINE` | `6011111111111117` | Discover |
| `CALL_ISSUER` | `4012888888881881` | Visa |
| `CARD_NOT_ACTIVATED_OR_BLOCKED` | `4539148803436467` | Visa |
| `DO_NOT_HONOR` | `4000000000000002` | Visa |
| `EXCEEDS_APPROVAL_LIMIT` | `4000000000009995` | Visa |
| `EXPIRED_CARD` | `4000000000009987` | Visa |
| `FRAUD_DETECTED_BY_FINIX` | `4129054449449482` | Visa |
| `FRAUD_DETECTED_BY_ISSUER` | `4783512839773883` | Visa |
| `INSUFFICIENT_FUNDS` | `4000000000000069` | Visa |
| `INVALID_CARD_NUMBER_OR_EXPIRED_CARD` | `4544206329536898` | Visa |
| `INVALID_CVV` | `4000056655665556` | Visa |
| `ISSUER_POLICY_VIOLATION` | `4709247730212712` | Visa |
| `LOST_OR_STOLEN_CARD` | `4000000000000127` | Visa |
| `PICK_UP_CARD` | `4000000000000119` | Visa |
| `RESTRICTED_CARD` | `4242424242424242` | Visa |


### Testing Network Tokens

Utilize the following card numbers to set a specific value for `network_token_state`. By default, any valid card number enabled for network tokens will return an `ACTIVE` state.

| network_token_state | Card Number |
|  --- | --- |
| `CLOSED` | `4181126552690790` |
| `FAILED` | `4281168227567010` |
| `SUSPENDED` | `4220706972789265` |


### Testing Refunds

Use the following card number to test refunds. For more information about processing refunds, see [Refunding Payments.](/guides/after-the-payment/refunds)

| State | Card Number | Brand |
|  --- | --- | --- |
| `FAILED` | `4000000000000135` | Visa |


## Testing Push-to-Card

Cards for testing a Push-to-Card payout.

| Scenario | Card number | Brand | Region | Country | Code |
|  --- | --- | --- | --- | --- | --- |
| Successful push to a Visa (debit card) | `4895142232120006` | Visa | CA | USA | N/A |
| Successful push to a Visa (credit card) | `4957030420210454` | Visa | CA | USA | N/A |
| Successful push to a Mastercard (debit card) | `5123280115058611` | Mastercard | CA | USA | N/A |
| Invalid account number | `4957030420210504` | Visa | CA | USA | `INVALID_INSTRUMENT` |
| Exceeds approval amount limit | `4957030420210488` | Visa | CA | USA | `EXCEEDS_ISSUER_AMOUNT_LIMIT` |
| Exceeds withdrawal frequency limit | `4957030420210496` | Visa | CA | USA | `EXCEEDS_ISSUER_COUNT_LIMIT` |
| Refer to card issuer | `4895070000007685` | Visa | CA | USA | `CALL_ISSUER` |
| Do not honor | `4895070000006687` | Visa | CA | USA | `DECLINE` |
| Lost card, pick up (fraud account) | `4895070000005671` | Visa | CA | USA | `LOST_OR_STOLEN_CARD` |
| Suspected fraud | `4895070000004674` | Visa | CA | USA | `SUSPECTED_FRAUD` |
| Transaction does not fulfill AML requirement | `4895070000003551` | Visa | CA | USA | `COMPLIANCE_VIOLATION` |


## Testing Push-to-Card Verifications

| Scenario | Card number | Brand | fast_funds_indicator | push_funds_block_indicator | card_type_code | card_issuer_country_code |
|  --- | --- | --- | --- | --- | --- | --- |
| Issuer does participate in fast funds for only domestic transactions | `4815070000000018` | Visa | `D` | `C` | `D` | `840` |
| Issuer does participate in fast funds for all transactions | `4835070000000014` | Visa | `B` | `C` | `D` | `840` |
| Issuer does not participate in fast funds | `4855070000000035` | Visa | `N` | `C` | `D` | `840` |
| Issuer does participate in fast funds and Push-to-Card | `4895047700003297` | Visa | `B` | `B` | `C` | `840` |