Skip to main content
This page documents the full payload returned by GET /v3/session/{id}/decision/ for a Business Verification (KYB) session. The endpoint is unified — when you pass a business session_id, the response carries session_kind: "business" and the business-specific feature arrays below.

Top-level structure

All feature arrays are multi-instance — each item represents one node in a graph workflow. Null means the feature was not present in this session’s workflow.

Shared top-level fields

registry_checks[]

Each item is one company registry check (typically one per session; multiple in graph workflows with recursive corporate UBO KYB).

company block

The nested company object is the full view of the legal entity as derived from the registry (and optionally user-edited):

Officer item shape (inside company.officers)

Beneficial owner item shape (inside company.beneficial_owners)

kyc_status uses a B2C-safe projection: Approved, Declined, or Pending (full session states collapse to Pending until the KYC finishes).

key_people_checks[]

This is the aggregate check over all officers and UBOs for the session. It exposes two buckets so the console can render “extracted from the registry” side-by-side with “submitted by the business”, plus a high-level UBO KYC summary.
  • registry.officers / registry.beneficial_owners — parties extracted from the registry check.
  • submitted.parties — parties the business admin explicitly added during the Key People flow (records with source = "USER").

registry.officers[] / registry.beneficial_owners[]

Same item shapes as company.officers / company.beneficial_owners above (B2C-safe KYC enrichment).

submitted.parties[]

User-submitted parties carry their KYC or child-KYB linkage:
Corporate parties (entity_type: "company") additionally carry company_name, registration_number, and kyb_sub_session_id / kyb_sub_session_status when nested KYB is enabled for corporate UBOs.

ubo_kyc_summary

Aggregate UBO KYC progress — useful for a single dashboard card: Returns null when no UBOs have linked KYC sessions.

document_verifications[]

Documents grouped by node:

Corporate document metadata

For PDF corporate documents, items[].document_metadata.overlay_manipulation can include forensic evidence for suspected overlay-text editing. When present, it includes: The field is null when no overlay evidence was found, when the document is not a PDF, or when the PDF could not be analyzed.

aml_screenings[]

Company-level and (when the workflow wires them) person-level AML screenings.
When total_hits > 0, each hit includes match score, risk score, watchlist sources, and a per-hit review_status you can update via the update-aml-hit-status endpoint. See AML Screening report for the hit structure.

Shared feature arrays

phone_verifications, email_verifications, questionnaire_responses, ip_analyses use the same per-item shapes as user (KYC) sessions. They’re null when the workflow doesn’t include them. See the KYC response for item schemas.

Warning feature groups

Business Verification warnings are grouped by the feature that produced them:
  • KYB_REGISTRY for registry availability, ownership, company activity, and country-restriction issues.
  • KYB_DOCUMENTS for corporate document extraction, cross-check, metadata, manipulation, subtype, age, and attempt-limit issues.
  • AML for company AML screening matches or missing screening data.
  • KYB_KEY_PEOPLE for person-level issues tied to directors, officers, UBOs, or representatives.
  • PHONE for phone-number risk, duplication, blocklist, and verification-code attempt issues.
  • EMAIL for email risk, deliverability, duplication, blocklist, and verification-code attempt issues.
  • QUESTIONNAIRE for custom status rules driven by questionnaire answers.
  • LOCATION for Device & IP Analysis, private-network, IP blocklist, device blocklist, and duplicate device/IP issues.
See Business Verification warnings for the full list of warning codes.

Workflow-driven field filtering

Workflows can limit which nested fields appear on each feature item via response_attributes. Fields always included regardless: status, warnings, node_id. All other fields are nullified when not in the allow-list — the key stays in the response for schema stability.

Next steps

Statuses

What each status value means.

Risk assessment

How risk_level is computed.

AML report

Full AML hit payload reference.

Key people

How parties flow from registry vs user submission into registry / submitted buckets.

Documents

Document groups, OCR, and cross-reference.

Retrieve session

Full endpoint reference including example responses.