{"templateId":"markdown","versions":[{"version":"1.0","label":"1.0","link":"/omni-api/1.0/overview/sandbox-access","default":false,"active":false,"folderId":"6bec560c"},{"version":"1.1","label":"1.1","link":"/omni-api/1.1/overview/sandbox-access","default":false,"active":false,"folderId":"6bec560c"},{"version":"1.2","label":"1.2","link":"/omni-api/overview/sandbox-access","default":true,"active":true,"folderId":"6bec560c"}],"sharedDataIds":{"sidebar":"sidebar-omni-api/@1.0/overview/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Sandbox access"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"sandbox-access","__idx":0},"children":["Sandbox access"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sandbox access is used to coordinate a validation of your Omni integration with Percents. It is not a live transaction-processing environment."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-sandbox-validates","__idx":1},"children":["What sandbox validates"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use sandbox to verify that your issuer can:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["authenticate with its server-side API token;"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["read its merchant and offer catalog;"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["request and upload an agreed test transaction file; and"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["receive, verify, and process the processing-result webhook."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The sandbox is designed for contract and integration validation. It does not process live cardholder transactions, create production rewards, or provide a fixed-schedule simulation of production processing."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"coordinated-validation","__idx":2},"children":["Coordinated validation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Native and Plaid files are validated as complete files. The signed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FileUploadProcessingResult"]}," webhook and persisted file status report ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processingStatus=validation_only"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["validationStatus=passed"]}," when validation succeeds. Failed validation reports ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processingStatus=failed"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["validationStatus=failed"]},". No live transaction ingestion or production rewards occur in sandbox."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Storage acceptance does not mean validation passed. Retain the file ID and reconcile through the status endpoint or webhook. Contact support if the result is unexpectedly delayed."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"requesting-access","__idx":3},"children":["Requesting access"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Provide Percents with the issuer name, a public HTTPS webhook URL, and the file format you intend to validate. For network access, choose either stable public egress IPs or CIDR ranges for the source-IP-allowlist URL, or a CSR for the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/omni-api/overview/mtls-access"},"children":["mTLS URL"]},". Percents returns sandbox API and webhook-signing credentials through an approved secure channel."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use separate sandbox and production credentials. Do not upload live cardholder data to sandbox."]}]},"headings":[{"value":"Sandbox access","id":"sandbox-access","depth":1},{"value":"What sandbox validates","id":"what-sandbox-validates","depth":2},{"value":"Coordinated validation","id":"coordinated-validation","depth":2},{"value":"Requesting access","id":"requesting-access","depth":2}],"frontmatter":{"seo":{"title":"Sandbox access"}},"lastModified":"2026-10-02T20:53:32.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/omni-api/overview/sandbox-access","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}