type=business. The flow is different from type=individual — it has its own set of endpoints, its own data shape, and its own review timeline. Read this page first, then follow Onboarding a business customer for the step-by-step.
Two onboarding paths: Standard and Minimal
Every business customer carries akyb_scope that controls two things:
- What data you have to send to onboard them.
- Which currencies they can hold a Virtual Bank Account in.
The two paths share the same identity columns. The only structural difference is whether you have to provide beneficial-owner data.
Who can use Minimal KYB?
Minimal KYB is gated by an admin-controlled allow list. Most platforms onboard their business customers under the Standard (FULL) path. Minimal KYB exists for platforms whose use case is genuinely Nigerian-naira-only — typically Nigerian fintechs collecting payments in NGN for their own customers, where the underlying NGN provider doesn’t require beneficial-ownership data. If your platform is on the allow list:- You can pass
kyb_scope=MINIMALon a customer create. - If you omit
kyb_scope, your customers default toMINIMAL. - You can still pass
kyb_scope=FULLexplicitly when you need a customer to qualify for non-NGN currencies.
- Sending
kyb_scope=MINIMALreturns422. - If you omit
kyb_scope, your customers default toFULL. - This is the right path for almost everyone — contact support@blaaiz.com only if your use case is genuinely NGN-only.
Upgrading from Minimal to Full
A Minimal customer can be upgraded to Full at any time viaPOST /customer/{id}/upgrade-kyb-scope — you supply the beneficial owners and the customer flips to FULL. After the upgrade, you upload owner ID files and call /submit again to re-verify the customer under the Standard floor.
Upgrades are one-way. Once a customer is on Full, they stay on Full. There is no admin downgrade.
The rest of this guide covers the Standard (FULL) flow. For Minimal onboarding see Onboarding a business customer → Minimal KYB onboarding.
Why a different flow than individuals?
A business customer is a company. Verifying it requires more than an ID document and a selfie:- Beneficial owners (FULL only) — every owner / signatory / director that meets the threshold, with personal ID for each.
- A KYB document collection (both scopes) — incorporation certificate, articles of incorporation, share register, bank statements, etc. The exact set depends on the jurisdiction and the business profile.
id_file / id_file_back / proof_of_address_file / liveness_check_file slots that work for individual customers don’t model this. Business customers use a separate set of endpoints.
Lifecycle states
Three records each carry their own state. They share the same four-state vocabulary, but the rules differ.Customer (verification_status)
PROCESSING is the active-review window — the saved customer state is frozen so compliance reviews a stable picture. Wait for the customer-level webhook before attempting edits. VERIFIED is final; corrections on a verified customer go through operations (see Customer data corrections).
Owner and KYB document (status)
Each owner and each document has its own status, even while the customer is PENDING.
“Editable” assumes the parent customer’s state allows it: even a
PENDING owner is locked while the customer is PROCESSING or VERIFIED. Locked edits return 400. To correct an APPROVED owner or document, contact operations — see Customer data corrections.
Editing a REJECTED owner or document
When you edit a previously rejected owner or document — change a field, replace a file, anything — its status automatically flips back to PENDING and its admin_comments are cleared. You don’t need to manually reset state. Fix the data, then call /submit to re-route the corrected record through review.
What /submit does
When you call POST /api/external/customer/{customer}/submit:
- The customer flips from
PENDING(orREJECTEDon re-submission) toPROCESSING. - Every
PENDINGowner flips toPROCESSING. - Every
PENDINGKYB document flips toPROCESSING. - Owners and documents that were already
APPROVEDorREJECTEDare not touched. - A
customer.status_changedwebhook fires for the customer-level transition.
What we check before accepting a /submit
/submit runs a set of checks before flipping the customer into PROCESSING. If any check fails, the response is 422 with a message naming the specific gap, the customer stays editable, and you can fix and call /submit again.
The required set depends on the customer’s kyb_scope. Minimal needs the identity baseline plus a formation document; Full needs everything Minimal needs plus beneficial owners.
Both Minimal and Full
Customer-level identitybusiness_nameis set.country(registered-address country) is set and a valid ISO alpha-2 code.registration_numberis set.incorporation_countryis set and a valid ISO alpha-2 code.countryequalsincorporation_country. By company law a company’s registered office sits in its country of incorporation, so the two must agree.operating_countryis set whenever any otheroperating_*address field is set, and is a valid ISO alpha-2 code (the operating address can be in a different country from the registered one).
- At least one document of a formation type:
CERTIFICATE_OF_INCORPORATION,ARTICLES_OF_INCORPORATION,BENEFICIAL_OWNERSHIP_CERTIFICATE,INCORPORATION_DOCUMENTS, orCAC_STATUS_REPORT.
Full only — the additional rules
Owners- At least one owner attached.
- The owners’
ownership_percentagevalues sum to exactly 100. - Owner emails are unique within the customer (case-insensitive).
- For each owner:
id_document_frontis uploaded;id_document_backis uploaded fordrivers_license,id_card, andresident_permittypes and absent forpassport. - For each owner with the field set:
date_of_birthis at least 18 years ago,id_expiry_dateis strictly after today, andnationality/country/id_document_countryare valid ISO alpha-2 codes.
/submit.
Verification timeline
Business KYB review typically takes 1–5 business days. Compliance reviews each owner and each document individually before issuing the customer-level verdict. This is longer than individual KYC because business verification involves additional checks against company registries, beneficial-ownership records, and risk databases.Re-submission
If a customer comes back asREJECTED, look at the admin_comments on each owner and each KYB document. The rejected items are editable; the approved items stay locked. Fix the rejected ones (replace files, edit fields) and call /submit again. The customer flips back to PROCESSING for re-review.
See Handling KYB rejections.
Upgrading from Minimal to Full
Akyb_scope=MINIMAL customer is restricted to NGN VBAs. To enable USD / GBP / EUR for that customer, call POST /customer/{id}/upgrade-kyb-scope with the beneficial-owner data.
The upgrade endpoint:
- Checks that the customer is currently
MINIMAL(or has no scope set, which is treated as Minimal). If they’re alreadyFULL, returns422. - Checks that the customer is not currently in
PROCESSING. If they are, returns400— wait for the customer-level webhook before retrying. - Saves the new owners (and any optional augmentations like
industry_type,business_type, etc.). - Flips
kyb_scopetoFULL. One-way — there is no downgrade. - If the customer was
VERIFIED, transitions them back toPENDING. An upgrade is a re-onboarding under stricter rules; existing NGN VBAs are unaffected.
- Upload owner ID files via the normal owner-file endpoints (per owner, per slot).
- Call
POST /customer/{id}/submitto re-verify under the Standard checks.
kyb_scope. The regular PUT /customer/{id} endpoint rejects kyb_scope in the payload — admin downgrades are also blocked by the same rule. To “fix” a customer onboarded at the wrong scope, talk to support.
What KYB unlocks
A verified business customer can hold Virtual Bank Accounts and act as a payout recipient. NGN VBAs are available for both Minimal and Full customers. USD, GBP, and EUR VBAs are gated tokyb_scope=FULL — Minimal customers are NGN-only.
For payout currency support on business customers, see Creating your first payout. For verified individual customers, see Virtual Bank Accounts.
