# 

## Environment comparison

|  | Sandbox | Production |
|  --- | --- | --- |
| Base URL | `https://api.sandbox.paradisegateway.net` | `https://api.paradisegateway.net` |
| Real payments | No | Yes |
| Real funds | No | Yes |
| Test card numbers | Required | Real card numbers only |
| Processor connections | Simulated | Live processors |
| Rate limits | Same as production | Standard limits |


## Sandbox environment

The sandbox environment simulates the full Reefpay API without connecting to live processor networks. Transactions are processed against the processor's sandbox environment and no real funds move.

### When to use the sandbox

* During initial integration and development
* For automated testing and continuous integration pipelines
* When testing new transaction types or payment flows
* For training and demonstrations


### Sandbox credentials

Use the same API keys as production.

## Test card numbers

Use the following test card numbers in the sandbox environment. These numbers pass Luhn validation but are not real card numbers.

### Cards that return approved responses

| Brand | Card number | Expiry | CVV |
|  --- | --- | --- | --- |
| Visa | `4111111111111234` | Any future date | Any 3 digits |
| Mastercard | `5500000000000004` | Any future date | Any 3 digits |
| American Express | `340000000000009` | Any future date | Any 4 digits |
| Discover | `6011000000000004` | Any future date | Any 3 digits |


### Cards that simulate declined responses

| Card number | Simulated response |
|  --- | --- |
| `4000000000000002` | Declined — insufficient funds |
| `4000000000000010` | Declined — do not honor |
| `4000000000000028` | Declined — expired card |
| `4000000000000036` | Declined — lost/stolen |


## Test bank accounts

Use the following test bank account numbers in the sandbox for ACH transactions.

| Routing number | Account number | Account type | Simulated response |
|  --- | --- | --- | --- |
| `021000021` | `1234567890` | Checking | Approved |
| `021000021` | `0000000001` | Checking | NSF return |
| `021000021` | `0000000002` | Savings | Account closed return |


## Switching to production

When you are ready to process real payments, update your integration to point to the production environment.

### Checklist

1. Replace the sandbox base URL with the production base URL.
2. Retrieve production API keys using your production account credentials.
3. Replace test card numbers and bank accounts with real payment data.
4. Verify that your error handling, retry logic, and logging work correctly.
5. Confirm that you are not logging raw card numbers, CVV values, or bank account numbers.
6. Run a small live transaction to verify end-to-end connectivity.


## Key differences in behavior

### Transaction settlement

* **Sandbox**: Transactions simulate settlement but do not move funds. Batch operations behave the same as production for testing purposes.
* **Production**: Transactions settle to the merchant's bank account according to the configured batch schedule.


### Processor responses

* **Sandbox**: Responses are simulated based on the test card or bank account number used. Response codes and messages match the production format.
* **Production**: Responses come from live processor networks (TSYS, Vericheck) and reflect actual issuer decisions.


### Webhooks

* **Sandbox**: Webhook events fire the same as production, allowing you to test your webhook endpoint and signature verification.
* **Production**: Webhook events reflect real transaction activity.


## Further reading

* [Quickstart](/docs/get-started/quickstart)
* [About best practices for integration](/docs/get-started/integration-best-practices)