Skip to content
Last updated

KYC Protect Basic Integration Process

Overview

This page describes the complete production integration workflow for KYC Protect, applicable to both business entities and individual persons:

  1. Authenticate - Generate authentication token
  2. Create Profile - Establish entity profile for grouping and monitoring
  3. Run AML Screening - Execute comprehensive AML search (business or individual)
  4. Link Search to Profile - Associate search results with profile
  5. Review AML Hits - Retrieve and analyze screening matches
  6. Update Hit Decisions - Classify matches (true match, false positive, undecided)
  7. Enable AML Monitoring - Configure ongoing monitoring schedules
  8. Enable KYC Monitoring - Set up country-specific compliance monitoring
  9. Retrieve KYC Alerts - Get list of monitoring alerts for the profile
  10. Update Alert Status - Classify and resolve KYC alerts

ℹ️ Important: This workflow is identical for both business and individual screening. The only differences are in Steps 2-3 (profile creation and AML search endpoints/parameters). All other steps use the same APIs and follow the same pattern.


Metadata Summary

AttributeValue
Arazzo Version1.0.1
Workflow Count2 (Business & Individual)
Workflow Steps10 (Complete integration with alert management)
Applies ToBusiness Entities & Individual Persons
OpenAPI Sources1
Source Typeopenapi
Main Use CaseComplete KYC Protect Integration
Workflow StyleMulti-step Integration with Profile Management
AuthenticationToken-based
Profile ManagementYes
MonitoringYes (AML & KYC)
Alert ManagementYes
Intended AudienceIntegration Teams, Developers, Compliance Officers

Workflow Diagram

Authenticate

Create Profile

AML Screening

Link Search To Profile

View Search Hits

Update AML Search Hits

Add Searches To AML Monitoring

Update Schedules

Add Profiles To KYC Monitoring

Return List Of Alerts By Profile

Update Status Of Alert

Authenticate

Create Profile

AML Screening

Link Search To Profile

View Search Hits

Update AML Search Hits

Add Searches To AML Monitoring

Update Schedules

Add Profiles To KYC Monitoring

Return List Of Alerts By Profile

Update Status Of Alert

Diagram summary: Authenticate, create a profile, run AML screening, link searches to the profile, review and update hits, add searches to AML monitoring and update schedules, and optionally add profiles to KYC monitoring to review alerts and update alert statuses.


Workflow Summary Table

StepEndpoint (Business)Endpoint (Individual)Purpose
1POST /authenticatePOST /authenticateGenerate authentication token
2POST /compliance/kyc-protect/profilesPOST /compliance/kyc-protect/profilesCreate entity profile
3POST /compliance/kyc-protect/searches/businessesPOST /compliance/kyc-protect/searches/individualsRun AML screening
4-10Identical for both entity typesIdentical for both entity typesLink, review, classify, monitor, alert management

End-to-End Sequence Diagram

MonitoringAPIAMLAPIProfileAPIAuthAPIClientMonitoringAPIAMLAPIProfileAPIAuthAPIClientPOST /authenticateaccessTokenPOST /profilesprofileIdPOST /searches/{businesses|individuals}searchId + totalHitCountPOST /profiles/{profileId}/searches/linkSearch linkedGET /searches/{type}/{searchId}/hitshits[]PUT /searches/{type}/{searchId}/hits/{hitId}Hit decision updatedPOST /schedulesscheduleIdPOST /kycMonitoring/profiles/bulkKYC monitoring enabled
MonitoringAPIAMLAPIProfileAPIAuthAPIClientMonitoringAPIAMLAPIProfileAPIAuthAPIClientPOST /authenticateaccessTokenPOST /profilesprofileIdPOST /searches/{businesses|individuals}searchId + totalHitCountPOST /profiles/{profileId}/searches/linkSearch linkedGET /searches/{type}/{searchId}/hitshits[]PUT /searches/{type}/{searchId}/hits/{hitId}Hit decision updatedPOST /schedulesscheduleIdPOST /kycMonitoring/profiles/bulkKYC monitoring enabled

