> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lendflow.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Experian KYB

## Experian KYB

Experian KYB retrieves operational and firmographic facts for a matched US business. Experian publicly describes Business Facts as including industry classifications, public-company status, sales, and employee information.

The **Experian KYB** Workflow Builder block is available for business entities in the **KYB** category. It exposes one operation:

| Service | Service ID | Purpose |
| - | - | - |
| **Business Facts** | `experian_business_facts` | Retrieves the Experian Business Facts record for the business identified by its Experian Business Identification Number (BIN). |

## Requirements

### Business identification inputs

| Application field | Requirement | Notes |
| - | - | - |
| Experian BIN | Conditional | Required to retrieve Business Facts. If it is unavailable, Lendflow runs Experian Business Match first. |
| Business legal name | Conditional | Required for automatic matching when no Experian BIN is stored. |
| Business address city | Conditional | Required for automatic matching when no Experian BIN is stored. |
| Business address state | Conditional | Required for automatic matching when no Experian BIN is stored; use a valid US state code. |
| Business address country | Required | Use `US`. |
| Address line 1 | Optional | Improves automatic matching. |
| ZIP code | Optional | Improves automatic matching; Lendflow normalizes the value. |
| Business telephone | Optional | Must be a valid US telephone number when provided. |
| EIN | Optional | Must be a valid EIN when provided. |

## Run Experian KYB through the API

Use the application enrichment route to queue Business Facts without running a complete Data Orchestration template:

Authenticate the Lendflow request with a Bearer integration token that can access the application and run underwriting services.

1. Call [Enrich Business Credit Application](/api-reference/workflow-management/enrich-business-credit-application) for the application.
2. Set `provider` to `experian_business_facts`.
3. Do not send service-specific `options`; Business Facts has no configurable request options.
4. Include the applicable underwriting `stage_id` when required by the application's workflow.
5. Confirm that the response contains `data.onqueue: true`.
6. Poll [Get Commercial Data](/api-reference/workflow-management/get-commercial-data) with `services[]=experian_business_facts`.

```json theme={"system"}
{
  "provider": "experian_business_facts"
}
```

The enrichment request runs asynchronously. `data.onqueue: true` means Lendflow queued the job; it does not mean Experian has returned a result.

Within the commercial-data response's `data` object:

* `statuses.experian.facts` contains the latest Lendflow lifecycle message.
* `commercial_data.experian.facts` contains the normalized provider result.
* `request_data.experian.facts` contains the stored provider request. Treat identifiers in this path as sensitive.

Internally, Lendflow sends a `POST` request to Experian's `/businessinformation/businesses/v1/facts` endpoint with the matched BIN and configured subcode.

## Run Experian KYB in Data Orchestration

1. In the Lendflow Dashboard, open **Builders > Data Orchestration**.
2. Create or edit a template and add **Experian KYB** from the **KYB** category.
3. Connect the block to the appropriate next step, then save and publish the template.
4. Run the published template with [Execute Data Orchestration](/api-reference/data-orchestration/execute-data-orchestration). Include `template_id` and `application_id`, and include `stage_id` when applicable.
5. Confirm that the response contains `data.executed: true`.
6. Monitor the asynchronous run with [List Data Orchestration Logs](/api-reference/data-orchestration/list-data-orchestration-logs) and [Get Data Orchestration Log](/api-reference/data-orchestration/get-data-orchestration-log).
7. Retrieve Business Facts from `commercial_data.experian.facts` after the service completes.

If no Experian BIN is stored, the service attempts Business Match before requesting Business Facts. If no business is matched, Business Facts stops and the Data Orchestration log records the failure.

## What the service returns

| Response area | Meaning |
| - | - |
| `businessHeader` | The identity and contact details associated with the matched Experian business record. |
| `sicCodes` and `naicsCodes` | Provider-supplied Standard Industrial Classification (SIC) and North American Industry Classification System (NAICS) codes and descriptions. |
| Business characteristics | Incorporation, organization type, public-company, nonprofit, employee, and sales facts when Experian has them. |
| `fortune1000` | Fortune 1000 year and rank when available. |
| `corporateLinkageType` | The business's reported role in a corporate family when available. |
| `executiveInformation` | Executive names and titles when available. |

Experian's public product page confirms these result categories but does not expose the complete Business Facts schema or all code lists without provider access. The field names and null behavior below are therefore validated against Lendflow's current fixture and frontend response model. Integrations should tolerate additional fields, omitted fields, and `null` values.

## Representative response

This shortened response follows Lendflow's current `experian/facts.json` fixture. Business identifiers and values are sanitized.

