Skip to content

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) and reviewKyc (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 PASSED or Axia selfie/documentoscopy). Approving sets user.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 ​

StatusValuesMeaning
IdentityPENDING · PASSED · FAILEDMirror of the KYC provider result. PASSED is the precondition to approve the account.
Qualified InvestorNOT_SUBMITTED · SUBMITTED · PASSED · FAILEDState of the net-worth/accreditation evidence. Independent from the account.
Overall statusPENDING · APPROVED · REJECTEDAggregate 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.

CodeLabelWhen to use
INSUFFICIENT_PC_EVIDENCEInsufficient Qualified Investor evidenceNet-worth/accreditation document does not prove the qualified condition.
AML_FAILFailed AML checkAML/sanctions alert preventing approval.
DOCUMENT_UNCLEARIllegible or incomplete documentIllegible, 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 APPROVED by an explicit Compliance Officer decision on this screen.

Subsections ​

PageCovers
Queue (list)Tabs, search, status chips, legacy badge and pagination
Detail and decisionDetail panels and account decisions (approve/reject/request resubmission)
Face pre-analysisAutomatic document × selfie comparison, reading the verdict and automatic approval
Qualified InvestorOptional evidence and the QI decision in its own scope