StoreBay Developers

Sandbox

A free test operator with identical isolation and events — Stripe test mode and GoCardless sandbox underneath, so no real money moves.

Sandbox

Note

A test operator behaves exactly like a live one — same isolation, same events — but uses Stripe test mode and GoCardless sandbox, so no real money moves.

Sandbox is included, not a separate product, and there is no parallel schema — a test operator is modelled as operators.environment = 'test' (optionally a child of a live operator), with identical row-level-security isolation to a live one. Stora has a sandbox too; StoreBay makes it the default, frictionless way to build.

This page covers the sandbox model — what a test operator is, how environments bind to your credentials, and what seed/reset do. The console that creates, seeds, and resets test operators — the buttons themselves — lives in your StoreBay developer settings (https://app.storebay.co.uk), not here.

The environment model

EnvironmentCredentialBackingMoney
Livesb_live_…operators.environment = 'live'Real Stripe / GoCardless
Test (sandbox)sb_test_…operators.environment = 'test' (optionally a child of a live operator)Stripe test mode / GoCardless sandbox
  • The switch is the credential — a sb_test_… key resolves to the test operator, a sb_live_… key resolves to live. The base URL never changes: https://api.storebay.co.uk/v1.
  • Test operators connect to Stripe test mode and the GoCardless sandbox, so you can exercise full payment and Bacs Direct Debit flows — including the reversible states covered in the booking-flow guide — without moving real money.
  • Test webhook endpoints and test API keys are managed exactly like their live counterparts (in your StoreBay developer settings).
  • A key's prefix must agree with its own environment (a sb_test_…-prefixed credential can never resolve to a live operator, or vice versa) — the resolver refuses the mismatch outright, so a copy-paste error fails closed, not open.

The worked example: Kestrel Storage

Kestrel Storage is StoreBay's own canonical test-mode fixture — a test operator, child of Pennine Self Storage, seeded with 2 sites, ~40 units, and sample occupiers. It's connected to Stripe test (card 4242 4242 4242 4242) and has an active GoCardless sandbox mandate, with a test key shown in the console as sk_test_••••0c33. Point your integration at it while you build, exactly as you would a real operator's test environment.

Reset and seed

The console's Seed sample data action populates a test operator with fixtures; Reset sandbox is destructive and test-realm-only:

Reset this sandbox? This deletes all test data in {operator} and restores the clean seed. Live data is never touched. This can't be undone.

— confirm: Reset sandbox

Every effect of Create / Seed / Reset is confined to the test environment — no real money, comms, or access commands ever fire from a test operator, no matter what you do to it.

Warning

Test mode — no real charges, comms, or access commands are sent.

Going live

Going live is a one-way, gated transition: an owner/admin flips a single column on the operator, and nothing else about its data changes — every test-era site, contact, and invoice remains, visible and auditable by its original created_at. The moment that flip commits, the operator's sb_test_… API keys stop resolving — the resolver's key↔operator environment match makes this immediate and automatic, not a manual cleanup step. Ongoing testing continues in a child sandbox, never the now-live operator; live → test does not exist.

Build and test everything against sb_test_… first — then swap the credential to go live. Nothing else in your integration changes.

Managing your sandbox

  • Create test operator, Seed sample data, and Reset sandbox are all actions in your StoreBay developer settings (https://app.storebay.co.uk) — not in-page actions here.
  • Test API keys: manage them alongside your live keys, in the same developer settings.
  • Test webhook endpoints: register them exactly as described in Webhooks — just point them at a sb_test_…-owned endpoint while you build.

On this page