Money is integer paise โ โน15,000 = 1500000. Follow GET /application/journey. Skipping a step returns 409 step_not_ready.
POST /auth/otp/request and verify both require a published product_id. The access JWT is bound to that product. A draft or unknown id returns invalid_product.id, name, minAmountPaise, maxAmountPaise, rateBps, tenorMonths). Drafts and fee internals are omitted.products[n].id into product_id (this collection captures products[0].id), then POST /auth/otp/request.curl --location 'https://api-dev.myemipay.com/products'{
"products": [
{
"id": "prod_personal",
"name": "Personal",
"version": 1,
"minAmountPaise": 1000000,
"maxAmountPaise": 20000000,
"rateBps": 1400,
"tenorMonths": 12
}
]
}