Registers a business as its own SME so that dedicated virtual accounts are issued under the business’s own legal entity rather than the shared default. The flow is stateful and driven by this single endpoint: the step field selects the payload carried in data. Call the steps in order: INITIATE (triggers a one-time passcode to the supplied mobile number), CONFIRM_OTP, then SUBMIT (company details, directors and documents). Upload each document first via POST /api/v1/media/url and pass the returned object keys in the SUBMIT payload. Calling INITIATE again while the registration is still waiting for its passcode returns that same registration with a 200. Requires the COMPLIANCE.KYB.SUBMIT key permission.
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.
Only Limited Liability Companies are supported today, so businessType must be 2 in the INITIATE step.
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).
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:
Format
Example
E.164 with +
+254712345678
International without +
254712345678
National with leading zero
0712345678
National without leading zero
712345678
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.
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. Manage your keys and
their permissions under Developer → API keys in the dashboard.
A request whose key does not carry the permission the target
endpoint requires is rejected with 401 Unauthorized, the same
response an unrecognised, malformed, revoked or disabled key
returns. The API does not distinguish the two cases on the wire.
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
INITIATE
CONFIRM_OTP
SUBMIT
The step field selects the payload carried in data, and it is case insensitive (submit is accepted as SUBMIT).
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.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Afriex Business API","colors":{"primary":"#0075FF","light":"#0075FF","dark":"#0075FF"},"logo":{"light":"https://mintcdn.com/afriex-5d97ad2e/-0c2OtRvdHYWM-P9/logo/light.svg?fit=max\u0026auto=format\u0026n=-0c2OtRvdHYWM-P9\u0026q=85\u0026s=de5afeca786c40704f98e96da7d2b1b9","dark":"https://mintcdn.com/afriex-5d97ad2e/-0c2OtRvdHYWM-P9/logo/dark.png?fit=max\u0026auto=format\u0026n=-0c2OtRvdHYWM-P9\u0026q=85\u0026s=cdc436ca4fd0df7233a6e3db67941a84"},"favicon":"https://mintcdn.com/afriex-5d97ad2e/-0c2OtRvdHYWM-P9/favicon.png?fit=max\u0026auto=format\u0026n=-0c2OtRvdHYWM-P9\u0026q=85\u0026s=48a66687297df9128bf997d1ad6f10cd","api":{"openapi":"api-reference/openapi.json"},"navbar":{"links":[{"href":"https://afriex.statuspage.io","label":"Status"},{"href":"mailto:support@afriex.com","label":"Support"},{"icon":"/images/play.svg","href":"https://god.gw.postman.com/run-collection/36243325-4caa2575-18c9-4374-892d-ea0dc5a9ec48?action=collection%2Ffork\u0026source=rip_markdown\u0026collection-url=entityId%3D36243325-4caa2575-18c9-4374-892d-ea0dc5a9ec48%26entityType%3Dcollection%26workspaceId%3D05fc21e0-e07f-4bc9-bab5-55be8ed3082d","label":"Run in Postman"}],"primary":{"type":"button","label":"Dashboard","href":"https://business.afriex.com/"}},"footer":{"socials":{"x":"https://x.com/afriexapp","github":"https://github.com/Afri-exchange","linkedin":"https://linkedin.com/company/afriex"}},"contextual":{"options":["copy","view","chatgpt","claude","mcp",{"title":"LLMs.txt","description":"Provide information to help LLMs use the full API docs site","icon":"robot","href":"https://docs.afriex.com/llms.txt"}],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Status","icon":"wave-pulse","href":"https://afriex.statuspage.io"},{"anchor":"Support","icon":"envelope","href":"mailto:support@afriex.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"afriex-5d97ad2e","hasAudioNarration":false,"actualSubdomain":"afriex-5d97ad2e","customDomains":["docs.afriex.com"],"gitSource":{"type":"github","owner":"afri-exchange","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae59bb6acf37ed506a0f8f5","collectionId":"490feb78-2920-4995-97be-af4ea87f5aed","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae59bb6acf37ed506a0f8f5"},"entitlements":{},"buildId":"6ae59bb6acf37ed506a0f8f5","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API reference","count":63},{"language":"default","tag":"Payment Batches","count":12},{"language":"default","tag":"Payment Methods","count":11},{"language":"default","tag":"Guides","count":8},{"language":"default","tag":"Customers","count":7},{"language":"default","tag":"Transactions","count":7},{"language":"default","tag":"Webhooks","count":6},{"language":"default","tag":"Requests and responses","count":5},{"language":"default","tag":"Overview","count":4},{"language":"default","tag":"Sandbox helpers","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".navbar-link a[href^=\"https://god.gw.postman.com/\"]{padding:.375rem .75rem;border-radius:.375rem;background-color:#ff6c37;color:#fff;font-weight:600}.navbar-link a[href^=\"https://god.gw.postman.com/\"]:hover{background-color:#e85a2a;color:#fff}#navbar div.flex-1:has(>nav .navbar-link){flex:none}"}],"page":{"pagePath":"api-reference/endpoint/sme-registration/register","slug":"/api-reference/endpoint/sme-registration/register","pageMetadata":{"title":"Register SME","openapi":"POST /api/v1/sme-registration","description":"Registers a business as its own SME so that dedicated virtual accounts are issued under the business's own legal entity rather than the shared default. The flow is stateful and driven by this single endpoint: the `step` field selects the payload carried in `data`. Call the steps in order: `INITIATE` (triggers a one-time passcode to the supplied mobile number), `CONFIRM_OTP`, then `SUBMIT` (company details, directors and documents). Upload each document first via `POST /api/v1/media/url` and pass the returned object keys in the `SUBMIT` payload. Calling `INITIATE` again while the registration is still waiting for its passcode returns that same registration with a `200`. Requires the `COMPLIANCE.KYB.SUBMIT` key permission.","href":"/api-reference/endpoint/sme-registration/register"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Registers a business as its own SME so that dedicated virtual accounts are issued under the business’s own legal entity rather than the shared default. The flow is stateful and driven by this single endpoint: the \", _jsx(_components.code, {\n children: \"step\"\n }), \" field selects the payload carried in \", _jsx(_components.code, {\n children: \"data\"\n }), \". Call the steps in order: \", _jsx(_components.code, {\n children: \"INITIATE\"\n }), \" (triggers a one-time passcode to the supplied mobile number), \", _jsx(_components.code, {\n children: \"CONFIRM_OTP\"\n }), \", then \", _jsx(_components.code, {\n children: \"SUBMIT\"\n }), \" (company details, directors and documents). Upload each document first via \", _jsx(_components.code, {\n children: \"POST /api/v1/media/url\"\n }), \" and pass the returned object keys in the \", _jsx(_components.code, {\n children: \"SUBMIT\"\n }), \" payload. Calling \", _jsx(_components.code, {\n children: \"INITIATE\"\n }), \" again while the registration is still waiting for its passcode returns that same registration with a \", _jsx(_components.code, {\n children: \"200\"\n }), \". Requires the \", _jsx(_components.code, {\n children: \"COMPLIANCE.KYB.SUBMIT\"\n }), \" key permission.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Note,Step,Steps,Table,Tip,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Only relevant if you want dedicated KES virtual accounts.`}),` This flow is currently used only to register your business so that `,_jsx(_components.strong,{children:`KES virtual accounts`}),` can be issued under your own legal entity in Kenya. It is `,_jsx(_components.strong,{children:`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.`]})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Only Limited Liability Companies are supported today, so `,_jsx(_components.code,{children:`businessType`}),` must be `,_jsx(_components.code,{children:`2`}),` in the `,_jsx(_components.code,{children:`INITIATE`}),` step.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`flow`,children:`Flow`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`INITIATE`,children:_jsxs(_components.p,{children:[`Send the business `,_jsx(_components.code,{children:`mobile`}),`, `,_jsx(_components.code,{children:`email`}),`, and `,_jsx(_components.code,{children:`businessType`}),`. Afriex creates an onboarding request, returns an `,_jsx(_components.code,{children:`onboardingRequestId`}),`, and sends a one-time passcode to the supplied mobile number.`]})}),_jsx(Step,{title:`CONFIRM_OTP`,children:_jsxs(_components.p,{children:[`Post back the `,_jsx(_components.code,{children:`onboardingRequestId`}),` from step 1 and the 6-digit `,_jsx(_components.code,{children:`otp`}),` the customer received.`]})}),_jsx(Step,{title:`SUBMIT`,children:_jsxs(_components.p,{children:[`Submit company details, `,_jsx(_components.code,{children:`directors[]`}),`, and optional `,_jsx(_components.code,{children:`organizationShareholders[]`}),` / `,_jsx(_components.code,{children:`media[]`}),`. Every file field is an `,_jsx(_components.strong,{children:`object key`}),` returned by `,_jsx(_components.a,{href:`/api-reference/endpoint/media/generate-upload-url`,children:`Generate Upload URL`}),`. Upload each file first, then reference the returned `,_jsx(_components.code,{children:`key`}),` here.`]})})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Track progress in `,_jsx(_components.code,{children:`status`}),`: `,_jsx(_components.code,{children:`OTP_PENDING`}),` after `,_jsx(_components.code,{children:`INITIATE`}),`, `,_jsx(_components.code,{children:`DETAILS_PENDING`}),` after `,_jsx(_components.code,{children:`CONFIRM_OTP`}),`, and `,_jsx(_components.code,{children:`SUBMITTED`}),` after `,_jsx(_components.code,{children:`SUBMIT`}),`. The `,_jsx(_components.code,{children:`nextStep`}),` field tells you what to call next; `,_jsx(_components.code,{children:`expiresAt`}),` is the deadline for that step (OTP window after `,_jsx(_components.code,{children:`INITIATE`}),`, submit window after `,_jsx(_components.code,{children:`CONFIRM_OTP`}),`).`]})}),`\n`,_jsx(Heading,{level:`2`,id:`mobile-number-format`,children:`Mobile number format`}),`\n`,_jsxs(_components.p,{children:[`Every mobile number, the applicant’s on `,_jsx(_components.code,{children:`INITIATE`}),` and each director’s on `,_jsx(_components.code,{children:`SUBMIT`}),`, must be a valid `,_jsx(_components.strong,{children:`Kenyan`}),` number. Any of these forms is accepted and normalised to E.164:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Format`}),_jsx(_components.th,{children:`Example`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`E.164 with `,_jsx(_components.code,{children:`+`})]}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`+254712345678`})})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`International without `,_jsx(_components.code,{children:`+`})]}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`254712345678`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`National with leading zero`}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0712345678`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`National without leading zero`}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`712345678`})})]})]})]}),`\n`,_jsxs(_components.p,{children:[`A non-Kenyan number is rejected with `,_jsx(_components.code,{children:`422`}),`. Directors do not need a `,_jsx(_components.code,{children:`countryCode`}),`, it is derived from the number, and is ignored if you send one.`]}),`\n`,_jsxs(_components.p,{children:[`Once submitted, poll `,_jsx(_components.a,{href:`/api-reference/endpoint/sme-registration/status`,children:`Get SME Registration Status`}),` for the review outcome. Dedicated KES virtual accounts under your entity are issued only after the review reaches `,_jsx(_components.code,{children:`APPROVED`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Register SME","openapi":"POST /api/v1/sme-registration","description":"Registers a business as its own SME so that dedicated virtual accounts are issued under the business's own legal entity rather than the shared default. The flow is stateful and driven by this single endpoint: the `step` field selects the payload carried in `data`. Call the steps in order: `INITIATE` (triggers a one-time passcode to the supplied mobile number), `CONFIRM_OTP`, then `SUBMIT` (company details, directors and documents). Upload each document first via `POST /api/v1/media/url` and pass the returned object keys in the `SUBMIT` payload. Calling `INITIATE` again while the registration is still waiting for its passcode returns that same registration with a `200`. Requires the `COMPLIANCE.KYB.SUBMIT` key permission.","href":"/api-reference/endpoint/sme-registration/register"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Flow","slug":"flow","depth":2,"children":[]},{"title":"Mobile number format","slug":"mobile-number-format","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"smeRegistration","summary":"Register a business as an SME (step-based)","description":"Registers a business as its own SME so that dedicated virtual accounts are issued under the business's own legal entity rather than the shared default. The flow is stateful and driven by this single endpoint: the `step` field selects the payload carried in `data`. Call the steps in order: `INITIATE` (triggers a one-time passcode to the supplied mobile number), `CONFIRM_OTP`, then `SUBMIT` (company details, directors and documents). Upload each document first via `POST /api/v1/media/url` and pass the returned object keys in the `SUBMIT` payload. Calling `INITIATE` again while the registration is still waiting for its passcode returns that same registration with a `200`. Requires the `COMPLIANCE.KYB.SUBMIT` key permission.","tags":["SME Registration"],"requestBody":"ddf5b1d1-5c17-4c9a-836e-d1a961dfb465","responses":{"200":"93d71280-75af-447e-aabd-d7f1e5fbe4b8","400":"45fa069a-b7c6-487d-afa4-495d4233e9cc","401":"2ecd7b04-94a2-4822-8c14-9b98284703cf","422":"59104e12-643c-483e-aef2-4a2264bb3283","500":"e972bc08-b694-48f8-b59e-0a352ea1c597","503":"f4c7613b-0c00-4531-89be-5058e6411b8a"},"method":"post","type":"path","servers":["3298ae0b-7333-4b60-8d1b-b6d15dc0a1b5","9fc63886-0a83-446b-9588-6621dfbf98da"],"security":["c6e6cee1-f5cd-49d4-aecb-1d77573277f3"],"path":"/api/v1/sme-registration","baseUrlOptions":["https://sandbox.api.afriex.com","https://api.afriex.com"],"title":"Register a business as an SME (step-based)","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"4134473d-5313-4803-8bee-9f41e912b325":{"name":"x-api-version","in":"header","required":false,"description":"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`.","schema":{"type":"string","isRequired":false,"description":"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`.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"INITIATE","description":"The `step` field selects the payload carried in `data`, and it is case insensitive (`submit` is accepted as `SUBMIT`).\n\nEvery 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.","required":["step","data"],"properties":{"step":{"type":"string","const":"INITIATE","isRequired":true,"uniqueKey":"oneOf.0.step","typeLabel":"string"},"data":{"type":"object","required":["mobile","email","businessType"],"properties":{"mobile":{"type":"string","description":"A valid Kenyan mobile number.","isRequired":true,"uniqueKey":"oneOf.0.data.mobile","typeLabel":"string"},"email":{"type":"string","format":"email","isRequired":true,"uniqueKey":"oneOf.0.data.email","typeLabel":"string\u003cemail>"},"businessType":{"type":"integer","enum":[2],"description":"Must be `2`. Only Limited Liability Companies are supported at this time.","isRequired":true,"uniqueKey":"oneOf.0.data.businessType","typeLabel":"enum\u003cinteger>"}},"isRequired":true,"uniqueKey":"oneOf.0.data","typeLabel":"object"}},"uniqueKey":"oneOf.0","typeLabel":"INITIATE · object"},{"type":"object","title":"CONFIRM_OTP","description":"The `step` field selects the payload carried in `data`, and it is case insensitive (`submit` is accepted as `SUBMIT`).\n\nEvery 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.","required":["step","data"],"properties":{"step":{"type":"string","const":"CONFIRM_OTP","isRequired":true,"uniqueKey":"oneOf.1.step","typeLabel":"string"},"data":{"type":"object","required":["onboardingRequestId","otp"],"properties":{"onboardingRequestId":{"type":"string","description":"The id returned by the `INITIATE` step.","isRequired":true,"uniqueKey":"oneOf.1.data.onboardingRequestId","typeLabel":"string"},"otp":{"type":"string","pattern":"^[0-9]{6}$","description":"The 6-digit one-time passcode, as a string.","isRequired":true,"uniqueKey":"oneOf.1.data.otp","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.1.data","typeLabel":"object"}},"uniqueKey":"oneOf.1","typeLabel":"CONFIRM_OTP · object"},{"type":"object","title":"SUBMIT","description":"The `step` field selects the payload carried in `data`, and it is case insensitive (`submit` is accepted as `SUBMIT`).\n\nEvery 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.","required":["step","data"],"properties":{"step":{"type":"string","const":"SUBMIT","isRequired":true,"uniqueKey":"oneOf.2.step","typeLabel":"string"},"data":{"type":"object","description":"The `data` payload of the `SUBMIT` step.","required":["onboardingRequestId","companyName","certNumber","kraPin","operatingMode","businessAddress","businessIndustry","directors"],"properties":{"onboardingRequestId":{"type":"string","minLength":1,"description":"The id returned by the `INITIATE` step.","isRequired":true,"uniqueKey":"oneOf.2.data.onboardingRequestId","typeLabel":"string"},"companyName":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.2.data.companyName","typeLabel":"string"},"certNumber":{"type":"string","minLength":1,"description":"Company registration certificate number.","isRequired":true,"uniqueKey":"oneOf.2.data.certNumber","typeLabel":"string"},"kraPin":{"type":"string","minLength":1,"description":"The company's KRA PIN.","isRequired":true,"uniqueKey":"oneOf.2.data.kraPin","typeLabel":"string"},"operatingMode":{"type":"integer","enum":[1,2,3,4],"isRequired":true,"uniqueKey":"oneOf.2.data.operatingMode","typeLabel":"enum\u003cinteger>"},"businessAddress":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.2.data.businessAddress","typeLabel":"string"},"businessIndustry":{"type":"integer","minimum":1,"maximum":21,"description":"Industry code. With `21`, `specifyIndustry` is required.","isRequired":true,"uniqueKey":"oneOf.2.data.businessIndustry","typeLabel":"integer"},"directors":{"type":"array","minItems":1,"items":{"type":"object","required":["idType","idNumber","mobile","firstName","lastName","kraPin","idFrontSideFileKey","idFrontSideFileType","idBackSideFileKey","idBackSideFileType","selfieFileKey","selfieFileType","kraPinFileKey","kraPinFileType"],"properties":{"idType":{"type":"string","enum":["101","102","103"],"isRequired":true,"uniqueKey":"oneOf.2.data.directors.items.[INDEX].idType","typeLabel":"enum\u003cstring>"},"idNumber":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.2.data.directors.items.[INDEX].idNumber","typeLabel":"string"},"mobile":{"type":"string","description":"A valid Kenyan mobile number.","isRequired":true,"uniqueKey":"oneOf.2.data.directors.items.[INDEX].mobile","typeLabel":"string"},"firstName":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.2.data.directors.items.[INDEX].firstName","typeLabel":"string"},"lastName":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.2.data.directors.items.[INDEX].lastName","typeLabel":"string"},"kraPin":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.2.data.directors.items.[INDEX].kraPin","typeLabel":"string"},"idFrontSideFileKey":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.2.data.directors.items.[INDEX].idFrontSideFileKey","typeLabel":"string"},"idFrontSideFileType":{"type":"string","enum":["image","pdf"],"isRequired":true,"uniqueKey":"oneOf.2.data.directors.items.[INDEX].idFrontSideFileType","typeLabel":"enum\u003cstring>"},"idBackSideFileKey":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.2.data.directors.items.[INDEX].idBackSideFileKey","typeLabel":"string"},"idBackSideFileType":{"type":"string","enum":["image","pdf"],"isRequired":true,"uniqueKey":"oneOf.2.data.directors.items.[INDEX].idBackSideFileType","typeLabel":"enum\u003cstring>"},"selfieFileKey":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.2.data.directors.items.[INDEX].selfieFileKey","typeLabel":"string"},"selfieFileType":{"type":"string","enum":["image","pdf"],"isRequired":true,"uniqueKey":"oneOf.2.data.directors.items.[INDEX].selfieFileType","typeLabel":"enum\u003cstring>"},"kraPinFileKey":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.2.data.directors.items.[INDEX].kraPinFileKey","typeLabel":"string"},"kraPinFileType":{"type":"string","enum":["image","pdf"],"isRequired":true,"uniqueKey":"oneOf.2.data.directors.items.[INDEX].kraPinFileType","typeLabel":"enum\u003cstring>"},"gender":{"type":"integer","enum":[0,1],"uniqueKey":"oneOf.2.data.directors.items.[INDEX].gender","typeLabel":"enum\u003cinteger>"},"email":{"type":"string","format":"email","uniqueKey":"oneOf.2.data.directors.items.[INDEX].email","typeLabel":"string\u003cemail>"},"middleName":{"type":"string","uniqueKey":"oneOf.2.data.directors.items.[INDEX].middleName","typeLabel":"string"}},"uniqueKey":"oneOf.2.data.directors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.2.data.directors","typeLabel":"object[]"},"specifyIndustry":{"type":"string","minLength":1,"description":"Required when `businessIndustry` is `21`.","uniqueKey":"oneOf.2.data.specifyIndustry","typeLabel":"string"},"organizationShareholders":{"type":"array","items":{"type":"object","required":["companyName","registrationFileKey","registrationFileType"],"properties":{"companyName":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.2.data.organizationShareholders.items.[INDEX].companyName","typeLabel":"string"},"registrationFileKey":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.2.data.organizationShareholders.items.[INDEX].registrationFileKey","typeLabel":"string"},"registrationFileType":{"type":"string","enum":["image","pdf"],"isRequired":true,"uniqueKey":"oneOf.2.data.organizationShareholders.items.[INDEX].registrationFileType","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.2.data.organizationShareholders.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.2.data.organizationShareholders","typeLabel":"object[]"},"media":{"type":"array","items":{"type":"object","required":["fileKey","mediaType"],"properties":{"fileKey":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.2.data.media.items.[INDEX].fileKey","typeLabel":"string"},"mediaType":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.2.data.media.items.[INDEX].mediaType","typeLabel":"string"},"contentType":{"type":"string","enum":["pdf","image"],"uniqueKey":"oneOf.2.data.media.items.[INDEX].contentType","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.2.data.media.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.2.data.media","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"oneOf.2.data","typeLabel":"object"}},"uniqueKey":"oneOf.2","typeLabel":"SUBMIT · object"}],"uniqueKey":"","typeLabel":"INITIATE · object | CONFIRM_OTP · object | SUBMIT · object"},"examples":{"initiate":{"title":"initiate","value":{"step":"INITIATE","data":{"mobile":"254712345678","email":"admin@example.com","businessType":2}}},"confirm-otp":{"title":"confirm-otp","value":{"step":"CONFIRM_OTP","data":{"onboardingRequestId":"68f0c2a1e4b0a1b2c3d4e5f6","otp":"483921"}}},"submit":{"title":"submit","value":{"step":"SUBMIT","data":{"onboardingRequestId":"68f0c2a1e4b0a1b2c3d4e5f6","companyName":"Acme Payments Ltd","certNumber":"PVT-ABC1234","kraPin":"P051234567A","operatingMode":2,"businessAddress":"12 Kimathi Street, Nairobi","businessIndustry":21,"specifyIndustry":"Payment services","directors":[{"idType":"101","idNumber":"12345678","gender":1,"email":"jane@example.com","mobile":"254712345678","firstName":"Jane","lastName":"Doe","kraPin":"A001234567B","idFrontSideFileKey":"64f0c2a1e4b0a1b2c3d4e5f6/id-front.png","idFrontSideFileType":"image","idBackSideFileKey":"64f0c2a1e4b0a1b2c3d4e5f6/id-back.png","idBackSideFileType":"image","selfieFileKey":"64f0c2a1e4b0a1b2c3d4e5f6/selfie.png","selfieFileType":"image","kraPinFileKey":"64f0c2a1e4b0a1b2c3d4e5f6/kra-pin.pdf","kraPinFileType":"pdf"}],"organizationShareholders":[{"companyName":"Acme Holdings Ltd","registrationFileKey":"64f0c2a1e4b0a1b2c3d4e5f6/holdings-cert.pdf","registrationFileType":"pdf"}],"media":[{"fileKey":"64f0c2a1e4b0a1b2c3d4e5f6/cert-of-incorporation.pdf","mediaType":"certificate_of_incorporation","contentType":"pdf"}]}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"93d71280-75af-447e-aabd-d7f1e5fbe4b8":{"description":"Step processed successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"onboardingRequestId":{"type":"string","uniqueKey":"data.onboardingRequestId","typeLabel":"string"},"step":{"type":"string","enum":["INITIATE","CONFIRM_OTP","SUBMIT"],"uniqueKey":"data.step","typeLabel":"enum\u003cstring>"},"status":{"type":"string","enum":["OTP_PENDING","DETAILS_PENDING","SUBMITTED","REJECTED","EXPIRED"],"uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"nextStep":{"oneOf":[{"type":"string","enum":["CONFIRM_OTP","SUBMIT",null],"uniqueKey":"data.nextStep.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["CONFIRM_OTP","SUBMIT",null],"uniqueKey":"data.nextStep.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.nextStep","typeLabel":"enum\u003cstring> | null"},"expiresAt":{"type":"string","format":"date-time","description":"Deadline for the current step: OTP window after INITIATE, submit window after CONFIRM_OTP.","uniqueKey":"data.expiresAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"onboardingRequestId":"\u003cstring>","step":"INITIATE","status":"OTP_PENDING","nextStep":"CONFIRM_OTP","expiresAt":"2023-11-07T05:31:56Z"}}}},"exampleType":"generated"}},"exampleType":"generated"},"45fa069a-b7c6-487d-afa4-495d4233e9cc":{"description":"A step called out of order, an expired OTP, or a duplicate active registration. Malformed field values return `422` instead.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.","uniqueKey":"code","typeLabel":"string"},"error":{"type":"string","description":"Human-readable error message.","uniqueKey":"error","typeLabel":"string"},"details":{"type":"object","properties":{"errorMessage":{"type":"string","description":"Detailed/technical error message.","uniqueKey":"details.errorMessage","typeLabel":"string"},"friendlyMessage":{"type":"string","description":"User-facing error message safe to display.","uniqueKey":"details.friendlyMessage","typeLabel":"string"},"data":{"type":"object","description":"Optional caller-safe context for the error. On a customer-create uniqueness conflict (EMAIL_ALREADY_EXISTS / PHONE_NUMBER_ALREADY_EXISTS) this carries the existing customer's id, so you can adopt it without a follow-up lookup.","properties":{"customerId":{"type":"string","description":"Id of the existing customer (on a create conflict).","uniqueKey":"details.data.customerId","typeLabel":"string"}},"uniqueKey":"details.data","typeLabel":"object"}},"uniqueKey":"details","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","error":"\u003cstring>","details":{"errorMessage":"\u003cstring>","friendlyMessage":"\u003cstring>","data":{"customerId":"\u003cstring>"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"2ecd7b04-94a2-4822-8c14-9b98284703cf":{"description":"Unauthorized - Invalid business API key.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.","uniqueKey":"code","typeLabel":"string"},"error":{"type":"string","description":"Human-readable error message.","uniqueKey":"error","typeLabel":"string"},"details":{"type":"object","properties":{"errorMessage":{"type":"string","description":"Detailed/technical error message.","uniqueKey":"details.errorMessage","typeLabel":"string"},"friendlyMessage":{"type":"string","description":"User-facing error message safe to display.","uniqueKey":"details.friendlyMessage","typeLabel":"string"},"data":{"type":"object","description":"Optional caller-safe context for the error. On a customer-create uniqueness conflict (EMAIL_ALREADY_EXISTS / PHONE_NUMBER_ALREADY_EXISTS) this carries the existing customer's id, so you can adopt it without a follow-up lookup.","properties":{"customerId":{"type":"string","description":"Id of the existing customer (on a create conflict).","uniqueKey":"details.data.customerId","typeLabel":"string"}},"uniqueKey":"details.data","typeLabel":"object"}},"uniqueKey":"details","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","error":"\u003cstring>","details":{"errorMessage":"\u003cstring>","friendlyMessage":"\u003cstring>","data":{"customerId":"\u003cstring>"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"59104e12-643c-483e-aef2-4a2264bb3283":{"description":"Request failed schema validation. `details.friendlyMessage` carries the specific field error.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.","uniqueKey":"code","typeLabel":"string"},"error":{"type":"string","description":"Human-readable error message.","uniqueKey":"error","typeLabel":"string"},"details":{"type":"object","properties":{"errorMessage":{"type":"string","description":"Detailed/technical error message.","uniqueKey":"details.errorMessage","typeLabel":"string"},"friendlyMessage":{"type":"string","description":"User-facing error message safe to display.","uniqueKey":"details.friendlyMessage","typeLabel":"string"},"data":{"type":"object","description":"Optional caller-safe context for the error. On a customer-create uniqueness conflict (EMAIL_ALREADY_EXISTS / PHONE_NUMBER_ALREADY_EXISTS) this carries the existing customer's id, so you can adopt it without a follow-up lookup.","properties":{"customerId":{"type":"string","description":"Id of the existing customer (on a create conflict).","uniqueKey":"details.data.customerId","typeLabel":"string"}},"uniqueKey":"details.data","typeLabel":"object"}},"uniqueKey":"details","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","error":"\u003cstring>","details":{"errorMessage":"\u003cstring>","friendlyMessage":"\u003cstring>","data":{"customerId":"\u003cstring>"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"e972bc08-b694-48f8-b59e-0a352ea1c597":{"description":"Server error.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.","uniqueKey":"code","typeLabel":"string"},"error":{"type":"string","description":"Human-readable error message.","uniqueKey":"error","typeLabel":"string"},"details":{"type":"object","properties":{"errorMessage":{"type":"string","description":"Detailed/technical error message.","uniqueKey":"details.errorMessage","typeLabel":"string"},"friendlyMessage":{"type":"string","description":"User-facing error message safe to display.","uniqueKey":"details.friendlyMessage","typeLabel":"string"},"data":{"type":"object","description":"Optional caller-safe context for the error. On a customer-create uniqueness conflict (EMAIL_ALREADY_EXISTS / PHONE_NUMBER_ALREADY_EXISTS) this carries the existing customer's id, so you can adopt it without a follow-up lookup.","properties":{"customerId":{"type":"string","description":"Id of the existing customer (on a create conflict).","uniqueKey":"details.data.customerId","typeLabel":"string"}},"uniqueKey":"details.data","typeLabel":"object"}},"uniqueKey":"details","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"serverError":{"title":"serverError","value":{"code":"INTERNAL_SERVER_ERROR","error":"It's not you, it's us, please reach out to support","details":{}}}},"exampleType":"examples"}},"exampleType":"examples"},"f4c7613b-0c00-4531-89be-5058e6411b8a":{"description":"Temporarily unavailable: an upstream service failed or timed out, or the API is momentarily offline. Retry with backoff and honour the Retry-After header when present.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.","uniqueKey":"code","typeLabel":"string"},"error":{"type":"string","description":"Human-readable error message.","uniqueKey":"error","typeLabel":"string"},"details":{"type":"object","properties":{"errorMessage":{"type":"string","description":"Detailed/technical error message.","uniqueKey":"details.errorMessage","typeLabel":"string"},"friendlyMessage":{"type":"string","description":"User-facing error message safe to display.","uniqueKey":"details.friendlyMessage","typeLabel":"string"},"data":{"type":"object","description":"Optional caller-safe context for the error. On a customer-create uniqueness conflict (EMAIL_ALREADY_EXISTS / PHONE_NUMBER_ALREADY_EXISTS) this carries the existing customer's id, so you can adopt it without a follow-up lookup.","properties":{"customerId":{"type":"string","description":"Id of the existing customer (on a create conflict).","uniqueKey":"details.data.customerId","typeLabel":"string"}},"uniqueKey":"details.data","typeLabel":"object"}},"uniqueKey":"details","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"serviceUnavailable":{"title":"serviceUnavailable","value":{"code":"EXTERNAL_REQUEST_ERROR","error":"External request error","details":{}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"c6e6cee1-f5cd-49d4-aecb-1d77573277f3":{"ApiKey":{"type":"apiKey","in":"header","name":"x-api-key","description":"Static business API key issued from the dashboard. A business can\nprovision **multiple API keys**, each scoped to a configurable set\nof **permissions** (e.g. read transactions, create deposits, etc).\nPermissions are chosen per key at creation time in the dashboard\nand may be revoked by deleting the key. Manage your keys and\ntheir permissions under **Developer → API keys** in the dashboard.\n\nA request whose key does not carry the permission the target\nendpoint requires is rejected with `401 Unauthorized`, the same\nresponse an unrecognised, malformed, revoked or disabled key\nreturns. The API does not distinguish the two cases on the wire.\n\nSee the [Permissions reference](https://docs.afriex.com/api-reference/permissions)\nfor the permission each endpoint requires.","scopes":[],"schemeName":"ApiKey"}}},"servers":{"3298ae0b-7333-4b60-8d1b-b6d15dc0a1b5":{"url":"https://sandbox.api.afriex.com","description":"Sandbox Base URL"},"9fc63886-0a83-446b-9588-6621dfbf98da":{"url":"https://api.afriex.com","description":"Production Base URL"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","description":"Static business API key issued from the dashboard. A business can\nprovision **multiple API keys**, each scoped to a configurable set\nof **permissions** (e.g. read transactions, create deposits, etc).\nPermissions are chosen per key at creation time in the dashboard\nand may be revoked by deleting the key. Manage your keys and\ntheir permissions under **Developer → API keys** in the dashboard.\n\nA request whose key does not carry the permission the target\nendpoint requires is rejected with `401 Unauthorized`, the same\nresponse an unrecognised, malformed, revoked or disabled key\nreturns. The API does not distinguish the two cases on the wire.\n\nSee the [Permissions reference](https://docs.afriex.com/api-reference/permissions)\nfor the permission each endpoint requires.","scopes":[],"schemeName":"ApiKey"},"schema":{"title":"x-api-key","type":"string","description":"Static business API key issued from the dashboard. A business can\nprovision **multiple API keys**, each scoped to a configurable set\nof **permissions** (e.g. read transactions, create deposits, etc).\nPermissions are chosen per key at creation time in the dashboard\nand may be revoked by deleting the key. Manage your keys and\ntheir permissions under **Developer → API keys** in the dashboard.\n\nA request whose key does not carry the permission the target\nendpoint requires is rejected with `401 Unauthorized`, the same\nresponse an unrecognised, malformed, revoked or disabled key\nreturns. The API does not distinguish the two cases on the wire.\n\nSee the [Permissions reference](https://docs.afriex.com/api-reference/permissions)\nfor the permission each endpoint requires.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKey","name":"x-api-key"}],"title":"ApiKey"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"afriex-5d97ad2e","siteName":"Afriex Business API","title":"Register SME - Afriex Business API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-16T16:52:01.333Z","originalFileLocation":"api-reference/endpoint/sme-registration/register.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Registers a business as its own SME so that dedicated virtual accounts are issued under the business\u0026#x27;s own legal entity rather than the shared default. The flow is stateful and driven by this single endpoint: the step field selects the payload carried in data. Call the steps in order: INITIATE (triggers a one-time passcode to the supplied mobile number), CONFIRM_OTP, then SUBMIT (company details, directors and documents). Upload each document first via POST /api/v1/media/url and pass the returned object keys in the SUBMIT payload. Calling INITIATE again while the registration is still waiting for its passcode returns that same registration with a 200. Requires the COMPLIANCE.KYB.SUBMIT key permission.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Afriex Business API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Register SME - Afriex Business API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Registers a business as its own SME so that dedicated virtual accounts are issued under the business\u0026#x27;s own legal entity rather than the shared default. The flow is stateful and driven by this single endpoint: the step field selects the payload carried in data. Call the steps in order: INITIATE (triggers a one-time passcode to the supplied mobile number), CONFIRM_OTP, then SUBMIT (company details, directors and documents). Upload each document first via POST /api/v1/media/url and pass the returned object keys in the SUBMIT payload. Calling INITIATE again while the registration is still waiting for its passcode returns that same registration with a 200. Requires the COMPLIANCE.KYB.SUBMIT key permission.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Afriex Business API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.afriex.com/api-reference/endpoint/sme-registration/register\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://afriex-5d97ad2e.mintlify.app/_mintlify/api/og/v2?division=SME+Registration\u0026amp;title=Register+SME\u0026amp;description=Registers+a+business+as+its+own+SME+so+that+dedicated+virtual+accounts+are+issued+under+the+business%27s+own+legal+entity+rather+than+the+shared+default.+The+flow\u0026amp;theme=c5e7ac6707206fe4b7db0208\u0026amp;signature=5ca566bd8934910d8dcbbfb254d021bbfe80da3281936e0b1b1af0d212cfd91c\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Register SME - Afriex Business API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Registers a business as its own SME so that dedicated virtual accounts are issued under the business\u0026#x27;s own legal entity rather than the shared default. The flow is stateful and driven by this single endpoint: the step field selects the payload carried in data. Call the steps in order: INITIATE (triggers a one-time passcode to the supplied mobile number), CONFIRM_OTP, then SUBMIT (company details, directors and documents). Upload each document first via POST /api/v1/media/url and pass the returned object keys in the SUBMIT payload. Calling INITIATE again while the registration is still waiting for its passcode returns that same registration with a 200. Requires the COMPLIANCE.KYB.SUBMIT key permission.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://afriex-5d97ad2e.mintlify.app/_mintlify/api/og/v2?division=SME+Registration\u0026amp;title=Register+SME\u0026amp;description=Registers+a+business+as+its+own+SME+so+that+dedicated+virtual+accounts+are+issued+under+the+business%27s+own+legal+entity+rather+than+the+shared+default.+The+flow\u0026amp;theme=c5e7ac6707206fe4b7db0208\u0026amp;signature=5ca566bd8934910d8dcbbfb254d021bbfe80da3281936e0b1b1af0d212cfd91c\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/afriex-5d97ad2e/ZexKAY-mYWAtBk6G/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Afriex Business API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0075FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.afriex.com/api-reference/endpoint/sme-registration/register\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/endpoint/sme-registration/register.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.afriex.com/#organization\",\"name\":\"Afriex Business API\",\"url\":\"https://docs.afriex.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/afriex-5d97ad2e/-0c2OtRvdHYWM-P9/logo/light.svg?fit=max\u0026auto=format\u0026n=-0c2OtRvdHYWM-P9\u0026q=85\u0026s=de5afeca786c40704f98e96da7d2b1b9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.afriex.com#website\",\"name\":\"Afriex Business API\",\"url\":\"https://docs.afriex.com\",\"publisher\":{\"@id\":\"https://docs.afriex.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.afriex.com/api-reference/endpoint/sme-registration/register#webpage\",\"url\":\"https://docs.afriex.com/api-reference/endpoint/sme-registration/register\",\"name\":\"Register SME\",\"description\":\"Registers a business as its own SME so that dedicated virtual accounts are issued under the business's own legal entity rather than the shared default. The flow is stateful and driven by this single endpoint: the step field selects the payload carried in data. Call the steps in order: INITIATE (triggers a one-time passcode to the supplied mobile number), CONFIRM_OTP, then SUBMIT (company details, directors and documents). Upload each document first via POST /api/v1/media/url and pass the returned object keys in the SUBMIT payload. Calling INITIATE again while the registration is still waiting for its passcode returns that same registration with a 200. Requires the COMPLIANCE.KYB.SUBMIT key permission.\",\"dateModified\":\"2026-10-16T16:52:01.333Z\",\"isPartOf\":{\"@id\":\"https://docs.afriex.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.afriex.com/api-reference/endpoint/sme-registration/register#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.afriex.com/api-reference/endpoint/sme-registration/register#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Afriex Business API\",\"item\":\"https://docs.afriex.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Register SME\",\"item\":\"https://docs.afriex.com/api-reference/endpoint/sme-registration/register\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.afriex.com/api-reference/endpoint/sme-registration/register#apireference\",\"headline\":\"Register SME\",\"name\":\"Register SME\",\"description\":\"Registers a business as its own SME so that dedicated virtual accounts are issued under the business's own legal entity rather than the shared default. The flow is stateful and driven by this single endpoint: the step field selects the payload carried in data. Call the steps in order: INITIATE (triggers a one-time passcode to the supplied mobile number), CONFIRM_OTP, then SUBMIT (company details, directors and documents). Upload each document first via POST /api/v1/media/url and pass the returned object keys in the SUBMIT payload. Calling INITIATE again while the registration is still waiting for its passcode returns that same registration with a 200. Requires the COMPLIANCE.KYB.SUBMIT key permission.\",\"url\":\"https://docs.afriex.com/api-reference/endpoint/sme-registration/register\",\"mainEntityOfPage\":{\"@id\":\"https://docs.afriex.com/api-reference/endpoint/sme-registration/register#webpage\"},\"dateModified\":\"2026-10-16T16:52:01.333Z\",\"publisher\":{\"@id\":\"https://docs.afriex.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.afriex.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Afriex Business API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Afriex Business API","nav":{"global":{"anchors":[{"anchor":"Status","icon":"wave-pulse","href":"https://afriex.statuspage.io"},{"anchor":"Support","icon":"envelope","href":"mailto:support@afriex.com"}]},"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"SDK","pages":[{"title":"SDK","href":"/sdk/introduction"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/introduction"}]},{"tab":"API reference","groups":[{"group":"Overview","pages":[{"title":"Introduction","href":"/api-reference/introduction"},{"title":"Authentication","href":"/api-reference/authentication"},{"title":"Permissions","href":"/api-reference/permissions"},{"title":"IP allowlisting","href":"/api-reference/ip-allowlisting"}]},{"group":"Requests and responses","pages":[{"title":"Idempotency","href":"/api-reference/idempotency"},{"title":"Errors","href":"/api-reference/errors"},{"title":"Pagination","href":"/api-reference/pagination"},{"title":"Rate limits","href":"/api-reference/rate-limits"},{"title":"Models","href":"/api-reference/models"}]},{"group":"Balance","pages":[{"title":"Get Balance","openapi":"GET /api/v1/org/balance","href":"/api-reference/endpoint/balance/get"}]},{"group":"Checkout Sessions","pages":[{"title":"Checkout Flow Guide","href":"/api-reference/endpoint/checkout-sessions/user-flow-guide"},{"title":"Create Checkout Session","openapi":"POST /api/v1/checkout-session","href":"/api-reference/endpoint/checkout-sessions/create"}]},{"group":"Rates","pages":[{"title":"Get Exchange Rates","openapi":"GET /api/v1/org/rates","href":"/api-reference/endpoint/rates/get"}]},{"group":"Customers","pages":[{"title":"Create Customer","openapi":"POST /api/v1/customer","href":"/api-reference/endpoint/customers/create"},{"title":"List Customers","openapi":"GET /api/v1/customer","href":"/api-reference/endpoint/customers/list"},{"title":"Get Customer","openapi":"GET /api/v1/customer/{customerId}","href":"/api-reference/endpoint/customers/get"},{"title":"Update Customer","openapi":"PATCH /api/v1/customer/{customerId}","href":"/api-reference/endpoint/customers/update"},{"title":"Delete Customer","openapi":"DELETE /api/v1/customer/{customerId}","href":"/api-reference/endpoint/customers/delete"},{"title":"Update Customer KYC","openapi":"PATCH /api/v1/customer/{customerId}/kyc","href":"/api-reference/endpoint/customers/update-kyc"},{"title":"Verify Customer","openapi":"POST /api/v1/customer/{customerId}/verify","href":"/api-reference/endpoint/customers/verify"}]},{"group":"Payment Methods","pages":[{"title":"Create Payment Method","openapi":"POST /api/v1/payment-method","href":"/api-reference/endpoint/payment-methods/create"},{"title":"List Payment Methods","openapi":"GET /api/v1/payment-method","href":"/api-reference/endpoint/payment-methods/list"},{"title":"Get Payment Method","openapi":"GET /api/v1/payment-method/{paymentMethodId}","href":"/api-reference/endpoint/payment-methods/get"},{"title":"Delete Payment Method","openapi":"DELETE /api/v1/payment-method/{paymentMethodId}","href":"/api-reference/endpoint/payment-methods/delete"},{"title":"List Institutions","openapi":"GET /api/v1/payment-method/institution","href":"/api-reference/endpoint/payment-methods/institution"},{"title":"Institution Codes","openapi":"GET /api/v1/payment-method/institution/codes","href":"/api-reference/endpoint/payment-methods/institution-codes"},{"title":"Resolve Payment Method","openapi":"GET /api/v1/payment-method/resolve","href":"/api-reference/endpoint/payment-methods/resolve"},{"title":"Get or Create Crypto Wallet","openapi":"GET /api/v1/payment-method/crypto-wallet","href":"/api-reference/endpoint/payment-methods/crypto-wallet"},{"title":"List Virtual Accounts","openapi":"GET /api/v1/payment-method/virtual-account","href":"/api-reference/endpoint/payment-methods/virtual-account"},{"title":"Create Virtual Account","openapi":"POST /api/v1/payment-method/virtual-account","href":"/api-reference/endpoint/payment-methods/virtual-account-create"},{"title":"Get Pool Account","openapi":"GET /api/v1/payment-method/pool-account","href":"/api-reference/endpoint/payment-methods/pool-account"}]},{"group":"Media","pages":[{"title":"Generate Upload URL","openapi":"POST /api/v1/media/url","href":"/api-reference/endpoint/media/generate-upload-url"}]},{"group":"Transactions","pages":[{"title":"Create Transaction","openapi":"POST /api/v1/transaction","href":"/api-reference/endpoint/transactions/create"},{"title":"List Transactions","openapi":"GET /api/v1/transaction","href":"/api-reference/endpoint/transactions/list"},{"title":"Quote a Withdrawal","openapi":"GET /api/v1/transaction/quote","href":"/api-reference/endpoint/transactions/quote"},{"title":"Get Transaction","openapi":"GET /api/v1/transaction/{transactionId}","href":"/api-reference/endpoint/transactions/get"},{"title":"Authorize Transaction","openapi":"POST /api/v1/transaction/{transactionId}/authorize","href":"/api-reference/endpoint/transactions/authorize"},{"title":"Get Settlement Advice","openapi":"GET /api/v1/transaction/{transactionId}/advice","href":"/api-reference/endpoint/transactions/advice"},{"title":"Submit Pool-Account Payment Proof","openapi":"POST /api/v1/transaction/pool-account","href":"/api-reference/endpoint/transactions/pool-account-proof"}]},{"group":"Payment Batches","pages":[{"title":"List Payment Batches","openapi":"GET /api/v1/payment-batch","href":"/api-reference/endpoint/payment-batches/list"},{"title":"Create Payment Batch","openapi":"POST /api/v1/payment-batch","href":"/api-reference/endpoint/payment-batches/create"},{"title":"Get Payment Batch","openapi":"GET /api/v1/payment-batch/{batchId}","href":"/api-reference/endpoint/payment-batches/get"},{"title":"Update Payment Batch","openapi":"PATCH /api/v1/payment-batch/{batchId}","href":"/api-reference/endpoint/payment-batches/update"},{"title":"Delete Payment Batch","openapi":"DELETE /api/v1/payment-batch/{batchId}","href":"/api-reference/endpoint/payment-batches/delete"},{"title":"List Batch Recipients","openapi":"GET /api/v1/payment-batch/{batchId}/recipients","href":"/api-reference/endpoint/payment-batches/list-recipients"},{"title":"Add Recipient to Batch","openapi":"POST /api/v1/payment-batch/{batchId}/recipients","href":"/api-reference/endpoint/payment-batches/add-recipient"},{"title":"Bulk Add Recipients to Batch","openapi":"POST /api/v1/payment-batch/{batchId}/recipients/bulk","href":"/api-reference/endpoint/payment-batches/add-recipients-bulk"},{"title":"Update Recipient in Batch","openapi":"PATCH /api/v1/payment-batch/{batchId}/recipients/{recipientId}","href":"/api-reference/endpoint/payment-batches/update-recipient"},{"title":"Remove Recipient from Batch","openapi":"DELETE /api/v1/payment-batch/{batchId}/recipients/{recipientId}","href":"/api-reference/endpoint/payment-batches/remove-recipient"},{"title":"Withdraw Batch","openapi":"POST /api/v1/payment-batch/{batchId}/withdraw","href":"/api-reference/endpoint/payment-batches/withdraw"},{"title":"List Batch Sessions","openapi":"GET /api/v1/payment-batch/{batchId}/sessions","description":"Requires the `TRANSACTION.HISTORY.READ` key permission.","href":"/api-reference/endpoint/payment-batches/list-sessions"}]},{"group":"SME Registration","pages":[{"title":"Register SME","openapi":"POST /api/v1/sme-registration","href":"/api-reference/endpoint/sme-registration/register"},{"title":"Get SME Registration Status","openapi":"GET /api/v1/sme-registration/status","description":"Returns the most recent SME registration status for the authenticated business. Once the registration has been submitted, the response also includes the latest review outcome. Requires the `COMPLIANCE.KYB.READ` key permission.","href":"/api-reference/endpoint/sme-registration/status"}]},{"group":"Sandbox helpers","pages":[{"title":"Simulate Transaction Outcome","openapi":"POST /api/v1/transaction/{transactionId}/simulate","href":"/api-reference/endpoint/transactions/simulate"},{"title":"Top Up Sandbox Balance","openapi":"POST /api/v1/org/balance/topup","href":"/api-reference/endpoint/balance/topup"},{"title":"Simulate Virtual Account Transfer","openapi":"POST /api/v1/payment-method/virtual-account/simulate-transfer","href":"/api-reference/endpoint/payment-methods/virtual-account-simulate-transfer"},{"title":"Trigger Test Webhook","openapi":"POST /api/v1/webhooks/trigger","href":"/api-reference/endpoint/webhooks/trigger"}]},{"group":"Webhooks","pages":[{"title":"Introduction","href":"/api-reference/endpoint/webhooks/introduction"},{"title":"Customer Events","openapi":"webhook customer.events","href":"/api-reference/endpoint/webhooks/customer-events"},{"title":"Payment Method Events","openapi":"webhook payment_method.events","href":"/api-reference/endpoint/webhooks/payment-method-events"},{"title":"Transaction Events","openapi":"webhook transaction.events","href":"/api-reference/endpoint/webhooks/transaction-events"},{"title":"Checkout Session Events","openapi":"webhook checkout_session.events","href":"/api-reference/endpoint/webhooks/checkout-session-events"},{"title":"Pool Deposit Events","openapi":"webhook pool_deposit_request.events","href":"/api-reference/endpoint/webhooks/pool-deposit-events"}]}]}]},"basePath":"","title":"Register SME - Afriex Business API","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}