# Create furnish

URL: https://docs.hanzo.ai/docs/openapi/tax/post-tax-forms-by-id-furnish

> Furnishes Copy B of a reviewed 1099 to its payee.

`POST /v1/tax/forms/{id}/furnish`

> [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/forms/{id}/furnish` |
| **Method**    | `POST`                                           |
| **Operation** | `post_tax_forms_by_id_furnish`                   |
| **Auth**      | `Authorization: Bearer $HANZO_API_KEY`           |

Furnishes Copy B of a reviewed 1099 to its payee. Org admins only.

When the payee's tax profile consents to electronic delivery, Copy B is
delivered into the payee's /v1/tax/inbox and the form is furnished. Otherwise it
is OWED on paper at the payee's address: mailing it is the payer's, and
POST /v1/tax/forms/{id}/mailed records it. Either way the statement is final
from this call — the form can no longer change, only be corrected. Calling it
again on a form furnished electronically re-delivers Copy B if the inbox lacks
it, and changes nothing else.

It does not file anything with the IRS, and it does not send the notice of
posting Pub 1099 Part M asks a furnisher to give an electronic recipient; the
statement is in the recipient's inbox, and telling them so is the payer's.

## Request

1 field.

| Field | In   | Type   | Required | Description                            |
| ----- | ---- | ------ | -------- | -------------------------------------- |
| `id`  | path | string | yes      | ID is the form id, "f1099\_"-prefixed. |

## Response

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

`200` body — 58 fields.

| Field                       | In   | Type            | Always | Description                                                                                                                   |
| --------------------------- | ---- | --------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------- |
| `account`                   | body | string          | —      | Account is the account number the form prints — the original form's id, which a correction keeps, so the IRS can tie the two. |
| `backup`                    | body | tax.Withholding | —      |                                                                                                                               |
| `backup.dueCents`           | body | integer (int64) | —      | DueCents is what 24% of the reported boxes comes to — what should have been withheld.                                         |
| `backup.rate`               | body | integer (int64) | —      | Rate is the backup withholding rate, in percent: 24.                                                                          |
| `backup.reason`             | body | string          | —      | Reason says why, and which rule — or, when nothing is required, what the payer should still know.                             |
| `backup.required`           | body | boolean         | —      | Required is true when the payer holds no TIN for the payee — the IRC §3406(a)(1)(A) trigger these forms can know.             |
| `boxes`                     | body | tax.Amount\[]   | —      | Boxes are the figures, box 4 (federal income tax withheld) included.                                                          |
| `boxes[].box`               | body | string          | —      | Box is the box number, e.g. "1a".                                                                                             |
| `boxes[].cents`             | body | integer (int64) | —      | Cents is the amount in cents.                                                                                                 |
| `boxes[].label`             | body | string          | —      | Label is the box's caption on the form.                                                                                       |
| `certified`                 | body | boolean         | —      | Certified is whether the payee's W-9 was certified when the form was prepared.                                                |
| `corrected`                 | body | boolean         | —      | Corrected is true for a form that corrects one already furnished.                                                             |
| `createdAt`                 | body | integer (int64) | —      | CreatedAt is when the form was prepared, unix seconds.                                                                        |
| `delivery`                  | body | string          | —      | Delivery is electronic (Copy B in the payee's inbox) or paper, once furnished.                                                |
| `due`                       | body | tax.Deadline    | —      |                                                                                                                               |
| `due.file`                  | body | string          | —      | File is the date the return is due to the IRS, electronically (IRIS).                                                         |
| `due.furnish`               | body | string          | —      | Furnish is the date Copy B is due to the recipient.                                                                           |
| `furnishedAt`               | body | integer (int64) | —      | FurnishedAt is when Copy B was delivered in the inbox, or marked owed on paper.                                               |
| `id`                        | body | string          | —      | ID is the form's id, "f1099\_"-prefixed.                                                                                      |
| `kind`                      | body | string          | —      | Kind is 1099-NEC or 1099-MISC.                                                                                                |
| `mailedAt`                  | body | integer (int64) | —      | MailedAt is when the payer recorded mailing a paper Copy B.                                                                   |
| `notes`                     | body | string\[]       | —      | Notes are what still needs a person, in words.                                                                                |
| `payer`                     | body | tax.Party       | —      |                                                                                                                               |
| `payer.address`             | body | tax.Address     | —      |                                                                                                                               |
| `payer.address.city`        | body | string          | —      | City is the city or town.                                                                                                     |
| `payer.address.country`     | body | string          | —      | Country is ISO 3166-1 alpha-2; "US" when absent.                                                                              |
| `payer.address.line1`       | body | string          | —      | Line1 is the number, street, and apartment or suite.                                                                          |
| `payer.address.line2`       | body | string          | —      | Line2 continues the street address, when there is more of it.                                                                 |
| `payer.address.state`       | body | string          | —      | State is the two-letter state or territory code.                                                                              |
| `payer.address.zip`         | body | string          | —      | ZIP is five or nine digits.                                                                                                   |
| `payer.businessName`        | body | string          | —      | BusinessName is W-9 line 2, when there is one.                                                                                |
| `payer.name`                | body | string          | —      | Name is W-9 line 1.                                                                                                           |
| `payer.org`                 | body | string          | —      | Org is the Hanzo org.                                                                                                         |
| `payer.phone`               | body | string          | —      | Phone is the payer's telephone number; a recipient has none on the form.                                                      |
| `payer.tin`                 | body | string          | —      | TIN is masked here always.                                                                                                    |
| `payer.tinType`             | body | string          | —      | TINType is ssn or ein; empty when no TIN is held.                                                                             |
| `payments`                  | body | string\[]       | —      | Payments are the rail payment ids summed into the boxes.                                                                      |
| `reason`                    | body | string          | —      | Reason is why a corrected form was made.                                                                                      |
| `recipient`                 | body | tax.Party       | —      |                                                                                                                               |
| `recipient.address`         | body | tax.Address     | —      |                                                                                                                               |
| `recipient.address.city`    | body | string          | —      | City is the city or town.                                                                                                     |
| `recipient.address.country` | body | string          | —      | Country is ISO 3166-1 alpha-2; "US" when absent.                                                                              |
| `recipient.address.line1`   | body | string          | —      | Line1 is the number, street, and apartment or suite.                                                                          |
| `recipient.address.line2`   | body | string          | —      | Line2 continues the street address, when there is more of it.                                                                 |
| `recipient.address.state`   | body | string          | —      | State is the two-letter state or territory code.                                                                              |
| `recipient.address.zip`     | body | string          | —      | ZIP is five or nine digits.                                                                                                   |
| `recipient.businessName`    | body | string          | —      | BusinessName is W-9 line 2, when there is one.                                                                                |
| `recipient.name`            | body | string          | —      | Name is W-9 line 1.                                                                                                           |
| `recipient.org`             | body | string          | —      | Org is the Hanzo org.                                                                                                         |
| `recipient.phone`           | body | string          | —      | Phone is the payer's telephone number; a recipient has none on the form.                                                      |
| `recipient.tin`             | body | string          | —      | TIN is masked here always.                                                                                                    |
| `recipient.tinType`         | body | string          | —      | TINType is ssn or ein; empty when no TIN is held.                                                                             |
| `status`                    | body | string          | —      | Status is draft, reviewed, furnished, owed or void.                                                                           |
| `supersededBy`              | body | string          | —      | SupersededBy is the form that corrects this one, once there is one.                                                           |
| `supersedes`                | body | string          | —      | Supersedes is the form this one corrects.                                                                                     |
| `updatedAt`                 | body | integer (int64) | —      | UpdatedAt is when its status last moved, unix seconds.                                                                        |
| `w9`                        | body | string          | —      | W9 is where the payer's W-9 request stood when the form was prepared.                                                         |
| `year`                      | body | integer (int64) | —      | Year is the calendar year the payments were made.                                                                             |

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.postTaxFormsByIdFurnish({ id: 'id' });
```

**.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).post_tax_forms_by_id_furnish(id='id')
```

**.go**

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

resp, _, err := client.TaxAPI.PostTaxFormsByIdFurnish(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::post_tax_forms_by_id_furnish(&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).postTaxFormsByIdFurnish();
```

**HTTP**

```bash
curl -X POST https://api.hanzo.ai/v1/tax/forms/<id>/furnish \
  -H "Authorization: Bearer $HANZO_API_KEY"
```

**MCP**

MCP reaches **tax** through the `tax` tool, which names its 26 operations with its own verbs — this one among them, under a name only MCP declares. `describe` explains any of them:

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

---

[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)
