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 MapsRequired

    A list of items the customer is purchasing.

  • customer_detailsMapRequired unless customer provided

    Details about the customer, including address and tax IDs.

  • shipping_costMap

    Shipping cost details to be used for the calculation.

More parameters

  • customerstringRequired unless customer_details provided

  • ship_from_detailsMap

  • 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
Stripe.apiKey = "sk_test_BQokikJ...2HlWgH4olfQ2sk_test_BQokikJOvBiI2HlWgH4olfQ2";
CalculationCreateParams params =
CalculationCreateParams.builder()
.setCurrency("usd")
.setCustomerDetails(
CalculationCreateParams.CustomerDetails.builder()
.setAddress(
CalculationCreateParams.CustomerDetails.Address.builder()
.setLine1("920 5th Ave")
.setCity("Seattle")
.setState("WA")
.setPostalCode("98104")
.setCountry("US")
.build()
)
.setAddressSource(
CalculationCreateParams.CustomerDetails.AddressSource.SHIPPING
)
.build()
)
.addLineItem(
CalculationCreateParams.LineItem.builder()
.setAmount(1499L)
.setTaxCode("txcd_10000000")
.setReference("Music Streaming Coupon")
.build()
)
.setShippingCost(
CalculationCreateParams.ShippingCost.builder().setAmount(300L).build()
)
.addExpand("line_items")
.build();
Calculation calculation = Calculation.create(params);
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
Stripe.apiKey = "sk_test_BQokikJ...2HlWgH4olfQ2sk_test_BQokikJOvBiI2HlWgH4olfQ2";
Calculation resource = Calculation.retrieve("taxcalc_1NpJD42eZvKYlo2CUti522cz");
CalculationListLineItemsParams params =
CalculationListLineItemsParams.builder().setLimit(3L).build();
CalculationLineItemCollection calculationLineItems = resource.listLineItems(params);
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
Stripe.apiKey = "sk_test_BQokikJ...2HlWgH4olfQ2sk_test_BQokikJOvBiI2HlWgH4olfQ2";
Calculation calculation = 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