Profile
This page was rewritten against the live backend
The previous version documented /api/v1/vendor/profile (GET) and /api/v1/vendor/profile/update (POST) — neither exists. What follows is read directly from paymentSystem/src/modules/vendors/routes/vendor.route.js.
Get Profile
GET /vendor/me
Authorization: Bearer <token>
{
"statusCode": "00",
"message": "vendor Details",
"data": {
"id": "v-uuid",
"code": "VEN001",
"name": "My Company Pvt Ltd",
"email": "vendor@example.com",
"mobile": "9876543210",
"status": true,
"mstatus": "APPROVED",
"riskflag": 1,
"merchants": [
{
"id": "m-uuid",
"mid": "M001",
"appid": "100234",
"status": true,
"riskflag": 1,
"transactions": [
{ "id": "txn-uuid", "tr": "RRN-...", "amount": 500, "status": "SUCCESS", "createdAt": "2026-07-04T10:30:00Z" }
],
"settlementAccount": { "...": "merchant's own settlement account, if configured" },
"callback": { "...": "merchant's own callback config, if configured" }
}
],
"commissions": [ "...vendor's own commission configs" ],
"transactions": [ "...vendor's own transaction records" ]
}
}
merchants[].transactions is capped implicitly by whatever the underlying query returns for that merchant — for a full, paginated transaction list use Transactions instead of parsing this response.
Reset Password
POST /vendor/reset-password
Authorization: Bearer <token>
Content-Type: application/json
{ "oldPassword": "current-password", "newPassword": "new-password" }
{ "statusCode": "00", "message": "Password reset successfully" }
Failure modes: 401 { "statusCode": "05", "message": "Old password is incorrect" }, 400 { "statusCode": "01", "message": "Old and new password are required" }.
Get by ID
GET /vendor/:id
Returns a much larger nested payload than GET /vendor/me — includes address, settlementAccount, vendorpan, businesstype, aggregator (with its commission configs), commissionconfig, up to 100 recent transactions with ledger/reconciliation/settlement detail per transaction, and every merchant under this vendor with their own nested wallet/address/ KYC/limits/payment-methods. Not role-gated the same way as the routes above (no checkRole on this one in source) — treat :id as a sensitive parameter, not something to expose to end users.
{ "statusCode": "00", "message": "Vendor fetched successfully", "data": { "id": "v-uuid", "...": "see description above — large nested object" } }
There is no profile-update endpoint
Unlike a merchant, a vendor's name/address/contact details aren't updatable through this API today — vendor.route.js has no PUT/POST route for it. If you need this, that's a paymentSystem change to request.