Diagram summary: This sequence diagram shows the complete integration flow for both business and individual entities, with the only variation being the specific search endpoint used in Step 3.


Workflow Decision Diagram

Yes

No

Yes

No

Yes

No

Yes

No

Yes

No

Yes

No

Yes

No

Yes

No

Authenticate

Authentication successful?

Create Profile

Authentication failed

Profile created?

Run AML Search

Handle profile creation failure

Search successful?

Link Search to Profile

Handle AML search failure

Link successful?

Retrieve AML Hits

Handle link failure

Any hits returned?

Review and Update Hit Decisions

No matches - proceed to monitoring

Enable AML Monitoring

AML monitoring enabled?

Country supports KYC monitoring?

Handle monitoring setup failure

Enable KYC Monitoring - Steps 8-10

Complete without KYC monitoring - Skip Steps 8-10

KYC monitoring enabled?

Integration Complete

Handle KYC monitoring failure

Yes

No

Yes

No

Yes

No

Yes

No

Yes

No

Yes

No

Yes

No

Yes

No

Authenticate

Authentication successful?

Create Profile

Authentication failed

Profile created?

Run AML Search

Handle profile creation failure

Search successful?

Link Search to Profile

Handle AML search failure

Link successful?

Retrieve AML Hits

Handle link failure

Any hits returned?

Review and Update Hit Decisions

No matches - proceed to monitoring

Enable AML Monitoring

AML monitoring enabled?

Country supports KYC monitoring?

Handle monitoring setup failure

Enable KYC Monitoring - Steps 8-10

Complete without KYC monitoring - Skip Steps 8-10

KYC monitoring enabled?

Integration Complete

Handle KYC monitoring failure

Diagram summary: This decision flow shows success and failure paths for each stage, applicable to both business and individual workflows. Note: If country doesn't support KYC monitoring at decision point O, the workflow skips Steps 8-10 and completes successfully at Step 7.


Error Handling

All endpoints follow standard Connect API error patterns. Errors include a correlationId for support tracking.

Common HTTP Status Codes

CodeMeaningTypical CauseAction
400Bad RequestInvalid parameters, validation failureCheck request body against schema, verify enum values (threshold: 75/80/85/90/95/100, decision: trueMatch/falsePositive/undecided, status: Open/ClosedProcessed/ClosedUnprocessed)
401UnauthorizedInvalid/expired tokenRe-authenticate using Step 1
403ForbiddenInsufficient permissions or creditsVerify account permissions and credit balance
404Not FoundResource doesn't existVerify resource ID from previous step output
409ConflictDuplicate resource (e.g., profile name)Use unique identifiers or retrieve existing resource
500Internal Server ErrorSystem issueRetry with exponential backoff (2s, 4s, 8s), contact support if persists

Error Response Format

{
  "correlationId": "550e8400-e29b-41d4-a716-446655440000",
  "message": "Validation failed",
  "details": "threshold must be one of: 75, 80, 85, 90, 95, 100"
}

Retry Guidelines

  • 401 (Unauthorized): Re-authenticate once, then fail
  • 403 (Forbidden): Do not retry (permission issue)
  • 404 (Not Found): Do not retry in workflow (indicates data flow error)
  • 409 (Conflict): Do not retry (resource already exists)
  • 500/503 (Server Errors): Retry up to 3 times with exponential backoff

Step 1: Authenticate

Before using any of the endpoints, you must authenticate. This ensures you have the necessary permissions to access the data.

Applies To: Business & Individual workflows

Endpoint

POST /authenticate

Example Request

{
  "username": "your-username",
  "password": "your-password"
}

Example Response

{
  "token": "eyJhbGciOi..."
}

Success Criteria

Condition
HTTP Status Code = 200
Authentication token returned

Workflow Outputs

OutputDescription
tokenBearer token used for subsequent API requests

Common Errors

StatusCause
401Invalid credentials

Step 2: Create Profile

