Skip to content

Stripe: Create a Calculation

Stripe tax.postTaxCalculations: arguments, response, policy and SDK examples.

← Tax operations · Get started

Operation stripe.posttaxcalculations

Provider route: POST /v1/tax/calculations. Alter supplies the connection’s credentials and routing.

Install @alter-ai/sdk @alter-ai/stripe with npm, or alter-sdk-stripe with pip. Supply your connected customer’s grant ID and the arguments described below.

import { App } from "@alter-ai/sdk";
import { StripeIntegration } from "@alter-ai/stripe";
async function execute(input: Parameters<StripeIntegration["tax"]["postTaxCalculations"]>[0]) {
const app = new App({ apiKey: process.env.ALTER_API_KEY! });
try {
const provider = new StripeIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! });
const call = await provider.tax.postTaxCalculations(input);
const result = await call.wait();
return result.bodyJson();
} finally {
await app.close();
}
}
import os
from alter_sdk import App
from alter_sdk_stripe import StripeIntegration
async def execute(arguments):
async with App(api_key=os.environ["ALTER_API_KEY"]) as app:
provider = StripeIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]})
call = await provider.tax.post_tax_calculations(arguments)
result = await call.wait()
return result.body_json()
FieldTypePresenceDescription and constraints
$objectRootAdditional keys: not allowed
headersobjectOptionalAdditional keys: not allowed
headers.Idempotency-KeystringOptionalMinimum length: 1
Maximum length: 255
bodyobjectRequired within parentAdditional keys: not allowed
body.currencystringRequired within parentThree-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
Format: currency
body.customerstringOptionalThe ID of an existing customer to use for this calculation. If provided, the customer’s address and tax IDs are copied to `customer_details`.
Maximum length: 5000
body.customer_detailsobjectOptionalDetails about the customer, including address and tax IDs.
body.customer_details.addressModelOptionalExpand Create a Calculation — request body — body customer details address
body.customer_details.address_sourcestringOptionalOne of: billing, shipping
body.customer_details.ip_addressstringOptional
body.customer_details.tax_idsarrayOptional
body.customer_details.tax_ids[]ModelEach itemExpand Create a customer — request body — body tax id data item
body.customer_details.taxability_overridestringOptionalOne of: customer_exempt, none, reverse_charge
body.expandarrayOptionalSpecifies which fields in the response should be expanded.
body.expand[]stringEach itemMaximum length: 5000
body.line_itemsarrayRequired within parentA list of items the customer is purchasing. You can pass up to 100 line items, or 1,000 if your account has an increased limit.
body.line_items[]objectEach item
body.line_items[].amountintegerRequired within parent
body.line_items[].metadataobjectOptionalAdditional keys: see wildcard field
body.line_items[].metadata.*stringAdditional keys
body.line_items[].performance_locationstringOptionalMaximum length: 5000
body.line_items[].productstringOptionalMaximum length: 5000
body.line_items[].quantityintegerOptional
body.line_items[].referencestringOptionalMaximum length: 500
body.line_items[].tax_behaviorstringOptionalOne of: exclusive, inclusive
body.line_items[].tax_codestringOptional
body.ship_from_detailsobjectOptionalDetails about the address from which the goods are being shipped.
body.ship_from_details.addressModelRequired within parentExpand Create a Calculation — request body — body customer details address
body.shipping_costobjectOptionalShipping cost details to be used for the calculation.
body.shipping_cost.amountintegerOptional
body.shipping_cost.shipping_ratestringOptionalMaximum length: 5000
body.shipping_cost.tax_behaviorstringOptionalOne of: exclusive, inclusive
body.shipping_cost.tax_codestringOptional
body.tax_dateintegerOptionalThe calculation uses the tax rules and rates that are in effect at this timestamp. You can use a date up to 31 days in the past or up to 31 days in the future. If you use a future date, Stripe doesn’t guarantee that the expected tax rules and rate being used match the actual rules and rate that will be in effect on that date. We deploy tax changes before their effective date, but not within a fixed window.

Referenced models: Create a Calculation — request body — body customer details address, Create a customer — request body — body tax id data item

Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.

FieldTypePresenceDescription and constraints
$ModelRootExpand Create a Calculation — response body

Referenced models: Create a Calculation — response body

