Business (KYB) Monitoring

Introduction

Ongoing Business Monitoring lets you enroll verified businesses and track changes to their profile with configurable alerts to keep information on record current and compliant.

Enrollment workflow

Customers have two options to enroll a business for monitoring

  1. Auto-enrollment During the initial verification call, you can enable monitoring by including additional parameters:

    Required Monitoring Fields The transaction payload must include the following fields

    FieldTypeValue
    KYBMonitoringEnabledBooleantrue

    Optional Monitoring Fields The following fields can be included in the transaction payload to customize the monitoring behavior. If omitted, the system will fall back to default values.

    Field

    Type

    Description

    Default Value

    KYBMonitoringFields

    List

    A comma-separated list of field names to monitor for changes.

    [BusinessStatus, StandardizedLocations, StandardizedIndustries]

    KYBMonitoringFrequency

    Enum

    Defines how often monitoring checks are performed. Possible values: Daily, Weekly, Monthly, Quarterly, Yearly

    Weekly

    KYBMonitoringCallbackURL

    String

    A valid callback URL which will receive monitoring updates

    Sample Request

    {
        "AcceptTruliooTermsAndConditions": true,
        "CallBackUrl": "<url>",
        "CleansedAddress": false,
        "ConsentForDataSources": [],
        "PackageId": "<packageId>",
        "CountryCode": "GB",
        "VerificationType": "Live",
        "BusinessDataFields": {
            "BusinessName": "Acme Inc.",
            "BusinessRegistrationNumber": "05987000",
            "EnhancedProfile": true,
            "Location": [
                {
                    "Address1": "241 Borough High St",
                    "City": "London",
                    "PostalCode": "SE1 1GA"
                }
            ],
            "KYBMonitoringCallbackURL": "<monitoring callback url>",
            "KYBMonitoringEnabled": true,
            "KYBMonitoringFrequency": "Quarterly",
    	      "KYBMonitoringFields": "BusinessStatus,BusinessLegalForm,StandardizedLocations,StandardizedCompanyOwnershipHierarchy, StandardizedCommunication,StandardizedIncorporationDetails"
      },
      "VerboseMode": false
    }

  2. Manual Enrollment If you prefer to verify a business first and enroll it later, follow this two‑step flow:

    1. Verify the business by sending a standard verification request (without monitoring parameters). Capture the BusinessReferenceID returned in the verification response.

    2. Send an enrollment request (POST) using the captured reference. The endpoint is https://businessenrollment.trulioo.com/Enrollment/EnrollWithKyb. The payload includes:

      FieldTypeDescription
      FrequencyStringIndicates how often the business entity should be monitored. Possible values: Daily, Weekly, Monthly, Quarterly, Yearly
      KybEntityToMonitorObjectContains the entity details such as business name, registration number, country, and a list of FilterOn which contains the fields that should trigger alerts
      TruliooIdStringThe BusinessReferenceID from the verification response

      Sample request

      {
          "Frequency": "Monthly",
          "KybEntityToMonitor": {
              "BusinessName": "Acme Inc.",
              "BusinessRegistrationNumber": "05987000",
              "FilterOn": [
                  "BusinessStatus", "BusinessLegalForm", "StandardizedLocations", "StandardizedIndustries", "StandardizedCompanyOwnershipHierarchy", "StandardizedIncorporationDetails", "StandardizedBusinessNames", "StandardizedRegistrationNumbers", "StandardizedDirectorsOfficers", "StandardizedCommunication"
              ],
              "TruliooId": "gb0006abfb-16b4-7bfe-9f0d-000dd0eae00a",
              "Country": "GB"
          }
      }
      

      The enrollment service returns an enrollment ID that you can use to query monitoring results.

Alert Delivery

At the end of the monitoring period, the service generates an alert. There are two delivery methods:

  1. Polling If you did not specify a callback URL during enrollment, you can periodically request the monitoring results with: **GET **https://businessenrollment.trulioo.com/Enrollment/MonitoringResult/{enrollment-id}
  2. Event-driven callback If you provided a **KYBMonitoringCallbackURL **or CallbackUrl during enrollment, Trulioo pushes the monitoring results to your webhook.