Profiles are required for grouping searches, monitoring, and audit trails. The profile structure differs slightly between business and individual entities.

Key Difference: Use appropriate type and details structure for your entity.

Endpoint

POST /compliance/kyc-protect/profiles

Business Profile Example

{
  "name": "Creditsafe Ltd",
  "type": "company",
  "details": {
    "legalName": "Creditsafe Ltd",
    "registrationNumber": "03495298",
    "countryCode": "GB"
  }
}

Individual Profile Example

{
  "name": "John Smith",
  "type": "individual",
  "details": {
    "firstName": "John",
    "lastName": "Smith",
    "dateOfBirth": "1980-05-15"
  }
}

Profile Type Values

ValueDescriptionEntity Category
companyLimited companyBusiness
plcPublic limited companyBusiness
partnershipPartnershipBusiness
soletraderSole trader businessBusiness
trustTrust entityBusiness
otherEntityOther entity typeBusiness
individualIndividual personIndividual

Success Criteria

Condition
HTTP Status Code = 201
Profile id returned

Workflow Outputs

OutputDescription
profileIdUnique profile identifier for subsequent operations

Common Errors

StatusCause
400Missing required fields (name, type) or invalid profile type
401Token expired
409Profile name already exists

Step 3: AML Screening

Execute comprehensive AML screening. Choose the appropriate endpoint based on entity type.

Key Difference: Use /searches/businesses for companies or /searches/individuals for persons.


Endpoint

POST /compliance/kyc-protect/searches/businesses

Example Request

{
  "countryCodes": ["GB"],
  "threshold": 85,
  "name": "Creditsafe",
  "datasets": ["AM"]
}

Request Parameters

PropertyTypeRequiredDescription
namestringYesBusiness name to screen
thresholdintegerYesMatch threshold (75, 80, 85, 90, 95, or 100)
datasetsarrayYesAML datasets to screen against
countryCodesarrayNoCountry filter for screening

Endpoint

POST /compliance/kyc-protect/searches/individuals

Example Request (Simple)

{
  "threshold": 80,
  "name": "Donald Trump",
  "datasets": ["AM", "PEP"]
}

Example Request (Detailed)

{
  "threshold": 80,
  "firstName": "Donald",
  "lastName": "Trump",
  "dateOfBirth": "1946-06-14",
  "gender": "male",
  "datasets": ["AM", "PEP", "SAN"]
}

Request Parameters

PropertyTypeRequiredDescription
namestringConditionalFull name (required if firstName/lastName not provided)
firstNamestringConditionalFirst name (required if name not provided)
lastNamestringConditionalLast name (required if name not provided)
middleNamestringNoMiddle name
dateOfBirthstringNoDate of birth (YYYY-MM-DD format)
genderstringNoGender ("male" or "female")
thresholdintegerYesMatch threshold (75, 80, 85, 90, 95, or 100)
datasetsarrayYesAML datasets (PEP available for individuals)
countryCodesarrayNoCountry filter for screening

Example Response (Both Types)

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "name": "Creditsafe Ltd",
  "threshold": 85,
  "type": "business",
  "datasets": ["AM"],
  "status": "new",
  "riskRating": "veryLow",
  "totalHitCount": 1
}

Note: Response structure is identical. The type field indicates "business" or "individual".


Success Criteria

Condition
HTTP Status Code = 201
Search id returned

Workflow Outputs

OutputDescription
searchIdUnique AML search identifier
totalHitCountNumber of AML matches returned
riskRatingCalculated AML risk level

Common Errors

StatusCause
400Invalid threshold (must be 75, 80, 85, 90, 95, or 100) or invalid dataset code
401Token expired
403Insufficient credits

Steps 4-10: Identical for Both Entity Types

ℹ️ Important: Steps 4-10 use identical endpoints and processes for both business and individual entities. Simply use the searchId from Step 3 in the appropriate endpoint path.


Attach the search to the profile for future monitoring.

Applies To: Business & Individual workflows (identical)

Endpoint

