{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Sandbox Testing"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"sandbox-testing","__idx":0},"children":["Sandbox Testing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide covers sandbox account setup for testing PayPal and Apple Pay through the SDK, provides information about Venmo testing, and covers simulating ACH return codes in non-production environments."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"paypal","__idx":1},"children":["PayPal"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["PayPal provides a sandbox environment for testing. Venmo, however, cannot be fully tested in that sandbox as of 2026, so NPS does not support Venmo testing."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"developer-account-setup-integration-partner","__idx":2},"children":["Developer Account Setup (Integration Partner)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Integration partner team members create PayPal Developer accounts as needed. Each account holder then creates sandbox buyer accounts for their own testers."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Go to ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.paypal.com/"},"children":["developer.paypal.com"]}," and click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sign Up"]}," to create a PayPal Personal account."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Log in to ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.paypal.com/"},"children":["developer.paypal.com"]}," with the newly created account credentials."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"per-tester-setup-sandbox-buyer-account","__idx":3},"children":["Per-Tester Setup: Sandbox Buyer Account"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Create one sandbox buyer account for each tester. Repeat these steps per person. Do not share a single login across testers."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Log in to ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.paypal.com/"},"children":["developer.paypal.com"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Navigate to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Testing Tools → Sandbox Accounts"]}," in the left navigation bar."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create Account"]}," to create a sandbox test account."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Do you want a more customized account?"]},", click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create"]}," to access additional configuration options."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Set ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Account Type"]}," to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Personal"]}," (buyer account)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Provide an ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["email address"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["password"]},". Record these — they are the tester's login credentials."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Set ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Verified Bank Account"]}," to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Yes"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Set ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Payment Card"]}," to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["PayPal"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create Account"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm the new account appears on the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sandbox Accounts"]}," page."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Share the email address and password from step 6 with the tester."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The tester enters this login when prompted to sign in at ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.sandbox.paypal.com/"},"children":["sandbox.paypal.com"]}," during the PayPal checkout flow in the SDK."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"paypal-negative-testing","__idx":4},"children":["PayPal Negative Testing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The sandbox environment supports negative testing scenarios to validate error handling for PayPal AUTH_ONLY transactions."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the following test amounts to simulate gateway-level errors:"]},{"$$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":{"data-label":"Amount"},"children":["Amount"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Transaction Type"},"children":["Transaction Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Expected Result"},"children":["Expected Result"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["9999.01"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["AUTH_ONLY"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Returns ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["E500"]}," error"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["9999.02"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["AUTH_ONLY"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Returns ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["E412"]}," error"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"notes","__idx":5},"children":["Notes"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The sandbox account does not need to be linked to NPS in any way."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Sandbox credentials are separate from live PayPal credentials."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"apple-pay","__idx":6},"children":["Apple Pay"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Apple Pay sandbox accounts must be created by NPS. You cannot create one independently."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"steps","__idx":7},"children":["Steps"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Contact ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["NPS Tech Support"]}," and request an Apple Pay sandbox account."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Tech Support will coordinate with the NPS team to create the account."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Provide an ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["email address that does not already have an Apple ID associated with it"]}," — this is required by Apple for sandbox account creation."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Once created, you will receive sandbox credentials to use during Apple Pay testing in the SDK."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"notes-1","__idx":8},"children":["Notes"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The email address provided ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["must not"]}," be associated with an existing Apple ID."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Apple Pay sandbox testing requires Safari or an Apple Pay-capable device/browser."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"ach-return-code-testing","__idx":9},"children":["ACH Return Code Testing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In non-production environments, you can simulate ACH return codes for a charge without waiting for a return file from the bank. Creating an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ACH_CHARGE"]}," for one of the amounts below triggers the corresponding ACH return and reason code when the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ach-webhook"]}," job runs."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the following test amounts to simulate a returned transaction:"]},{"$$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":{"data-label":"Amount"},"children":["Amount"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"R Code"},"children":["R Code"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.01"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R01"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Insufficient funds"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.02"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R02"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Receiver's account is closed"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.03"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R03"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No account on file / RDFI unable to locate account"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.04"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R04"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid account number"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.06"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R06"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Returned at ODFI request"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.07"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R07"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Authorization revoked by receiver"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.08"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R08"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Payment stopped"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.09"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R09"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Uncollected funds"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.10"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R10"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Originator not known or not authorized to debit"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.11"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R11"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Entry not in accordance with terms of authorization"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.13"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R13"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid routing number"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.15"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R15"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Account holder deceased"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.16"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R16"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Account funds frozen"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.17"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R17"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid data, see addenda"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.20"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R20"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Account does not allow ACH, or limit exceeded"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.23"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R23"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Credit entry refused by receiver"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.24"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R24"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Duplicate entry"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$0.29"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["R29"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Corporate customer advises not authorized"]}]}]}]}]}]},"headings":[{"value":"Sandbox Testing","id":"sandbox-testing","depth":1},{"value":"PayPal","id":"paypal","depth":2},{"value":"Developer Account Setup (Integration Partner)","id":"developer-account-setup-integration-partner","depth":3},{"value":"Per-Tester Setup: Sandbox Buyer Account","id":"per-tester-setup-sandbox-buyer-account","depth":3},{"value":"PayPal Negative Testing","id":"paypal-negative-testing","depth":3},{"value":"Notes","id":"notes","depth":3},{"value":"Apple Pay","id":"apple-pay","depth":2},{"value":"Steps","id":"steps","depth":3},{"value":"Notes","id":"notes-1","depth":3},{"value":"ACH Return Code Testing","id":"ach-return-code-testing","depth":2}],"frontmatter":{"seo":{"title":"Sandbox Testing"}},"lastModified":"2026-10-07T17:09:59.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/sandbox-testing","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}