{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["tabs","tab","admonition"]},"type":"markdown"},"seo":{"title":"Reefpay Docs","description":"Reefpay is the groundbreaking payment gateway that lets you integrate with the future of payments.","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"set-up-a-sandbox-environment","__idx":0},"children":["Set up a sandbox environment"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prerequisites","__idx":1},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A client account in the sandbox environment — see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/how-tos/setup/create-client-account"},"children":["Create a client account"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["API credentials for the sandbox — see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/how-tos/setup/obtain-credentials"},"children":["Obtain API credentials"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-1-use-the-sandbox-base-url","__idx":2},"children":["Step 1: Use the sandbox base URL"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All sandbox requests use the development base URL."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Environment"},"children":["Environment"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Base URL"},"children":["Base URL"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Sandbox"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://api.dev.paradisegateway.net"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Production"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://api.paradisegateway.net"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Set the base URL in your application's configuration so you can switch between environments without changing code."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Shell (Bash)","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"export PARADISE_API_URL=\"https://api.dev.paradisegateway.net\"\n","lang":"shell"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"PowerShell","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"powershell","header":{"controls":{"copy":{}}},"source":"$env:PARADISE_API_URL = \"https://api.dev.paradisegateway.net\"\n","lang":"powershell"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Python","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"import os\n\nAPI_URL = os.getenv(\"PARADISE_API_URL\", \"https://api.dev.paradisegateway.net\")\n","lang":"python"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"JavaScript","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","header":{"controls":{"copy":{}}},"source":"const API_URL = process.env.PARADISE_API_URL\n  || \"https://api.dev.paradisegateway.net\";\n","lang":"javascript"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"C#","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"csharp","header":{"controls":{"copy":{}}},"source":"var apiUrl = Environment.GetEnvironmentVariable(\"PARADISE_API_URL\")\n    ?? \"https://api.dev.paradisegateway.net\";\n","lang":"csharp"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Java","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"String apiUrl = System.getenv().getOrDefault(\n    \"PARADISE_API_URL\", \"https://api.dev.paradisegateway.net\");\n","lang":"java"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Go","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"go","header":{"controls":{"copy":{}}},"source":"apiURL := os.Getenv(\"PARADISE_API_URL\")\nif apiURL == \"\" {\n    apiURL = \"https://api.dev.paradisegateway.net\"\n}\n","lang":"go"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"PHP","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"php","header":{"controls":{"copy":{}}},"source":"$apiUrl = getenv(\"PARADISE_API_URL\") ?: \"https://api.dev.paradisegateway.net\";\n","lang":"php"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-2-store-your-sandbox-api-key","__idx":3},"children":["Step 2: Store your sandbox API key"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Retrieve your sandbox API key (see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/how-tos/setup/obtain-credentials"},"children":["Obtain API credentials"]},") and store it as an environment variable."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Shell (Bash)","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"export PARADISE_API_KEY=\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\"\n","lang":"shell"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"PowerShell","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"powershell","header":{"controls":{"copy":{}}},"source":"$env:PARADISE_API_KEY = \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\"\n","lang":"powershell"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Never commit credentials"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add environment variable files (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".env"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".env.local"]},") to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".gitignore"]},". Do not hard-code API keys in source code."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-3-use-test-card-numbers","__idx":4},"children":["Step 3: Use test card numbers"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The sandbox accepts specific test card numbers that simulate various outcomes. Real card numbers are rejected in the sandbox."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"cards-that-approve","__idx":5},"children":["Cards that approve"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Card number"},"children":["Card number"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Brand"},"children":["Brand"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"CVV"},"children":["CVV"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Expiry"},"children":["Expiry"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4111111111111111"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Visa"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Any 3 digits"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Any future date"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4111111111111234"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Visa"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Any 3 digits"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Any future date"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["5500000000005678"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Mastercard"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Any 3 digits"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Any future date"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"cards-that-decline","__idx":6},"children":["Cards that decline"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Card number"},"children":["Card number"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Brand"},"children":["Brand"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Simulated result"},"children":["Simulated result"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4000000000000002"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Visa"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Decline — insufficient funds"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4000000000000069"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Visa"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Decline — expired card"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4000000000000127"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Visa"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Decline — CVV mismatch"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"test-bank-accounts","__idx":7},"children":["Test bank accounts"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Routing number"},"children":["Routing number"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Account number"},"children":["Account number"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Account type"},"children":["Account type"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Result"},"children":["Result"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["021000021"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["9876543210"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checking"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Approved"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["021000021"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["0000000001"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checking"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Return — insufficient funds"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-4-send-a-test-transaction","__idx":8},"children":["Step 4: Send a test transaction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Verify your sandbox setup by processing a test sale."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"curl -X POST \\\n  $PARADISE_API_URL/v1/transactions \\\n  -H \"Content-Type: application/json\" \\\n  -H \"APIKEY: $PARADISE_API_KEY\" \\\n  -d '{\n    \"type\": \"card_sale\",\n    \"amount\": 1999,\n    \"payment_method\": {\n      \"type\": \"card\",\n      \"pan\": \"4111111111111111\",\n      \"expiry_month\": \"12\",\n      \"expiry_year\": \"2028\",\n      \"cardholder_name\": \"Test User\",\n      \"cvv\": \"123\",\n      \"address_line1\": \"123 Test St\",\n      \"zip\": \"10001\"\n    }\n  }'\n","lang":"shell"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A successful response returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transaction_state: authorized"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["response_code: \"00\""]},"."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"TRANSACTION-06OSTESTXYZ123456789ABCDE\",\n  \"object\": \"transaction\",\n  \"type\": \"card_sale\",\n  \"transaction_state\": \"authorized\",\n  \"response_status\": \"Approved\",\n  \"response_code\": \"00\",\n  \"response_message\": \"The API request is approved.\",\n  \"amount\": 1999,\n  \"correlation_id\": \"d4e5f6a7-b8c9-0123-def0-123456789abc\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-5-test-error-scenarios","__idx":9},"children":["Step 5: Test error scenarios"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Exercise your error handling by testing common failure cases."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Scenario"},"children":["Scenario"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"How to trigger"},"children":["How to trigger"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Expected result"},"children":["Expected result"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Declined transaction"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Use decline test card ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4000000000000002"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["response_status: Declined"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Invalid card"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Send an invalid PAN like ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1234567890123456"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["422 Validation failed"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Missing required field"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Omit ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["amount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400 Bad Request"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Invalid API key"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["APIKEY: invalid"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401 Unauthorized"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Non-existent transaction"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v1/transactions/TRANSACTION-DOESNOTEXIST"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["404 Not Found"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"sandbox-vs-production-differences","__idx":10},"children":["Sandbox vs. production differences"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Behavior"},"children":["Behavior"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Sandbox"},"children":["Sandbox"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Production"},"children":["Production"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Processor connections"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Simulated"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Live TSYS / Vericheck"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Real funds"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Yes"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Test cards accepted"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["No — real cards only"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Settlement"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Simulated batch closure"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Real batch clearing"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["ACH returns"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Simulated on schedule"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Real ACH network timeline"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Rate limits"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Same as production"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Standard limits"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"switching-to-production","__idx":11},"children":["Switching to production"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When your integration is tested and ready, switch to production."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Obtain production credentials"]}," — create a production client account and API key using the production base URL."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Update the base URL"]}," — change ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PARADISE_API_URL"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://api.paradisegateway.net"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Update the API key"]}," — replace your sandbox key with the production key."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Remove test card numbers"]}," — production rejects test cards."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Verify processor integrations"]}," — ensure live TSYS and/or Vericheck integrations are configured."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For a complete checklist, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/get-started/sandbox-vs-production"},"children":["Sandbox vs. production"]},"."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Before going live"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run your full test suite against the sandbox. Confirm that your error handling, retry logic, and webhook processing all work as expected before switching to production."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-steps","__idx":12},"children":["Next steps"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/get-started/quickstart"},"children":["Quickstart"]}," — send your first test sale"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/get-started/sandbox-vs-production"},"children":["Sandbox vs. production"]}," — full environment comparison"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/get-started/integration-best-practices"},"children":["Integration best practices"]}," — security, idempotency, and retry guidance"]}]}]},"headings":[{"value":"Set up a sandbox environment","id":"set-up-a-sandbox-environment","depth":1},{"value":"Prerequisites","id":"prerequisites","depth":2},{"value":"Step 1: Use the sandbox base URL","id":"step-1-use-the-sandbox-base-url","depth":2},{"value":"Step 2: Store your sandbox API key","id":"step-2-store-your-sandbox-api-key","depth":2},{"value":"Step 3: Use test card numbers","id":"step-3-use-test-card-numbers","depth":2},{"value":"Cards that approve","id":"cards-that-approve","depth":3},{"value":"Cards that decline","id":"cards-that-decline","depth":3},{"value":"Test bank accounts","id":"test-bank-accounts","depth":3},{"value":"Step 4: Send a test transaction","id":"step-4-send-a-test-transaction","depth":2},{"value":"Step 5: Test error scenarios","id":"step-5-test-error-scenarios","depth":2},{"value":"Sandbox vs. production differences","id":"sandbox-vs-production-differences","depth":2},{"value":"Switching to production","id":"switching-to-production","depth":2},{"value":"Next steps","id":"next-steps","depth":2}],"frontmatter":{"title":"Set up a sandbox environment","shortTitle":"Set up sandbox","intro":"Configure the {% $env.PUBLIC_BRAND_NAME %} sandbox for development and testing. Use test credentials, test card numbers, and the sandbox base URL to build your integration without processing real payments.","type":"how-to","seo":{"title":""}},"lastModified":"2026-06-05T02:46:44.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/how-tos/setup/setup-sandbox-env","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}