Skip to content

Verifications — Detail Page

The Verification detail page (/verifications/:type/:id) is where reviewers actually work. The list view tells you which verifications are pending; the detail page is where you read the documents, check the biometric match, scan the audit timeline, and click Approve or Reject.

The page is the largest single screen in the portal — a 2/3-1/3 split between review tabs on the left and a sticky action column on the right.

Verification detail — Acme Financial Group demo tenant

PageHeader with the subject’s display name as the title and the verification’s short ID as the description. Breadcrumbs link back to the Verifications list.

A VerificationDetailTabs component renders five tabs:

TabComponentContent
DocumentsDocumentsTabFront/back images, OCR fields, mismatch flags
BiometricBiometricTabSelfie + face-match score
KYCKycTabSanctions / PEP / FATF screening findings
AuditAuditTabPer-event timeline
NotesNotesTabReviewer freeform notes

Cards stacked top to bottom:

  • Score gaugeScoreGauge renders the score_total from the verification record
  • Status pill — current lifecycle stage
  • Device proximity — when the score breakdown includes a geolocation signal
  • Subject card — name, email, phone, avatar
  • Matter link — link to the parent matter
  • Action buttons — context-sensitive
status: in_progress → [Resend invite] [Cancel]
status: pending_review → [Approve] [Reject] [Cancel]
status: approved → [Download audit PDF]
status: rejected → [Download audit PDF] [Reopen]
status: canceled / expired → (no actions)

The score is the sum of the document scores in the verification, each computed as 100 − sum(deductions per mismatch) using the weights configured under Settings ▸ Scoring. The aggregate score is informational — it never auto-approves or auto-rejects.

The right column also shows a device proximity badge when the subject’s device geolocation diverged significantly from their declared address — the threshold is configurable under Settings ▸ Scoring.

Clicking Approve or Reject:

  1. Opens a confirm dialog with an optional reviewer note
  2. On confirm, the verification transitions to the terminal status
  3. The platform emits request.approved or request.rejected to the audit log + webhook subscribers
  4. A notification fires per the org’s Notification Templates
  5. The audit-stamped PDF is generated and becomes downloadable

The reviewer note is preserved in the audit event payload and embedded in the audit PDF.

Available only on rejected verifications. Reopen:

  1. Transitions the verification back to pending_review
  2. Captures the reopener’s identity in a request.reopened event
  3. Preserves the prior decision in the audit timeline (does not overwrite)

Use cases: the subject corrects their address, supplies additional documents, or the rejection turned out to be a false-positive that the reviewer wants to re-evaluate.

RoleViewDecideResend / CancelReopenDownload
Owner / Admin
Member (assigned reviewer)
Member (requester only)✓ (own)
Viewer
ActionEvent
Approverequest.approved (with reviewer note)
Rejectrequest.rejected (with reviewer note)
Cancelrequest.canceled
Resendrequest.invite_resent
Reopenrequest.reopened
Download PDFrequest.pdf_downloaded

Events surface in Settings ▸ Audit Log and on the verification’s own Audit tab.

SymptomMost likely causeFix
No Approve/Reject buttonsStatus is not pending_reviewStatus check
Resend disabledStatus not in_progress or invite expiredCancel + recreate
Download 404Not yet decidedDecide first
Audit tab incompleteCache staleRefresh; events arrive in batches
Reopen missingStatus not rejectedOnly post-rejection