Skip to main content
POST
Only relevant if you want dedicated KES virtual accounts. This flow is currently used only to register your business so that KES virtual accounts can be issued under your own legal entity in Kenya. It is not required for any other corridor (NGN, USD, ZAR, GHS, etc.); skip this page if you are not planning to collect KES via dedicated virtual accounts.
Register your business as its own SME in Kenya so that dedicated KES virtual accounts are issued under your legal entity instead of the shared Afriex default. This is a stateful, step-based flow driven by a single endpoint: the step field selects which payload shape goes in data.
Requires an API key with admin permission. Only Limited Liability Companies are supported today, so businessType must be 2 in the INITIATE step.

Flow

1

INITIATE

Send the business mobile, email, and businessType. Afriex creates an onboarding request, returns an onboardingRequestId, and sends a one-time passcode to the supplied mobile number.
2

CONFIRM_OTP

Post back the onboardingRequestId from step 1 and the 6-digit otp the customer received.
3

SUBMIT

Submit company details, directors[], and optional organizationShareholders[] / media[]. Every file field is an object key returned by Generate Upload URL. Upload each file first, then reference the returned key here.
Track progress in status: OTP_PENDING after INITIATE, DETAILS_PENDING after CONFIRM_OTP, and SUBMITTED after SUBMIT. The nextStep field tells you what to call next; expiresAt is the deadline for that step (OTP window after INITIATE, submit window after CONFIRM_OTP).

Mobile number format

Every mobile number, the applicant’s on INITIATE and each director’s on SUBMIT, must be a valid Kenyan number. Any of these forms is accepted and normalised to E.164: A non-Kenyan number is rejected with 422. Directors do not need a countryCode, it is derived from the number, and is ignored if you send one. Once submitted, poll Get SME Registration Status for the review outcome. Dedicated KES virtual accounts under your entity are issued only after the review reaches APPROVED.

Authorizations

x-api-key
string
header
required

Static business API key issued from the dashboard. A business can provision multiple API keys, each scoped to a configurable set of permissions (e.g. read transactions, create deposits, etc). Permissions are chosen per key at creation time in the dashboard and may be revoked by deleting the key. Requests made with a key that does not include the permission required by the target endpoint is rejected with a 401 Unauthorized response, the same response an unrecognised, malformed or revoked key returns. The API does not distinguish the two cases on the wire. Manage your keys and their permissions under Developer → API keys in the dashboard.

Headers

x-api-version
string

API version in ISO 8601 format. The only supported version is 2026-05-18, which is also the default when the header is omitted. Any other value is rejected with a 400 Bad Request.

Body

application/json
step
enum<string>
required

Selects the payload shape carried in data.

Available options:
INITIATE,
CONFIRM_OTP,
SUBMIT
data
object
required

Step-specific payload. INITIATE: mobile, email, businessType (must be 2 — only Limited Liability Companies are supported at this time). CONFIRM_OTP: onboardingRequestId, otp. SUBMIT: company details, directors[], and optional organizationShareholders[] / media[], where every file field is an object key returned by POST /api/v1/media/url.

Every mobile number (the applicant's on INITIATE and each director's on SUBMIT) must be a valid Kenyan number. Any of 254712345678, +254712345678, 0712345678 or 712345678 is accepted and normalised to E.164; a number that is not Kenyan is rejected with 422. Directors do not need a countryCode: it is derived from the number, and ignored if sent.

Response

Step processed successfully.

data
object