public

POST /v1/public/pricing/tax-quote

What these net prices look like to a signed-out visitor, after VAT.

所有 public 端点

身份验证

此端点是公开的。它不需要任何凭据或组织——这是我们自己的营销网站和 AI 问答引擎所读取的内容。

此端点不需要组织 ID。您的密钥已用于识别其所属的组织,且响应范围也仅限于该组织。

免费试用

将尖括号中的内容替换为您自己的值,并将键占位符替换为您仪表板中的一个键。

curl -X POST https://api.zinndigital.com/v1/public/pricing/tax-quote \
  -H "Content-Type: application/json" \
  -d '{ "items": <object[]> }'

已登录?您仪表板中的 API 控制台会自动填入您真实的组织 ID 和您自己的密钥,并针对实时 API 运行请求,以便您查看实际的响应。 在 API 控制台中打开此端点

详细信息

The anonymous half of `quoteTaxDisplay` (#1482). Same answer, one difference that matters: there is no organisation, so there is no validated VAT number and **every visitor is treated as a consumer**. ⛔ **This route accepts no buyer-validation flag, deliberately.** Reverse charge turns on a VIES-validated number and the seller carries the liability for granting it wrongly (`docs/34` §2.3), so a client-supplied validation claim would be a request to zero-rate a sale on the buyer's own say-so. Treating everyone as a consumer is also the safe direction: it over-states rather than under-states the tax due. Country comes from the request body or Cloudflare's `CF-IPCountry`. The answer is always `estimated: true` — a pricing page runs on a geo hint, and the charge is rated again at checkout against real place-of-supply evidence.

请求正文

名称类型必填内容简介
countrystringISO 3166-1 alpha-2 destination. On the signed-in route this overrides the stored billing country (the customer may be pricing an address they have not saved). Omitted on the pub…
currencystringISO 4217. Defaults to the `docs/29` §3.1 resolution for the request.
itemsobject[]

响应

名称类型必填内容简介
currencystring
countrystringThe destination the figures were rated for, or `""` if none was known.
display_modestring<gross, net>Which figure leads. `gross` for a consumer (with the VAT shown separately), `net` for a validated business and for any supply carrying no VAT. ⛔ Read it; do not re-derive it — t…
noticestring<vat_included, reverse_charge, no_vat, vat_at_checkout>A **key**, never rendered prose — every user-facing string goes through the frontend i18n layer in all 58 locales (§2.7, §2.19), so a wording change is a translation change rath…
rate_bpsintegerThe single rate behind `notice`, or `0` where the basket carries more than one. A mixed basket (hosting at the buyer's rate, a website build at UK 20%) genuinely has no single r…
estimatedbooleanThe figures ran on weak evidence (a geo hint, no billing address) and are indicative. The charge is rated again at checkout against full place-of-supply evidence, and **that** i…
indeterminatebooleanThe supply could not be rated and the **net** figure is being shown with `notice: vat_at_checkout`. Never true alongside a non-zero `tax_total_minor`.
net_total_minorinteger
tax_total_minorinteger
gross_total_minorinteger⛔ Equal to net in the `indeterminate` fallback, **never 0** — a caller rendering this field unconditionally must show the price rather than a free product.
linesobject[]

此端点可能返回的错误

422 · 429