Create a Tax Calculation 

Calculates tax based on the input and returns a Tax Calculation object.

Parameters

  • currencyenumRequired

    Three-letter ISO currency code, in lowercase. Must be a supported currency.

  • line_itemsarray of dictionariesRequired

    A list of items the customer is purchasing.

  • customer_detailsdictionaryRequired unless customer provided

    Details about the customer, including address and tax IDs.

  • shipping_costdictionary

    Shipping cost details to be used for the calculation.

More parameters

  • customerstringRequired unless customer_details provided

  • ship_from_detailsdictionary

  • tax_dateinteger

Returns

A Tax Calculation object containing the first 100 input line_items if the calculation succeeds. Otherwise, an error (for example, indicating that the customer address was invalid).

POST /v1/tax/calculations
import stripe
stripe.api_key = "sk_test_BQokikJ...2HlWgH4olfQ2sk_test_BQokikJOvBiI2HlWgH4olfQ2"
calculation = stripe.tax.Calculation.create(
currency="usd",
customer_details={
"address": {
"line1": "920 5th Ave",
"city": "Seattle",
"state": "WA",
"postal_code": "98104",
"country": "US",
},
"address_source": "shipping",
},
line_items=[
{
"amount": 1499,
"tax_code": "txcd_10000000",
"reference": "Music Streaming Coupon",
},
],
shipping_cost={"amount": 300},
expand=["line_items"],
)
Response
{
"id": "taxcalc_1OduxkBUZ691iUZ4iWvpMApI",
"object": "tax.calculation",
"amount_total": 1953,
"currency": "usd",
"customer": null,
"customer_details": {
"address": {
"city": "Seattle",
"country": "US",
"line1": "920 5th Ave",
"line2": null,
"postal_code": "98104",
"state": "WA"
},
"address_source": "shipping",
"ip_address": null,
"tax_ids": [],
"taxability_override": "none"
},
"expires_at": 1706708005,
"line_items": {
"object": "list",
"data": [
{
"id": "tax_li_PSqf3RMNZa23H4",
"object": "tax.calculation_line_item",
"amount": 1499,
"amount_tax": 154,
"livemode": false,
"product": null,
"quantity": 1,
"reference": "Music Streaming Coupon",
"tax_behavior": "exclusive",
"tax_code": "txcd_10000000"
}
],
"has_more": false,
"total_count": 1,
"url": "/v1/tax/calculations/taxcalc_1OduxkBUZ691iUZ4iWvpMApI/line_items"
},
"livemode": false,
"ship_from_details": null,
"shipping_cost": {
"amount": 300,
"amount_tax": 0,
"tax_behavior": "exclusive",
"tax_code": "txcd_92010001"
},
"tax_amount_exclusive": 154,
"tax_amount_inclusive": 0,
"tax_breakdown": [
{
"amount": 154,
"inclusive": false,
"tax_rate_details": {
"country": "US",
"percentage_decimal": "10.25",
"state": "WA",
"tax_type": "sales_tax"
},
"taxability_reason": "standard_rated",
"taxable_amount": 1499
},
{
"amount": 0,
"inclusive": false,
"tax_rate_details": {
"country": "DE",
"percentage_decimal": "0.0",
"state": null,
"tax_type": "vat"
},
"taxability_reason": "zero_rated",
"taxable_amount": 300
}
],
"tax_date": 1706535204
}

Retrieve a calculation's line items 

Retrieves the line items of a tax calculation as a collection, if the calculation hasn’t expired.

Parameters

  • ending_beforestring

    A cursor for use in pagination. ending_before is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, starting with obj_bar, your subsequent call can include ending_before=obj_bar in order to fetch the previous page of the list.

  • limitinteger

    A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.

  • starting_afterstring

    A cursor for use in pagination. starting_after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include starting_after=obj_foo in order to fetch the next page of the list.

Returns

A list of Line Item objects if the Tax calculation is found. Otherwise returns a ‘not found’ error.

GET /v1/tax/calculations/:id/line_items
import stripe
stripe.api_key = "sk_test_BQokikJ...2HlWgH4olfQ2sk_test_BQokikJOvBiI2HlWgH4olfQ2"
calculation_line_items = stripe.tax.Calculation.list_line_items(
"taxcalc_1NpJD42eZvKYlo2CUti522cz",
limit=3,
)
Response
{
"object": "list",
"url": "/v1/tax/calculations/taxcalc_1NpJD42eZvKYlo2CUti522cz/line_items",
"has_more": false,
"data": [
{
"id": "tax_li_OcYJb5mQOSSSWD",
"object": "tax.calculation_line_item",
"amount": 1499,
"amount_tax": 148,
"livemode": false,
"product": null,
"quantity": 1,
"reference": "Pepperoni Pizza",
"tax_behavior": "exclusive",
"tax_code": "txcd_40060003"
}
]
}

Retrieve a Tax Calculation 

Retrieves a Tax Calculation object, if the calculation hasn’t expired.

Parameters

No parameters.

Returns

A Tax Calculation object if the Tax calculation is found. Otherwise returns a ‘not found’ error.

GET /v1/tax/calculations/:id
import stripe
stripe.api_key = "sk_test_BQokikJ...2HlWgH4olfQ2sk_test_BQokikJOvBiI2HlWgH4olfQ2"
calculation = stripe.tax.Calculation.retrieve("taxcalc_1OduxkBUZ691iUZ4iWvpMApI")
Response
{
"id": "taxcalc_1OduxkBUZ691iUZ4iWvpMApI",
"object": "tax.calculation",
"amount_total": 1953,
"currency": "usd",
"customer": null,
"customer_details": {
"address": {
"city": "Seattle",
"country": "US",
"line1": "920 5th Ave",
"line2": null,
"postal_code": "98104",
"state": "WA"
},
"address_source": "shipping",
"ip_address": null,
"tax_ids": [],
"taxability_override": "none"
},
"expires_at": 1706708005,
"line_items": {
"object": "list",
"data": [
{
"id": "tax_li_PSqf3RMNZa23H4",
"object": "tax.calculation_line_item",
"amount": 1499,
"amount_tax": 154,
"livemode": false,
"product": null,
"quantity": 1,
"reference": "Music Streaming Coupon",
"tax_behavior": "exclusive",
"tax_code": "txcd_10000000"
}
],
"has_more": false,
"total_count": 1,
"url": "/v1/tax/calculations/taxcalc_1OduxkBUZ691iUZ4iWvpMApI/line_items"
},
"livemode": false,
"ship_from_details": null,
"shipping_cost": {
"amount": 300,
"amount_tax": 0,
"tax_behavior": "exclusive",
"tax_code": "txcd_92010001"
},
"tax_amount_exclusive": 154,
"tax_amount_inclusive": 0,
"tax_breakdown": [
{
"amount": 154,
"inclusive": false,
"tax_rate_details": {
"country": "US",
"percentage_decimal": "10.25",
"state": "WA",
"tax_type": "sales_tax"
},
"taxability_reason": "standard_rated",
"taxable_amount": 1499
},
{
"amount": 0,
"inclusive": false,
"tax_rate_details": {
"country": "DE",
"percentage_decimal": "0.0",
"state": null,
"tax_type": "vat"
},
"taxability_reason": "zero_rated",
"taxable_amount": 300
}
],
"tax_date": 1706535204
}

Tax Registrations 

A Tax Registration lets us know that your business is registered to collect tax on payments within a region, enabling you to automatically collect tax.

Stripe doesn’t register on your behalf with the relevant authorities when you create a Tax Registration object. For more information on how to register to collect tax, see our guide.

Related guide: Using the Registrations API

Tax Transactions