A calculation quotes the tax for a cart. Create one at checkout after the customer enters an address and before you take payment. Use its
id to record a transaction once the customer pays.The response has the totals and a breakdown for each line item. Most integrations charge total_tax_amount; the details are there when you need them.Where calculations fit in checkout
The Calculation object
Attributes
One entry per line item in the request.
One row per taxing jurisdiction.
Statutory rate for the jurisdiction, as a decimal fraction (
0.07 = 7%), rounded to 6 decimal places. Some rates apply to only part of the amount, so don’t sum these. See Summing tax rates.Unrounded tax due for this jurisdiction, in the currency’s smallest unit. Can be fractional.
0 on flat-fee rows: see fee_amount.Descriptive rate classification, e.g.
GENERAL STATE SALES TAX or FOOD_AND_DRUG CITY LOCAL SALES TAX.How precisely the address matched:
EXACT: exact street-level match.POSTAL_FALLBACK_1: fell back to a postal-code-level match.POSTAL_ONLY: only the postal code was used.
tax_jurisdictions rows have no jurisdiction_name or note in this version. Both were in versions before 2026-01-01.The Calculation object
Summing tax rates
Don’t add uptax_rate values to get a rate. Each one is the statutory rate for its jurisdiction, and some apply to only part of the line amount.Tennessee’s single article rules are the common case. Local rates apply only to the first $1,600 of an item, and the 2.75% state single article rate only to the part between $1,600 and $3,200. The second line item in the example is a $10,000 Nashville item: its four rates sum to 12.25%, but its tax_amount is $788.00, an effective rate of 7.88%.- Always charge the returned
tax_amountortotal_tax_amount. - For an effective rate, divide
tax_amountbyamount_excluding_tax. tax_due_decimalshows how much each jurisdiction actually contributed.
Tennessee single article
Create a calculation
Quotes tax for a cart. SendX-API-Version: 2026-01-01 on every request. Try it in the API reference.Parameters
Who is buying.
Destination address. Supports US, Canada, the EU member states, and many other countries. See the API reference for the full list of 82.
ISO 3166-2 subdivision code. For US and Canada, a valid uppercase state or province code.
ID of a customer you created in Numeral. Used to log customer information or to mark the purchase tax exempt.
CONSUMER: a private individual not registered for VAT/GST. Standard B2C tax.BUSINESS: a company or other legal entity registered for VAT/GST. Needstax_idsfor B2B tax logic.
Required when
type is BUSINESS and the address is outside the US. Not allowed for CONSUMER. Each has type and value. Types are Stripe-style and country-specific, 439+ in all, e.g. us_ein, eu_vat, gb_vat, au_abn, ca_bn, jp_cn, in_gst, br_cnpj. See tax IDs.The cart.
ISO 4217 currency code. 126 currencies are supported. See supported currencies.
auto returns real rates everywhere you have an active registration. disabled always returns 0. Must be auto for US addresses.One entry per product. Each needs
reference_product_id or product_category.Per-unit price in the currency’s smallest unit (e.g. cents for USD). Taxable base is
amount × quantity.Tax category from the category list. Required if no
reference_product_id.Your product ID, as created in Numeral as a product. Required if no
product_category.Used when
reference_product_id isn’t found in Numeral, instead of returning an error. Lets you always send a product ID without creating the product first. Must be a valid category; an invalid value returns a 400. If the product is found, its stored category wins.Ship-from address, used where the seller’s location affects the rate (origin-based sourcing). Required unless a default origin address is set for the destination on your account. Same fields as
customer.address, without address_type.CONSUMER. Treat the customer as a consumer when business tax ID validation fails, instead of returning a 400.Your own key-value pairs, echoed back unchanged. At most 50 keys. Keys up to 255 characters. Values must be strings of up to 255 characters.
Returns
A Calculation object.POST /tax/calculations
Response
Errors
Errors returncode, type, and message. Handle them by type. This flat format replaces the nested error object of earlier versions. Full list in Error Codes.