# List w9

URL: https://docs.hanzo.ai/docs/openapi/tax/get-tax-w9

> Lists the caller org's W-9 relationships on both sides: the W-9s it asked its payees for, with where each stands, and the requests other orgs made for its own W-9.

`GET /v1/tax/w9`

> [Tax →](https://docs.hanzo.ai/docs/openapi/tax) · [All API references →](https://docs.hanzo.ai/docs/openapi) · [Get started →](https://docs.hanzo.ai/docs/guides)

|               |                                        |
| ------------- | -------------------------------------- |
| **Address**   | `https://api.hanzo.ai/v1/tax/w9`       |
| **Method**    | `GET`                                  |
| **Operation** | `get_tax_w9`                           |
| **Auth**      | `Authorization: Bearer $HANZO_API_KEY` |

Lists the caller org's W-9 relationships on both sides: the W-9s it asked its
payees for, with where each stands, and the requests other orgs made for its
own W-9. Org admins only. No W-9 content is in the list; read one to see it.

## Request

`GET /v1/tax/w9` takes no parameters and no body — the credential is the whole request.

## Response

| Status    | Body            | Meaning |
| --------- | --------------- | ------- |
| `200`     | tax.w9List      | ok      |
| `default` | problem-details | refused |

`200` body — 126 fields.

| Field                                      | In   | Type              | Always | Description                                                                                                                                             |
| ------------------------------------------ | ---- | ----------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `asPayee`                                  | body | tax.W9\[]         | —      | AsPayee are the requests for the caller's own W-9.                                                                                                      |
| `asPayee[].category`                       | body | string            | —      | Category is what the payer states it pays this payee for.                                                                                               |
| `asPayee[].decidedAt`                      | body | integer (int64)   | —      | DecidedAt is when the payee last granted, declined or revoked.                                                                                          |
| `asPayee[].id`                             | body | string            | —      | ID addresses the relationship on both sides.                                                                                                            |
| `asPayee[].match`                          | body | tax.Match         | —      |                                                                                                                                                         |
| `asPayee[].match.at`                       | body | integer (int64)   | —      | At is when the payer recorded it, unix seconds.                                                                                                         |
| `asPayee[].match.by`                       | body | string            | —      | By is the admin who recorded it.                                                                                                                        |
| `asPayee[].match.result`                   | body | string            | —      | Result is what IRS TIN Matching answered: matched or mismatched.                                                                                        |
| `asPayee[].payee`                          | body | string            | —      | Payee is the org whose W-9 it is.                                                                                                                       |
| `asPayee[].payer`                          | body | string            | —      | Payer is the org that asked.                                                                                                                            |
| `asPayee[].profile`                        | body | tax.Profile       | —      |                                                                                                                                                         |
| `asPayee[].profile.address`                | body | tax.Address       | —      |                                                                                                                                                         |
| `asPayee[].profile.address.city`           | body | string            | —      | City is the city or town.                                                                                                                               |
| `asPayee[].profile.address.country`        | body | string            | —      | Country is ISO 3166-1 alpha-2; "US" when absent.                                                                                                        |
| `asPayee[].profile.address.line1`          | body | string            | —      | Line1 is the number, street, and apartment or suite.                                                                                                    |
| `asPayee[].profile.address.line2`          | body | string            | —      | Line2 continues the street address, when there is more of it.                                                                                           |
| `asPayee[].profile.address.state`          | body | string            | —      | State is the two-letter state or territory code.                                                                                                        |
| `asPayee[].profile.address.zip`            | body | string            | —      | ZIP is five or nine digits.                                                                                                                             |
| `asPayee[].profile.businessName`           | body | string            | —      | BusinessName is line 2: the business or disregarded entity name.                                                                                        |
| `asPayee[].profile.certification`          | body | tax.Certification | —      |                                                                                                                                                         |
| `asPayee[].profile.certification.by`       | body | string            | —      | By is who signed it: the IAM user legal recorded completing the signature.                                                                              |
| `asPayee[].profile.certification.document` | body | string            | —      | Document is the /v1/legal document that carries the signature.                                                                                          |
| `asPayee[].profile.certification.signed`   | body | integer (int64)   | —      | Signed is when legal reported the document signed, unix seconds.                                                                                        |
| `asPayee[].profile.certification.signer`   | body | string            | —      | Signer is the IAM user the signature was opened for — the admin who asked.                                                                              |
| `asPayee[].profile.certification.status`   | body | string            | —      | Status is none, pending (a signature is open) or certified.                                                                                             |
| `asPayee[].profile.certification.version`  | body | integer (int64)   | —      | Version is the profile version the signature covers.                                                                                                    |
| `asPayee[].profile.classification`         | body | string            | —      | Classification is line 3a.                                                                                                                              |
| `asPayee[].profile.consent`                | body | tax.Consent       | —      |                                                                                                                                                         |
| `asPayee[].profile.consent.at`             | body | integer (int64)   | —      | At is when the consent was given or withdrawn, unix seconds.                                                                                            |
| `asPayee[].profile.consent.by`             | body | string            | —      | By is the IAM user who gave or withdrew it.                                                                                                             |
| `asPayee[].profile.consent.electronic`     | body | boolean           | —      | Electronic is true while the consent stands.                                                                                                            |
| `asPayee[].profile.disclosure`             | body | string            | —      | Disclosure is the electronic-delivery disclosure the consent is given against.                                                                          |
| `asPayee[].profile.exemptPayee`            | body | string            | —      | ExemptPayee is line 4's exempt payee code, 1–13.                                                                                                        |
| `asPayee[].profile.expires`                | body | integer (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.                  |
| `asPayee[].profile.fatca`                  | body | string            | —      | FATCA is line 4's FATCA exemption code, A–M.                                                                                                            |
| `asPayee[].profile.foreignOwners`          | body | boolean           | —      | ForeignOwners is line 3b: a flow-through entity with foreign partners, owners or beneficiaries.                                                         |
| `asPayee[].profile.foreignTin`             | body | string            | —      | ForeignTIN is a W-8's foreign tax identifying number, masked.                                                                                           |
| `asPayee[].profile.form`                   | body | string            | —      | Form is w9, w8ben or w8bene.                                                                                                                            |
| `asPayee[].profile.name`                   | body | string            | —      | Name is line 1: the name on the income tax return, or of the foreign individual or organization that is the beneficial owner.                           |
| `asPayee[].profile.phone`                  | body | string            | —      | Phone is the number a 1099 this org files as PAYER prints for it.                                                                                       |
| `asPayee[].profile.tin`                    | body | string            | —      | TIN is Part I, masked to its last four digits.                                                                                                          |
| `asPayee[].profile.tinType`                | body | string            | —      | TINType is which Part I box: ssn (an SSN or ITIN) or ein.                                                                                               |
| `asPayee[].profile.updatedAt`              | body | integer (int64)   | —      | UpdatedAt is when the profile last changed, unix seconds.                                                                                               |
| `asPayee[].profile.valid`                  | body | boolean           | —      | 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. |
| `asPayee[].profile.version`                | body | integer (int64)   | —      | Version counts the W-9's revisions; a certification covers exactly one.                                                                                 |
| `asPayee[].profile.w8`                     | body | tax.W8            | —      |                                                                                                                                                         |
| `asPayee[].profile.w8.birth`               | body | string            | —      | Birth is W-8BEN line 8, the individual's date of birth, YYYY-MM-DD.                                                                                     |
| `asPayee[].profile.w8.capacity`            | body | string            | —      | Capacity is the capacity in which the signer signs for the beneficial owner — "Director", "Authorized officer".                                         |
| `asPayee[].profile.w8.chapter3`            | body | string            | —      | Chapter3 is W-8BEN-E line 4.                                                                                                                            |
| `asPayee[].profile.w8.chapter4`            | body | string            | —      | Chapter4 is W-8BEN-E line 5, the FATCA status.                                                                                                          |
| `asPayee[].profile.w8.country`             | body | string            | —      | Country is line 2: the country of citizenship (W-8BEN) or of incorporation or organization (W-8BEN-E), ISO 3166-1 alpha-2.                              |
| `asPayee[].profile.w8.giin`                | body | string            | —      | GIIN is W-8BEN-E line 9a, when the chapter 4 status carries one.                                                                                        |
| `asPayee[].profile.w8.noForeignTin`        | body | boolean           | —      | 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.                 |
| `asPayee[].profile.w8.treaty`              | body | tax.Treaty        | —      |                                                                                                                                                         |
| `asPayee[].profile.w8.treaty.article`      | body | string            | —      | Article is the treaty article and paragraph claimed, e.g. "12(2)".                                                                                      |
| `asPayee[].profile.w8.treaty.conditions`   | body | string            | —      | Conditions is the explanation the form asks for: the conditions of the article the beneficial owner meets.                                              |
| `asPayee[].profile.w8.treaty.country`      | body | string            | —      | Country is the treaty country the beneficial owner is resident in.                                                                                      |
| `asPayee[].profile.w8.treaty.income`       | body | string            | —      | Income is the type of income the claim covers: services, rents, royalties or other.                                                                     |
| `asPayee[].profile.w8.treaty.lob`          | body | string            | —      | LOB is W-8BEN-E line 14b: the treaty's limitation on benefits provision the entity meets.                                                               |
| `asPayee[].profile.w8.treaty.rateBps`      | body | integer (int64)   | —      | RateBps is the claimed withholding rate in basis points: 0 is exempt, 1000 is 10%.                                                                      |
| `asPayee[].requestedAt`                    | body | integer (int64)   | —      | RequestedAt is when the payer asked, unix seconds.                                                                                                      |
| `asPayee[].role`                           | body | string            | —      | Role is the caller's side of it: payer or payee.                                                                                                        |
| `asPayee[].status`                         | body | string            | —      | Status is requested, granted, declined or revoked.                                                                                                      |
| `asPayer`                                  | body | tax.W9\[]         | —      | AsPayer are the W-9s the caller asked for.                                                                                                              |
| `asPayer[].category`                       | body | string            | —      | Category is what the payer states it pays this payee for.                                                                                               |
| `asPayer[].decidedAt`                      | body | integer (int64)   | —      | DecidedAt is when the payee last granted, declined or revoked.                                                                                          |
| `asPayer[].id`                             | body | string            | —      | ID addresses the relationship on both sides.                                                                                                            |
| `asPayer[].match`                          | body | tax.Match         | —      |                                                                                                                                                         |
| `asPayer[].match.at`                       | body | integer (int64)   | —      | At is when the payer recorded it, unix seconds.                                                                                                         |
| `asPayer[].match.by`                       | body | string            | —      | By is the admin who recorded it.                                                                                                                        |
| `asPayer[].match.result`                   | body | string            | —      | Result is what IRS TIN Matching answered: matched or mismatched.                                                                                        |
| `asPayer[].payee`                          | body | string            | —      | Payee is the org whose W-9 it is.                                                                                                                       |
| `asPayer[].payer`                          | body | string            | —      | Payer is the org that asked.                                                                                                                            |
| `asPayer[].profile`                        | body | tax.Profile       | —      |                                                                                                                                                         |
| `asPayer[].profile.address`                | body | tax.Address       | —      |                                                                                                                                                         |
| `asPayer[].profile.address.city`           | body | string            | —      | City is the city or town.                                                                                                                               |
| `asPayer[].profile.address.country`        | body | string            | —      | Country is ISO 3166-1 alpha-2; "US" when absent.                                                                                                        |
| `asPayer[].profile.address.line1`          | body | string            | —      | Line1 is the number, street, and apartment or suite.                                                                                                    |
| `asPayer[].profile.address.line2`          | body | string            | —      | Line2 continues the street address, when there is more of it.                                                                                           |
| `asPayer[].profile.address.state`          | body | string            | —      | State is the two-letter state or territory code.                                                                                                        |
| `asPayer[].profile.address.zip`            | body | string            | —      | ZIP is five or nine digits.                                                                                                                             |
| `asPayer[].profile.businessName`           | body | string            | —      | BusinessName is line 2: the business or disregarded entity name.                                                                                        |
| `asPayer[].profile.certification`          | body | tax.Certification | —      |                                                                                                                                                         |
| `asPayer[].profile.certification.by`       | body | string            | —      | By is who signed it: the IAM user legal recorded completing the signature.                                                                              |
| `asPayer[].profile.certification.document` | body | string            | —      | Document is the /v1/legal document that carries the signature.                                                                                          |
| `asPayer[].profile.certification.signed`   | body | integer (int64)   | —      | Signed is when legal reported the document signed, unix seconds.                                                                                        |
| `asPayer[].profile.certification.signer`   | body | string            | —      | Signer is the IAM user the signature was opened for — the admin who asked.                                                                              |
| `asPayer[].profile.certification.status`   | body | string            | —      | Status is none, pending (a signature is open) or certified.                                                                                             |
| `asPayer[].profile.certification.version`  | body | integer (int64)   | —      | Version is the profile version the signature covers.                                                                                                    |
| `asPayer[].profile.classification`         | body | string            | —      | Classification is line 3a.                                                                                                                              |
| `asPayer[].profile.consent`                | body | tax.Consent       | —      |                                                                                                                                                         |
| `asPayer[].profile.consent.at`             | body | integer (int64)   | —      | At is when the consent was given or withdrawn, unix seconds.                                                                                            |
| `asPayer[].profile.consent.by`             | body | string            | —      | By is the IAM user who gave or withdrew it.                                                                                                             |
| `asPayer[].profile.consent.electronic`     | body | boolean           | —      | Electronic is true while the consent stands.                                                                                                            |
| `asPayer[].profile.disclosure`             | body | string            | —      | Disclosure is the electronic-delivery disclosure the consent is given against.                                                                          |
| `asPayer[].profile.exemptPayee`            | body | string            | —      | ExemptPayee is line 4's exempt payee code, 1–13.                                                                                                        |
| `asPayer[].profile.expires`                | body | integer (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.                  |
| `asPayer[].profile.fatca`                  | body | string            | —      | FATCA is line 4's FATCA exemption code, A–M.                                                                                                            |
| `asPayer[].profile.foreignOwners`          | body | boolean           | —      | ForeignOwners is line 3b: a flow-through entity with foreign partners, owners or beneficiaries.                                                         |
| `asPayer[].profile.foreignTin`             | body | string            | —      | ForeignTIN is a W-8's foreign tax identifying number, masked.                                                                                           |
| `asPayer[].profile.form`                   | body | string            | —      | Form is w9, w8ben or w8bene.                                                                                                                            |
| `asPayer[].profile.name`                   | body | string            | —      | Name is line 1: the name on the income tax return, or of the foreign individual or organization that is the beneficial owner.                           |
| `asPayer[].profile.phone`                  | body | string            | —      | Phone is the number a 1099 this org files as PAYER prints for it.                                                                                       |
| `asPayer[].profile.tin`                    | body | string            | —      | TIN is Part I, masked to its last four digits.                                                                                                          |
| `asPayer[].profile.tinType`                | body | string            | —      | TINType is which Part I box: ssn (an SSN or ITIN) or ein.                                                                                               |
| `asPayer[].profile.updatedAt`              | body | integer (int64)   | —      | UpdatedAt is when the profile last changed, unix seconds.                                                                                               |
| `asPayer[].profile.valid`                  | body | boolean           | —      | 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. |
| `asPayer[].profile.version`                | body | integer (int64)   | —      | Version counts the W-9's revisions; a certification covers exactly one.                                                                                 |
| `asPayer[].profile.w8`                     | body | tax.W8            | —      |                                                                                                                                                         |
| `asPayer[].profile.w8.birth`               | body | string            | —      | Birth is W-8BEN line 8, the individual's date of birth, YYYY-MM-DD.                                                                                     |
| `asPayer[].profile.w8.capacity`            | body | string            | —      | Capacity is the capacity in which the signer signs for the beneficial owner — "Director", "Authorized officer".                                         |
| `asPayer[].profile.w8.chapter3`            | body | string            | —      | Chapter3 is W-8BEN-E line 4.                                                                                                                            |
| `asPayer[].profile.w8.chapter4`            | body | string            | —      | Chapter4 is W-8BEN-E line 5, the FATCA status.                                                                                                          |
| `asPayer[].profile.w8.country`             | body | string            | —      | Country is line 2: the country of citizenship (W-8BEN) or of incorporation or organization (W-8BEN-E), ISO 3166-1 alpha-2.                              |
| `asPayer[].profile.w8.giin`                | body | string            | —      | GIIN is W-8BEN-E line 9a, when the chapter 4 status carries one.                                                                                        |
| `asPayer[].profile.w8.noForeignTin`        | body | boolean           | —      | 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.                 |
| `asPayer[].profile.w8.treaty`              | body | tax.Treaty        | —      |                                                                                                                                                         |
| `asPayer[].profile.w8.treaty.article`      | body | string            | —      | Article is the treaty article and paragraph claimed, e.g. "12(2)".                                                                                      |
| `asPayer[].profile.w8.treaty.conditions`   | body | string            | —      | Conditions is the explanation the form asks for: the conditions of the article the beneficial owner meets.                                              |
| `asPayer[].profile.w8.treaty.country`      | body | string            | —      | Country is the treaty country the beneficial owner is resident in.                                                                                      |
| `asPayer[].profile.w8.treaty.income`       | body | string            | —      | Income is the type of income the claim covers: services, rents, royalties or other.                                                                     |
| `asPayer[].profile.w8.treaty.lob`          | body | string            | —      | LOB is W-8BEN-E line 14b: the treaty's limitation on benefits provision the entity meets.                                                               |
| `asPayer[].profile.w8.treaty.rateBps`      | body | integer (int64)   | —      | RateBps is the claimed withholding rate in basis points: 0 is exempt, 1000 is 10%.                                                                      |
| `asPayer[].requestedAt`                    | body | integer (int64)   | —      | RequestedAt is when the payer asked, unix seconds.                                                                                                      |
| `asPayer[].role`                           | body | string            | —      | Role is the caller's side of it: payer or payee.                                                                                                        |
| `asPayer[].status`                         | body | string            | —      | Status is requested, granted, declined or revoked.                                                                                                      |

Failure carries the platform error shape — see [Errors](https://docs.hanzo.ai/docs/errors).

## Examples

**CLI**

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

**SDK**

**.ts**

```ts
import { Configuration, TaxApi } from 'hanzoai';

const api = new TaxApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getTaxW9();
```

**.py**

```python
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import TaxApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = TaxApi(client).get_tax_w9()
```

**.go**

```go
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.TaxAPI.GetTaxW9(context.Background()).Execute()
if err != nil {
	return err
}
```

**.rs**

```rust
use hanzo_client::apis::{configuration::Configuration, tax_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = tax_api::get_tax_w9(&cfg, Default::default()).await?;
```

**.java**

```java
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.TaxApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new TaxApi(client).getTaxW9();
```

**HTTP**

```bash
curl https://api.hanzo.ai/v1/tax/w9 \
  -H "Authorization: Bearer $HANZO_API_KEY"
```

**MCP**

Tool `tax`, op `get_tax_w9` — POST the JSON-RPC envelope to `https://api.hanzo.ai/v1/mcp`.

```bash
curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "tax",
         "arguments": {
           "op": "get_tax_w9",
           "input": {}
         }
       }
     }'
```

---

[Tax API](https://docs.hanzo.ai/docs/openapi/tax) · [All Hanzo APIs](https://docs.hanzo.ai/docs/openapi) · [Interactive reference](https://docs.hanzo.ai/docs/openapi/reference)