```json theme={"system"}
{
  "businessHeader": {
    "bin": "123456789",
    "businessName": "EXAMPLE BUSINESS LLC",
    "address": {
      "street": "100 MAIN ST",
      "city": "AUSTIN",
      "state": "TX",
      "zip": "78701",
      "zipExtension": null
    },
    "phone": "+15125550100",
    "taxId": null,
    "websiteUrl": "example.com",
    "legalBusinessName": null,
    "dbaNames": null,
    "customerDisputeIndicator": false
  },
  "sicCodes": [
    {
      "code": "5812",
      "definition": "RESTAURANTS"
    }
  ],
  "naicsCodes": [
    {
      "code": "522110",
      "definition": "Commercial Banking"
    }
  ],
  "publicIndicator": false,
  "nonProfitIndicator": false,
  "yearsOnFile": 7,
  "stateOfIncorporation": "TX",
  "dateOfIncorporation": "01/01/2019",
  "businessType": "Corporation",
  "employeeSize": 2,
  "employeeSizeCode": "A",
  "salesRevenue": 750000,
  "salesSizeCode": null,
  "fortune1000": {
    "year": null,
    "rank": null
  },
  "corporateLinkageType": "Headquarters/Parent",
  "executiveInformation": null
}
```

## Response attributes

### Business identity

| Attribute | Type | Meaning | Possible values or units | When returned |
| - | - | - | - | - |
| `businessHeader` | Object | Identity record for the matched business. | Provider object. | Returned when Experian supplies a business header. |
| `businessHeader.bin` | String | Experian Business Identification Number. | Numeric identifier represented as a string; the current fixture contains nine digits. | When the matched record has a BIN. |
| `businessHeader.businessName` | String | Business name on the matched Experian record. | Provider text. | When available. |
| `businessHeader.address` | Object | Address associated with the business record. | Contains `street`, `city`, `state`, `zip`, and `zipExtension`. | When address data is available. |
| `businessHeader.address.street` | String | Street address. | Provider text. | When available. |
| `businessHeader.address.city` | String | City. | Provider text. | When available. |
| `businessHeader.address.state` | String | State code. | The fixture uses a two-letter US state code. | When available. |
| `businessHeader.address.zip` | String | ZIP code. | String, preserving leading zeroes. | When available. |
| `businessHeader.address.zipExtension` | String or null | Four-digit ZIP+4 extension. | Four-character string in the fixture, or `null`. | When Experian has an extension. |
| `businessHeader.phone` | String or null | Business telephone number. | The fixture uses E.164 format. | When available. |
| `businessHeader.taxId` | String or null | Tax identifier returned by Experian. | Identifier string; do not log or display unnecessarily. | When Experian returns it. |
| `businessHeader.websiteUrl` | String or null | Business website. | Host name or URL text supplied by Experian. | When available. |
| `businessHeader.legalBusinessName` | String or null | Legal business name supplied by Experian. | Provider text or `null`. | When available. |
| `businessHeader.dbaNames` | Array of strings or null | Doing-business-as names. | Zero or more provider-supplied names; the fixture uses `null` when unavailable. | When Experian has DBA data. |
| `businessHeader.customerDisputeIndicator` | Boolean | Indicates whether the business has disputed information in its Experian profile. | `true` or `false`. | When returned by Experian. |

### Industry and business characteristics

