Seamlessly initiate the journey for new individual customers with this robust registration endpoint. Designed as the foundational step of the Mbanq onboarding lifecycle, it captures essential personal profiles and securely initializes them in a Pending state. By establishing this record, you unlock a streamlined path toward identity verification, compliance approval, and full banking activation.
The Onboarding Journey:
- Registration: Establish the customer's digital record as a precursor to all banking services.
- Verification: Following creation, ensure that at least one primary address, an identity document, a mobile number, and an email are added. Then, utilize the Verify Customer API to validate these credentials. A successful verification transitions the record to a
Verifiedstate. - Activation: Successful verification transitions the customer to an active state, enabling downstream operations like account opening and fund transfers.
Real-time Lifecycle Visibility
To maintain precise synchronization with the asynchronous onboarding process, we strongly recommend subscribing to our real-time webhooks. These provide immediate notifications for creation events, verification results, and state transitions, serving as the most efficient way to monitor progress.
| Function | Webhook Reference |
|---|---|
| Create Customer | Register Customer Webhook |
For a complete overview of the end-to-end integration sequence, please refer to the Customer Onboarding Guide.
Using Template Option IDs
Several fields in this request payload require IDs that are obtained from the Get Person Customer Template API. You must call the Person Customer Template API first to retrieve the valid option IDs for your tenant before creating a customer.
The following fields require template option IDs:
| Field in Request Body | Source from Person Customer Template Response |
|---|---|
officeId | officeOptions[].id |
genderId | genderOptions[].id |
clientTypes[] | clientTypeOptions[].id |
clientClassificationId | clientClassificationOptions[].id |
staffId | staffOptions[].id |
occupationId | clientOccupationOptions[].id |
nationalityId | nationalityOptions[].id |
Example: If the template returns
genderOptions: [{ "id": 634, "name": "Male" }, { "id": 635, "name": "Female" }]. To create a male customer, pass"genderId": 634in this request body.
Click to View Person Request Payload Fields
| Field name | Data type | Mandatory / optional | Length constraints | Validation pattern (regex) |
|---|---|---|---|---|
| officeId | Integer | Mandatory (Default 1) | - | ^\d+$ |
| firstname | String | Mandatory | Max 100 | ^[a-zA-Z'-\u00C0-\u017F\s]*$ |
| lastname | String | Mandatory | Max 100 | ^[a-zA-Z'-\u00C0-\u017F\s]*$ |
| mobileCountryCode | String | Mandatory | - | - |
| mobileNo | String | Mandatory | - | ^\d+$ |
| emailAddress | String | Mandatory | - | ^\S+@\S+\.\S+$ |
| dateFormat | String | Mandatory if submittedOnDate is passed | - | - |
| externalId | String | Optional | - | ^\d+$ |
| middlename | String | Optional | - | ^[a-zA-Z]+$ |
| nickname | String | Optional | Max 50 | - |
| dateOfBirth | String | Optional | - | - |
| genderId | Integer | Optional | - | ^(634|635|636)$ |
| nationalityId | Integer | Optional | - | ^\d+$ |
| locale | String | Optional | - | - |
| occupationId | Integer | Optional | - | ^\d+$ |
| isCurrentlyEmployed | Boolean | Optional | - | - |
| clientTypes | Array (Integer) | Optional | - | - |
| clientClassificationId | Integer | Optional | - | ^\d+$ |
| isStaff | Boolean | Optional | - | - |
| staffId | Integer | Optional | - | ^\d+$ |
| isOptedForMLAStatus | Boolean | Optional | - | - |
| currentMLAStatus | String | Optional | - | ^[YN]$ |
| address | Array (Object) | Optional | - | - |
| submittedOnDate | String | Optional | - | - |
Click to View Address Fields (nested in address array)
| Field name | Data type | Mandatory / optional | Length constraints | Validation pattern (regex) |
|---|---|---|---|---|
| addressTypeId | Integer | Mandatory | - | ^(31|32|33|34)$ |
| addressLine1 | String | Optional | Max 255 | - |
| addressLine2 | String | Optional | Max 255 | - |
| addressLine3 | String | Optional | Max 255 | - |
| city | String | Optional | - | [a-zA-Z- ]+ |
| stateProvinceId | Integer | Optional | - | ^\d+$ |
| countryId | Integer | Optional | - | ^\d+$ |
| postalCode | String | Optional | Max 255 | ^\d+$ |
| isActive | Boolean | Optional | - | - |
