KYC Queue
The KYC Queue is the BackOffice compliance panel where the Compliance Officer reviews and decides the investor's composite KYC: identity (KYC provider or Axia selfie/documentoscopy), Qualified Investor (optional evidence that unlocks higher limits) and, when enabled, the BaaS background-check. Account approval is a manual decision — no investor is approved by the provider webhook.
The only exception is the face pre-analysis with automatic approval enabled: in that case, a comfortably positive verdict on the document × selfie comparison promotes the account on its own, recorded as SYSTEM_FACE_MATCH. No verdict rejects an account automatically.
Access prerequisites
- Permission (module):
viewKycQueue(view queue and details) andreviewKyc(approve / reject / request resubmission) - License/Feature: tenant approval mode set to
MANUAL(see AUTO × MANUAL) - Menu container: GENERAL → KYC Queue (
/kyc-queue)
What you can do here
- List and search investors under review, split into tabs Pending / Approved / Rejected / All, searching by name, CPF, CNPJ, passport or e-mail.
- Review the identity — provider payload (document, images, liveness, AML) or the note for identity verified by Axia selfie/documentoscopy.
- Review the Qualified Investor evidence (optional) and decide it in its own scope.
- Consult the user's documents — all submitted KYC artifacts, with the AXIA_KYC selfie highlighted for face comparison.
- Read the face pre-analysis — automatic verdict comparing the face on the document with the selfie, when enabled for the tenant.
- See the BaaS background-check and documentoscopy (status, face match, OCR, link) when the banking provider is enabled.
- Analyze the corporate structure (QSA) of the corporate investor, with masked CPF.
- Audit access — map of recent geolocated logins and registered devices.
- Decide — Approve account, Reject account (with reason) or decide the Qualified Investor, always with security confirmation (step-up).
Composite KYC flow
Identity and Qualified Investor are two independent sides:
- Account — account approval only requires the identity to be verified (provider
PASSEDor Axia selfie/documentoscopy). Approving setsuser.status = 'APPROVED', which is the precondition already consumed by on-chain identity provisioning (ERC-3643). - Qualified Investor (QI) — it is optional and does not block the account. Approving the QI marks the profile as
qualified(unlocks higher limits). See Qualified Investor.
Status meaning
| Status | Values | Meaning |
|---|---|---|
| Identity | PENDING · PASSED · FAILED | Mirror of the KYC provider result. PASSED is the precondition to approve the account. |
| Qualified Investor | NOT_SUBMITTED · SUBMITTED · PASSED · FAILED | State of the net-worth/accreditation evidence. Independent from the account. |
| Overall status | PENDING · APPROVED · REJECTED | Aggregate state of the investor's account. |
Rejection reasons (reason codes)
Every account or QI rejection requires a reason — it is auditable and is what the investor sees to correct and resubmit.
| Code | Label | When to use |
|---|---|---|
INSUFFICIENT_PC_EVIDENCE | Insufficient Qualified Investor evidence | Net-worth/accreditation document does not prove the qualified condition. |
AML_FAIL | Failed AML check | AML/sanctions alert preventing approval. |
DOCUMENT_UNCLEAR | Illegible or incomplete document | Illegible, cropped or incomplete image/file. |
Mandatory step-up
Every decision (approve, reject or request resubmission) requires security confirmation (step-up) — re-authentication with password + MFA, validated server-side. It is high-impact compliance protection: the decision's reviewed_by always comes from the authenticated administrator, never from the request body.
Legacy clients
Old investors who already have a registration/document but never went through the verification flow appear in the Pending tab with the "No verification started" badge. The state is synthesized (identity PENDING, QI NOT_SUBMITTED, overall status derived from users.status).
Rejecting a legacy client notifies them
Rejecting a legacy client's account sets users.status = 'REJECTED' with the reason and triggers a notification — this is the mechanism for the client to see the reason and redo the verification process in the KYC hub.
Tenant mode (AUTO × MANUAL)
Behavior is controlled per tenant via approvalMode:
- AUTO (legacy, default) — the provider webhook approves the account by itself. The manual queue does not govern these tenants and there is no regression in existing flows.
- MANUAL — the queue governs: the webhook only updates the identity; the account only becomes
APPROVEDby an explicit Compliance Officer decision on this screen.
Subsections
| Page | Covers |
|---|---|
| Queue (list) | Tabs, search, status chips, legacy badge and pagination |
| Detail and decision | Detail panels and account decisions (approve/reject/request resubmission) |
| Face pre-analysis | Automatic document × selfie comparison, reading the verdict and automatic approval |
| Qualified Investor | Optional evidence and the QI decision in its own scope |