Sandbox vs Production
OneFinOps runs sandbox and production as fully isolated stacks. Tokens issued for one will not work against the other; the auth layer rejects cross-environment audiences. Plan early which environment your integration targets.
At a glance
| Sandbox | Production | |
|---|---|---|
| Base URL | https://api-sandbox.in.onefinops.com | https://api.in.onefinops.com |
| OAuth client-id prefix | ofin_test_* | ofin_live_* |
| Upstream IRP / EWB | NIC sandboxes | Live NIC |
| Data | Resettable, no legal weight | Persistent, legally binding |
| Rate limits | Same defaults (60 rpm / 10 rpm credentials) | Same defaults; raise via support |
Where they differ behaviourally
- Signed invoice in sandbox is signed by NIC's sandbox certificate — do not present these in production accounting systems.
- EWB validity periods in sandbox follow NIC sandbox rules and may be shorter than production.
- Cancellation windows (24h IRN, 24h EWB cancel, 72h EWB reject) are honoured in both environments. Sandbox does not extend them.
- Webhook deliveries in sandbox post to whatever URL you registered against your sandbox subscription — keep them separate from production endpoints.
What they share
- Identical request/response shape, identical status enums, identical error codes.
- Same OAuth scopes and same scope-policy enforcement.
- Same idempotency rules and the same 24-hour replay window.
Promotion checklist
Before you flip your integration to api.in.onefinops.com:
- Provision a production OAuth client with the minimum scope set you actually need.
- Upload production GSP credentials for every GSTIN you plan to file under.
- Move secrets out of build artefacts into a real secrets manager (we recommend short-lived, rotated tokens cached by your client — never the client_secret in a frontend).
- Update webhook URLs to your production handler.
- Set up alerting on
failed_terminalIRNs and on webhook delivery dead-letters.
Updated about 5 hours ago