The response in both methods is the same. The payload includes the business name, country, registration number, the monitoring period and a list of ChangedFields. Each changed field object contains the field name, old value, new value and the number of changes since the last check.

Sample response

{
  "BusinessName": "ACME INC.",
  "Country": "GB",
  "BusinessRegistrationNumber": "05987000",
  "HistoricalDetails": {
    "StartDate": "2025-01-11T10:45:00",
    "EndDate": "2025-10-03T10:45:00"
  },
  "ChangedFields": [
    {
      "FieldName": "BusinessLegalForm",
      "OldValue": "Private limited company_Translated",
      "NewValue": "Private limited company_Translated",
      "ChangeCount": 0
    },
    {
      "FieldName": "BusinessStatus",
      "OldValue": "Active_Translated",
      "NewValue": "Active_Translated",
      "ChangeCount": 0
    },
    {
      "FieldName": "StandardizedLocations",
      "OldValue": "[{\"LocationType\":\"Registered\",\"Address1\":\"ORANGE TOWER\",\"BuildingNumber\":\"\",\"StreetName\":\"\",\"StreetType\":\"\",\"City\":\"SALFORD QUAYS\",\"PostalCode\":\"M50 2HF\",\"CountryCode\":\"UNITED KINGDOM\",\"County\":\"\",\"POBox\":\"\",\"Suburb\":\"\",\"AddressAssociation\":\"Unknown\"}]",
      "NewValue": "[{\"LocationType\":\"Registered\",\"Address1\":\"ORANGE TOWER\",\"BuildingNumber\":\"\",\"StreetName\":\"\",\"StreetType\":\"\",\"City\":\"SALFORD QUAYS\",\"PostalCode\":\"M50 2HF\",\"CountryCode\":\"UNITED KINGDOM\",\"County\":\"\",\"POBox\":\"\",\"Suburb\":\"\",\"AddressAssociation\":\"Unknown\"}]",
      "ChangeCount": 0
    },
    {
      "FieldName": "StandardizedIndustries",
      "OldValue": "{\"StandardizedIndustries\":[{\"Code\":\"64205\",\"CodeType\":\"SIC Code\",\"Description\":\"Activities of financial services holding companies\"}]}",
      "NewValue": "{\"StandardizedIndustries\":[{\"Code\":\"64205\",\"CodeType\":\"SIC Code\",\"Description\":\"Activities of financial services holding companies\"}]}",
      "ChangeCount": 0
    },
    {
      "FieldName": "StandardizedCompanyOwnershipHierarchy",
      "OldValue": "{\"Ownerships\":[{\"UniqueId\":\"0\",\"FullName\":\"ACME INC.\",\"BeneficiaryType\":\"Root Business\",\"FullAddress\":[\"ORANGE TOWER, SALFORD QUAYS, UNITED KINGDOM\"],\"City\":\"SALFORD QUAYS\",\"PostalCode\":\"M50 2HF\",\"CountryCode\":\"UNITED KINGDOM\",\"LegalForm\":\"Private limited company\",\"DegreeOfSeparation\":0,\"NationalIDNumber\":\"05987000\",\"Status\":\"Active\"},{\"UniqueId\":\"1\",\"FullName\":\"ACME PARTNERS LLP\",\"BeneficiaryType\":\"corporate-entity-person-with-significant-control\",\"BusinessEntityType\":\"Business\",\"FullAddress\":[\"21 Palmer Street, London, England\"],\"City\":\"London\",\"StateProvinceCode\":\"\",\"PostalCode\":\"SW1H 0AD\",\"LegalForm\":\"Limited Liability Partnership\",\"ControlOwnershipType\":\"corporate-entity-person-with-significant-control\",\"DegreeOfSeparation\":1,\"OwnershipNotes\":\"significant-influence-or-control\",\"NationalIDNumber\":\"Oc301600\",\"Status\":\"Inactive\"}],\"Relationships\":[{\"ParentUniqueId\":\"0\",\"TargetUniqueId\":\"1\",\"Type\":\"corporate-entity-person-with-significant-control\",\"ControlStartDate\":\"2016-04-06T00:00:00Z\",\"ControlEndDate\":\"2018-08-07T00:00:00Z\",\"RelationshipNotes\":\"significant-influence-or-control\"}],\"OwnershipSummary\":{\"TotalOwnershipCount\":1,\"MaximumDegreeOfSeparation\":1,\"TotalAllocatedOwnershipPercentage\":0.0,\"OrganizationsCount\":1,\"IndividualsCount\":0,\"UnknownsCount\":0}}",
      "NewValue": "{\"Ownerships\":[{\"UniqueId\":\"0\",\"FullName\":\"ACME INC.\",\"BeneficiaryType\":\"Root Business\",\"FullAddress\":[\"ORANGE TOWER, SALFORD QUAYS, UNITED KINGDOM\"],\"City\":\"SALFORD QUAYS\",\"PostalCode\":\"M50 2HF\",\"CountryCode\":\"UNITED KINGDOM\",\"LegalForm\":\"Private limited company\",\"DegreeOfSeparation\":0,\"NationalIDNumber\":\"05987000\",\"Status\":\"Active\"},{\"UniqueId\":\"1\",\"FullName\":\"ROME ACME LIMITED\",\"BeneficiaryType\":\"corporate-entity-person-with-significant-control\",\"BusinessEntityType\":\"Business\",\"FullAddress\":[\"Orange Tower Mediacityuk, Salford Quays, United Kingdom\"],\"City\":\"Salford Quays\",\"StateProvinceCode\":\"\",\"PostalCode\":\"M50 2HF\",\"CountryCode\":\"GB\",\"LegalForm\":\"Limited Company\",\"ControlOwnershipType\":\"corporate-entity-person-with-significant-control\",\"DegreeOfSeparation\":1,\"OwnershipNotes\":\"ownership-of-shares-75-to-100-percent, voting-rights-75-to-100-percent, right-to-appoint-and-remove-directors\",\"NationalIDNumber\":\"06266728\",\"Status\":\"Active\"},{\"UniqueId\":\"2\",\"FullName\":\"ACME PARTNERS LLP\",\"BeneficiaryType\":\"corporate-entity-person-with-significant-control\",\"BusinessEntityType\":\"Business\",\"FullAddress\":[\"21 Palmer Street, London, England\"],\"City\":\"London\",\"StateProvinceCode\":\"\",\"PostalCode\":\"SW1H 0AD\",\"LegalForm\":\"Limited Liability Partnership\",\"ControlOwnershipType\":\"corporate-entity-person-with-significant-control\",\"DegreeOfSeparation\":1,\"OwnershipNotes\":\"significant-influence-or-control\",\"NationalIDNumber\":\"Oc301600\",\"Status\":\"Inactive\"}],\"Relationships\":[{\"ParentUniqueId\":\"0\",\"TargetUniqueId\":\"1\",\"Type\":\"corporate-entity-person-with-significant-control\",\"ControlStartDate\":\"2016-04-06T00:00:00Z\",\"RelationshipNotes\":\"ownership-of-shares-75-to-100-percent, voting-rights-75-to-100-percent, right-to-appoint-and-remove-directors\"},{\"ParentUniqueId\":\"0\",\"TargetUniqueId\":\"2\",\"Type\":\"corporate-entity-person-with-significant-control\",\"ControlStartDate\":\"2016-04-06T00:00:00Z\",\"ControlEndDate\":\"2018-08-07T00:00:00Z\",\"RelationshipNotes\":\"significant-influence-or-control\"}],\"OwnershipSummary\":{\"TotalOwnershipCount\":2,\"MaximumDegreeOfSeparation\":1,\"TotalAllocatedOwnershipPercentage\":0.0,\"OrganizationsCount\":2,\"IndividualsCount\":0,\"UnknownsCount\":0}}",
      "ChangeCount": 1
    },
    {
      "FieldName": "StandardizedIncorporationDetails",
      "OldValue": "{\"JurisdictionOfIncorporation\":\"United Kingdom\",\"BusinessLegalForm\":\"Private limited company_Translated\",\"OriginalBusinessLegalForm\":\"Private limited company\",\"DayOfIncorporation\":\"2\",\"MonthOfIncorporation\":\"11\",\"YearOfIncorporation\":\"2006\"}",
      "NewValue": "{\"JurisdictionOfIncorporation\":\"United Kingdom\",\"BusinessLegalForm\":\"Private limited company_Translated\",\"OriginalBusinessLegalForm\":\"Private limited company\",\"DayOfIncorporation\":\"2\",\"MonthOfIncorporation\":\"11\",\"YearOfIncorporation\":\"2006\"}",
      "ChangeCount": 0
    },
    {
      "FieldName": "StandardizedBusinessNames",
      "OldValue": "[{\"Name\":\"Acme Inc.\",\"Type\":\"Returned Business Name\",\"UsedForMatching\":false},{\"Name\":\"MONEY GROUP LIMITED\",\"Type\":\"Returned Previous Name\",\"UsedForMatching\":false},{\"Name\":\"MONEY HOLDINGS 1 LIMITED\",\"Type\":\"Returned Previous Name\",\"UsedForMatching\":false}]",
      "NewValue": "[{\"Name\":\"Acme Inc.\",\"Type\":\"Returned Business Name\",\"UsedForMatching\":false},{\"Name\":\"MONEY GROUP LIMITED\",\"Type\":\"Returned Previous Name\",\"UsedForMatching\":false},{\"Name\":\"MONEY HOLDINGS 1 LIMITED\",\"Type\":\"Returned Previous Name\",\"UsedForMatching\":false}]",
      "ChangeCount": 0
    },
    {
      "FieldName": "StandardizedRegistrationNumbers",
      "OldValue": "{\"StandardizedRegistrationNumbers\":[{\"Number\":\"05987000\",\"Type\":\"Company Registration Number\"}]}",
      "NewValue": "{\"StandardizedRegistrationNumbers\":[{\"Number\":\"05987000\",\"Type\":\"Company Registration Number\"}]}",
      "ChangeCount": 0
    },
    {
      "FieldName": "StandardizedDirectorsOfficers",
      "OldValue": "{\"StandardizedDirectorsOfficers\":[{\"FullName\":\"STU JOHN DOE\",\"DateOfBirth\":\"1969-05\",\"FullAddress\":[\"THINK PARK MOSLEY ROAD, TRAFFORD PARK, ENGLAND\"],\"Position\":\"DIRECTOR\",\"Designation\":\"director\",\"Type\":\"Individual\",\"Status\":\"Active\",\"BeginDate\":\"2006-11-06\",\"EndDate\":\"\"}]}",
      "NewValue": "{\"StandardizedDirectorsOfficers\":[{\"FullName\":\"STU JOHN DOE\",\"DateOfBirth\":\"1969-05\",\"FullAddress\":[\"THINK PARK MOSLEY ROAD, TRAFFORD PARK, ENGLAND\"],\"Position\":\"DIRECTOR\",\"Designation\":\"director\",\"Type\":\"Individual\",\"Status\":\"Active\",\"BeginDate\":\"2006-11-06\",\"EndDate\":\"\"},{\"FullName\":\"JONATHAN ROLEX\",\"DateOfBirth\":\"1964-04\",\"FullAddress\":[\"THINK PARK MOSLEY ROAD, TRAFFORD PARK, ENGLAND\"],\"Position\":\"DIRECTOR\",\"Designation\":\"director\",\"Type\":\"Individual\",\"Status\":\"Active\",\"BeginDate\":\"2007-01-25\",\"EndDate\":\"\"},{\"FullName\":\"SIMON FRAISER JAMES\",\"DateOfBirth\":\"1968-04\",\"FullAddress\":[\"ORANGE TOWER MEDIACITYUK, SALFORD QUAYS, UNITED KINGDOM\"],\"Position\":\"DIRECTOR\",\"Designation\":\"director\",\"Type\":\"Individual\",\"Status\":\"Active\",\"BeginDate\":\"2006-11-06\",\"EndDate\":\"\"},{\"FullName\":\"DON JOE\",\"DateOfBirth\":\"1971-04\",\"FullAddress\":[\"THINK PARK MOSLEY ROAD, TRAFFORD PARK, MANCHESTER, ENGLAND\"],\"Position\":\"DIRECTOR\",\"Designation\":\"director\",\"Type\":\"Individual\",\"Status\":\"Resigned\",\"BeginDate\":\"2013-12-11\",\"EndDate\":\"2018-08-07\"}]}",
      "ChangeCount": 1
    }
  ]
}