| Attribute | Type | Meaning | Possible values or units | When returned |
| - | - | - | - | - |
| `sicCodes` | Array of objects | SIC classifications associated with the business. | Each item contains a string `code` and string `definition`. | When Experian has SIC classifications. |
| `sicCodes[].code` | String | SIC classification code. | String; preserve leading zeroes. | For each returned SIC item. |
| `sicCodes[].definition` | String | Description paired with the SIC code. | Provider text. | For each returned SIC item. |
| `naicsCodes` | Array of objects | NAICS classifications associated with the business. | Each item contains a string `code` and string `definition`. | When Experian has NAICS classifications. |
| `naicsCodes[].code` | String | NAICS classification code. | String; code length can vary in Lendflow fixtures. | For each returned NAICS item. |
| `naicsCodes[].definition` | String | Description paired with the NAICS code. | Provider text. | For each returned NAICS item. |
| `publicIndicator` | Boolean | Indicates whether Experian identifies the business as publicly traded. | `true` or `false`. | When returned by Experian. |
| `nonProfitIndicator` | Boolean | Indicates whether Experian identifies the business as a nonprofit. | `true` or `false`. | When returned by Experian. |
| `yearsOnFile` | Number | Number of years the business has been in Experian's commercial database. | Whole years in the current fixture. | When available. |
| `stateOfIncorporation` | String or null | Reported state of incorporation. | The fixture uses a two-letter US state code. | When available. |
| `dateOfIncorporation` | String or null | Reported incorporation date. | Lendflow's fixture uses `MM/DD/YYYY`; validate before parsing because the accessible public schema does not guarantee the format. | When available. |
| `businessType` | String or null | Provider-reported organization type. | Provider text, such as `Corporation` or `Non-profit`, or `null`. | When available. |
| `employeeSize` | Number or null | Experian's employee-count estimate. | Count of employees. | When available. |
| `employeeSizeCode` | String or null | Experian employee-size band code. | Provider code. The complete current code list is not available in the accessible public schema. | When available. |
| `salesRevenue` | Number or null | Experian's sales estimate. | Numeric provider estimate. The response does not include a currency field, and the accessible public schema does not confirm the unit. | When available. |
| `salesSizeCode` | String or null | Experian sales-size band code. | Provider code or `null`. The complete current code list is not available in the accessible public schema. | When available. |
| `fortune1000` | Object or null | Fortune 1000 information. | Contains `year` and `rank`. | When Experian includes the object. |
| `fortune1000.year` | Number or null | Year of the applicable Fortune 1000 list. | Four-digit year or `null`; Lendflow's fixture contains `null`. | When available. |
| `fortune1000.rank` | Number or null | Rank in the applicable Fortune 1000 list. | Numeric rank or `null`; Lendflow's fixture contains `null`. | When available. |
| `corporateLinkageType` | String or null | Provider-reported role in the corporate family. | Lendflow's fixture contains `Headquarters/Parent`; other values are provider-controlled. | When available. |
| `executiveInformation` | Array of objects or null | Executives and titles associated with the business. | Items can contain `firstName`, `middleName`, `lastName`, and `title`; the current fixture uses `null` when unavailable. | When Experian has executive data. |

## Provider results and Lendflow statuses

Do not treat a Lendflow lifecycle status as an Experian business finding.

| Location | Value | Meaning |
| - | - | - |
| `commercial_data.experian.facts` | Object or null | The Experian provider result. `null` or an absent result can mean the service has not completed or no result was stored; check the status and logs. |
| `statuses.experian.facts` | `Not yet started` | Lendflow has no service log for Business Facts. |
| `statuses.experian.facts` | `Started` | Lendflow started the external-service job. |
| `statuses.experian.facts` | `Success` | Lendflow stored a successful provider response. |
| `statuses.experian.facts` | Error message | Lendflow marked the job as failed and exposes the latest failure message. |
| Data Orchestration `master_status` | `0`, `2`, `3`, `4`, `5`, or `6` | Overall orchestration state: Not Started, Processing, Review, Complete Pass, Complete Fail, or Error. This is separate from Business Facts content. |

## Errors

| Error or condition | Meaning |
| - | - |
| `No Business found - {business name}` | The application had no Experian BIN and automatic Business Match did not return one. Business Facts was not requested. |
| `Country code is required to authenticate with Experian` | The business address does not supply the country context required for authentication. |
| `Unable to retrieve Experian bearer token` | Experian authentication did not return an access token. Verify service availability and credentials. |
| Provider validation or HTTP error | Experian rejected the BIN, subcode, authentication, or request, or returned another provider error. Lendflow records the provider message when one is available. |
| Service unavailable | The service is not enabled or Experian could not be reached. A temporarily unavailable external-service job can be retried by Lendflow. |

## FAQ

<AccordionGroup>
  <Accordion title="Which operation does the Experian KYB block run?">
    The block exposes only Business Facts, with service ID `experian_business_facts`.
  </Accordion>

  <Accordion title="Is an EIN required?">
    No. Business legal name, city, and state are required only when Lendflow must run automatic Business Match. Street address, ZIP code, telephone, and EIN are optional match inputs.
  </Accordion>

  <Accordion title="Do I need to provide an Experian BIN?">
    No. Lendflow uses the BIN already stored for the business. If the BIN is missing, Lendflow attempts Experian Business Match first.
  </Accordion>

  <Accordion title="Does data.onqueue true mean the result is ready?">
    No. It confirms only that the enrichment job was queued. Poll the commercial-data endpoint and check `statuses.experian.facts`.
  </Accordion>

  <Accordion title="Can Experian KYB run in Data Orchestration?">
    Yes. Add **Experian KYB** to a Data Orchestration template, publish the template, execute it, and monitor the Data Orchestration logs.
  </Accordion>

  <Accordion title="Why are the employee-size and sales-size code ranges not listed?">
    The current Lendflow response shape includes `employeeSizeCode` and `salesSizeCode`, but Experian's accessible public documentation does not expose the complete current lookup tables. Integrations should preserve these provider codes without assigning undocumented ranges.
  </Accordion>
</AccordionGroup>
