The sandbox is a full copy of the merchant experience running on test data. Payments settle, invoices are issued, disputes open and close, payouts pay out — all with fake money, on a real ledger.
What is isolated
Its own test merchants, one per environment
Its own credentials (test client id / secret, spat_test_… tokens)
Its own webhook endpoints and delivery logs
Its own rate-limit counters
Nothing in the sandbox can read or write live data, and no email is ever sent to a real customer.
Instant verification
Sandbox payout onboarding completes immediately: no documents, no bank details, no real identity. Bank management and live-access UI stay hidden until you switch to live mode.
Seeding
Seed data fills an environment with a plausible merchant: products, prices, customers, a handful of settled payments and one open dispute. Wipe data clears objects but keeps the environment and its installs.
Resetting
Resetting an environment clears data, installs and webhook logs and re-issues the test merchant. Use it when a broken test state is faster to throw away than to repair.
An environment is one isolated test workspace: a test merchant, its data, its installations and its logs.
Why more than one
Environment
Typical use
Default
Day-to-day development
CI
Automated tests, wiped before every run
Demo
Stable data for sales demos and screenshots
You can hold up to five environments per organization and switch between them from the sandbox header. The selection is remembered per browser; if an environment disappears (deleted, or from another organization) the dashboard falls back to your default one.
Installing apps
Any of your apps can be installed into any environment, and one environment can hold several apps at once. Installing runs the real consent flow and issues a real sandbox token, so multi-app scenarios ("my app plus a competitor's webhook noise") are testable.
Uninstalling revokes the tokens and emits installation.uninstalled to your endpoints.
Deleting
Deleting an environment cascades: test merchant, objects, installations, tokens, webhook endpoints and logs are removed. The default environment is recreated automatically if you delete everything.
Environment dashboard
Each environment shows, in real time:
installed apps and their granted scopes
API requests: method, path, status, latency, rate-limit headroom
webhook deliveries with payload, response and retry history
the financial ledger: payments, refunds, disputes, payouts, balance
Drive payments, refunds, disputes and payouts by hand.
Every state change a real merchant can experience is triggerable from the environment's ledger tools — and each one emits the same webhook a live account would.
Action
Effect
Events emitted
Create payment
Adds a succeeded charge and a balance transaction
payment.created, payment.succeeded
Refund payment
Full or partial refund against a charge
refund.created, refund.succeeded
Open dispute
Moves the amount into dispute, holds the funds
dispute.created
Submit evidence
Attaches evidence, dispute goes under review
dispute.updated
Close dispute
Won (funds returned) or lost (funds deducted)
dispute.closed
Run payout
Sweeps the available balance into a pending payout
payout.created
Settle payout
Marks the payout paid
payout.paid
Funds maturity
Sandbox funds follow a T+2 availability model, like production: a payment lands in pending, becomes available after two simulated days, and only available funds can be paid out. Advance the clock from the ledger view instead of waiting.
Raw event simulation
Any event from the event catalog can also be fired directly with a synthetic payload — useful to test handlers for cases that are awkward to reach, such as invoice.payment_failed.
Moving from sandbox credentials to real merchants.
Checklist
App approved and published.
Payout account verified in live mode (real entity, real bank account).
Billing method on file for the publishing fee.
Live redirect URIs registered (HTTPS, exact).
Webhook endpoint deployed on a public HTTPS URL with signature verification.
Secrets stored server-side; no client id/secret pair in front-end code.
What changes
Sandbox
Live
Tokens
spat_test_…
spat_live_…
Read quota
120 req/min per install
600 req/min per install
Data
Your test merchant
Real merchants
Disputes
Simulated
Real money at stake
First 24 hours
Watch Logs for 401, 403 insufficient_scope and 429 — those three cover almost every launch bug. Set your alert threshold at 1 % error rate for the app.
Rollback
If something is wrong, unpublish the app. Existing installations keep working, but no new merchant can install while you fix it.