Browse help guides
← Help

KYC

Booking and KYC overrides

Why operators see a lock, how compliance approves with a reason, and why an override is a KYC decision rather than a one-trade exception.

The rule

A transaction can be posted only when its main user's KYC is Approved. Otherwise the Post button is disabled and the form shows the actual status. Drafts can still be saved; adjustments and voids of already-posted rows are not blocked.

flowchart TD
  A["Open Book trade"] --> B{"KYC status"}
  B -->|"Approved"| C["Transaction form"]
  B -->|"anything else + operator"| D["Disabled: KYC not approved"]
  B -->|"anything else + compliance / owner"| E["Override dialog + reason"]
  E --> F["applicant.manual_override to Approved"]
  F --> C
  C --> G["provided / disbursed / fee"]
  G --> H["Transaction posted"]
The KYC event comes first, then the trade.

The engine enforces the same rule, so a file edit or another tool cannot bypass it.

Desk roles

RoleBook approved usersOverride KYC
OwnerYesYes, with a reason
ComplianceYesYes, with a reason
OperatorYesNo — sees the lock

The desktop app has no accounts per person, so the role is chosen per computer in Settings → Desk role on this computer. Every KYC event and every posted transaction records the role that acted.

What an override is

  • It requires a written reason.
  • It writes applicant.manual_override with reason_code staff_review (or CBA instruction, data fix, other), from the current status to Approved.
  • It sets the user's KYC status to Approved.
  • It stays on the KYC chain, so it is obvious this was not a Sumsub GREEN.
  • It is not a one-trade exception: the person is approved from then on, and the next operator can book without asking again.
  • The badge reads “approved (overridden)”.
sequenceDiagram
  actor Compliance
  participant Desk
  participant KYC as kyc/events.jsonl
  participant TX as Transactions
  Compliance->>Desk: Book trade for a user at Pending
  Desk-->>Compliance: Locked: KYC not approved
  Compliance->>Desk: Override KYC + reason
  Desk->>KYC: applicant.manual_override (Pending to Approved)
  Desk-->>Compliance: approved (overridden)
  Compliance->>Desk: provided / disbursed / fee
  Desk->>TX: transaction posted
Override then book.

If there is no KYC record yet (for example after Create without KYC), the override first creates a manual record, then writes the override on it.

After an override

  • The user stays approved for every later booking.
  • A later Fetch that only says Sumsub is still reviewing does not undo the override.
  • A real Sumsub decision — GREEN, RETRY or FINAL — replaces the override, and the badge shows that decision.

Continue reading

Create a user with KYC →Record and correct transactions →KYC data reference →

Something missing or out of date? Send feedback.