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

# Business Insights

> Verify a business and the people associated with it in GBG Go by matching its name and address against official records.

export const ModuleToc = () => {
  const ref = useRef(null);
  const [items, setItems] = useState([]);
  const [inVariant, setInVariant] = useState(false);
  useEffect(() => {
    const toc = ref.current;
    if (!toc) return;
    const sections = [{
      label: "Capabilities",
      match: "capabilities",
      suffix: true
    }, {
      label: "Default outcomes",
      match: "default outcomes"
    }, {
      label: "Input payload",
      match: "input payload"
    }, {
      label: "Sample response",
      match: "sample response"
    }];
    const related = {
      label: "Related guides",
      match: "related guides and tutorials"
    };
    const selector = "h2[id], h3[id], h4[id], h5[id], h6[id]";
    const read = heading => ({
      heading,
      level: Number(heading.tagName.slice(1)),
      text: heading.textContent.replace(/​/g, "").trim()
    });
    const matches = (entry, section) => {
      const text = entry.text.toLowerCase();
      return text === section.match || section.suffix && text.endsWith(` ${section.match}`);
    };
    const isSection = entry => sections.some(section => matches(entry, section));
    const after = entry => toc.compareDocumentPosition(entry.heading) & Node.DOCUMENT_POSITION_FOLLOWING;
    const link = (entry, label) => ({
      label: label || entry.text,
      id: entry.heading.id
    });
    const sectionLinks = pool => sections.map(section => {
      const entry = pool.find(candidate => matches(candidate, section));
      return entry ? link(entry, section.label) : null;
    }).filter(Boolean);
    const root = toc.closest("#content-area") || document.body;
    const key = window.location.pathname;
    if (!root.moduleTocPage || root.moduleTocPage.key !== key) {
      root.moduleTocPage = {
        key,
        headings: Array.from(root.querySelectorAll(selector)).filter(heading => !heading.closest("details")).map(read)
      };
    }
    const page = root.moduleTocPage.headings.filter(after);
    const relatedEntry = page.find(entry => matches(entry, related));
    const relatedLink = relatedEntry ? [link(relatedEntry, related.label)] : [];
    const variant = toc.closest("details");
    if (variant) {
      const own = Array.from(variant.querySelectorAll(selector)).map(read).filter(after);
      const ownLinks = sectionLinks(own);
      const shared = sectionLinks(page).filter(fallback => !ownLinks.some(existing => existing.label === fallback.label));
      const order = sections.map(section => section.label);
      const merged = [...ownLinks, ...shared].sort((a, b) => order.indexOf(a.label) - order.indexOf(b.label));
      setInVariant(true);
      setItems([...merged, ...relatedLink]);
      return;
    }
    const isVariant = (entry, index) => {
      if (isSection(entry)) return false;
      for (const next of page.slice(index + 1)) {
        if (next.level <= entry.level) return false;
        if (isSection(next)) return true;
      }
      return false;
    };
    const loose = [];
    const groups = [];
    page.forEach((entry, index) => {
      if (isVariant(entry, index)) groups.push({
        entry,
        pool: []
      }); else if (isSection(entry)) (groups.length ? groups[groups.length - 1].pool : loose).push(entry);
    });
    const variants = groups.map(group => ({
      ...link(group.entry),
      children: sectionLinks(group.pool)
    })).filter(group => group.children.length);
    setInVariant(false);
    setItems(variants.length > 1 ? [...sectionLinks(loose), ...variants, ...relatedLink] : [...sectionLinks(page), ...relatedLink]);
  }, []);
  const linkClass = "block -ml-px border-l border-transparent pl-4 text-gray-600 dark:text-gray-400 hover:border-gray-400 hover:text-gray-900 dark:hover:text-gray-200";
  return <nav ref={ref} aria-label={inVariant ? "In this variant" : "On this page"} data-module-toc="" className="module-toc not-prose my-6 text-sm">
      {items.length > 0 && <p className="mb-2 font-medium text-gray-900 dark:text-gray-200">
          {inVariant ? "In this variant" : "On this page"}
        </p>}
      {items.length > 0 && <ul className="space-y-1.5 border-l border-gray-200 dark:border-white/10">
          {items.map(item => <li key={item.id}>
              <a href={`#${item.id}`} className={item.children ? `${linkClass} font-medium text-gray-800 dark:text-gray-200` : linkClass}>
                {item.label}
              </a>
              {item.children && <ul className="mt-1.5 space-y-1.5 pl-4">
                  {item.children.map(child => <li key={child.id}>
                      <a href={`#${child.id}`} className={linkClass}>
                        {child.label}
                      </a>
                    </li>)}
                </ul>}
            </li>)}
        </ul>}
    </nav>;
};