Retrieve Enrollment Details

You can check the enrollment details of a business entity that has been subscribed to monitoring.

Endpoint: GET https://businessenrollment.trulioo.com/Enrollment/{enrollment-id}

Sample response

{
    "StatusCode": 200,
    "Message": "GET Request successful.",
    "Result": {
        "Id": "5b8d148c-d92c-422e-a2f5-9bb0a2f7040i",
        "Frequency": "Quarterly",
        "ServiceName": "tranasction-id-mock",
        "CustomerName": "42826a82s8abcp4caaOb514t7ae1efc4dc11-7e04d235-969b-4d4e-aaac-f5ffeb9e6e03",
        "SkipInitialCallback": false,
        "ScheduleStartDate": null,
        "IsTestTransaction": false,
        "CallbackUrl": null,
        "KybEntityToMonitor": {
            "BusinessName": "ACME INC.",
            "BusinessRegistrationNumber": "05987000",
            "Type": "Business",
            "TruliooID": "gb0006abfb-16b4-7bfe-9f0d-000dd0eae00a",
            "FilterOn": [
                "BusinessStatus",
                "BusinessLegalForm",
                "StandardizedLocations",
                "StandardizedIndustries",
                "StandardizedCommunication"
            ],
            "Country": 1
        }
    }
}