11 more schemas are linked from the tables above, on the schema pages.

Create a Calculation — response body
FieldTypePresenceDescription and constraints
$objectRootA Tax Calculation allows you to calculate the tax to collect from your customer.

Related guide: [Calculate tax in your custom payment flow](https://docs.stripe.com/tax/custom)
amount_totalJSONRequired within parent
amount_total (anyOf 1)integerAlternativeTotal amount after taxes in the [smallest currency unit](https://docs.stripe.com/currencies#minor-units).
amount_total (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
currencystringRequired within parentThree-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
Maximum length: 5000
customerJSONOptional
customer (anyOf 1)stringAlternativeThe ID of an existing [Customer](https://docs.stripe.com/api/customers/object) used for the resource.
Maximum length: 5000
customer (anyOf 2)nullAlternative
customer_detailsModelRequired within parentExpand Create a Calculation — response body — customer details
expires_atJSONOptional
expires_at (anyOf 1)JSONAlternative
expires_at (anyOf 1) (anyOf 1)integerAlternativeTimestamp of date at which the tax calculation will expire.
Format: unix-time
expires_at (anyOf 1) (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
expires_at (anyOf 2)nullAlternative
idJSONOptional
id (anyOf 1)stringAlternativeUnique identifier for the calculation.
Maximum length: 5000
id (anyOf 2)nullAlternative
line_itemsJSONOptional
line_items (anyOf 1)objectAlternativeThe list of items the customer is purchasing.
line_items (anyOf 1).dataarrayRequired within parentDetails about each object.
line_items (anyOf 1).data[]ModelEach itemExpand Retrieve a Calculation's line items — response body — data item
line_items (anyOf 1).has_morebooleanRequired within parentTrue if this list has another page of items after this one that can be fetched.
line_items (anyOf 1).objectstringRequired within parentString representing the object's type. Objects of the same type share the same value. Always has the value `list`.
Known values: list
line_items (anyOf 1).urlstringRequired within parentThe URL where this list can be accessed.
Maximum length: 5000
Pattern: ^/v1/tax/calculations/[^/]+/line_items
line_items (anyOf 2)nullAlternative
livemodebooleanRequired within parentIf the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`.
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: tax.calculation
ship_from_detailsJSONOptional
ship_from_details (anyOf 1)JSONAlternativeThe details of the ship from location, such as the address.
ship_from_details (anyOf 1) (anyOf 1)ModelAlternativeExpand Create a Calculation — response body — ship from details value address
ship_from_details (anyOf 2)nullAlternative
shipping_costJSONOptional
shipping_cost (anyOf 1)JSONAlternativeThe shipping cost details for the calculation.
shipping_cost (anyOf 1) (anyOf 1)ModelAlternativeExpand Create a Calculation — response body — shipping_cost / The shipping cost details for the calculation / tax_behavior: exclusive, inclusive
shipping_cost (anyOf 2)nullAlternative
tax_amount_exclusiveJSONRequired within parent
tax_amount_exclusive (anyOf 1)integerAlternativeThe amount of tax to be collected on top of the line item prices.
tax_amount_exclusive (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
tax_amount_inclusiveJSONRequired within parent
tax_amount_inclusive (anyOf 1)integerAlternativeThe amount of tax already included in the line item prices.
tax_amount_inclusive (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
tax_breakdownarrayRequired within parentBreakdown of individual tax amounts that add up to the total.
tax_breakdown[]ModelEach itemExpand Create a Calculation — response body — tax breakdown item
tax_dateJSONRequired within parent
tax_date (anyOf 1)integerAlternativeThe calculation uses the tax rules and rates that are in effect at this timestamp. You can use a date up to 31 days in the past or up to 31 days in the future. If you use a future date, Stripe doesn't guarantee that the expected tax rules and rate being used match the actual rules and rate that will be in effect on that date. We deploy tax changes before their effective date, but not within a fixed window.
Format: unix-time
tax_date (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$

Referenced models: Retrieve a Calculation's line items — response body — data item, Create a Calculation — response body — customer details, Create a Calculation — response body — ship from details value address, Create a Calculation — response body — tax breakdown item, Create a Calculation — response body — shipping_cost / The shipping cost details for the calculation / tax_behavior: exclusive, inclusive

Create a Calculation — request body — body customer details address
FieldTypePresenceDescription and constraints
$objectRoot
cityJSONOptional
city (anyOf 1)stringAlternativeMaximum length: 5000
city (anyOf 2)stringAlternativeOne of:
countrystringRequired within parentMaximum length: 5000
line1JSONOptional
line1 (anyOf 1)stringAlternativeMaximum length: 5000
line1 (anyOf 2)stringAlternativeOne of:
line2JSONOptional
line2 (anyOf 1)stringAlternativeMaximum length: 5000
line2 (anyOf 2)stringAlternativeOne of:
postal_codeJSONOptional
postal_code (anyOf 1)stringAlternativeMaximum length: 5000
postal_code (anyOf 2)stringAlternativeOne of:
stateJSONOptional
state (anyOf 1)stringAlternativeMaximum length: 5000
state (anyOf 2)stringAlternativeOne of:
Create a customer — request body — body tax id data item
FieldTypePresenceDescription and constraints
$objectRoot
typestringRequired within parentOne of: ad_nrt, ae_trn, al_tin, am_tin, ao_tin, ar_cuit, au_abn, au_arn, aw_tin, az_tin, ba_tin, bb_tin, bd_bin, bf_ifu, bg_uic, bh_vat, bj_ifu, bo_tin, br_cnpj, br_cpf, bs_tin, by_tin, ca_bn, ca_gst_hst, ca_pst_bc, ca_pst_mb, ca_pst_sk, ca_qst, cd_nif, ch_uid, ch_vat, cl_tin, cm_niu, cn_tin, co_nit, cr_tin, cv_nif, de_stn, do_rcn, ec_ruc, eg_tin, es_cif, et_tin, eu_oss_vat, eu_vat, fo_vat, gb_vat, ge_vat, gi_tin, gn_nif, hk_br, hr_oib, hu_tin, ic_nif, id_npwp, il_vat, in_gst, is_vat, it_cf, jp_cn, jp_rn, jp_trn, ke_pin, kg_tin, kh_tin, kr_brn, kz_bin, la_tin, li_uid, li_vat, lk_vat, ma_vat, md_vat, me_pib, mk_vat, mr_nif, mx_rfc, my_frp, my_itn, my_sst, ng_tin, no_vat, no_voec, np_pan, nz_gst, om_vat, pe_ruc, ph_tin, pl_nip, py_ruc, ro_tin, rs_pib, ru_inn, ru_kpp, sa_vat, sg_gst, sg_uen, si_tin, sn_ninea, sr_fin, sv_nit, th_vat, tj_tin, tr_tin, tw_vat, tz_vat, ua_vat, ug_tin, us_ein, uy_ruc, uz_tin, uz_vat, ve_rif, vn_tin, za_vat, zm_tin, zw_tin
Maximum length: 5000
valuestringRequired within parent
Create a Calculation — response body — customer details
FieldTypePresenceDescription and constraints
$objectRoot
addressJSONOptional
address (anyOf 1)JSONAlternativeThe customer's postal address (for example, home or business location).
address (anyOf 1) (anyOf 1)ModelAlternativeExpand Create a Calculation — response body — ship from details value address address
address (anyOf 2)nullAlternative
address_sourceJSONOptional
address_source (anyOf 1)stringAlternativeThe type of customer address provided.
Known values: billing, shipping
address_source (anyOf 2)nullAlternative
ip_addressJSONOptional
ip_address (anyOf 1)stringAlternativeThe customer's IP address (IPv4 or IPv6).
Maximum length: 5000
ip_address (anyOf 2)nullAlternative
tax_idsarrayRequired within parentThe customer's tax IDs (for example, EU VAT numbers).
tax_ids[]ModelEach itemExpand Create a Calculation — response body — customer details tax ids item
taxability_overridestringRequired within parentThe taxability override used for taxation.
Known values: customer_exempt, none, reverse_charge

Referenced models: Create a Calculation — response body — customer details tax ids item, Create a Calculation — response body — ship from details value address address

SDK function policy ID: stripe.posttaxcalculations. Catalog operation: PostTaxCalculations. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.

Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.

Pinned headers: {"Stripe-Version": "2026-09-30.endive"}

Official provider source

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.