The **Business Insights** module verifies a business by matching the name and address you provide against the records held for that business entity. It can also check whether a person you provide, such as a director or officer, appears in the business's records. The US Taxpayer Verification variant also checks the business's tax identification number.

This page documents the **Business Insights** module, including its variants, capabilities, and the result values it returns.

<AccordionGroup>
  <Accordion title="Business Insights: US Taxpayer Verification">
    Verifies name and address and TIN of US business and associated person

    <ModuleToc />

    ## Capabilities

    The module returns the following capabilities.

    ### Address match

    Whether the address you provided matches the address held for the business entity. The module returns `true` or `false` in `addressMatch`.

    | Detail | Description |
    | - | - |
    | Type | Boolean |
    | Default | `false` |

    ### Associated person match

    Whether the business entity's records list the person you provided, for example, as a director or shareholder. The module returns `true` or `false` in `associatedPersonMatch`.

    | Detail | Description |
    | - | - |
    | Type | Boolean |
    | Default | `false` |

    ### Business name match

    Whether the name you provided matches the registered name of the business entity. The module returns `true` or `false` in `businessMatch`.

    | Detail | Description |
    | - | - |
    | Type | Boolean |
    | Default | `false` |

    ### Tax Id matches

    Whether the tax identification number you provided matches the number held for the business entity. The module returns `true` or `false` in `tinVerification`.

    | Detail | Description |
    | - | - |
    | Type | Boolean |
    | Default | `false` |

    ## Default outcomes

    The following default outcomes are available for evaluation and routing in the Journey builder.

    | Outcome | Condition | Description |
    | - | - | - |
    | `Business Match` | Address match is `true` and business name match is `true` | Both the name and the address match the records held for the business entity. |
    | `Business Partial Match` | Business name match is `true` | The name matches the records held for the business entity, but the address doesn't. |
    | `Error` | An error prevented the check | The module couldn't return a result. |
    | `Business Mismatch` | Default, when no conditions matched | The name doesn't match the records held for the business entity, whatever the address result. |

    ## Input payload

    The following is a sample payload used to submit data to the **US Taxpayer Verification** module for processing.

    ```json JSON theme={null}
    {
      "context": {
        "subject": {
          "uid": "variant-test-user",
          "entities": [
            {
              "name": "Match Corp",
              "aliases": [
                "Match Corporation",
                "Match Holdings"
              ],
              "addresses": [
                {
                  "administrativeArea": "Good",
                  "superAdministrativeArea": "Super",
                  "locality": "The Good place",
                  "thoroughfare": "Goodison Park",
                  "postalCode": "111111"
                }
              ],
              "taxIdentifiers": [
                {
                  "type": "TIN",
                  "value": "111111111"
                }
              ],
              "persons": [
                {
                  "firstName": "Good",
                  "lastNames": [
                    "Match"
                  ],
                  "role": "shareholder"
                }
              ]
            }
          ]
        }
      }
    }
    ```

    | Field | Required | Description |
    | - | - | - |
    | `entities` | Yes | Accepts at least one item. Each item represents a business entity to verify. |
    | `name` | Yes | The registered name of the business entity. |
    | `aliases` | No | Any other names the business entity trades under. |
    | `addresses` | No | The registered or trading address of the business entity. |
    | `taxIdentifiers` | No | The tax identification number of the business entity, with its `type` and `value`. |
    | `persons` | No | A person associated with the business entity, with their name and `role`, for example, a director or shareholder. |
    | `PrimaryEntity` | Yes | The primary business entity to verify. |
    | `EntityPerson` | No | A person associated with the business entity, such as a director or officer. |
    | `EntityAddress` | No | The registered or trading address of the business entity. |
    | `EntityTin` | No | The tax identification number of the business entity. |

    ## Sample response

    The following is a sample response where the business name and address match, which returns a `Business Match` outcome.

    ```json JSON theme={null}
    {
      "response": {
        "advice": {
          "addressMatch": true,
          "associatedPersonMatch": true,
          "businessMatch": true,
          "tinVerification": true
        },
        "outcome": "Business Match"
      }
    }
    ```
  </Accordion>

  <Accordion title="Global Business Entity Verification">
    Global business entity verification using multiple official primary sources to match the input data to a business name and also supplying insight on business status, whether the business operates in multiple US states or Canadian provinces and whether its non profit.

    <ModuleToc />

    ## Capabilities

    ### Address administrative area match

    | Value | Description |
    | - | - |
    | `match` | match |
    | `mismatch` | mismatch |
    | `not available` | not available |

    ### Address postal code match

    | Value | Description |
    | - | - |
    | `match` | match |
    | `mismatch` | mismatch |
    | `not available` | not available |

    ### Input address quality level

    A broad indicator of the input address quality

    | Value | Description |
    | - | - |
    | `1` | Excellent Quality |
    | `2` | Good Quality |
    | `3` | Poor |
    | `4` | not possible to validate |

    ### Address thoroughfare match

    | Value | Description |
    | - | - |
    | `match` | match |
    | `mismatch` | mismatch |
    | `not available` | not available |

    ### Incorporation date match

    | Value | Description |
    | - | - |
    | `match` | match |
    | `month level match` | month level match |
    | `year level match` | year level match |
    | `mismatch` | mismatch |
    | `not available` | not available |
    | `no result` | no result |

    ### Business is multi state operation

    | Value | Description |
    | - | - |
    | `Y` | Y |
    | `N` | N |
    | `not available` | not available |

    ### Address match

    | Value | Description |
    | - | - |
    | `match` | match |
    | `partial match` | partial match |
    | `mismatch` | mismatch |
    | `not available` | not available |

    ### Business is non profit

    | Value | Description |
    | - | - |
    | `Y` | Y |
    | `N` | N |
    | `not available` | not available |

    ### Business is active

    | Value | Description |
    | - | - |
    | `Y` | Y |
    | `N` | N |
    | `not available` | not available |

    ### Business name match

    | Detail | Description |
    | - | - |
    | Type | Boolean |
    | Default | `false` |

    ### Address locality match

    | Value | Description |
    | - | - |
    | `match` | match |
    | `mismatch` | mismatch |
    | `not available` | not available |

    ## Default outcomes

    The following default outcomes are available for evaluation and routing in the Journey builder.

    | Outcome | Condition | Description |
    | - | - | - |
    | `Business Match` | Business name match is `true` and address match is `match` or `partial match` | The name matches the records held for the business entity, and the address matches fully or partly. |
    | `Business Partial Match` | Business name match is `true` | The name matches the records held for the business entity, but the address doesn't. |
    | `Error` | An error prevented the check | The module couldn't return a result. |
    | `Business Mismatch` | Default, when no conditions matched | The name doesn't match the records held for the business entity, whatever the address result. |

    ## Input payload

    The following is a sample payload used to submit data to the **Global Business Entity Verification** module for processing.

    ```json JSON theme={null}
    {
      "context": {
        "subject": {
          "entities": [
            {
              "addresses": [
                {
                  "administrativeArea": "Good",
                  "locality": "The Good place",
                  "postalCode": "111111",
                  "superAdministrativeArea": "Super",
                  "thoroughfare": "Goodison Park"
                }
              ],
              "aliases": [
                "Match Corporation",
                "Match Holdings"
              ],
              "name": "Match Corp"
            }
          ],
          "uid": "variant-test-user"
        }
      }
    }
    ```

    | Field | Required | Description |
    | - | - | - |
    | `PrimaryEntity` | Yes | The primary business entity to verify. |
    | `PrimaryEntity/name` | Yes | The registered name of the business entity. |
    | `PrimaryEntity/aliases` | No | Any other names the business entity trades under. |
    | `PrimaryEntity/businessType` | No | The legal form of the business entity, for example, a limited company or a partnership. |
    | `PrimaryEntity/status` | No | The trading status of the business entity, for example, active or dissolved. |
    | `PrimaryEntity/description` | No | A free-text description of what the business entity does. |
    | `PrimaryEntity/companyNumber` | No | The registration number issued to the business entity by its company registry. |
    | `PrimaryEntity/industryClassifications` | No | The industry classification codes assigned to the business entity, for example, SIC or NAICS codes. |
    | `PrimaryEntity/registrations` | No | The registrations held by the business entity, such as its entries in national or regional registries. |
    | `PrimaryEntity/corporateStructure` | No | The corporate structure of the business entity, including any parent or subsidiary relationships. |
    | `PrimaryEntity/incorporationDate` | No | The date the business entity was incorporated. |
    | `PrimaryEntity/dissolutionDate` | No | The date the business entity was dissolved, where it is no longer trading. |
    | `PrimaryEntity/phones` | No | The contact phone numbers held for the business entity. |
    | `PrimaryEntity/websites` | No | The websites held for the business entity. |
    | `PrimaryEntity/headcount` | No | The number of people the business entity employs. |
    | `PrimaryEntity/isNonProfit` | No | Whether the business entity is a non-profit organization. |
    | `EntityAddress` | Yes | The registered or trading address of the business entity. |
    | `EntityAddress/lines` | No | The full address as one or more free-form lines, used when structured address components are not available. |
    | `EntityAddress/addressString` | No | The full address as a single line. |
    | `EntityAddress/premise` | No | The premise (building name or number) of the business address. |
    | `EntityAddress/building` | No | The building name or number of the business address. |
    | `EntityAddress/subBuilding` | No | The sub-building (for example, flat or unit) of the business address. |
    | `EntityAddress/thoroughfare` | No | The street or thoroughfare of the business address. |
    | `EntityAddress/dependentThoroughfare` | No | The dependent thoroughfare (a smaller street within the thoroughfare) of the business address. |
    | `EntityAddress/locality` | No | The locality (town or city) of the business address. |
    | `EntityAddress/dependentLocality` | No | The dependent locality (a smaller area within the locality) of the business address. |
    | `EntityAddress/doubleDependentLocality` | No | The double dependent locality (a smaller area within the dependent locality) of the business address. |
    | `EntityAddress/postalCode` | No | The postal or ZIP code of the business address. |
    | `EntityAddress/postBox` | No | The post office box of the business address. |
    | `EntityAddress/country` | No | The country of the business address. |
    | `EntityAddress/superAdministrativeArea` | No | The super-administrative area (a larger region above the administrative area) of the business address. |
    | `EntityAddress/administrativeArea` | No | The administrative area (for example, state, province, or county) of the business address. |
    | `EntityAddress/subAdministrativeArea` | No | The sub-administrative area (a smaller region within the administrative area) of the business address. |
    | `EntityAddress/organization` | No | The company or organization associated with the business address. |
    | `EntityAddress/location` | No | The geographic location (coordinates) of the business address. |
    | `UserId` | No | A unique identifier for the subject within your system, used to correlate the request. |

    ## Sample response

    The following is a sample response where the business name and address match, which returns a `Business Match` outcome.

    ```json JSON theme={null}
    {
      "response": {
        "advice": {
          "addressMatch": "match",
          "businessMatch": true
        },
        "outcome": "Business Match"
      }
    }
    ```
  </Accordion>

  <Accordion title="Global Business Officer Verification">
    Global business entity verification using multiple official primary sources to match the input data to a registered officer of a business

    <ModuleToc />

    ## Capabilities

    ### Address postal code match

    | Value | Description |
    | - | - |
    | `match` | match |
    | `mismatch` | mismatch |
    | `not available` | not available |

    ### Address administrative area match

    | Value | Description |
    | - | - |
    | `match` | match |
    | `mismatch` | mismatch |
    | `not available` | not available |

    ### Input address quality level

    A broad indicator of the input address quality

    | Value | Description |
    | - | - |
    | `1` | Excellent Quality |
    | `2` | Good Quality |
    | `3` | Poor |
    | `4` | not possible to validate |

    ### Address thoroughfare match

    | Value | Description |
    | - | - |
    | `match` | match |
    | `mismatch` | mismatch |
    | `not available` | not available |

    ### Address match

    | Value | Description |
    | - | - |
    | `match` | match |
    | `partial match` | partial match |
    | `mismatch` | mismatch |
    | `not available` | not available |

    ### Address locality match

    | Value | Description |
    | - | - |
    | `match` | match |
    | `mismatch` | mismatch |
    | `not available` | not available |

    ### Associated person match

    | Detail | Description |
    | - | - |
    | Type | Boolean |
    | Default | `false` |

    ## Default outcomes

    The following default outcomes are available for evaluation and routing in the Journey builder.

    | Outcome | Condition | Description |
    | - | - | - |
    | `Officer and Address Match` | Associated person match is `true` and address match is `match` or `partial match` | The business entity's records list the person, and the address matches fully or partly. |
    | `Officer Only Match` | Associated person match is `true` | The business entity's records list the person, but the address doesn't match. |
    | `Error` | An error prevented the check | The module couldn't return a result. |
    | `Officer Mismatch` | Default, when no conditions matched | The business entity's records don't list the person. |

    ## Input payload

    The following is a sample payload used to submit data to the **Global Business Officer Verification** module for processing.

    ```json JSON theme={null}
    {
      "context": {
        "subject": {
          "entities": [
            {
              "name": "Well Matched Inc",
              "persons": [
                {
                  "firstName": "Good",
                  "lastNames": [
                    "Address"
                  ],
                  "currentAddress": {
                    "addressString": "2301 Burlington Street, Suite 270, North Kansas City, MO 64116"
                  }
                }
              ]
            }
          ],
          "uid": "variant-test-user"
        }
      }
    }
    ```

    | Field | Required | Description |
    | - | - | - |
    | `PrimaryEntity` | Yes | The primary business entity to verify. |
    | `PrimaryEntity/name` | Yes | The registered name of the business entity. |
    | `PrimaryEntity/aliases` | No | Any other names the business entity trades under. |
    | `PrimaryEntity/businessType` | No | The legal form of the business entity, for example, a limited company or a partnership. |
    | `PrimaryEntity/status` | No | The trading status of the business entity, for example, active or dissolved. |
    | `PrimaryEntity/description` | No | A free-text description of what the business entity does. |
    | `PrimaryEntity/companyNumber` | No | The registration number issued to the business entity by its company registry. |
    | `PrimaryEntity/industryClassifications` | No | The industry classification codes assigned to the business entity, for example, SIC or NAICS codes. |
    | `PrimaryEntity/registrations` | No | The registrations held by the business entity, such as its entries in national or regional registries. |
    | `PrimaryEntity/corporateStructure` | No | The corporate structure of the business entity, including any parent or subsidiary relationships. |
    | `PrimaryEntity/incorporationDate` | No | The date the business entity was incorporated. |
    | `PrimaryEntity/dissolutionDate` | No | The date the business entity was dissolved, where it is no longer trading. |
    | `PrimaryEntity/phones` | No | The contact phone numbers held for the business entity. |
    | `PrimaryEntity/websites` | No | The websites held for the business entity. |
    | `PrimaryEntity/headcount` | No | The number of people the business entity employs. |
    | `PrimaryEntity/isNonProfit` | No | Whether the business entity is a non-profit organization. |
    | `EntityPerson` | Yes | A person associated with the business entity, such as a director or officer. |
    | `EntityPerson/firstName` | Yes | The first name of the associated person. |
    | `EntityPerson/middleNames` | No | The middle names of the associated person. |
    | `EntityPerson/lastNames` | Yes | The last names of the associated person. |
    | `EntityPerson/title` | No | The title of the associated person, for example, Mr, Ms, or Dr. |
    | `EntityPerson/lastNamesAtBirth` | No | The last names the associated person was given at birth, where these differ from their current last names. |
    | `EntityPerson/role` | No | The role the associated person holds in the business entity, for example, a director or shareholder. |
    | `EntityPerson/position` | No | The position the associated person holds in the business entity. |
    | `EntityPerson/ownershipPercentage` | No | The percentage of the business entity the associated person owns. |
    | `EntityPerson/nationality` | No | The nationality of the associated person. |
    | `EntityPerson/dateOfBirth` | No | The date of birth of the associated person. |
    | `EntityPerson/startDate` | No | The date the associated person took up their role in the business entity. |
    | `EntityPerson/endDate` | No | The date the associated person left their role in the business entity. |
    | `EntityPersonAddress` | No | The address of the associated person. |
    | `EntityPersonAddress/lines` | No | The full address as one or more free-form lines, used when structured address components are not available. |
    | `EntityPersonAddress/addressString` | No | The full address as a single line. |
    | `EntityPersonAddress/premise` | No | The premise (building name or number) of the address of the associated person. |
    | `EntityPersonAddress/building` | No | The building name or number of the address of the associated person. |
    | `EntityPersonAddress/subBuilding` | No | The sub-building (for example, flat or unit) of the address of the associated person. |
    | `EntityPersonAddress/thoroughfare` | No | The street or thoroughfare of the address of the associated person. |
    | `EntityPersonAddress/dependentThoroughfare` | No | The dependent thoroughfare (a smaller street within the thoroughfare) of the address of the associated person. |
    | `EntityPersonAddress/locality` | No | The locality (town or city) of the address of the associated person. |
    | `EntityPersonAddress/dependentLocality` | No | The dependent locality (a smaller area within the locality) of the address of the associated person. |
    | `EntityPersonAddress/doubleDependentLocality` | No | The double dependent locality (a smaller area within the dependent locality) of the address of the associated person. |
    | `EntityPersonAddress/postalCode` | No | The postal or ZIP code of the address of the associated person. |
    | `EntityPersonAddress/postBox` | No | The post office box of the address of the associated person. |
    | `EntityPersonAddress/country` | No | The country of the address of the associated person. |
    | `EntityPersonAddress/superAdministrativeArea` | No | The super-administrative area (a larger region above the administrative area) of the address of the associated person. |
    | `EntityPersonAddress/administrativeArea` | No | The administrative area (for example, state, province, or county) of the address of the associated person. |
    | `EntityPersonAddress/subAdministrativeArea` | No | The sub-administrative area (a smaller region within the administrative area) of the address of the associated person. |
    | `EntityPersonAddress/organization` | No | The company or organization associated with the address of the associated person. |
    | `EntityPersonAddress/location` | No | The geographic location (coordinates) of the address of the associated person. |
    | `UserId` | No | A unique identifier for the subject within your system, used to correlate the request. |

    ## Sample response

    The following is a sample response where the business entity's records list the person and the address matches, which returns an `Officer and Address Match` outcome.

    ```json JSON theme={null}
    {
      "response": {
        "advice": {
          "addressMatch": "match",
          "associatedPersonMatch": true
        },
        "outcome": "Officer and Address Match"
      }
    }
    ```
  </Accordion>
</AccordionGroup>
