Skip to main content

Client-Only Verification

Perform lite screening checks when the consumer is not in the flow. The client provides all subject data, and the check completes within seconds.

Overview

Use Case: Verify individuals when they cannot use the consumer mobile app, or when you already have their information and just need screening results.

Key Features:

  • AML screening (sanctions/PEP checks)
  • Optional address verification
  • Optional CCJ/Insolvency check (UK only)
  • Optional ongoing monitoring
  • Completes in seconds (no consumer interaction required)

Subject Type: Individual

Template ID: checkTemplates/clientonly-verification-check-v1-0-0


When to Use This Check

Good for:

  • Quick screening of clients or counterparties
  • Situations where the consumer cannot access the mobile app
  • Batch processing of existing client data
  • Ongoing monitoring of existing relationships

Not suitable for:

  • Full identity verification with document checks (use Identity Verification instead)
  • Source of funds verification (use Source of Funds instead)
  • Business verification (use KYB Verification instead)

Prerequisites

  • Thirdfort account with API access
  • Client credentials (Client ID and Secret)
  • Subject data: Name, date of birth (optional but recommended), address
  • Package support: Ongoing monitoring requires package support (if enabled)

Parameters Reference

Required Parameters

ParameterTypeDescription
displayNamestringHuman-readable name for the check
clientReferencestringYour own reference ID for tracking
templatestringMust be checkTemplates/clientonly-verification-check-v1-0-0
params.@typestringMust be type.googleapis.com/thirdfort.client.checks.type.v1.ClientOnlyVerificationCheckParams
params.subject.givenNamestringFirst name of the individual
params.subject.familyNamestringLast name of the individual
params.addressAddressResidential address of the individual

Optional Parameters

ParameterTypeDefaultDescription
params.subject.otherNamesstring-Middle names
params.subject.dateOfBirthDate-Date of birth (structured object: {year, month, day}, recommended for better screening accuracy)
params.subject.yearOfBirthuint32-Year of birth (alternative to full date)
params.enableOngoingMonitoringboolfalseContinuous AML screening monitoring
params.requireAddressVerificationboolfalseElectronic address matching & verification
params.requireCcjInsolvencyboolfalseSurface CCJs or insolvency indicators on an individual (UK addresses only)
params.internationalAddressVerificationConsentboolfalseRequired for non-UK addresses if address verification is enabled

Output-Only Fields

FieldDescription
params.screeningSettingsAuto-populated from organization/team settings - cannot be set by client

Address Format

The address field uses the following structure (camelCase in JSON):

{
"buildingNumber": "10",
"street": "Downing Street",
"locality": "London",
"postalCode": "SW1A 2AA",
"countryCode": "GBR"
}

Required fields:

  • buildingNumber or buildingName
  • street
  • locality
  • postalCode
  • countryCode (ISO 3166-1 alpha-3 code, e.g., "GBR", "USA")

Optional fields:

  • subBuilding
  • buildingName
  • subLocality
  • administrativeArea

Complete Example

Create Check Request

curl -X POST "https://api.thirdfort.dev/client/api/v1/organizations/{org_id}/teams/{team_id}/checks" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"displayName": "Client-only verification for John Smith",
"clientReference": "client-12345",
"template": "checkTemplates/clientonly-verification-check-v1-0-0",
"params": {
"@type": "type.googleapis.com/thirdfort.client.checks.type.v1.ClientOnlyVerificationCheckParams",
"subject": {
"givenName": "John",
"familyName": "Smith",
"dateOfBirth": {
"year": 1985,
"month": 6,
"day": 15
}
},
"address": {
"buildingNumber": "123",
"street": "High Street",
"locality": "London",
"postalCode": "SW1A 1AA",
"countryCode": "GBR"
},
"enableOngoingMonitoring": true,
"requireAddressVerification": true
}
}'

Note: The endpoint includes the parent (team) in the URL path. Replace {org_id} and {team_id} with your actual organization and team IDs.

Response

