> ## 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 Business Contacts

## Experian Business Contacts

Experian Business Contacts returns known owners, principals, contacts, titles, and business affiliations for a matched US business. The **Experian Business Contacts** Workflow Builder block is in the **Business Contacts** category, supports business entities, and runs one service:

| Service | Service ID | Purpose |
| - | - | - |
| **Business Contacts** | `experian_business_contacts` | Returns known individual and company owners or principals, contacts and titles, and other business affiliations. |

## Purpose

Use this service to compare the people and companies associated with an Experian business record against the information supplied on an application. Provider associations can support identity and ownership review, but they are not proof of current beneficial ownership and are not a Lendflow approval or decline decision.

## Requirements

| Application field | Requirement | Notes |
| - | - | - |
| Existing Experian BIN | Conditional | Required unless automatic Business Match is used. |
| Business legal name | Conditional | Required for automatic Business Match when no BIN is stored. |
| Business city | Conditional | Required for automatic Business Match when no BIN is stored. |
| Business state | Conditional | Required for automatic Business Match when no BIN is stored; use a valid US state. |
| Business country | Required | Use `US`. |
| Business street | Optional | Improves match quality. |
| Business ZIP code | Optional | Improves match quality; use a valid US ZIP code. |
| Business telephone | Optional | Improves match quality; use a valid US phone number. |
| EIN | Optional | Improves match quality; use a valid EIN. |

When no BIN is stored, Lendflow runs Business Match before requesting the report.

## API flow

1. Authenticate with a Bearer integration token that can access the application and run underwriting services.
2. Call [Enrich Business Credit Application](/api-reference/workflow-management/enrich-business-credit-application) at `PUT /api/applications/{application_id}/enrich`.
3. Set `provider` to `experian_business_contacts`.
4. Do not send `options`.
5. Include `stage_id` only when the application's workflow requires a specific underwriting stage.
6. Confirm that the response contains `data.onqueue: true`.
7. Poll [Get Commercial Data](/api-reference/workflow-management/get-commercial-data) with `services[]=experian_business_contacts`.

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

The request is asynchronous. `data.onqueue: true` means Lendflow queued the job; it does not mean Experian returned a result.

| Commercial-data path | Content |
| - | - |
| `commercial_data.experian.contacts` | Normalized provider result. |
| `statuses.experian.contacts` | Latest Lendflow lifecycle message. |
| `request_data.experian.contacts` | Stored request containing the BIN and subcode. Treat both as sensitive operational identifiers. |

Internally, Lendflow sends a `POST` request to Experian's `/businessinformation/businesses/v1/businesscontacts` endpoint.

## Data Orchestration availability

Experian Business Contacts is not exposed as an operation in the current Data Orchestration service catalog. Run it through the **Experian Business Contacts** underwriting Workflow Builder block or the application enrichment API. If no BIN is stored, either path automatically attempts Experian Business Match first.

## What the service returns

| Response area | Meaning |
| - | - |
| `businessHeader` | Identity record for the matched Experian business. |
| `individualOwnersAndPrincipals` | Individuals reported as owners or principals, including reported date and ownership-related indicators. |
| `companyOwnersAndPrincipals` | Companies reported as owners or principals. |
| `contactsAndTitles` | Business contacts, titles, activity indicators, and provider source. |
| `contactsBusinessAffiliations` | Other businesses associated with returned contacts. |

Arrays can be empty and individual fields can be omitted or `null` when Experian does not have the data.

## Representative response

