Sandbox Environment
The sandbox environment provides a safe space to develop and test your Open Banking integration without affecting real user data or transactions.
Key Features
- No real user data — All accounts and transactions are simulated
- Full API coverage — All production endpoints are available in sandbox
- Simulated consent — Test the user authorization flow without the Lunar app
- Stateful payment flows — Initiated payments persist in memory so you can test the full lifecycle (create, retrieve, poll, delete)
Base URLs
| Functionality | Base URL |
|---|---|
| AISP/PISP | https://sandbox.openbanking.prod.lunar.app |
| Registration | https://tpp.openbanking-sandbox.prod.lunar.tech |
Getting Started
- Obtain an eIDAS certificate — Get a QWAC certificate from a Qualified Trust Service Provider
- Register your TPP — Use your certificate to register as a TPP
- Authenticate — Obtain access tokens using your client credentials
- Make API calls — Start testing with the Account Information and Payment Initiation APIs
Sandbox Data
Accounts and Transactions
Each authenticated user receives a fixed set of sandbox accounts (DKK and SEK) with deterministic IDs, balances, and synthetic transaction history. The accounts are generated per user and remain consistent across requests.
Payment State
The sandbox maintains in-memory state for initiated payments. This means you can test the full payment lifecycle:
- Initiate a payment (POST) — the payment is stored and a
paymentIdis returned - Retrieve the payment (GET) — returns the payment details with status
- Poll the payment status (
GET /polling/{paymentId}/status) — returnsAPPROVEDwith theredirectUrlyou provided - Delete/cancel the payment (DELETE) — removes the payment from state
After deletion:
- Standing orders: The order no longer appears in the list. Polling resets to
AWAITING_APPROVALwith an emptyredirectUrl. - SE Bank Giro / SE Plus Giro: GET returns
404. Polling resets toAWAITING_APPROVALwith an emptyredirectUrl.
All payment state is held in memory and expires after 24 hours. Restarting the service resets all payment state to empty.
Polling Endpoint
The sandbox provides a polling endpoint to check payment approval status:
GET /polling/{paymentId}/status| Field | Type | Description |
|---|---|---|
status | string | APPROVED (after initiation) or AWAITING_APPROVAL |
redirectUrl | string | The redirect URL provided during initiation |
Differences from Production
| Aspect | Sandbox | Production |
|---|---|---|
| User consent | Simulated consent flow | Real Lunar app consent |
| Data | Deterministic test accounts | Real user data |
| Payment state | In-memory, auto-approved, 24h TTL | Persistent, requires user consent |
| AISP/PISP URL | sandbox.openbanking.prod.lunar.app | openbanking.prod.lunar.app |
| Registration URL | tpp.openbanking-sandbox.prod.lunar.tech | tpp.openbanking.prod.lunar.tech |
Next Steps
- Quick start — Follow the step-by-step walkthrough to go from zero to making API calls
- Payment flows — Learn how sandbox payment lifecycle works for all payment types
- Security details — Review the security model for certificate requirements
Last updated on