{
"name": "organizations/NT6bqXp6k47SbagGAUHHG7/teams/gZzg3caveKLhe3VXjRiyXL/checks/eaa99a49-7c7c-43e0-a929-ec2dddec8a85",
"displayName": "Client-only verification for John Smith",
"clientReference": "client-12345",
"state": "ACTIVE",
"createTime": "2026-03-06T14:06:59.758655Z",
"updateTime": null,
"template": "checkTemplates/clientonly-verification-check-v1-0-0",
"params": { ... },
"relatedSubjects": [ ... ],
"creator": "partners/thirdfort/integrations/4",
"ongoingMonitoring": {
"enabled": true,
"activeUntil": null
},
...
}

Key Response Fields:

  • name - Resource name of the check (use for subsequent API calls)
  • state - Current check state (see Check States below)
  • ongoingMonitoring.enabled - Confirms ongoing monitoring is active

The check will complete within seconds and transition to INACTIVE state.

Check States

  • ACTIVE: The check is actively processing or waiting for data
  • INACTIVE: The check has completed its current processing cycle and results are available
  • CANCELLED: The check has been permanently cancelled
  • DELETED: The check has been soft-deleted

For client-only checks: Checks typically move from ACTIVE to INACTIVE within seconds once processing completes.


Understanding Results

Get Check Summary

curl -X GET "https://api.thirdfort.dev/client/api/v1/organizations/{org_id}/teams/{team_id}/checks/{check_id}/checkSummary" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Note: The endpoint is /checkSummary (camelCase), not /summary.

Summary Response

{
"name": "organizations/.../teams/.../checks/.../checkSummary",
"createTime": "2026-03-06T14:07:00.537001Z",
"payload": {
"@type": "type.googleapis.com/thirdfort.client.checks.type.v1.ClientOnlyVerificationCheckSummary",
"overallRecommendation": {
"recommendation": "CONSIDER",
"description": "One or more items require consideration"
},
"screeningCheckResult": { ... },
"addressVerificationCheckResult": { ... },
"ccjInsolvencyCheckResult": null,
"providedSubjectData": { ... }
},
"sourceFindings": [ ... ],
"reportUrl": "https://files.thirdfort.dev/client/downloads/objects/6ff46f10-ae87-42e6-8601-1f0c32ed5ba6",
"summaryReportUrl": "https://files.thirdfort.dev/client/downloads/objects/8df632f9-e3f9-4e9e-88aa-ca449debf3b8"
}

Result Fields

FieldDescription
payload.overallRecommendationOverall check recommendation object with recommendation and description
payload.screeningCheckResultAML screening results (sanctions/PEP) - always included
payload.addressVerificationCheckResultAddress verification results - only if requireAddressVerification: true
payload.ccjInsolvencyCheckResultCCJ/Insolvency results - only if requireCcjInsolvency: true and UK address
payload.providedSubjectDataEcho of the subject data you provided
reportUrlDownload link for full PDF report (top-level field)
summaryReportUrlDownload link for summary PDF report (top-level field)
sourceFindingsArray of finding resource names that contributed to this summary

Recommendation Values

  • CLEAR: No concerning issues found - proceed with confidence
  • CONSIDER: Anomalies detected that may be explainable - review findings
  • FAIL: Serious anomalies detected, unlikely explainable - high risk

Findings

If the check identifies specific issues (e.g., sanctions matches), retrieve detailed findings:

curl -X GET "https://api.thirdfort.dev/client/api/v1/organizations/{org_id}/teams/{team_id}/checks/{check_id}/findings" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Response:

{
"findings": [
{
"name": "organizations/.../teams/.../checks/.../findings/KB6J4BVVVWNH3J6",
"displayName": "John A. Smith",
"state": "UNREVIEWED",
"payload": { ... },
"sources": ["ComplyAdvantage"],
"createTime": "2026-03-06T14:07:00.516804Z"
}
],
"nextPageToken": ""
}

Finding States:

  • UNREVIEWED - Not yet reviewed
  • DISMISSED - Reviewed and determined not relevant
  • CONFIRMED - Reviewed and confirmed as relevant
  • RETRACTED_BY_PROVIDER - Provider retracted the finding

Downloading PDF Reports

Download PDF reports using the URLs from the summary:

# Download full PDF report
curl -X GET "https://files.thirdfort.dev/client/downloads/objects/6ff46f10-ae87-42e6-8601-1f0c32ed5ba6" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o report.pdf

# Download summary PDF report
curl -X GET "https://files.thirdfort.dev/client/downloads/objects/8df632f9-e3f9-4e9e-88aa-ca449debf3b8" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o summary-report.pdf

Note:

  • PDF downloads require the same OAuth 2.0 access token used for API calls
  • Use the complete URLs from reportUrl and summaryReportUrl fields directly
  • URLs include /objects/ in the path

Common Configurations

Basic Screening Only

Minimal configuration for quick AML screening:

{
"displayName": "Basic screening for John Smith",
"clientReference": "client-12345",
"template": "checkTemplates/clientonly-verification-check-v1-0-0",
"params": {
"@type": "type.googleapis.com/thirdfort.client.checks.type.v1.ClientOnlyVerificationCheckParams",
"subject": {
"givenName": "John",
"familyName": "Smith",
"dateOfBirth": {
"year": 1985,
"month": 6,
"day": 15
}
},
"address": {
"buildingNumber": "123",
"street": "High Street",
"locality": "London",
"postalCode": "SW1A 1AA",
"countryCode": "GBR"
}
}
}

With Ongoing Monitoring

Enable continuous sanctions monitoring:

{
"displayName": "Screening with ongoing monitoring",
"clientReference": "client-12345",
"template": "checkTemplates/clientonly-verification-check-v1-0-0",
"params": {
"@type": "type.googleapis.com/thirdfort.client.checks.type.v1.ClientOnlyVerificationCheckParams",
"subject": { ... },
"address": { ... },
"enableOngoingMonitoring": true
}
}

Note: Requires your organization package to support ongoing monitoring.

With Address Verification

Verify the provided address:

{
"params": {
"@type": "type.googleapis.com/thirdfort.client.checks.type.v1.ClientOnlyVerificationCheckParams",
"subject": { ... },
"address": { ... },
"requireAddressVerification": true
}
}

With CCJ/Insolvency Check (UK Only)

Check for County Court Judgments and insolvency:

{
"params": {
"@type": "type.googleapis.com/thirdfort.client.checks.type.v1.ClientOnlyVerificationCheckParams",
"subject": { ... },
"address": {
"countryCode": "GBR",
...
},
"requireCcjInsolvency": true
}
}

Note: Only available for UK addresses (countryCode: "GBR").


Best Practices

Date of Birth

Always provide dateOfBirth when available for better screening accuracy:

{
"subject": {
"givenName": "John",
"familyName": "Smith",
"dateOfBirth": {
"year": 1985,
"month": 6,
"day": 15
}
}
}

If only the year is known, use yearOfBirth:

{
"subject": {
"givenName": "John",
"familyName": "Smith",
"yearOfBirth": 1985
}
}

Address Quality

Provide complete, accurate addresses for best results:

Good:

{
"buildingNumber": "123",
"street": "High Street",
"locality": "London",
"postalCode": "SW1A 1AA",
"countryCode": "GBR"
}

Poor:

{
"buildingNumber": "123",
"street": "High St",
"locality": "London",
"countryCode": "GBR"
}

Ongoing Monitoring

Enable ongoing monitoring for long-term relationships:

  • Continuously monitors for new sanctions/PEP listings
  • Automatically creates findings when matches are detected
  • Requires package support - contact api@thirdfort.com to enable

Troubleshooting

Common Issues

400 Bad Request - "field required"

  • Ensure displayName and clientReference are included
  • Verify @type field is present in params
  • Check that dateOfBirth uses structured object format (not string)

400 Bad Request - "invalid date"

  • Use structured date format: {year: 1985, month: 6, day: 15}
  • Don't use string format like "1985-06-15"

404 Not Found

  • Verify the endpoint includes parent in URL: /v1/{parent}/checks
  • Check that organization and team IDs are correct
  • Ensure endpoint is /checkSummary not /summary

Check stays in ACTIVE state

  • Client-only checks should complete within seconds
  • If stuck, contact support with the check ID