
# Business verification (KYB)

KYB (Know Your Business) verifies a **company** instead of a person. It looks the business up in the official company registry by registration number and, optionally, collects company documents, compliance declarations, and runs **customer due diligence (CDD)** on the people who own or control it (directors, beneficial owners, the applicant).

Available in 48 countries. See [Supported countries](https://trust.myaza.co/documentation/countries/markdown#business-verification-kyb).

> KYB is enabled per organisation. If business verification isn't switched on for your account, ask Myaza to enable it.

## How to run a KYB verification

A live business verification **requires a published KYB [workflow](https://trust.myaza.co/documentation/workflows/markdown)**: the workflow defines what you verify (country, product, application steps, and the decision graph). You run it exactly like individual KYC, two ways:

1. **Embed**: mount an [SDK](https://trust.myaza.co/documentation/sdks/markdown) with the KYB workflow's `workflowId`. The SDK collects the registration number (and any application steps you configured) and submits.
2. **Hosted link**: send the workflow's [hosted link](https://trust.myaza.co/documentation/workflows/markdown#2-share-a-hosted-link); the business completes it in the browser, no integration.

Build the workflow under **Dashboard → Workflows** (choose **Business** when creating it) and start from a [template](https://trust.myaza.co/documentation/workflows/markdown#templates): **Standard KYB**, **KYB + AML screening**, or **Enhanced KYB with declarations**.

## Products

Each verification runs a **product** (what gets looked up):

| Product | Availability | Input |
|---|---|---|
| `business` | Every supported country | Registration number |
| `business-tax` | Nigeria | Registration number (returns the business + its tax ID) |
| `business-taxid` | Nigeria | Registration number |
| `business-tin` | Nigeria | TIN |

The default is `business`: a registry lookup by registration number.

## The application (optional layers)

A registry lookup proves a business *exists*. It doesn't prove the submitter controls it. A KYB workflow can therefore collect a full application; each layer is a toggle in the builder:

- **Company profile**: registered address, business email, phone, website.
- **Company documents**: certificate of incorporation, MEMART, proof of address, etc., OCR-read and cross-checked against the registry record.
- **Key people (CDD)**: the directors and beneficial owners (UBOs) discovered from the registry are **screened** (sanctions / PEP / adverse media) and can be required to complete their **own KYC** via a per-person invite link. Corporate shareholders are recognised and their ownership chains can be followed to the people behind them. See [Key people & ownership](https://trust.myaza.co/documentation/key-people/markdown).
- **Applicant verification**: the person filling in the form verifies their own identity in-flow and declares their role.
- **Declarations**: a compliance [questionnaire](https://trust.myaza.co/documentation/workflows/markdown#capture-add-ons) (source of funds, expected volume, …).

The decision graph can wait for the key people's due diligence before approving. See [Decisioning](https://trust.myaza.co/documentation/decisioning/markdown).

## The result

The business result arrives on your backend by [webhook](https://trust.myaza.co/documentation/webhooks/markdown), the same way KYC results do. A business event's `data` carries a `subjectType` of `"business"`, a `business` object, and a `null` `userData`:

```json
{
  "subjectType": "business",
  "status": "approved",
  "checkStatus": "verified",
  "country": "NG",
  "business": {
    "product": "business",
    "registrationNumber": "RC0000000",
    "businessName": "ACME LIMITED",
    "record": { "companyStatus": "active", "registrationDate": "2018-04-01", "…": "…" }
  },
  "userData": null
}
```

- `status` is `verified` when the registry returns a match, or `not_found` (reason code `business_not_found`) when the registration number isn't in the registry.
- `record` is an organisation-safe extract of the registry data (company particulars, share ownership, key personnel), never the raw internal response.
- The **onboarding decision** (approve / decline / review), including any key-people gate, arrives separately in a [`workflow.run.completed`](https://trust.myaza.co/documentation/decisioning/markdown#the-workflowruncompleted-webhook) event. The business verification's own status is terminal the moment the registry lookup finishes; the decision can still be pending on the people.

## Decisioning fields

Business runs expose `business.*` fields to [decisioning](https://trust.myaza.co/documentation/decisioning/markdown): `business.companyStatus`, `business.nameMatch`, `business.addressMatch`, `business.ageYears`, `business.keyPersonnelCount`, `business.hasForeignPersonnel`, plus the key-people roll-up (`keyPeople.anyFlagged`, `keyPeople.cddComplete`, `keyPeople.kycComplete`, `keyPeople.corporate`, `keyPeople.ownershipUnresolved`, …). The full roll-up is listed in [Key people & ownership](https://trust.myaza.co/documentation/key-people/markdown#what-you-receive).

## Next steps

- [Workflows](https://trust.myaza.co/documentation/workflows/markdown): build and publish a KYB workflow.
- [Supported countries](https://trust.myaza.co/documentation/countries/markdown#business-verification-kyb): where KYB is available.
- [Key people & ownership](https://trust.myaza.co/documentation/key-people/markdown): due diligence on the owners, corporate shareholders, ownership chains.
- [Decisioning](https://trust.myaza.co/documentation/decisioning/markdown): gate approval on registry status and key-people due diligence.