Refresh Enrollment

After enrolling an entity for monitoring, you can use the refresh endpoint to do the following:

  1. Trigger a refresh to check for any changes between now and the last scheduled run.
  2. Reset the monitoring schedule, so the next run starts one interval from the time of the refresh.

Note: This endpoint does not return monitoring results directly. To retrieve the latest monitoring outcome after calling this endpoint, refer to the Alert Delivery section described previously.

Scenario 1: Check for changes between two alerts.

Suppose that you enrolled a business on January 1 with a monthly frequency. Your next alert would then be scheduled for February 1. If you want to check for changes before your next alert date — say on January 15 — you can call the refresh endpoint. This triggers a refresh to fetch changes based on the current date, and provides all changes between the current date and the previous date based on the monitoring frequency. So in this case, you will receive the changes that occurred between Dec 15 (current date - monitoring frequency) and Jan 15 (current date). After calling refresh, you can then retrieve the latest results using the polling endpoint or a webhook (if configured).

Scenario 2: Updating the monitoring schedule

If you want to reset the monitoring schedule so that future checks from the current date (but with same frequency), you can set DelayNextRun=true in your refresh request. This updates the next scheduled run to be one interval from now For example, if you have a monthly frequency and you ran the refresh request on Jan 15, then your next run would be scheduled for Feb 15.

Endpoint

POST https://businessenrollment.trulioo.com/Enrollment/{enrollment-id}/refresh?DelayNextRun=true

Note, use DelayNextRun=false if you want to only check for changes between alerts

Sample response

{
    "StatusCode": 200,
    "Message": "POST Request successful.",
    "Result": "successfully requested a enrollment refresh"
}

Delete Enrollment

You can cancel the enrollment through this endpoint if you no longer wish to monitor an entity.

Endpoint

DELETE https://businessenrollment.trulioo.com/Enrollment/{enrollment-id}

Sample Response

{
    "StatusCode": 200,
    "Message": "DELETE Request successful.",
    "Result": "successfully deleted enrollment id 5b8d148c-d92c-422e-a2f5-9bb0a2f7040i"
}