POST /compliance/kyc-protect/profiles/{profileId}/searches/link

Example Request

{
  "searchIds": ["497f6eca-6276-4993-bfeb-53cbbbba6f08"]
}

Common Errors

StatusCause
400Invalid searchId or profileId format
404Profile or search not found

Step 5: Return AML Search Hits

Retrieve screening hits for review.

Applies To: Business & Individual workflows (use appropriate path)

Endpoints

GET /compliance/kyc-protect/searches/businesses/{searchId}/hits
GET /compliance/kyc-protect/searches/individuals/{searchId}/hits

Example Response

[
  {
    "id": "hit-123",
    "name": "Creditsafe Holdings Ltd",
    "riskRating": "medium",
    "datasets": ["AM"]
  }
]

Common Errors

StatusCause
404Search not found

Step 6: Update AML Hits

Classify each hit with a decision.

Applies To: Business & Individual workflows (use appropriate path)

Single Hit Update

PUT /compliance/kyc-protect/searches/{businesses|individuals}/{searchId}/hits/{hitId}

Example Request

{
  "decision": "trueMatch",
  "note": "Confirmed match after manual review"
}

Valid Decision Values

DecisionDescriptionCan be Changed
undecidedInitial stateCannot be re-applied once changed
trueMatchConfirmed matchCan be changed to falsePositive
falsePositiveConfirmed non-matchCan be changed to trueMatch

Common Errors

StatusCause
400Invalid decision value (must be trueMatch, falsePositive, or undecided)
404Search or hit not found

Step 7: Enable AML Monitoring

Configure ongoing monitoring schedules.

Applies To: Business & Individual workflows (identical)

Endpoint

POST /compliance/kyc-protect/schedules

Example Request

{
  "profileId": "profile-123",
  "searchIds": ["search-456"],
  "email": "alerts@yourdomain.com",
  "frequency": "daily"
}

Common Errors

StatusCause
400Invalid frequency (must be daily, weekly, or monthly)
404Profile or search not found

Step 8: Enable KYC Monitoring

Set up country-specific compliance monitoring (if supported).

Applies To: Business & Individual workflows (identical)

Prerequisites

  • Profile must have a valid safeNumber
  • Country must support KYC monitoring

Check Available Countries

GET /compliance/kyc-protect/lookup/kycMonitoring/countryCodes

If country not supported: Skip Steps 8-10 (KYC monitoring unavailable). Workflow completes at Step 7.

Add Profile to Monitoring

POST /compliance/kyc-protect/kycMonitoring/profiles/bulk

Example Request

{
  "profileIds": ["profile-123"]
}

Common Errors

StatusCause
400Country not supported for KYC monitoring or profile missing safeNumber
404Profile not found

Step 9: Retrieve KYC Alerts

Retrieve monitoring alerts generated for the profile.

Applies To: Business & Individual workflows (identical)

Endpoint

GET /compliance/kyc-protect/kycMonitoring/profiles/{profileId}/alerts

Path Parameters

ParameterDescription
profileIdProfile identifier from Step 2

Query Parameters

ParameterTypeDescription
statusesarrayFilter by status: Open, ClosedProcessed, ClosedUnprocessed
pageintegerPage number for pagination
pageSizeintegerNumber of alerts per page

Example Request

GET /compliance/kyc-protect/kycMonitoring/profiles/profile-123/alerts?statuses=Open
Authorization: Bearer <token>

Example Response

{
  "items": [
    {
      "id": "alert-456",
      "profileId": "profile-123",
      "alertType": "directorChange",
      "status": "Open",
      "createdAt": "2026-07-16T10:30:00Z",
      "description": "New director appointed",
      "severity": "medium"
    }
  ],
  "totalSize": 1
}

Success Criteria

Condition
HTTP Status Code = 200
Alerts collection returned (can be empty)

Workflow Outputs

OutputDescription
alertsCollection of KYC monitoring alerts
firstAlertIdAlert identifier from the first item in alerts

Common Errors

StatusCause
404Profile not found or not enrolled in KYC monitoring

