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 register. The sandbox never calls the Dutch EAN register. It
answers from the EAN you send instead: its last four digits pick
matched,unverifiedormismatched. See test values and helpers. - No payouts. No payment provider is connected.
- No email. Customers you create receive nothing. The sandbox keeps each
mail, and
GET /sandbox/v1/mailshows it to you. - No charger-backend syncs. Session data enters through the API endpoints you call, or from a virtual charger you connect with a sandbox helper.
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. Keep the EAN 18 digits and starting with 871: the format rules
still apply, and the real Dutch prefix keeps your test payloads valid on
production too.
The EAN's last four digits decide the address check. An EAN ending in 0003
returns 422 ean_address_mismatch, just as production does when the EAN does
not belong to the address. Any EAN without a test ending is accepted as
matched. The full list is on test values and helpers.
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.
Machtiging links point at the sandbox site
POST /v1/mandate-links returns a URL on the website that belongs to the
environment you called. On the sandbox that host is staging.joulo.nl:
{
"url": "https://staging.joulo.nl/machtiging/cpo/d002de08…"
}Deliver the URL exactly as you receive it. The token lives in the sandbox
database, so the same token on joulo.nl reports the link as invalid.
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.