Sandbox & credentials
This page covers Waffy's three environments, what you need in each, and how sandbox differs from production. Start in the sandbox.
Start here
Waffy runs three separate environments: sandbox (dev), staging and production. Each has its own accounts, organizations and API clients, and nothing is shared between them, so you register in every environment you use. Production moves real money, so build and test in the sandbox first.
- Register your organization in the sandbox business portal and create an API client there.
- Build and test your integration against the sandbox. The Quick start shows the first calls.
- Repeat in staging to check the setup end to end before go-live.
- Register in production when you are ready to go live. Production needs a compliance review and Waffy's readiness checklist.
Registered in production by mistake?
What you need
- Sandbox access: an isolated environment with its own users and contracts. Nothing in sandbox touches real money.
- An API client: a
client_idand aclient_secret. Create it in the Waffy business portal under Settings, API clients. The secret is shown only once. Each environment has its own client. Once you are signed in to this site, the dashboard lists your clients and gives you a Postman environment for each. - Your organization admin's login: the same username and password as in the business portal. It is used to get the client admin token for contracts, settlement, balance and withdrawals.
- A webhook signing secret: used to HMAC-verify inbound webhooks so you can trust the payload came from Waffy.
- A pre-configured payment-method set: the subset of methods enabled on your org at onboarding (Mada, Visa, Mastercard, Apple Pay, STC Pay, Tabby, Tamara, Neo, manual bank transfer). The hosted checkout displays only the ones that are on for you.
Three kinds of token
org token, and your admin login gives you a client admin token. A third value, the payment ticket, is requested by your backend for one buyer and one payment, right before the checkout redirect. See Authentication.If you don't have these yet, register your organization in the business portal of the environment you are working in (the links are in the table below) and create an API client there. Reach out to your Waffy account manager if you need help.
Environments
| Aspect | Sandbox (dev) | Staging | Production |
|---|---|---|---|
| Business portal (register here) | portal-dev.waffyapp.com | portal-stg.waffyapp.com | portal.waffyapp.com |
| Developer portal | developer-dev.waffyapp.com | developer-stg.waffyapp.com | developer.waffyapp.com |
| Waffy ID (tokens) | https://id-dev.waffyapp.com | https://id-stg.waffyapp.com | https://id.waffyapp.com |
| Business API | https://dev-api.waffyapp.com | https://api-stg.waffyapp.com | https://api.waffyapp.com |
| Authentication service | https://dev-auth.waffyapp.com | https://auth-stg.waffyapp.com | https://auth.waffyapp.com |
| Checkout | https://external-dev.waffyapp.com | https://external-stg.waffyapp.com | https://external.waffyapp.com |
| Webhook URL | Set by you: PATCH /api/clients/{client_id} with your client admin token (see the Webhooks API page). | Same mechanism. | Confirmed with Waffy before go-live. |
| Payments | Simulated. | Simulated or real. | Real. Real money moves. |
| Webhooks | Fire on every state change, same payload shape. | Same. | Same. |
| Approval required | No. | No. | Yes: compliance review and Waffy’s readiness checklist. |
Use the same code across all environments
id_base_url, api_base_url, auth_base_url and checkout_base_url. The Postman collection already works this way.