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