LUMPSUM_PURCHASE. Placing an order is a two-part flow:
1
Create the order
POST /api/orders/v1/ — validated and persisted synchronously, then
dispatched to the exchange in the background. Returns 202.2
Pay for it
POST /api/payments/v1/ — reference one or more orders and a payment
mode.Prerequisites
- The investor is
status: REGISTERED(see Create an investor). - An investment account exists for the investor.
- For mandate-funded payments, a
REGISTEREDmandate exists.
Supported order types
Create the order
202:
Fields
Validation
Rejected synchronously before the202:
Send an
Idempotency-Key (UUID) on order creation. Replaying the same key +
body returns the original response with Idempotency-Replayed: true; a
different body with the same key is 409 IDEMPOTENCY_KEY_REUSED.Order lifecycle
Track progress
PollGET /api/orders/v1/:id:
GET /api/orders/v1/:id/events returns the full transition trail
({ from, to, at, remark }).
Or listen for webhook events order.accepted, order.rejected,
order.failed.
Cancel an order
PENDING, SUBMITTED or ACCEPTED — otherwise
409 INVALID_STATE.
Pay for the order
201:
Payment fields
How each mode settles
Payment status
INITIATED → CAPTURED (success) / FAILED / REFUNDED. Completion arrives
asynchronously via an exchange callback, which emits webhook events
payment.captured, payment.failed, payment.refunded. Each linked order’s
payment_status is updated in step.
Submit a UTR
Read endpoints
Redemption and switch (brief)
Both use the samePOST /api/orders/v1/ endpoint:
- Redemption —
order_type: "REDEMPTION", plusunitsorall_units: true(demat), orfolio_nofor physical holdings. No payment step — proceeds are credited to the registered bank account. - Switch —
order_type: "SWITCH"withswitch: { "to_scheme_code": "..." }.