```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": "EXAMPLE BUSINESS LLC",
    "dbaNames": null,
    "customerDisputeIndicator": false
  },
  "individualOwnersAndPrincipals": [{
    "dateReported": "2024-12-27",
    "currentOwnerIndicator": true,
    "firstName": "JANE",
    "lastName": "DOE",
    "generationCode": null,
    "emailAddress": "jane@example.com",
    "ownerIsGuarantorIndicator": true,
    "percentOfFinancialObligation": 58,
    "nameAddressChangeIndicator": false
  }],
  "companyOwnersAndPrincipals": [{
    "dateReported": "2024-12-27",
    "currentOwnerIndicator": true,
    "businessName": "EXAMPLE HOLDINGS LLC",
    "taxId": "XXXXX4185",
    "taxIdType": {
      "code": "1",
      "definition": "Federal Tax ID"
    },
    "percentOfFinancialObligation": 42
  }],
  "contactsAndTitles": [{
    "sequenceNumber": 1,
    "cid": "SANITIZED-CID",
    "title": "CEO",
    "contactActivityIndicator": true,
    "contactSupplier": "Experian",
    "firstName": "JANE",
    "lastName": "DOE"
  }],
  "contactsBusinessAffiliations": [{
    "sequenceNumber": 1,
    "cid": "SANITIZED-CID",
    "title": "CEO",
    "businessName": "EXAMPLE AFFILIATE LLC",
    "bin": "987654321"
  }]
}
```

## Response attributes

### Business identity

| Attribute | Type | Meaning | Possible values or units | When returned |
| - | - | - | - | - |
| `businessHeader.bin` | String | Experian BIN for the matched business. | Provider identifier, commonly nine digits. | When available. |
| `businessHeader.businessName` | String | Business name on the matched record. | Provider text. | When available. |
| `businessHeader.address` | Object | Matched business address. | `street`, `city`, `state`, `zip`, and `zipExtension`. | When address data exists. |
| `businessHeader.phone` | String or null | Business telephone. | Provider-formatted telephone or `null`. | When available. |
| `businessHeader.taxId` | String or null | Tax identifier returned by Experian. | Sensitive string or `null`. | When available. |
| `businessHeader.websiteUrl` | String or null | Business website. | Provider URL text or `null`. | When available. |
| `businessHeader.legalBusinessName` | String or null | Verified legal name. | Provider text or `null`. | When available. |
| `businessHeader.dbaNames` | Array of strings or null | Doing-business-as names. | Zero or more names, or `null`. | When available. |
| `businessHeader.customerDisputeIndicator` | Boolean | Whether the business disputed profile information. | `true` or `false`. | When returned. |
| `businessHeader.matchingBranchAddress` | Object or null | Address of a matching branch. | Can contain `bin`, `street`, `city`, `state`, `zip`, and `zipExtension`. | When Experian matches a branch. |
| `businessHeader.branchLocation` | Object or null | Matched branch identity. | Can contain `bin` and `locationId`. | When available. |

### Owners and principals

| Attribute | Type | Meaning | Possible values or units | When returned |
| - | - | - | - | - |
| `individualOwnersAndPrincipals[]` | Array of objects | Individuals reported as owners or principals. | Zero or more records. | When Experian has individual records. |
| `individualOwnersAndPrincipals[].dateReported` | String | Date the association was reported. | `YYYY-MM-DD` in current examples. | When available. |
| `individualOwnersAndPrincipals[].currentOwnerIndicator` | Boolean | Whether Experian identifies the person as a current owner. | `true` or `false`. | When returned. |
| `individualOwnersAndPrincipals[].firstName` | String | First name. | Provider text. | When available. |
| `individualOwnersAndPrincipals[].middleName` | String or null | Middle name. | Provider text or `null`. | When available. |
| `individualOwnersAndPrincipals[].lastName` | String | Last name. | Provider text. | When available. |
| `individualOwnersAndPrincipals[].generationCode` | String or null | Name suffix. | Provider text such as `JR`, or `null`. | When available. |
| `individualOwnersAndPrincipals[].emailAddress` | String or null | Reported email address. | Email string or `null`. | When available. |
| `individualOwnersAndPrincipals[].ownerIsGuarantorIndicator` | Boolean | Whether the person is reported as a guarantor. | `true` or `false`. | When returned. |
| `individualOwnersAndPrincipals[].address` | Object or null | Reported owner address. | Street, city, state, ZIP, and ZIP extension. | When available. |
| `individualOwnersAndPrincipals[].percentOfFinancialObligation` | Number or null | Reported financial obligation or ownership percentage. | Percentage or `null`. | When available. |
| `individualOwnersAndPrincipals[].nameAddressChangeIndicator` | Boolean | Whether Experian reports a name or address change. | `true` or `false`. | When returned. |
| `companyOwnersAndPrincipals[]` | Array of objects | Companies reported as owners or principals. | Zero or more records. | When Experian has company records. |
| `companyOwnersAndPrincipals[].businessName` | String | Reported company name. | Provider text. | When available. |
| `companyOwnersAndPrincipals[].taxId` | String or null | Masked or unmasked tax identifier returned by Experian. | Sensitive provider string or `null`. | When available. |
| `companyOwnersAndPrincipals[].taxIdType` | Object or null | Type of tax identifier. | `code` and `definition`. | When available. |
| `companyOwnersAndPrincipals[].phone` | String or null | Reported company telephone. | Provider-formatted string or `null`. | When available. |
| `companyOwnersAndPrincipals[].percentOfFinancialObligation` | Number or null | Reported obligation or ownership percentage. | Percentage or `null`. | When available. |

