Skip to content
Constaia
us_w9

Form W-9

Name, tax classification, TIN and signature from IRS Form W-9.

Category
Tax
Country
United States
Extracted fields
11 fields
Cost
1 credit
Form W-9
Invalid
SpecimenTry it in the demo

Before you pay a US contractor you need their taxpayer identification number (TIN) for Form 1099 reporting. Constaia reads the W-9, checks the SSN or EIN format, compares the name with the one you expect and confirms the form is signed and dated.

  • Format checks do not replace IRS TIN Matching, which confirms that a name and TIN combination matches IRS records.
  • Constaia returns the form revision it finds, so you can ask for the current one.

What it checks

  • National identifiers. Official checksum or format of the number (NIF, CPF, CURP, RUT, SSN…).us_tin, us_ein, us_zip
  • Postal code. Postal code format of the country.
  • Holder. Name, number or date of birth match what you expect.
  • Recency. Issued less than N days ago.

Extracted fields

  • Namename
  • Business namebusiness_name
  • Federal tax classificationtax_classification
  • Exempt payee codeexempt_payee_code
  • Addressaddress
  • Postal codepostal_code
  • Social Security number (SSN)ssn
  • Einein
  • Signature presentsignature_present
  • Signature datesignature_date
  • Form revisionform_revision

Where it is used

Sample request

curl https://api.constaia.com/v1/analyze \
  -H "Authorization: Bearer $CONSTAIA_API_KEY" \
  -F "file=@us_w9_specimen.pdf" \
  -F 'options={
    "expect": "us_w9",
    "checks": {
      "require_signature": true,
      "holder": {
        "full_name": "Acme Example Services LLC"
      }
    },
    "storage": "none"
  }'

Try it for free with a ck_test_ key and the file us_w9_specimen.pdf.

Sample response

Fictitious data. Shortened response.

200 OK · application/json
{
  "id": "an_01J9Z3K8QW4T6Y2B7N5M1R0PXC",
  "object": "analysis",
  "status": "completed",
  "livemode": false,
  "document": {
    "type": "us_w9",
    "label": "Form W-9",
    "confidence": 0.97
  },
  "verdict": {
    "expected": [
      "us_w9"
    ],
    "match": true,
    "status": "valid",
    "reasons": [
      {
        "code": "type_match",
        "severity": "info",
        "message": "The document is: Form W-9."
      }
    ]
  },
  "fields": {
    "form_revision": {
      "value": "Rev. March 2024",
      "confidence": 0.99,
      "validated": true
    },
    "holder_name": {
      "value": "ACME EXAMPLE SERVICES LLC",
      "confidence": 0.98,
      "validated": null
    },
    "tax_classification": {
      "value": "LLC (S corporation)",
      "confidence": 0.97,
      "validated": null
    },
    "tin_type": {
      "value": "EIN",
      "confidence": 0.96,
      "validated": null
    },
    "tin": {
      "value": "12-3456789",
      "confidence": 0.99,
      "validated": null
    },
    "signature_present": {
      "value": true,
      "confidence": 0.98,
      "validated": null
    },
    "signature_date": {
      "value": "2026-09-18",
      "confidence": 0.97,
      "validated": null
    }
  },
  "checks": [
    {
      "code": "ein_format",
      "passed": true,
      "message": "The EIN has a valid format."
    },
    {
      "code": "holder_match",
      "passed": true,
      "message": "The holder matches."
    },
    {
      "code": "signature_present",
      "passed": true,
      "message": "It is signed."
    }
  ],
  "warnings": [],
  "storage": {
    "mode": "none",
    "file_deleted_at": "2026-09-29T10:00:02Z",
    "expires_at": null
  },
  "usage": {
    "credits": 1,
    "pages": 1
  }
}

FAQ

Does Constaia prove the document is authentic?

No. It checks the type, data consistency and your rules, and flags signals such as a possible edit or a screen photo. That does not prove authenticity.

Is a copy of the document kept?

No, unless you ask for it. With storage "none" (the default) the file is deleted when the analysis ends.

Other documents

And for the record…

Create your account, copy the test key and validate your first document in five minutes.