Uploading Company Provided Documents

Learn how to upload company provided documents to Check API

The company provided document object represents a company document uploaded directly to Check API. This has implications in the company review process, where a company may be asked for additional documentation to fulfill a verification requirement. A company provided document must be a PDF, JPG, or PNG and cannot exceed 6 MB in size.

The following document types are supported:

  • Form 940 (940)
  • Form 941 (941)
  • Form 943 (943)
  • Form 944 (944)
  • Form 945 (945)
  • SS4 (ss4)
  • CP-575 (cp_575)
  • 147-C (147_c)
  • Non-expired government-issued photo ID for authorized signer (signatory_photo_id)
  • Voided Check (voided_check)
  • Full bank statement including bank name, account number, and account owner's name and address (bank_statement)
  • Bank letter, on bank letterhead, including account number and account owner’s name (bank_letter)
  • Profit & Loss Statement (profit_and_loss)
  • Cash Flow Statement (cash_flow_statement)
  • Balance Sheet (balance_sheet)
  • Articles of Incorporation (articles_of_incorporation)
  • Amendment to Articles of Incorporation showing the addition of Signer (articles_of_incorporation_signatory_amendment)
  • State registration document, proving registration of company in the state of legal address (state_registration)

Document Upload Example

Step 1: Create a company provided document

To upload a document to Check API, begin by first creating a company provided document object.

The following example creates a document which represents a 940 form for a company.

We make a POST request to http://sandbox.checkhq.com/company_provided_documents with the ID of the company we are uploading the document for and the type of the document.

curl --request POST \
     --url https://sandbox.checkhq.com/company_provided_documents \
     --header 'Accept: application/json' \
     --header 'Authorization: Bearer YOUR_API_KEY' \
     --header 'Content-Type: application/json' \
>    --data '{"company": "com_kGYEICK22GEzj8trreH3", "document_type": "940"}'

When this request succeeds, we are met with some metadata related to the created entity. The key attributes to note are the upload_url, upload_status, and file_content_type. The upload_url is the Check API URL which we will later make a multipart/form-data request to when uploading the actual file associated with this document. The upload_status represents whether this document has been uploaded or not. All company provided documents have an upload_status of "pending" upon initial creation, as they do not yet have an associated uploaded file. The file_content_type is the MIME type of the uploaded file. This is null by default.

{
    "id": "doc_1fyTzNTwEg1gWwKOqYK9",
    "company": "com_kGYEICK22GEzj8trreH3",
    "document_type": "940",
    "upload_url": "https://sandbox.checkhq.com/company_provided_documents/doc_1fyTzNTwEg1gWwKOqYK9/upload",
    "upload_status": "pending",
    "file_content_type": null,
    "provided_filename": null
}

Step 2: Upload a file for the company provided document

With the company provided document object created, we need to upload the actual file associated with the document.

To do this, we make a PUT request to the upload_url returned in the above response. The path parameter com_kGYEICK22GEzj8trreH3 is the ID of the company we created a document for above. This request is a multipart/form-data request, with the form data containing a single key file whose value is the file we are uploading.

curl --request PUT \
     --url https://sandbox.checkhq.com/company_provided_documents/doc_1fyTzNTwEg1gWwKOqYK9/upload \
     --header 'Authorization: Bearer YOUR_API_KEY' \
>    --form 'file=@"/path/to/file/test.pdf"'

Upon successful upload, we receive the metadata for the company provided document we created previously, this time with an upload_status of "uploaded", a file_content_type which denotes the MIME type of the uploaded file (in this case "application/pdf") and a provided_filename which denotes the filename of the uploaded file (in this case "test.pdf").

{
    "id": "doc_1fyTzNTwEg1gWwKOqYK9",
    "company": "com_kGYEICK22GEzj8trreH3",
    "document_type": "940",
    "upload_url": "https://sandbox.checkhq.com/company_provided_documents/doc_1fyTzNTwEg1gWwKOqYK9/upload",
    "upload_status": "uploaded",
    "file_content_type": "application/pdf",
    "provided_filename": "test.pdf"
}

Upload Errors

Uploaded files must be PDF, JPG, or PNG and be less than 6 MB in size. The upload endpoint will surface a validation error when the user does not attach a file to the request or when the user attempts to upload a file which does not meet the above criteria.

Example error response for a request sent with no file in the request body

{
    "error": {
        "type": "validation_error",
        "message": "Please correct the required fields and try again.",
        "input_errors": [
            {
                "message": "File must be provided"
            }
        ]
    }
}

Example error response for a request sent with a file that is not one of the supported file types

{
    "error": {
        "type": "validation_error",
        "message": "Please correct the required fields and try again.",
        "input_errors": [
            {
                "message": "Invalid file type. File must be application/pdf, image/jpeg, or image/png"
            }
        ]
    }
}