Itemises what a formation costs before anyone commits to it.
Itemises what a formation costs before anyone commits to it.
POST /v1/company/tariff
| Address | https://api.hanzo.ai/v1/company/tariff |
| Method | POST |
| Operation | post_company_tariff |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Itemises what a formation costs before anyone commits to it.
It answers what is due now and what recurs, as separate figures, and marks the state's filing fee as money we collect and remit rather than keep. A caller can therefore show a payer the whole bill — which is the point of quoting at all, and was impossible while the fee was one number in an error string.
A jurisdiction whose filing fee this deployment has not been told REFUSES, naming the setting that fixes it. Quoting our half as though it were the total is the one answer that would be worse than no answer.
Request
4 fields, body application/json (required).
| Field | In | Type | Required | Description |
|---|---|---|---|---|
agentOfRecord | body | boolean | — | AgentOfRecord puts us on file as the entity's agent, yearly. |
expeditedEin | body | boolean | — | ExpeditedEIN prioritises the EIN. |
jurisdiction | body | string | — | Jurisdiction is the state of formation. |
structure | body | string | — | Structure is the entity being formed: c-corp, llc or dao-llc. |
Response
| Status | Body | Meaning |
|---|---|---|
200 | Tariff | ok |
200 body — 15 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
currency | body | string | — | Currency is the ISO code every amount on this quote is denominated in. |
dueNowCents | body | integer | — | DueNowCents is what is charged to begin: every non-recurring line. |
jurisdiction | body | string | — | Jurisdiction is the state of formation the filing fee belongs to. |
lines | body | Charge[] | — | Lines are the charges, in the order a reader should see them. |
lines[].amountCents | body | integer | — | AmountCents is what this line costs. |
lines[].asOf | body | string | — | AsOf is when a pass-through amount was last checked against its source. |
lines[].code | body | string | — | Code names the line so a caller can branch on it without reading prose. |
lines[].label | body | string | — | Label is what the payer sees on the invoice. |
lines[].passThrough | body | boolean | — | PassThrough marks money we collect and remit rather than keep — the state's fee is not our revenue, and a quote that hides that is a quote that reads as a… |
lines[].recurring | body | string | — | Recurring marks a line that repeats. An agent of record is billed every year for as long as the entity stands, and a payer agreeing to a one-time total is not… |
lines[].source | body | string | — | Source names who publishes this amount, for a line we merely pass through. |
lines[].stale | body | boolean | — | Stale reports that AsOf is older than the review window — the figure may have moved and nobody has looked. |
recurring | body | string | — | Recurring is how often RecurringCents repeats — "yearly" for an agent of record. |
recurringCents | body | integer | — | RecurringCents is what repeats, and Recurring says how often. |
structure | body | string | — | Structure is the entity this prices: c-corp, llc or dao-llc. |
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, CompanyApi } from 'hanzoai';
const api = new CompanyApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postCompanyTariff({ agentOfRecord: false, expeditedEin: false });from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import CompanyApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = CompanyApi(client).post_company_tariff(agent_of_record=False, expedited_ein=False)cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.CompanyAPI.PostCompanyTariff(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, company_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = company_api::post_company_tariff(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.CompanyApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new CompanyApi(client).postCompanyTariff();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/company/tariff \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"agentOfRecord": false,
"expeditedEin": false
}'The door reaches company through the company tool, which names its 22 operations with its own verbs — this one among them, under a name only the door declares. describe explains any of them:
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": "get_company"
}
}
}'How is this guide?