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

# KYB Verification

> Complete Know Your Business (KYB) verification to meet MENA regulatory requirements and go live with the Thiqwave API.

KYB (Know Your Business) is the regulatory process of verifying the identity and legitimacy of a business before allowing it to handle financial transactions. In the UAE, financial regulators require all payment service providers and their business customers to be verified before funds can move.

Thiqwave performs automated KYB checks that cover:

* **Trade licence verification** — confirms the business is legally registered and active in its jurisdiction.
* **Ultimate Beneficial Owner (UBO) identification** — identifies individuals who own or control 25% or more of the business.
* **Sanctions screening** — checks the business and its UBOs against international sanctions lists (OFAC, UN, EU, and local MENA lists).
* **PEP screening** — identifies Politically Exposed Persons among UBOs and directors.

<Warning>
  Your platform cannot process live transactions until KYB verification is approved. Make sure you have all required documents ready before submitting — incomplete submissions delay the review process. See the [required documents](#required-documents) section below before you start.
</Warning>

## Required documents

Gather these documents before submitting a KYB request:

| Document                                                                    | Requirements  |
| --------------------------------------------------------------------------- | ------------- |
| Commercial registration / trade licence                                     | Required      |
| Articles of association or memorandum                                       | Required      |
| UBO declaration (signed)                                                    | Required      |
| National ID or passport for each UBO                                        | Required      |
| Proof of business address (utility bill or bank statement, \< 3 months old) | Required      |
| VAT registration certificate                                                | If registered |

All documents must be in Arabic or English. Certified translations are required for documents in other languages.

## Submit KYB verification

<Steps>
  <Step title="Prepare your business details">
    Collect the following information before making the API call:

    * Legal business name (as it appears on the trade licence)
    * Business registration number
    * Country of incorporation (`AE` for UAE)
    * Registered business address
    * Details for each UBO: full name, date of birth, nationality, percentage ownership, ID document type and number
  </Step>

  <Step title="Submit the KYB request">
    Send a `POST` request to `/v1/compliance/kyb` with your business details and document references. Documents must be uploaded as Base64-encoded strings or as URLs to files accessible by Thiqwave.

    ```bash curl theme={null}
    curl -X POST https://api.thiqwave.com/v1/compliance/kyb \
      -H "X-API-Key: your-api-key" \
      -H "Content-Type: application/json" \
      -d '{
        "business": {
          "legal_name": "Acme Trading LLC",
          "registration_number": "1234567890",
          "country": "AE",
          "address": {
            "line1": "Office 1204, Tower B",
            "line2": "Business Bay",
            "city": "Dubai",
            "country": "AE"
          }
        },
        "ubos": [
          {
            "full_name": "Jane Smith",
            "date_of_birth": "1980-06-15",
            "nationality": "GB",
            "ownership_percentage": 60,
            "id_type": "passport",
            "id_number": "GB123456789"
          }
        ],
        "documents": {
          "trade_licence": {
            "url": "https://your-storage.example.com/trade-licence.pdf"
          },
          "articles_of_association": {
            "url": "https://your-storage.example.com/articles.pdf"
          },
          "ubo_declaration": {
            "url": "https://your-storage.example.com/ubo-declaration.pdf"
          },
          "ubo_ids": [
            {
              "ubo_name": "Jane Smith",
              "url": "https://your-storage.example.com/jane-smith-passport.pdf"
            }
          ]
        }
      }'
    ```

    | Field                          | Required | Description                                            |
    | ------------------------------ | -------- | ------------------------------------------------------ |
    | `business.legal_name`          | Yes      | Exact legal name from the trade licence.               |
    | `business.registration_number` | Yes      | Company registration or CR number.                     |
    | `business.country`             | Yes      | ISO 3166-1 alpha-2 country code: `SA` or `AE`.         |
    | `ubos`                         | Yes      | Array of UBO objects. At least one UBO is required.    |
    | `ubos[].ownership_percentage`  | Yes      | Numeric percentage (e.g., `60` for 60%).               |
    | `documents`                    | Yes      | Trade licence and UBO declaration are always required. |

    A successful submission returns a `compliance_id` you use to track status:

    ```json theme={null}
    {
      "id": "kyb_01HXYZKYB1234567890AB",
      "status": "pending_review",
      "created_at": "2026-04-08T10:00:00Z",
      "estimated_completion": "2026-04-09T10:00:00Z"
    }
    ```
  </Step>

  <Step title="Check verification status">
    Poll the compliance endpoint or listen for a webhook event to track the progress of your KYB submission.

    ```bash curl theme={null}
    curl https://api.thiqwave.com/v1/compliance/kyb_01HXYZKYB1234567890AB \
      -H "X-API-Key: your-api-key"
    ```

    ```json theme={null}
    {
      "id": "kyb_01HXYZKYB1234567890AB",
      "status": "under_review",
      "checks": {
        "trade_licence": "passed",
        "sanctions_screening": "passed",
        "ubo_verification": "in_progress"
      },
      "created_at": "2026-04-08T10:00:00Z",
      "updated_at": "2026-04-08T11:30:00Z"
    }
    ```

    | Status                      | Meaning                                                        |
    | --------------------------- | -------------------------------------------------------------- |
    | `pending_review`            | Submission received, queued for automated checks.              |
    | `under_review`              | Automated checks running or manual review in progress.         |
    | `approved`                  | Verification complete. Your platform can go live.              |
    | `rejected`                  | Verification failed. See `rejection_reason` for details.       |
    | `more_information_required` | Thiqwave needs additional documents. Check `required_actions`. |

    <Tip>
      Rather than polling, subscribe to `compliance.approved` and `compliance.rejected` webhook events. Thiqwave notifies your endpoint the moment the status changes.
    </Tip>
  </Step>

  <Step title="Respond to additional information requests">
    If the status becomes `more_information_required`, the response includes a `required_actions` array specifying exactly what is needed. Resubmit only the missing or corrected items by sending a `PATCH` request to `/v1/compliance/:id` with the additional data.
  </Step>

  <Step title="Go live after approval">
    When the status reaches `approved`, your platform is cleared for live transactions. Thiqwave also emits a `compliance.approved` event.

    At this point you can:

    * Create accounts and wallets for your customers — see [Accounts & Wallets](/concepts/accounts)
    * Begin receiving payments — see [Receiving Payments](/guides/receiving-payments)
    * Settle cross-border payments — see [Settling with Stablecoins](/guides/crypto-settlement)
  </Step>
</Steps>

## KYB for your customers

If your platform onboards business customers (B2B2B), you must also run KYB on each of them before they can move funds. The process is identical — submit a KYB request per customer using their business details, and gate their access to financial features until `status: "approved"` is returned.

## Next steps

* [Accounts & Wallets](/concepts/accounts) — create accounts for approved customers
* [Webhooks](/guides/webhooks) — receive notifications when compliance status changes
