# Use ship-from addresses Calculate tax based on the location where goods ship from. If your business ships goods from locations other than your head office, you can provide a ship-from address to Stripe Tax so it can determine the correct tax origin for each transaction. This is common for businesses with multiple warehouses, fulfillment centers, or third-party logistics providers. ## Ship-from compared to other addresses Stripe Tax uses several addresses to calculate tax. Understanding the distinction between them is important: - **Head office address** (also called origin address or legal entity address): Your business’s main office location, configured in your [Tax settings](https://docs.stripe.com/tax/set-up.md). Stripe uses this as the default origin for all transactions. - **Ship-from address**: The physical location where goods are shipped from for a specific transaction. You provide this per-transaction using the `ship_from_details` parameter. When provided, Stripe Tax might use it instead of your head office address as the transaction origin, depending on jurisdiction rules. - **Customer address** (also called shipping address or destination): The buyer’s location. This is the transaction destination, not the origin. Don’t confuse this with the ship-from address. ## Supported integrations You can use ship-from addresses only with the [Stripe Tax API](https://docs.stripe.com/tax/standalone-tax-api.md) (also known as the standalone Tax API). Ship-from addresses aren’t available with Payment Links, Checkout, Billing, or Invoicing integrations. ## Add a ship-from address To add a ship-from address, include the `ship_from_details` object when you [create a tax calculation](https://docs.stripe.com/api/tax/calculations/create.md). The `ship_from_details.address` object requires a `country` field. For US addresses, you must also include `postal_code`. ```bash curl https://api.stripe.com/v1/tax/calculations \ -u "{{SECRET_KEY}}:" \ -d "currency=usd" \ -d "line_items[0][amount]=10000" \ -d "line_items[0][reference]=L1" \ -d "customer_details[address][line1]=920 5th Ave" \ -d "customer_details[address][city]=Seattle" \ -d "customer_details[address][state]=WA" \ -d "customer_details[address][postal_code]=98104" \ -d "customer_details[address][country]=US" \ -d "customer_details[address_source]=shipping" \ -d "ship_from_details[address][line1]=123 Warehouse Blvd" \ -d "ship_from_details[address][city]=Austin" \ -d "ship_from_details[address][state]=TX" \ -d "ship_from_details[address][postal_code]=78701" \ -d "ship_from_details[address][country]=US" ``` ### Ship-from address fields | Field | Required | Description | | ------------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | `country` | Yes | Two-letter ISO country code | | `state` | No | State or province as an [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) subdivision code, without country prefix (for example, `TX` or `NY`) | | `city` | No | City, district, suburb, town, or village | | `line1` | No | Street address or company name | | `line2` | No | Apartment, suite, unit, or building details | | `postal_code` | Required for US | ZIP or postal code | If you provide an unrecognized ship-from address, Stripe returns a `shipping_address_invalid` error. ## How ship-from affects tax calculation Stripe Tax can designate only one address as the origin of a transaction. When you provide a ship-from address, Stripe Tax uses jurisdiction-specific rules to determine whether the ship-from address or your head office address serves as the transaction origin. If you don’t provide a ship-from address, Stripe Tax uses your head office address as the origin. ### United States For transactions where the head office, ship-from location, and customer are all in the US, Stripe Tax applies the following rules in order: 1. **Same-state rule**: If the head office, ship-from location, and customer are all in the same state, and that state requires ship-from sourcing in this scenario, Stripe Tax uses the ship-from address. This currently applies to Texas. 1. **Intrastate rule**: The intrastate rule applies if the following are true: - The ship-from state differs from the head office state - The ship-from state matches the customer’s state - The ship-from state requires ship-from sourcing for intrastate sales If all of these are true, then the intrastate rule applies and Stripe Tax uses the ship-from address. This currently applies to Arizona, Missouri, Ohio, Tennessee, Utah, and Virginia. 3. **Default**: If neither rule applies, Stripe Tax uses the head office address. ### European Union and rest of world For transactions where all parties are outside the US, the ship-from address always takes priority over the head office address. This is relevant for EU businesses using the [Import One-Stop Shop (IOSS)](https://docs.stripe.com/tax/supported-countries/european-union.md#outside-eu-businesses-ioss) scheme. If you have an EU origin address and ship goods from outside the EU to EU customers, you must use the ship-from address to indicate where goods ship from so that correct IOSS rules apply. ### International transactions For cross-border transactions involving both US and non-US locations, the rules are: 1. **US head office, international ship-from, US customer**: Stripe Tax uses the head office address (not the ship-from address). 1. **Non-US head office, US ship-from, US customer in certain states**: If the customer is in Arizona, Missouri, Ohio, Tennessee, Utah, or Virginia, and the ship-from location is in the same state, Stripe Tax uses the customer’s address (destination) as the origin. This is because those states are destination-sourcing states for interstate sales. 1. **Default**: For all other combinations, Stripe Tax uses the ship-from address. ## Limitations - Stripe Tax designates only one address as the transaction origin, even though some jurisdictions determine origin differently by product type. If you sell a combination of products that require different origin locations, split the transaction. - Ship-from addresses are available only through the [Stripe Tax API](https://docs.stripe.com/tax/standalone-tax-api.md). They aren’t available with Payment Links, Checkout, Billing, or Invoicing. [Calculate tax using APIs](https://docs.stripe.com/tax/standalone-tax-api.md): Use Stripe Tax APIs to calculate and collect tax in your custom integration. [Tax for physical goods](https://docs.stripe.com/tax/physical-goods.md): Set up Stripe Tax for your e-commerce business selling physical goods. [Supported countries](https://docs.stripe.com/tax/supported-countries.md): Learn how to use Stripe to calculate, collect, and report tax in different countries.