### Contacts and affiliations

| Attribute | Type | Meaning | Possible values or units | When returned |
| - | - | - | - | - |
| `contactsAndTitles[]` | Array of objects | Contacts and their reported titles. | Zero or more records. | When available. |
| `contactsAndTitles[].sequenceNumber` | Number | Provider display order. | Integer. | For each item. |
| `contactsAndTitles[].cid` | String | Experian contact identifier. | Provider identifier. | When available. |
| `contactsAndTitles[].title` | String or null | Reported business title. | Provider text or `null`. | When available. |
| `contactsAndTitles[].contactActivityIndicator` | Boolean | Whether the contact is likely active with the business. | `true` or `false`. | When returned. |
| `contactsAndTitles[].contactSupplier` | String or null | Source of the contact information. | Provider text. | When available. |
| `contactsAndTitles[].firstName`, `.middleName`, `.lastName` | String or null | Contact name. | Provider text or `null`. | When available. |
| `contactsBusinessAffiliations[]` | Array of objects | Businesses associated with returned contacts. | Zero or more records. | When available. |
| `contactsBusinessAffiliations[].bin` | String or null | Experian BIN of an affiliated business. | Provider identifier or `null`. | When available. |
| `contactsBusinessAffiliations[].businessName` | String or null | Affiliated business name. | Provider text or `null`. | When available. |
| `contactsBusinessAffiliations[].address` | Object or null | Affiliated business address. | Street, city, state, ZIP, and ZIP extension. | When available. |

## Errors and statuses

| Condition or value | Meaning |
| - | - |
| `No Business found - {business name}` | Automatic Business Match did not return a BIN, so Business Contacts was not requested. |
| `Country code is required to authenticate with Experian` | The business address lacks the country context required for authentication. |
| `Unable to retrieve Experian bearer token` | Experian authentication returned no access token. |
| BIN or subcode validation error | The provider request requires both values as non-empty strings. |
| Provider or HTTP error | Experian rejected the request or returned an error. |
| `Not yet started` | Lendflow has no service log for Business Contacts. |
| `Started` | Lendflow started the job. |
| `Success` | Lendflow stored a successful provider response. |
| Error message | The job failed; inspect the latest message. |

## FAQ

<AccordionGroup>
  <Accordion title="Which service ID should I use?">
    Use `experian_business_contacts`.
  </Accordion>

  <Accordion title="Do I need to supply an Experian BIN?">
    No. Lendflow uses the stored BIN or automatically attempts Business Match when it is missing.
  </Accordion>

  <Accordion title="Does a returned owner prove current beneficial ownership?">
    No. The response contains provider-reported associations and dates. Review them against current application and verification data.
  </Accordion>

  <Accordion title="Should I send options?">
    No. Business Contacts has no service-specific options.
  </Accordion>

  <Accordion title="Can this service run in Data Orchestration?">
    It is not in the current Data Orchestration service catalog. Use its underwriting Workflow Builder block or the enrichment API.
  </Accordion>
</AccordionGroup>