Step 10: Update Alert Status

Update the status of a KYC alert after review.

Applies To: Business & Individual workflows (identical)

Endpoint

PUT /compliance/kyc-protect/kycMonitoring/profiles/{profileId}/alerts/{alertId}

Path Parameters

ParameterDescription
profileIdProfile identifier from Step 2
alertIdAlert identifier from Step 9

Example Request

{
  "status": "ClosedProcessed",
  "note": "Director change verified and documented in compliance records"
}

Valid Alert Status Values

StatusDescriptionUse Case
OpenAlert requires reviewInitial state
ClosedProcessedAlert reviewed and actionedCompliance action taken
ClosedUnprocessedAlert reviewed, no action neededFalse positive or not relevant

Example Response

{
  "id": "alert-456",
  "profileId": "profile-123",
  "alertType": "directorChange",
  "status": "ClosedProcessed",
  "note": "Director change verified and documented in compliance records",
  "updatedAt": "2026-07-16T11:00:00Z",
  "updatedBy": "user@company.com"
}

Success Criteria

Condition
HTTP Status Code = 200
Alert status successfully updated

Workflow Outputs

OutputDescription
alertUpdatedConfirmation that alert status was updated

Common Errors

StatusCause
400Invalid status value (must be Open, ClosedProcessed, or ClosedUnprocessed)
404Alert or profile not found

AML Match Threshold Guidance

ThresholdBehaviorRecommended Use
75Very broad matchesInitial screening
80Broad matchesStandard screening
85Balanced precisionRecommended for production
90Precise matchesLow false-positive tolerance
95-100Very precise/exactHighly specific screening

Dataset Configuration

Common Datasets

Dataset CodeDescriptionAvailable For
AMAdverse MediaBusiness & Individual
SANSanctionsBusiness & Individual
PEPPolitically Exposed PersonsIndividual only
PEP-CURRENTCurrent PEPsIndividual only
PEP-FORMERFormer PEPsIndividual only
DDDisqualified DirectorsBusiness only

Workflow Data Flow Diagram

Inputs

Authenticate

token

Create Profile

profileId

AML Search

searchId

Link

Get Hits

Update Decisions

Enable Monitoring

Inputs

Authenticate

token

Create Profile

profileId

AML Search

searchId

Link

Get Hits

Update Decisions

Enable Monitoring

Diagram summary: Data flows from authentication through profile creation, search execution, linking, hit management, and monitoring setup.


Required Workflow Inputs

Business Inputs

Required:
  - username, password
  - profileName, profileType (company/plc/etc.)
  - legalName, businessName
  - threshold (75-100)
  - datasets (array)
  - hitDecision (undecided/trueMatch/falsePositive)
  - monitoringEmail
  - alertStatus (Open/ClosedProcessed/ClosedUnprocessed)

Optional:
  - registrationNumber, countryCode
  - searchCountryCodes
  - hitNote
  - monitoringFrequency (daily/weekly/monthly)
  - alertNote

Individual Inputs

Required:
  - username, password
  - profileName
  - name OR (firstName + lastName)
  - threshold (75-100)
  - datasets (array)
  - hitDecision
  - monitoringEmail
  - alertStatus (Open/ClosedProcessed/ClosedUnprocessed)

Optional:
  - middleName, dateOfBirth, gender
  - searchCountryCodes
  - hitNote
  - monitoringFrequency
  - alertNote

Best Practices

  • Profile Naming: Include legal name and identifier (registration number or DOB)
  • Hit Decisions: Always include descriptive notes for audit trails
  • Dataset Selection: Use AM + SAN minimum; add PEP for individuals
  • Monitoring: Set frequency based on risk profile
  • Thresholds: Use 85 for balanced production screening
  • Alert Management: Review KYC alerts promptly and document actions taken
  • Alert Status: Use ClosedProcessed when action taken, ClosedUnprocessed for false positives

Authentication Requirements

All requests following authentication must include:

Authorization: Bearer <token>