Sandbox
Test the Integrated API against Joulo's staging environment • no real machtigingen, no ERE registration, no payouts.
Sandbox
The sandbox is a full copy of the Integrated API running on Joulo's staging environment. Build and test your integration here before you touch production.
Base URL
https://api-staging.joulo.nl/functions/v1/apiTokens come from the staging token endpoint:
POST https://api-staging.joulo.nl/functions/v1/oauth-tokenThe endpoints, scopes, request and response shapes are identical to production • only the host differs. Swap the base URL and your integration moves environments.
Get sandbox credentials
Sandbox credentials are separate from production credentials: a production
client_id does not work on the sandbox and vice versa. Ask your Joulo
contact for a sandbox client • you receive a client_id and client_secret
scoped to your own test partner.
What the sandbox does not do
The sandbox is deliberately inert. Accounts, mandate links and charging data behave exactly like production, but nothing leaves the environment:
- No ERE registration. Nothing is ever submitted to the NEa from the sandbox. A test machtiging has no legal effect and does not bind an EAN.
- No EAN validation. The sandbox never calls the Dutch EAN register, so it
never checks whether an EAN belongs to the address you send. Every connection
is stored as
ean_validation_status: "unavailable". - No payouts. No payment provider is connected.
- No email. Customers you create receive nothing.
- No charger-backend syncs. Session data only enters through the API endpoints you call.
The flip side: never test against production. A machtiging signed on production is a legal act that binds that EAN to Joulo, even when it was meant as a test.
Test data
Invent it. Names, email addresses, IBANs, EANs and addresses may all be
fictional: POST /v1/accounts accepts any 18-digit EAN here, because the
address check is off (see above). Keep the EAN 18 digits and starting with
871 — the format rules still apply, and using the real Dutch prefix keeps
your test payloads valid on production too.
Production is stricter on exactly one point: the EAN must belong to the address
you send, or you get 422 ean_address_mismatch. So a payload that works on the
sandbox works on production as soon as the customer data is real.
Ids are per environment
The sandbox runs its own database. Every id you see there is local to it:
catalog_charger_id, account_id, connection_id, charger_id. The same
charger model therefore has a different catalog_charger_id on the sandbox
than on production. Resolve or look up ids per environment, and never ship a
sandbox id in production code.
Data lifetime
Sandbox data is kept indefinitely but carries no guarantees. We reset the environment on request rather than on a schedule, and we announce a reset to active integrators beforehand.