Hanzo AI

Create certify

Signs the caller org's certification — Form W-9 Part II, Form W-8BEN Part III or Form W-8BEN-E Part XXX — through /v1/legal's e-signature.

POST /v1/tax/profile/certify

Addresshttps://api.hanzo.ai/v1/tax/profile/certify
MethodPOST
Operationpost_tax_profile_certify
AuthAuthorization: Bearer $HANZO_API_KEY

Signs the caller org's certification — Form W-9 Part II, Form W-8BEN Part III or Form W-8BEN-E Part XXX — through /v1/legal's e-signature. The org's own admins only, and the admin is the signer: a SuperAdmin acting inside the org is not a person who can certify for it.

The first call renders the certification — the IRS's own certification text over this profile's facts, every number truncated — as a /v1/legal document and opens its signature request with the calling admin as signer; the answer is pending with the document id. The signer completes it where every /v1/legal signature is completed (POST /v1/legal/documents/{id}/sign/complete). Calling this again then asks legal whether the document is signed and by whom: signed by the signer, the profile is recorded certified; not yet signed, it answers pending again; signed by anyone else — another member, a key — or voided, it is not the signer's certification, and a fresh request is opened in its place.

A certification covers one profile version: writing any fact on the form afterwards voids it. A certified W-8 is valid through the last day of the third calendar year after the year it was signed (Instructions for Form W-8BEN and W-8BEN-E, Rev. 10-2021); certifying it again after that renews it. It is not a statement that a TIN matches IRS records — that is IRS TIN Matching, which only a payer enrolled in IRS e-Services can run.

Request

The document declares no body for POST /v1/tax/profile/certify. The handler is typed in cloud but its shape is not yet emitted, so the fields are not listed here — ask MCP's describe for post_tax_profile_certify, which answers from the running route.

Response

StatusBodyMeaning
200tax.Profileok
defaultproblem-detailsrefused

200 body — 49 fields.

FieldInTypeAlwaysDescription
addressbodytax.Address—
address.citybodystring—City is the city or town.
address.countrybodystring—Country is ISO 3166-1 alpha-2; "US" when absent.
address.line1bodystring—Line1 is the number, street, and apartment or suite.
address.line2bodystring—Line2 continues the street address, when there is more of it.
address.statebodystring—State is the two-letter state or territory code.
address.zipbodystring—ZIP is five or nine digits.
businessNamebodystring—BusinessName is line 2: the business or disregarded entity name.
certificationbodytax.Certification—
certification.bybodystring—By is who signed it: the IAM user legal recorded completing the signature.
certification.documentbodystring—Document is the /v1/legal document that carries the signature.
certification.signedbodyinteger (int64)—Signed is when legal reported the document signed, unix seconds.
certification.signerbodystring—Signer is the IAM user the signature was opened for — the admin who asked.
certification.statusbodystring—Status is none, pending (a signature is open) or certified.
certification.versionbodyinteger (int64)—Version is the profile version the signature covers.
classificationbodystring—Classification is line 3a.
consentbodytax.Consent—
consent.atbodyinteger (int64)—At is when the consent was given or withdrawn, unix seconds.
consent.bybodystring—By is the IAM user who gave or withdrew it.
consent.electronicbodyboolean—Electronic is true while the consent stands.
disclosurebodystring—Disclosure is the electronic-delivery disclosure the consent is given against.
exemptPayeebodystring—ExemptPayee is line 4's exempt payee code, 1–13.
expiresbodyinteger (int64)—Expires is when a certified W-8 stops being valid, unix seconds: the last day of the third calendar year after the year it was signed.
fatcabodystring—FATCA is line 4's FATCA exemption code, A–M.
foreignOwnersbodyboolean—ForeignOwners is line 3b: a flow-through entity with foreign partners, owners or beneficiaries.
foreignTinbodystring—ForeignTIN is a W-8's foreign tax identifying number, masked.
formbodystring—Form is w9, w8ben or w8bene.
namebodystring—Name is line 1: the name on the income tax return, or of the foreign individual or organization that is the beneficial owner.
phonebodystring—Phone is the number a 1099 this org files as PAYER prints for it.
tinbodystring—TIN is Part I, masked to its last four digits.
tinTypebodystring—TINType is which Part I box: ssn (an SSN or ITIN) or ein.
updatedAtbodyinteger (int64)—UpdatedAt is when the profile last changed, unix seconds.
validbodyboolean—Valid is whether the form establishes what it certifies today — for a W-8, certified for its current version and not expired; for a W-9, a TIN on file.
versionbodyinteger (int64)—Version counts the W-9's revisions; a certification covers exactly one.
w8bodytax.W8—
w8.birthbodystring—Birth is W-8BEN line 8, the individual's date of birth, YYYY-MM-DD.
w8.capacitybodystring—Capacity is the capacity in which the signer signs for the beneficial owner — "Director", "Authorized officer".
w8.chapter3bodystring—Chapter3 is W-8BEN-E line 4.
w8.chapter4bodystring—Chapter4 is W-8BEN-E line 5, the FATCA status.
w8.countrybodystring—Country is line 2: the country of citizenship (W-8BEN) or of incorporation or organization (W-8BEN-E), ISO 3166-1 alpha-2.
w8.giinbodystring—GIIN is W-8BEN-E line 9a, when the chapter 4 status carries one.
w8.noForeignTinbodyboolean—NoForeignTIN is W-8BEN line 6b / W-8BEN-E line 9b's alternative: the jurisdiction of residence does not require or issue a foreign TIN.
w8.treatybodytax.Treaty—
w8.treaty.articlebodystring—Article is the treaty article and paragraph claimed, e.g. "12(2)".
w8.treaty.conditionsbodystring—Conditions is the explanation the form asks for: the conditions of the article the beneficial owner meets.
w8.treaty.countrybodystring—Country is the treaty country the beneficial owner is resident in.
w8.treaty.incomebodystring—Income is the type of income the claim covers: services, rents, royalties or other.
w8.treaty.lobbodystring—LOB is W-8BEN-E line 14b: the treaty's limitation on benefits provision the entity meets.
w8.treaty.rateBpsbodyinteger (int64)—RateBps is the claimed withholding rate in basis points: 0 is exempt, 1000 is 10%.

Failure carries the platform error shape — see Errors.

Examples

hanzo has no subcommand for this operation — the CLI serves only what cloud's live route table confirms. Use HTTP or an SDK.


Tax API · All Hanzo APIs · Interactive reference

How is this guide?

On this page