requestId immediately and poll or listen for the result.
Endpoints Overview
POST /onboarduser
Initiates onboarding for a new user by submitting their 11-digit BVN for identity verification. The request is processed asynchronously - use the returnedrequestId to poll /onboardstatus, or wait for the user.onboarded webhook event.
Request Parameters
string
required
The user’s 11-digit Bank Verification Number. Must be exactly 11 numeric digits and must not belong to an existing Strails user.
bvn is the only field this endpoint accepts. Identity details (names, phone, date of birth) are resolved from the BVN record, and the user’s identifier is issued by Strails and returned as userHash - do not supply your own userId.Response
Store the
requestId returned here - you will need it to check onboarding status via /onboardstatus.Error Responses
POST /onboardstatus
Checks the current status of a pending user onboarding request using therequestId returned by /onboarduser. Poll this endpoint until status is "completed" or "failed", or handle the user.onboarded webhook event instead.
Request Parameters
string
required
The unique identifier returned by
/onboarduser when the registration was initiated.Response
status is "completed", use the userId from the response to call /getuserdetails and retrieve the user’s full profile.
Error Responses
POST /getuserdetails
Retrieves the full profile for a verified user, including their personal details pulled from BVN verification, all multi-chain wallet addresses provisioned by Strails, and any virtual accounts assigned to them.Request Parameters
string
required
The unique identifier for the user, returned as
userId in the /onboardstatus response once onboarding is complete.Response
Error Responses
POST /manageuserstatus
Activates or deactivates a user account. When deactivating, you must supply areason - this is recorded in the audit trail. Deactivated users cannot initiate transactions or receive deposits until reactivated.
Request Parameters
string
required
The unique identifier of the user whose status you want to change.
boolean
required
Set to
true to activate the account or false to deactivate it.string
A human-readable explanation for the status change. Required when
active is false. Recorded in the audit log for compliance purposes.Response
Error Responses
POST /listfintechusers
Returns a paginated list of all users belonging to your fintech, with summary wallet and virtual account information for each. Uselimit and offset to page through large user sets, and status to filter by account state.
Request Parameters
number
Number of users to return per page. Accepts values between
1 and 100. Defaults to 20.number
Number of users to skip before returning results. Use with
limit to paginate through the full list. Defaults to 0.string
Filter users by account state. Accepted values:
"active", "inactive", "all". Defaults to "all".string
Field to sort results by. Accepted values:
"createdAt", "verifiedAt". Defaults to "verifiedAt".string
Sort direction. Accepted values:
"asc", "desc". Defaults to "desc".Response
array
Array of user summary objects, one per verified user belonging to your fintech.
number
Total number of users matching the applied filter, regardless of
limit and offset.number
Total number of pages available at the current
limit setting.boolean
true if there are more users beyond the current page. Increment offset by limit to fetch the next page.boolean
true if the current offset is greater than 0, meaning a previous page exists.User Default Wallet
By default, cNGN disbursed for a user is delivered to the Strails-managed smart wallet provisioned during onboarding. Setting an external default wallet redirects those deliveries to an address you control on behalf of the user - useful when the user self-custodies or when your fintech settles into its own treasury addresses. The external default wallet applies to three delivery paths only:- cNGN disbursed from a deposit into the user’s permanent virtual account
- cNGN disbursed through
/cngnonramp - Tokens swept when
sweepToOfframpis enabled
POST /setuserdefaultwallet
Sets or replaces the external default wallet for a user. Calling this endpoint again with a different address overwrites the existing configuration. The address must be valid for the specified blockchain.Request Parameters
string
required
The unique identifier of the user the wallet belongs to.
string
required
The external wallet address that should receive the user’s cNGN deliveries.
string
required
The blockchain network the address belongs to (e.g.
base, eth, bsc).string
A human-readable name for the wallet (e.g.
User payout wallet).Response
string
Always
external for wallets registered through this endpoint.string
Whether the wallet is currently receiving deliveries.
active once set.string
Plain-language reminder of the delivery-only behaviour of external default wallets.
Error Responses
POST /getuserdefaultwallet
Retrieves the external default wallet currently configured for a user. ReturnsdefaultWallet: null when no external wallet is set - in that case cNGN is delivered to the user’s system smart wallet.
Request Parameters
string
required
The unique identifier of the user whose default wallet you want to retrieve.
Response
object
The configured external wallet.
null if the user has no external default wallet.Error Responses
DELETE /removeuserdefaultwallet
Clears the external default wallet for a user. Once removed, cNGN deliveries revert to the user’s Strails-managed smart wallet.Request Parameters
string
required
The unique identifier of the user whose default wallet you want to clear.
Response
Removing a default wallet only changes where future deliveries go. Balances already sent to the external address remain there.