Skip to main content
A purchase order buys units of a mutual fund scheme for an investor. This guide covers 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

Supported order types

Create the order

Response 202:

Fields

Validation

Rejected synchronously before the 202:
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

Poll GET /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

Allowed only from PENDING, SUBMITTED or ACCEPTED — otherwise 409 INVALID_STATE.

Pay for the order

Response 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 same POST /api/orders/v1/ endpoint:
  • Redemptionorder_type: "REDEMPTION", plus units or all_units: true (demat), or folio_no for physical holdings. No payment step — proceeds are credited to the registered bank account.
  • Switchorder_type: "SWITCH" with switch: { "to_scheme_code": "..." }.