Testing
NeonPay provides sandbox environments to integration partners for use during application development.
The Sandbox and Production environments are nearly identical, with a handful of minor differences.
Testing Credit Card Charges
The sandbox environment is not capable of processing real payments. It can, however, simulate most payment scenarios encountered in production.
Successful charges can be tested by creating a token using NeonPay.JS, then submitting the charge using the NeonPay API.
A number of charge failure scenarios can be tested by sending one of the following strings as the payment token instead.
Token | Bank Code | Error Type | Error Alert |
---|---|---|---|
fail_call_issuer | call_issuer | Processor error. | Declined. The processor has declined the Transaction. |
fail_card_not_supported | card_not_supported | Processor error. | Declined. The processor has declined the Transaction. |
fail_declined | declined | Processor error. | Declined. The processor has declined the Transaction. |
fail_do_not_honor | do_not_honor | Processor error. | Declined. The processor has declined the Transaction. |
fail_duplicate_transaction | duplicate_transaction | Processor error. | Declined. The processor has declined the Transaction. |
fail_expired_card | expired_card | Processor error. | Declined. The processor has declined the Transaction. |
fail_generic_decline | generic_decline | Processor error. | Declined. The processor has declined the Transaction. |
fail_incorrect_cvv | incorrect_cvv | Processor error. | Declined. The processor has declined the Transaction. |
fail_incorrect_pin | incorrect_pin | Processor error. | Declined. The processor has declined the Transaction. |
fail_insufficient_funds | insufficient_funds | Processor error. | Declined. The processor has declined the Transaction. |
fail_invalid_account | invalid_account | Processor error. | Declined. The processor has declined the Transaction. |
fail_invalid_amount | invalid_amount | Processor error. | Declined. The processor has declined the Transaction. |
fail_invalid_cvv | invalid_cvv | Processor error. | Declined. The processor has declined the Transaction. |
fail_invalid_pin | invalid_pin | Processor error. | Declined. The processor has declined the Transaction. |
fail_issuer_not_available | issuer_not_available | Processor error. | Declined. The processor has declined the Transaction. |
fail_lost_card | lost_card | Processor error. | Declined. The processor has declined the Transaction. |
fail_message_format_error | message_format_error | Processor error. | Declined. The processor has declined the Transaction. |
fail_missing_to_account | missing_to_account | Processor error. | Declined. The processor has declined the Transaction. |
fail_not_permitted | not_permitted | Processor error. | Declined. The processor has declined the Transaction. |
fail_nsf | nsf | Processor error. | Declined. The processor has declined the Transaction. |
fail_pickup_card | pickup_card | Processor error. | Declined. The processor has declined the Transaction. |
fail_pin_try_exceeded | pin_try_exceeded | Processor error. | Declined. The processor has declined the Transaction. |
fail_processing_error | processing_error | Processor error. | Declined. The processor has declined the Transaction. |
fail_restricted_card | restricted_card | Processor error. | Declined. The processor has declined the Transaction. |
fail_revocation_of_authorization | revocation_of_authorization | Processor error. | Declined. The processor has declined the Transaction. |
fail_security_violation | security_violation | Processor error. | Declined. The processor has declined the Transaction. |
fail_service_not_allowed | service_not_allowed | Processor error. | Declined. The processor has declined the Transaction. |
fail_stolen_card | stolen_card | Processor error. | Declined. The processor has declined the Transaction. |
fail_ticket_limit_exceeded | ticket_limit_exceeded | Processor error. | Declined. The processor has declined the Transaction. |
fail_transaction_not_allowed | transaction_not_allowed | Processor error. | Declined. The processor has declined the Transaction. |
fail_unauthorized | unauthorized | Processor error. | Declined. The processor has declined the Transaction. |
fail_unavailable | unavailable | Processor error. | Declined. The processor has declined the Transaction. |
fail_withdrawal_limit_exceeded | withdrawal_limit_exceeded | Processor error. | Declined. The processor has declined the Transaction. |
fail_match | match | CVV matching alert. | The supplied CVV code matches. |
fail_invalid_not_present | invalid_not_present | CVV matching alert. | The supplied CVV code does not match. |
fail_mismatch | mismatch | CVV matching alert. | The supplied CVV code does not match. |
fail_mismatch | mismatch | AVS check alert. | The supplied CVV code does not match. |
fail_address_match_zip_mismatch | address_match_zip_mismatch | AVS check alert. | The ZIP code in the Transaction data does not match the customer details held by the card issuer. |
fail_zip_match_address_mismatch | zip_match_address_mismatch | AVS check alert. | The address in the Transaction data does not match the customer details held by the card issuer. |
fail_not_processed | not_processed | CVV matching alert. | Information about the customer was not found in the Transaction data. |
fail_not_supported | not_supported | CVV matching alert. | Information about the customer was not found in the Transaction data. |
fail_not_performed | not_performed | AVS check alert. | Information about the customer was not found in the Transaction data. |
fail_zip_match_address_mismatch | zip_match_address_mismatch | AVS check alert. | The Address in the Transaction data was not verified. |
fail_zip_match_address_not_verified | zip_match_address_not_verified | AVS check alert. | The Address in the Transaction data was not verified. |
fail_3ds_authentication_successful | 3ds_authentication_successful | 3DS check alert. | 3DS authentication passed. |
fail_3ds_authentication_invalid | 3ds_authentication_invalid | 3DS check alert. | 3DS authentication is invalid. |
fail_3ds_authentication_failed | 3ds_authentication_failed | 3DS check alert. | 3DS authentication failed. |
fail_3ds_authentication_not_validated | 3ds_authentication_not_validated | 3DS check alert. | 3DS authentication was not validated. |
fail_unspecified_bank_code | unspecified_bank_code | Alert type unknown. | Alert details unknown. |
Testing ACH Charges
In sandbox environments, ACH failures can be tested by manipulating the charge amount:
Amount | Result | Description |
---|---|---|
500.01 | Failed | Exceeds Approval Amount Limit |
Testing Payouts
Payouts occur automatically. The process for payouts differs slightly between sandbox and production environments. The following differences apply:
- In sandbox, all payouts will finish with a
failed
status. They will never appear asprocessed
.
Testing Fees
Fees function the same in sandbox and production environments. These are automatically applied at each fee's appropriate circumstance.
Testing Merchant Onboarding
Merchant onboarding is nearly the same in the sandbox as it is in production environments.
You can use fake data for most fields when boarding test accounts in the sandbox. The following fields do require valid data:
- IP Address - Can be any valid IP address.
- Routing Number - We recommend using
123123123
for testing.
Testing Disputes
It is not currently possible to simulate disputes in a sandbox environment. This is a known deficiency that our team is working to resolve.
Load Testing
The sandbox environment does not accurately simulate the performance of the production environment. As such, it is not suitable for load testing. If you plan to load test an application that relies on NeonPay, please contact the NeonPay team.
Launching to Production
The following changes will need to be made to switch your application from Sandbox to Production:
- Update your API endpoint URLs to the Production endpoint
- Generate new API keys in the Production merchant portal
- Create new webhook subscriptions in the Production merchant portal
- Update your App ID to match your Production App ID
- Update your Public API Key to use the one generated by the Production environment