Create receipt
Records what IRIS answered for an exported return — the Receipt ID on submission, then the acknowledgment.
POST /v1/tax/filings/{id}/receipt
| Address | https://api.hanzo.ai/v1/tax/filings/{id}/receipt |
| Method | POST |
| Operation | post_tax_filings_by_id_receipt |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Records what IRIS answered for an exported return — the Receipt ID on submission, then the acknowledgment. Org admins only.
This is the payer's report of its own act at the IRIS portal, made under its own Transmitter Control Code; nothing here reaches IRIS, and a status is only ever what the payer recorded. Moves: exported → submitted (with the Receipt ID and TCC) → accepted, accepted_with_errors or rejected.
Request
5 fields, body application/json (required).
| Field | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | ID is the filing, from the path. |
id | body | string | — | ID is the filing, from the path. |
receiptId | body | string | — | ReceiptID is the Receipt ID IRIS returned for the submission. |
status | body | string | — | Status is submitted (IRIS returned a Receipt ID), accepted, accepted_with_errors or rejected (IRIS's acknowledgment). |
tcc | body | string | — | TCC is the IRIS Transmitter Control Code the payer submitted under: five uppercase letters and digits. |
Response
| Status | Body | Meaning |
|---|---|---|
200 | tax.Filing | ok |
default | problem-details | refused |
200 body — 19 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
createdAt | body | integer (int64) | — | CreatedAt is when it was exported, unix seconds. |
due | body | string | — | Due is when the return is due to the IRS. |
forms | body | string[] | — | Forms are the form ids the filing carries. |
id | body | string | — | ID is the filing's id, "iris_"-prefixed. |
kind | body | string | — | Kind is 1099-NEC or 1099-MISC — one per filing, as IRIS takes them. |
layout | body | string | — | Layout says what the files are. |
missingTin | body | string[] | — | MissingTIN are forms filed with no recipient TIN. |
parts | body | tax.Part[] | — | Parts are its files. |
parts[].csv | body | string | — | CSV is the file itself. |
parts[].digest | body | string | — | Digest is the SHA-256 of its bytes, hex, so a re-read proves it is the same file. |
parts[].name | body | string | — | Name is the file name, e.g. "1099-NEC-2026-original-1.csv". |
parts[].records | body | integer (int64) | — | Records is how many forms it holds, at most 250. |
parts[].type | body | string | — | Type is original or correction: the portal takes them apart. |
receiptId | body | string | — | ReceiptID is the Receipt ID IRIS returned, once the payer recorded one. |
status | body | string | — | Status is exported, submitted, accepted, accepted_with_errors or rejected. |
steps | body | string[] | — | Steps are what remains for the payer to do, in order. |
tcc | body | string | — | TCC is the payer's IRIS Transmitter Control Code, once it recorded a submission. |
updatedAt | body | integer (int64) | — | UpdatedAt is when its status last moved, unix seconds. |
year | body | integer (int64) | — | Year is the tax year. |
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.
import { Configuration, TaxApi } from 'hanzoai';
const api = new TaxApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postTaxFilingsByIdReceipt({ id: 'id', id: "<id>", receiptId: "<receiptId>" });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_filings_by_id_receipt(id='id', id="<id>", receipt_id="<receiptId>")cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)
resp, _, err := client.TaxAPI.PostTaxFilingsByIdReceipt(context.Background()).Execute()
if err != nil {
return err
}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_filings_by_id_receipt(&cfg, Default::default()).await?;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).postTaxFilingsByIdReceipt();The method above is the one at the current release of the document. [email protected] (npm) and [email protected] (PyPI) were generated from an earlier release, where this operation carried a different id, so it spells the method differently — regenerating the clients is what makes the two agree. SDKs →
curl -X POST https://api.hanzo.ai/v1/tax/filings/<id>/receipt \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"id": "<id>",
"receiptId": "<receiptId>"
}'MCP declares no tool for tax — tools/list on https://api.hanzo.ai/v1/mcp names the products it does reach. Use HTTP or an SDK.
How is this guide?