simulation_links object you call yourself to move the resource to its next
state, with the exact same status changes and webhook
events a real exchange/bank/gateway response would produce.
simulation_links only ever appears in a sandbox environment. In production
the field is always absent and the links themselves don’t exist — calling
one returns 404.How it works
- Create a resource normally (
POST /api/investors/v1,/api/orders/v1,/api/payments/v1,/api/mandates/v1) — the request/response shape is identical to production. - Read
simulation_linksoff the create response, or a laterGETof the same resource (some links only appear once the resource reaches a later status — see each section below). GETtheacceptorrejectlink — noAuthorizationheader needed, so you can open it directly in a browser orcurlit. It’s scoped by an unguessable token in the query string, and safe to call more than once.- Poll the resource, or listen for the webhook event, exactly as you would in production.
Investor
simulation_links appears while the investor is PENDING or PROCESSING
(right after POST /api/investors/v1, or shortly after — provisioning is
asynchronous, so GET again if it isn’t there yet).
Purchase order
An order has two independent simulated stages, matching its real lifecycle (PENDING → SUBMITTED → ACCEPTED → ALLOTTED):
Dispatch — appears while the order is PENDING/SUBMITTED:
Allotment — appears only once the order is
ACCEPTED:
The allotment
accept link accepts optional query parameters —
units, nav, folio_no, allotment_date — if you want specific values
in the response; omit any of them for a deterministic default.
Payment
simulation_links appears while the payment is INITIATED (immediately on
POST /api/payments/v1 in a sandbox environment — no real gateway/bank round
trip happens).
Mandate
simulation_links appears only for an ENACH mandate while it is PENDING.
A PHYSICAL mandate has no simulation link — in a sandbox environment,
POST /api/mandates/v1/:id/image registers it directly.