Retrieve a paginated list of registered sub-merchants under your enterprise account.
EndpointGET https://id-service.open.money/v1/connected_banking/sub_merchant/list
Request
Headers
Authorization: Bearer <access_key:secret_key>
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| limit | Integer | 10 | Number of records to return per page |
| offset | Integer | 0 | Offset cursor for pagination |
Example Request
curl --location 'https://id-service.open.money/v1/connected_banking/sub_merchant/list?limit=4&offset=0' \
--header 'Authorization: Bearer <access_key:secret_key>'Response
Success (200 OK)
{
"status": "success",
"data": {
"sub_merchants": [
{
"sub_merchant_id": "019fac44-7af9-7436-94b6-4da8d3cef735",
"first_name": "Sa***ox",
"last_name": "NS****fy",
"email": "sa************[email protected]",
"username": "91******01"
},
{
"sub_merchant_id": "019fa824-abf7-7bb4-b7d8-8dec350ca6cb",
"first_name": "No**fy",
"last_name": "T**t",
"email": "no***************[email protected]",
"username": "99******72"
},
{
"sub_merchant_id": "019fa7c3-127c-7dac-a930-f86e3cab46fc",
"first_name": "Ve**fy",
"last_name": "T**t",
"email": "ve*************[email protected]",
"username": "99******71"
},
{
"sub_merchant_id": "019f8eaf-61b9-735b-9dc3-9c45a8240a7e",
"first_name": "Sa***ox",
"last_name": "Me****nt",
"email": "sa************[email protected]",
"username": "55******22"
}
],
"is_sandbox": true
},
"error": null,
"meta": {
"timestamp": "2026-07-30T07:07:13Z",
"pagination": {
"cursor": "eyJpZCI6IjAxOWZhYzRjLWY0MDQtNzQ4Zi1iOTNhLTg2MmRlNmM4OGM1ZSIsImNyZWF0ZWRfYXQiOiIyMDI2LTA3LTI5VDEwOjQ1OjUyLjE4ODU1NCswNTozMCJ9",
"next_cursor": null,
"limit": 4,
"has_more": false
}
}
}Response Fields
| Field | Type | Description |
|---|---|---|
| status | String | Request status: success or failed |
| data.sub_merchants[] | Array | Array of sub-merchant objects |
| data.sub_merchants[].sub_merchant_id | String | Unique identifier for the sub-merchant |
| data.sub_merchants[].first_name | String | Sub-merchant first name (masked for privacy) |
| data.sub_merchants[].last_name | String | Sub-merchant last name (masked for privacy) |
| data.sub_merchants[].email | String | Sub-merchant email address (masked for privacy) |
| data.sub_merchants[].username | String | Sub-merchant username (masked for privacy) |
| data.is_sandbox | Boolean | Indicates whether results are from sandbox environment |
| meta.pagination.cursor | String | Current pagination cursor (base64 encoded) |
| meta.pagination.next_cursor | String | Cursor for next page (null if no more pages) |
| meta.pagination.limit | Integer | Records returned per page |
| meta.pagination.has_more | Boolean | Whether additional records exist |
| meta.timestamp | String | ISO 8601 timestamp of the request |
Authentication
All endpoints require Bearer token authentication. Include your API credentials in the Authorization header:
Authorization: Bearer <access_key:secret_key>
Replace <access_key:secret_key> with your actual API credentials.
Error Handling
Errors are returned with appropriate HTTP status codes and error details in the response body:
- 400 Bad Request: Invalid request parameters or duplicate user
- 401 Unauthorized: Missing or invalid authentication credentials
- 500 Server Error: Internal server error
All error responses follow this format:
{
"status": "failed",
"data": null,
"error": {
"code": "ERROR_CODE",
"message": "Human-readable error message",
"details": []
},
"meta": {
"timestamp": "2026-07-30T07:34:41Z"
}
}Pagination
The list endpoint supports cursor-based pagination:
- Use the
limitparameter to control the number of records per page (default: 10) - Use the
offsetparameter for offset-based pagination - The response includes
meta.pagination.has_moreto indicate if more records exist - The
next_cursorfield provides the cursor for the next page of results