Client Onboarding
Client onboarding is divided into two distinct category;
- New client registration
- Existing client registration
Clients on the system are identified as below;
- Individual => I
- Cooperate => C
- Minor => M
Minor clients must be registered under a parent
New client registration APIs
Endpoint:
/api/v1/registernewindividual
Method: POST
Register new individual account, after a successful registration, a confirmation email is sent to the client for activation!
Request Payload
{
"dateOfBirth": "2026-10-19T21:27:55.383Z",
"emailAddress": "string",
"password": "string",
"firstName": "string",
"lastName": "string",
"otherNames": "string",
"phoneNo": "string",
"clientType": 0,
"referredBy": "string",
"bvn": "string",
"nin": "string",
"gender": "string",
"address1": "string",
"address2": "string",
"city": "string",
"state": "string",
"country": "string",
"nationality": "string",
"placeofbirth": "string",
"source": "string",
"pep": true,
"sourceOfIncomeName": "string",
"netWorth": 0,
"emailIndemnity": true
}
Request Fields Further information
| Field | API to call |
|---|---|
country |
/api/v1/getcountries |
nationality |
/api/v1/getcountries |
gender |
/api/v1/getgender |
Endpoint:
/api/v1/registernewcorporateclient
Method: POST
Register new corporate, after a successful registration a confirmation email is sent to the client for activation!
Request Payload
{
"companyName": "string",
"registeredCompanyNumber": "string",
"companyEmailAddress": "string",
"companyMobileNumber": "string",
"dateOfIncorporation": "2026-10-19T21:24:30.606Z",
"emailAddress": "string",
"password": "string",
"firstName": "string",
"lastName": "string",
"phoneNo": "string",
"clientType": 0,
"referredBy": "string",
"address1": "string",
"address2": "string",
"city": "string",
"state": "string",
"country": "str",
"source": "string"
}
Request Fields Further information
| Field | API to call |
|---|---|
country |
/api/v1/getcountries |
nationality |
/api/v1/getcountries |
Endpoint:
/api/v1/registerminor
Method: POST
Register new minor account, after a successful registration, a confirmation email is sent to the parent client
Request Payload
{
"dateOfBirth": "2026-10-19T21:42:59.758Z",
"emailAddress": "string",
"password": "string",
"firstName": "string",
"lastName": "string",
"otherNames": "string",
"phoneNo": "string",
"clientType": 0,
"referredBy": "string",
"bvn": "string",
"nin": "string",
"gender": "string",
"address1": "string",
"address2": "string",
"city": "string",
"state": "string",
"country": "string",
"nationality": "string",
"placeofbirth": "string",
"source": "string",
"pep": true,
"sourceOfIncomeName": "string",
"netWorth": 0,
"emailIndemnity": true,
"minorRelationshipId": 0
}
Request Fields Further information
| Field | API to call |
|---|---|
country |
/api/v1/getcountries |
nationality |
/api/v1/getcountries |
minorRelationshipId |
Existing client registration APIs
Endpoint:
/api/v1/registerexistingindividual
Method: POST
Register an existing individual account, after a successful registration, a confirmation email is sent to the client for activation!
Request Payload
{ "accountNo": "string", "password": "string" }
Request Fields Further information
| Field | Description |
|---|---|
accountNo |
Clients deluxe account number |
password |
password |
Endpoint:
/api/v1/registerexistingcorporateclient
Method: POST
Register an existing corporate or joint account, after a successful registration a confirmation email is sent to the client for activation!
Request Payload
{
"accountNo": "string",
"emailAddress": "string",
"password": "string",
"firstName": "string",
"lastName": "string",
"phoneNo": "string"
}
Request Fields Further information
| Field | Description |
|---|---|
accountNo |
Clients deluxe account number |
password |
password |
Endpoint:
/api/v1/activateaccount
Method: POST
Activate account for existing an individual, corporate or joint account after a successful activation, account can login! check your email, activation code is same as security code
Request Payload
{ "username": "string", "securityCode": "string" }
Request Fields Further information
| Field | Description |
|---|---|
username |
client email address or unique client deluxe username |
securityCode |
secure code sent to clients email address |
Endpoint:
/api/v1/resendactivationcode
Method: POST
Resend activation code for existing individual, corporate or joint account activation code will be sent to your account!
Request Payload
{ "userName": "string" }
Request Fields Further information
| Field | Description |
|---|---|
username |
client email address or unique client deluxe username |
Minor Account Management APIs
Endpoint:
/api/v1/getparentminorswitchableaccounts
Method: GET
Get parent and child account to switch
when in parent mood: Its gets all minor accounts attached to a parent
when in Minor mood: Its gets parent account attached to a minor
Endpoint:
/api/v1/switchtoaccount/{accountno}
Method: POST
Switch to parent or minor account
Query Param
{accountno}: "string"
Request Fields Further information
| Field | Description |
|---|---|
accountno |
Account number of the parent or minor account to switch to |
Authentication
Endpoint:
/api/v1/login
Method: POST
Login an individual account. If 2FA is enable, client will then proceed to perform 2falogin! after a successful login
Status Codes to target
- 200 : login successful
- 220 : security login required i.e 2FA login required
- 221 : account activation required
- 400 : Invalid login
- 500 : internal server error or oops! can't login account right now
Request Payload
{ "username": "string", "password": "string" }
Request Fields Further information
| Field | Description |
|---|---|
username |
client email address or unique client deluxe username |
password |
password |
Sample Response Payload
{
"fullName": "Lilian Nwachinekene Elizabeth",
"token": "CfDJ8KNCAPEgwctIpjLKeyZkAx_wj2z6HSqSqCt",
"userName": "godwin.amadi@itapsolutions.net",
"emailAddress": "aa@gmail.com",
"message": "Login Successful",
"clientType": "I",
"refreshEnabled": true,
"refreshToken": "m6xWVumzioqFZt6PA5ILRi4qY5MHh5qZSvTnfVWI-ZbF_tfXE45fNwoiuNkwb6ng4CAXp5_5Fc0c-ljIgKjoLQ",
"refreshTokenExpiresAt": "2026-10-23T02:11:49.5319267+00:00",
"awaitingApproval": true,
"clientGroupName": "Individual",
"clientGroupId": "1"
}
Endpoint:
/api/v1/login2fa
Method: POST
Verification login after a successful 2falogin, account can now perform actions
Status Codes to target
- 200 : 2falogin successful
- 400 : Invalid login
- 500 : internal server error or oops! can't login account right now
Request Payload
{ "username": "string", "securityCode": "string" }
Request Fields Further information
| Field | Description |
|---|---|
username |
client email address or unique client deluxe username |
securityCode |
secure code shared to clients email |
Endpoint:
/api/v1/auth/refresh
Method: POST
Refresh token
Request Payload
{ "refreshToken": "string" }
Request Fields Further information
| Field | Description |
|---|---|
refreshToken |
refresh token issued at a successful login |
Endpoint:
/api/v1/resetpasswordrequest
Method: POST
Initiate password reset If client has forgotten his password , initiate a password request.
Request Payload
{ "username": "string", "emailAddress": "string" }
Request Fields Further information
| Field | Description |
|---|---|
username |
clients email address or unique client xfund username |
emailAddress |
clients email address |
Endpoint:
/api/v1/resetpassword
Method: POST
Password reset
Request Payload
{ "token": "string", "password": "string" }
Request Fields Further information
| Field | Description |
|---|---|
token |
token received by client after resetpasswordrequest was initiated |
password |
password |
Endpoint:
/api/v1/changepassword
Method: POST
Change account password, while still logged in
Request Payload
{ "oldPassword": "string", "newPassword": "string" }
Request Fields Further information
| Field | Description |
|---|---|
oldPassword |
oldPassword |
newPassword |
newPassword |
Endpoint:
/api/v1/logout
Method: POST
- it Invalidates token
Transaction Pin Management
- A transaction PIN secures the client's wallet by verifying their identity before a withdrawal request is authorized. Clients must provide a valid transaction PIN to proceed with a withdrawal.
- This is disabled by default but when enabled from the application configuration, it becomes a mandatory field at the point of wallet withdrawal request
Endpoint:
/api/v1/hastransactionpin
Method: GET
- Get transaction pin status
- Checks whether the client has configured a transaction PIN on their account.
Respond Payload
{ "status": true, "message": "Pin exist" }
Endpoint:
/api/v1/createtransactionpin
Method: POST
Create transaction pin, after a successful creation a user will be able to debit a wallet completely Transaction Pin must be 4 digits in length
Request Payload
{ "accountNo": "string", "transactionPin": "string" }
Request Fields Further information
| Field | Description |
|---|---|
accountNo |
client xfund account number |
transactionPin |
desired transaction pin |
Endpoint:
/api/v1/changetransactionpin
Method: POST
Change transaction pin while logged in
Request Payload
{ "oldPassword": "string", "newPassword": "string" }
Request Fields Further information
| Field | Description |
|---|---|
oldPassword |
Old Password |
newPassword |
New Password |
Endpoint:
/api/v1/resettransactionpinrequest
Method: POST
Initiate transaction pin reset
Query Params
{username} : string
Request Fields Further information
| Field | Description |
|---|---|
username |
email address |
Endpoint:
/api/v1/resetpinrequest
Method: POST
Initiate transaction pin reset
Request Payload
{ "username": "string" }
Request Fields Further information
| Field | Description |
|---|---|
username |
email address |
Endpoint:
/api/v1/resettransactionpin
Method: POST
Transaction pin reset
Request Payload
{ "token": "string", "newTransactionPin": "string" }
Request Fields Further information
| Field | Description |
|---|---|
token |
token recived after transaction pin reset request was initiated |
newTransactionPin |
new transaction Pin |