Important Update: Our Knowledge base has moved! Visit our new documentation site at documentation.flexpay.io.
Open navigation

Sandbox User Guide

FlexPay offers a sandbox environment to clients to test the new integration setup before going live. The sandbox endpoint is the same as the production endpoint (https://api.flexpay.io/v1/). You can send transactions to the Sandbox environment by using a Sandbox API Key. Any transaction sent using a Sandbox key will not leave the FlexPay environment. Once all testing has been completed and the integration is ready to go live, FlexPay's support team will provide you with a Production API Key.

The sandbox environment provides access as if you were in a live environment allowing clients to safely simulate different response codes between FlexPay and the clients CRM without actually sending transactions to your payment gateway and as such test transactions do not generate a response error code.

There are predefined inputs that are required to validate gateway response codes by using specified amounts, specific test cards and specific transaction types. These inputs are shown in the various tables below.

Test Cards

The test cards provided in the table below can be used to process transactions with a predefined output. Any other card numbers will generate a decline with 30016 as a response code.

CardNumberExp. MonthExp. YearCVV
Visa4920201996449560072024879
MasterCard5244209084665514072024010
Amex3416749496848980720241000
Diners Club30349475125576062024100
JCB3530111333300000062024100
Discover6011885753412897062024100

Response Codes

The table below shows the exact amounts (in pennies) that will trigger a specific predefined response. A charge with any other value than those listed, will return a successful/approved response; code (10000).

Amount (In Pennies)ResponseDescription
200520000You need to refer to the Card Issuer
200820003Declined - do not honour
201220023The card has been declined due to insufficient funds.
301630011Invalid transaction
401840000Risk Blocked Transaction refused due to risk model
502350000Validation error

AVS

The table below outlines the data to be used to test Address Verification System (AVS) response codes. Each input item triggers a predefined output. Any other value in the address line 1 field will return AVS check 'S' for unsupported.

Address Line 1AVS CheckDescription
Street_AAAddress matches, but zip code does not.
Street_EEAVS not supported for this industry.
Street_NNNo part of the address matches.
Street_SSAVS not supported.
Street_XXExact. Nine-digit zip code and address match.
Street_YYYes. Five-digit zip code and address match.

CVV

The card verification value (CVV) can be tested by entering the inputs below. The predefined elements in the description column will be received. Any other CVV will return CVV check "M" match.

Card CVVResponse CodeCVV CheckDescription
20130049U(Unknown) - Issuer is not certified and/or has not provided Visa encryption keys.
20240006N(No Match) – The CVD value provided does not match the CVD value associated with the card.
20310000M(Match) – The CVD value provided matches the CVD value associated with the card.
20430049Q(Unknown Response) – No results were received concerning the CVD value.
20530049P(Not Processed) – The CVD value was not processed.
20640003S(Not Present) – CVD should be on the card. However, the cardholder indicated it was not present.

Disabling Customer Recovery

The customer recovery can be disabled by setting the DisableCustomerRecovery field to True. This option is used on a new sale when you are charging the customer for the first time. The two cases are: producing an approved on billing cycle 1 then a declined on billing cycle 2, the second is, a declined with a disabled recovery that will generate a do not retry response code.


Amount (In Pennies)Disable Customer RecoveryResponse CodeDescription
6020True10000Approved
6020False20000You need to refer to the Card Issuer
7028True30080DO NOT RETRY - You need to refer to the Card Issuer

Advanced Void and Refund Testing

In the first scenario we can do a Charge approved transaction with the specified amount; If we do a Void on this recently approved Charge transaction, we will have a Decline response code. Now if we do a Refund for the same approved Charge transaction, it will be approved.

In the second scenario we can do a Charge approved transaction for the specified amount and then do a Void for this transaction, the transaction will be approved and we will have the Approved response code.

In the third scenario we can do a Charge approved transaction with the specified amount and then do a Refund for the same approved Charge transaction, the Refund transaction will be approved and we will have the Approved response code

The table below charts out exact amounts (in pennies) that will trigger a specific predefined response.

ScenarioAmount (In Pennies)Transaction TypeResponse CodeDescription
19000Charge10000Approved

Void30013The reversal request failed

Refund10000Approved
27514Charge10000Approved

Void10000Approved
39001Charge10000Approved

Refund10000Approved

Partial Refund

In the first scenario we can do a Charge approved transaction for the specified amount and then do a Refund for this transaction using ‘0’ as the refund amount, the refund transaction will be approved for the full amount and we will have the Approved response code.

In the second scenario we can do a Charge approved transaction with the specified amount; If we do a partial refund on this recently approved Charge transaction, we will have an Approved response code. Now if we do a Partial Refund for the remaining amount of the approved Charge transaction, it will be approved for the refund of the remaining amount.

In the third scenario we can do a Charge approved transaction for the specified amount and then do a Refund for this transaction using an amount higher than the Charged amount, the refund transaction will be Declined and we will have the Declined response code along with the Decline message.

The table below charts out exact amounts (in pennies) that will trigger a specific predefined response.

ScenarioAmount (In Pennies)Transaction TypeResponse CodeDescription
19000Charge10000Approved
0Refund1000Approved and Full amount is refunded
27500Charge10000Approved
4000Refund10000Approved - Partial Refund
3500Refund10000Approved - Partial Refund
35000Charge10000Approved
5500Refund30015Declined – The external gateway has reported that you have submitted an invalid amount with your request.
N
Nic is the author of this solution article.

Did you find it helpful? Yes No

Send feedback
Sorry we couldn't be helpful. Help us improve this article with your feedback.