> ## Documentation Index
> Fetch the complete documentation index at: https://docs.afriex.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get SME Registration Status

> 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 an API key with admin permission.

Returns the most recent [SME registration](/api-reference/endpoint/sme-registration/register) state for the authenticated business. Once submitted, the response also includes the latest review outcome so you can gate downstream flows (for example, issuing dedicated KES virtual accounts) on approval.

<Note>
  Only relevant if you are pursuing dedicated **KES virtual accounts** via [Register SME](/api-reference/endpoint/sme-registration/register). Other corridors do not use this flow. Requires an API key with **admin** permission. If the business has never registered, `onboardingRequestId` and `status` come back `null`.
</Note>

## Review outcomes

`reviewStatus` is present only after `SUBMIT`. Dedicated KES virtual accounts under your entity are issued only after `APPROVED`.

| Value          | Meaning                                                                                                                |
| -------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `SUBMITTED`    | Registration has been received and is waiting to be picked up for review.                                              |
| `PROCESSING`   | The review is in progress.                                                                                             |
| `APPROVED`     | Approved. Dedicated KES virtual accounts will now be issued under your entity.                                         |
| `REJECTED`     | Rejected. See `rejectReasons[]` for the human-readable reasons.                                                        |
| `CLOSED`       | The reviewing party marked the account as closed. Contact support.                                                     |
| `UNDER_REVIEW` | Held for a manual review; no action from you until the outcome flips.                                                  |
| `UNKNOWN`      | Forward-compatibility slot for any outcome Afriex has not mapped yet. Treat as "no decision yet" and poll again later. |

When the review is `REJECTED`, `rejectReasons[]` carries human-readable reasons you can surface to the operator.

<Note>
  The set of `reviewStatus` values may grow over time as new outcomes are surfaced. Existing values will not change meaning; handle unfamiliar values by falling back to `UNKNOWN`.
</Note>

## Freshness

The response may also include `isReviewStatusStale: true`. That flag means Afriex could not reach the review provider on this read, so the `reviewStatus` reflects the last known value (or `UNKNOWN` if none is cached) rather than the current one. Poll again later for a fresh read; the field is absent when the read succeeded.


## OpenAPI

````yaml GET /api/v1/sme-registration/status
openapi: 3.1.0
info:
  title: Afriex Business API
  version: 1.0.8
  description: >-
    Welcome to the Afriex Business API. This API allows you to manage customers,
    process payments, handle payouts, and receive real-time notifications via
    webhooks.


    For detailed guidance on authentication, pagination, error handling, and
    webhooks, please refer to the [dedicated guides](https://docs.afriex.com) in
    the top bar. The guide provides a step-by-step instructions to help you
    integrate seamlessly.
  termsOfService: https://www.afriex.com/terms-and-condition
  contact:
    name: Afriex API Support
    email: support@afriex.com
    url: https://docs.afriex.com
  license:
    name: Proprietary
    url: https://www.afriex.com/terms-and-condition
servers:
  - url: https://sandbox.api.afriex.com
    description: Staging Base URL
  - url: https://api.afriex.com
    description: Production Base URL
security:
  - ApiKey: []
tags:
  - name: Customers
    description: Create and manage your customers.
  - name: Payment Methods
    description: Register and resolve customer payout and collection methods.
  - name: Transactions
    description: Create and track deposits, withdrawals, and swaps.
  - name: Balance
    description: View and top up your business wallet balances.
  - name: Rates
    description: Fetch real-time exchange rates.
  - name: Checkout Sessions
    description: Create hosted checkout sessions.
  - name: Webhooks
    description: Webhook event payloads and sandbox webhook testing.
  - name: Media
    description: Generate presigned URLs for secure file uploads.
paths:
  /api/v1/sme-registration/status:
    parameters:
      - $ref: '#/components/parameters/x-api-version'
    get:
      tags:
        - SME Registration
      summary: Get 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 an API key with admin
        permission.
      operationId: smeRegistrationStatus
      responses:
        '200':
          description: Current SME registration status.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      onboardingRequestId:
                        type: string
                        nullable: true
                        description: Null when the business has never registered.
                      status:
                        type: string
                        nullable: true
                        enum:
                          - OTP_PENDING
                          - DETAILS_PENDING
                          - SUBMITTED
                          - REJECTED
                          - EXPIRED
                      reviewStatus:
                        type: string
                        description: >-
                          Public review outcome, present only once the
                          registration has been submitted. `APPROVED` means the
                          business's dedicated KES virtual accounts can be
                          issued under its own entity; `UNKNOWN` is a
                          forward-compatibility slot for any provider code
                          Afriex has not mapped yet. The set may grow over time;
                          handle unknown values by falling back to `UNKNOWN`.
                        enum:
                          - SUBMITTED
                          - PROCESSING
                          - APPROVED
                          - REJECTED
                          - CLOSED
                          - UNDER_REVIEW
                          - UNKNOWN
                      rejectReasons:
                        type: array
                        nullable: true
                        items:
                          type: string
                      isReviewStatusStale:
                        type: boolean
                        description: >-
                          True when Afriex could not reach the provider for a
                          fresh review outcome on this read, so `reviewStatus`
                          reflects the last known value (or `UNKNOWN` if none is
                          cached) rather than the current one. Absent when the
                          read succeeded.
        '401':
          description: Unauthorized - Invalid business API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  parameters:
    x-api-version:
      name: x-api-version
      in: header
      required: false
      description: >-
        API version in ISO 8601 format (e.g. 2025-12-28). Defaults to latest
        stable.
      schema:
        type: string
  schemas:
    ErrorResponse:
      type: object
      properties:
        code:
          type: string
          description: Machine-readable error code.
        error:
          type: string
          description: Human-readable error message.
        details:
          $ref: '#/components/schemas/ErrorDetails'
    ErrorDetails:
      type: object
      properties:
        errorMessage:
          type: string
          description: Detailed/technical error message.
        friendlyMessage:
          type: string
          description: User-facing error message safe to display.
        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).
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        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 will be rejected
        with a `403 Forbidden` response; an unrecognised, malformed or revoked
        key returns `401 Unauthorized`. Manage your keys and their permissions
        under **Developer → API keys** in the dashboard.

````