Automatic Federal EIN Verification

How Check verifies company name and Federal EIN

📘

This guide covers the Federal EIN Verification object — how Check verifies a company's legal name and FEIN. If you're looking for how to retrieve a company's FEIN via the API, see Retrieving a Company's Federal EIN.

Triggering Federal EIN Verification

  1. Create a company with the correct legal name
  2. Set the Federal EIN value for that company

Whenever Check has a legal name and Federal EIN for a company, we will automatically begin processing on the verification of those values. We will only begin processing if we have both of these values. When either one of these values is updated, processing will begin automatically.

Editing a Company's FEIN

Setting or updating a company's FEIN starts verification, but it does not lock the value. The FEIN stays editable through typical onboarding, and completing KYB on its own does not lock it.

The editable field on the company's federal_ein tax parameter tells you whether the FEIN can still be changed. The Federal EIN Verification object does not carry this field. editable turns false only once both of the following are true:

  1. The company has run a managed payroll. A managed payroll counts once it has been approved and its status has reached processing, paid, partially_paid, or failed. A payroll that has not been approved, or whose status is still draft or pending, does not count.
  2. KYB is approved, or a filing authorization has been submitted. Approved KYB means a KYB status of four_day_approved or two_day_approved (see Implementation Status). Any submitted company filing authorization form counts, whether it is IRS Form 8655 or a state Power of Attorney / filer and remitter authorization (see Signing Forms via the API).

To read the current value, call the List a company's tax parameters API and check the editable field on the result whose name is federal_ein. The tax parameter settings endpoints do not return this field. Retrieving a Company's Federal EIN shows how to locate that result.

Company Onboard and Console Tax Setup follow the same field, so once it is false the FEIN cannot be changed there either. A call to the Update tax parameters API that tries to change a locked FEIN is rejected with a validation error. If a locked FEIN needs to be corrected, reach out to Check Support.

Testing in Sandbox

In our Sandbox environment all Federal EIN Verifications are successfully verified by default. You can test out the rejection flow by using specific legal name and FEIN values. A company whose legal name starts with reject-fein-verification AND whose FEIN starts with 12-345678 (for example, 12-3456789) will always be rejected.

Federal EIN Verification Processing

After triggering automatic processing, details and status of this processing are exposed in our Federal EIN Verification objects.

For example:

{
    "id": "fev_D3FeAyR6Ao3LZiO3j6d2",
    "company": "com_097YZQgrXZQb8VHtI76S",
    "legal_name": "Stark Industries, Inc.",
    "federal_ein": "12-3456785",
    "status": "processing",
    "start_time": "2022-07-11T19:37:31.589206Z",
    "end_time": null,
    "error": null
}

Note that Check supports exactly three (3) attempts to verify a company legal name and FEIN. After that, if the final verification is still rejected, the status will show as final_rejected to indicate that no further attempts to automatically verify FEIN will be attempted.

When a company's FEIN verification moves to the final_rejected status, a ZenDesk ticket will be opened automatically to request supplementary documentation to verify the FEIN.

StatusMeaning
processing

The verification is currently processing.

Please continue to poll for up to 10 seconds while waiting for the processing to finish.

verifiedProcessing is complete and the FEIN has been verified.
rejectedProcessing is complete and the FEIN has been rejected. You may attempt another verification process by correcting the company's legal name or Federal EIN.
final_rejectedThe maximum number of verifications has been reached. Please follow up with the relevant documentation.

Processing FEIN verification occurs automatically. So for example, if we first create a new company with the Create a company API, and then set its FEIN value using the Update tax parameters API. At that time, Check will automatically begin the verification process for this company's FEIN.

To see a list of the currently processing verification and any previous verifications for a company, use the List federal EIN verifications API. These results are returned in descending order of last updated, so the most relevant result should be the first one listed.

Then begin polling on the relevant entity (the most recent one) using the Get a federal EIN verification API. Under ideal circumstances this process should take no longer than 10 seconds. After that amount of time, please stop polling. Check the status of the Federal EIN Verification object to see if the FEIN was successfully verified or else rejected.

Also expect a webhook on the federal_ein_verification topic for any change events related for Federal EIN Verifications. For verification processing that takes longer than expected, this is the usual method for notification that the verification process has completed.

Sample Federal EIN Verification Flow

  • Create a new company
  • Set the Federal EIN for the company
  • List the FederalEINVerifications for the company
  • Poll on the most recent one for up to 10 seconds for an immediate status update
  • After 10 seconds fallback to waiting for the webhook status update instead

Errors

Check cannot verify the legal name and FEIN if the IRS is unavailable. When the IRS is unavailable, the error field in the response will be "irs_unavailable". The Federal EIN Verification object status will be rejected, but the legal name and FEIN could be valid.

Additionally, you may see a "duplicate request" error. Duplicate requests means that we have submitted the same request to the IRS. The Federal EIN Verification object will also have a rejected status in this case.

If the error field is empty, the status of the object is the correct status of that legal name and FEIN.


Did this page help you?