# Collect tax with Checkout elements

Learn how to calculate and display taxes using Checkout with elements mode.

Stripe Tax automatically calculates the taxes on purchases when you use Checkout with elements mode (`ui_mode: 'elements'`). This integration gives you full control over the payment form layout while Stripe handles tax calculation.

If you haven’t set up Checkout with elements mode, complete the [Checkout quickstart](https://docs.stripe.com/checkout/quickstart.md) first.

## Calculate and render tax amount

Use Stripe Tax to automatically calculate the tax on your transactions without requiring you to define the rates and rules. Fees only apply after you add at least one location where you’re registered to calculate and remit tax.

## Configure your Checkout Session to collect tax

To start collecting tax:

1. Pass [automatic_tax[enabled]=true](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-automatic_tax-enabled) when creating a Checkout Session.
1. Specify a [tax_code](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-price_data-product_data-tax_code) for each line item, or set a preset tax code in the [Dashboard](https://dashboard.stripe.com/settings/tax).
1. Specify a [tax_behavior](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-price_data-tax_behavior) for each line item, or set a default tax behavior in the [Dashboard](https://dashboard.stripe.com/settings/tax).

This code enables automatic tax calculation using Stripe Tax, a tax code, and a tax behavior. Stripe Tax then uses the tax code and tax behavior to automatically calculate taxes.

```curl
curl https://api.stripe.com/v1/checkout/sessions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "line_items[0][price_data][currency]=usd" \
  -d "line_items[0][price_data][product_data][name]=T-shirt" \
  -d "line_items[0][price_data][product_data][tax_code]=txcd_99999999" \
  -d "line_items[0][price_data][unit_amount]=2000" \
  -d "line_items[0][price_data][tax_behavior]=exclusive" \
  -d "line_items[0][quantity]=1" \
  -d mode=payment \
  -d ui_mode=elements \
  -d return_url={{RETURN_URL}} \
  -d "automatic_tax[enabled]=true"
```

#### Tax codes

The tax codes associate products with tax rates. Choose the appropriate tax code for your product from the list of [tax codes](https://docs.stripe.com/tax/tax-codes.md). If a product doesn’t match with any of the tax codes, you can use one of the `General` codes.

#### Tax behavior

The [tax behavior](https://docs.stripe.com/tax/products-prices-tax-codes-tax-behavior.md#tax-behavior) determines how to present tax to the customer:

- **Exclusive**: The product price doesn’t include tax, which is added as a separate amount.
- **Inclusive**: The product price includes any tax amount.

## Optional: Collect tax address details through the Payment Element

You can collect the minimum tax address details directly in the [Payment Element](https://docs.stripe.com/payments/payment-element.md). Collecting tax address details through the Payment Element is suitable for the following use cases:

- You don’t require full address collection.
- You only require address collection for tax collection purposes.

This feature integrates input fields for the country and postal code into each payment method form within the Payment Element. It only collects the minimum required address fields for tax calculation based on [Stripe Tax requirements](https://docs.stripe.com/tax/customer-locations.md#supported-formats).

There are certain [regional considerations](https://docs.stripe.com/tax/customer-locations.md#region-specific) where the tax rate using the minimum required address fields might differ from the tax rate at your customer’s full address. We recommend using the [Address Element](https://docs.stripe.com/elements/address-element.md) to collect your customer’s full address for tax calculation if these regional considerations apply to your business.

When you create the Checkout Session, set [billing_address_collection=auto](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-billing_address_collection) to automatically collect the billing address.

Don’t include the [shipping_address_collection](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-shipping_address_collection) parameter. If you provide this parameter, tax address details are collected based on the shipping address instead of the billing address.

With [automatic_tax[enabled]=true](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-automatic_tax-enabled) and `billing_address_collection=auto`, the Payment Element collects the minimum required tax address fields for each payment method.

If you set [billing_address_collection=required](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-billing_address_collection), you must collect a full billing address with the [Address Element](https://docs.stripe.com/elements/address-element.md) or your own address form.

```curl
curl https://api.stripe.com/v1/checkout/sessions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "line_items[0][price_data][currency]=usd" \
  -d "line_items[0][price_data][product_data][name]=T-shirt" \
  -d "line_items[0][price_data][product_data][tax_code]=txcd_99999999" \
  -d "line_items[0][price_data][unit_amount]=2000" \
  -d "line_items[0][price_data][tax_behavior]=exclusive" \
  -d "line_items[0][quantity]=1" \
  -d mode=payment \
  -d ui_mode=elements \
  -d return_url={{RETURN_URL}} \
  -d "automatic_tax[enabled]=true" \
  -d billing_address_collection=auto
```

When collecting tax address details through the Payment Element, tax calculation behaves as follows:

- If you pass [fields.billingDetails.address=auto | if_required](https://docs.stripe.com/js/custom_checkout/create_payment_element#custom_checkout_create_payment_element-options-fields-billingDetails-address), the Payment Element collects the minimum required address fields for tax calculation.
- If you pass [fields.billingDetails.address=never](https://docs.stripe.com/js/custom_checkout/create_payment_element#custom_checkout_create_payment_element-options-fields-billingDetails-address), you must collect tax address details through an alternative method because the billing input fields won’t show in the Payment Element.
- If you pass [fields.billingDetails.address.country=never](https://docs.stripe.com/js/custom_checkout/create_payment_element#custom_checkout_create_payment_element-options-fields-billingDetails-address-country), the customer’s detected country is used for tax calculation.
- If you pass [fields.billingDetails.address.postalCode=never](https://docs.stripe.com/js/custom_checkout/create_payment_element#custom_checkout_create_payment_element-options-fields-billingDetails-address-postalCode), the method returns an error because the postal code might be required for certain countries.
- If you call [action.updateBillingAddress](https://docs.stripe.com/js/custom_checkout/update_billing_address), the method returns an error because the billing address could potentially conflict.

## Optional: Check the response

You can view the calculated tax amount for each payment as follows:

- In the Checkout Session resource, review the [total_details.amount_tax](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-total_details) property.
- In the [Dashboard](https://dashboard.stripe.com/), review the tax outcome for each payment.

## Render the tax amount

#### React

Use the [useCheckout](https://docs.stripe.com/js/react_stripe_js/checkout/use_checkout) hook to display the tax amount in your payment form.

```jsx
import React from 'react';
import {useCheckout} from '@stripe/react-stripe-js';

const CheckoutForm = () => {
  const checkoutState = useCheckout();
  if (checkoutState.type === 'loading') {
    return (
      <div>Loading...</div>
    );
  } else if (checkoutState.type === 'error') {
    return (
      <div>Error: {checkoutState.error.message}</div>
    );
  }
  const {checkout} = checkoutState;
  return (
    <div>
      <h2>Checkout Summary</h2>
      <pre>
        {JSON.stringify(checkout.lineItems, null, 2)}
      </pre>
      <h3>Totals</h3>
      <pre>
        Subtotal: {checkout.total.subtotal.amount}
        {/* Make sure you use the appropriate tax amount type (taxInclusive and/or taxExclusive) for your integration */}
        Tax: {checkout.total.taxExclusive.amount}
        Total: {checkout.total.total.amount}
      </pre>
    </div>
  )
};
```

#### HTML + JS

Use the [Session object](https://docs.stripe.com/js/custom_checkout/session_object) to display the tax amount in your payment form.

```html
<div>
  <h3> Totals </h3>
  <div id="subtotal" ></div>
  <div id="tax" ></div>
  <div id="total" ></div>
</div>
```

```js
const checkout = stripe.initCheckoutElementsSdk({clientSecret})
const subtotal = document.getElementById('subtotal');
const tax = document.getElementById('tax');
const total = document.getElementById('total');

checkout.on('change', (session) => {
  subtotal.textContent = `Subtotal: ${session.total.subtotal.amount}`;
  // Make sure you use the appropriate tax amount type (taxInclusive and/or taxExclusive) for your integration
  tax.textContent = `Tax: ${session.total.taxExclusive.amount}`;
  total.textContent = `Total: ${session.total.total.amount}`;
})
```

## Collect customer tax IDs 

Displaying a customer’s tax ID and legal business name on *invoices* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice) is a common requirement that you can satisfy by enabling tax ID collection. This guide assumes that you’ve integrated Elements with the [Checkout Sessions API](https://docs.stripe.com/api/checkout/sessions.md). If you haven’t completed this integration, see the [quickstart guide](https://docs.stripe.com/payments/quickstart-checkout-sessions.md).

> #### Disclaimer
> 
> The Checkout Sessions API is designed to collect business tax IDs, which might have formats similar to personal tax IDs in certain jurisdictions. You must make sure that only business tax IDs, as designated for this field, are provided when using this feature.

## Enable tax ID collection [Server-side]

### New customers

To enable tax ID collection for new customers, set [tax_id_collection[enabled]](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-tax_id_collection-enabled) to `true` when creating a Checkout Session.

```curl
curl https://api.stripe.com/v1/checkout/sessions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d ui_mode=elements \
  -d "line_items[0][price]={{PRICE_ID}}" \
  -d "line_items[0][quantity]=1" \
  -d "tax_id_collection[enabled]=true" \
  -d mode=payment \
  --data-urlencode "return_url=https://example.com/return"
```

### Existing customers 

Create a Checkout Session with an existing [Customer](https://docs.stripe.com/api/customers/object.md) to add any tax ID information collected during checkout. The Checkout Session saves the business name as the customer’s [name](https://docs.stripe.com/api/customers/object.md#customer_object-name) and adds the collected tax ID to [customer.tax_ids](https://docs.stripe.com/api/customers/object.md#customer_object-tax_ids).

When creating the Checkout Session, you can set [customer_update.name](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_update-name) to `auto` to automatically update the customer’s existing `name` using details from the session.

```curl
curl https://api.stripe.com/v1/checkout/sessions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d ui_mode=elements \
  -d "customer={{CUSTOMER_ID}}" \
  -d "line_items[0][price]={{PRICE_ID}}" \
  -d "line_items[0][quantity]=1" \
  -d "tax_id_collection[enabled]=true" \
  -d "customer_update[name]=auto" \
  -d mode=payment \
  --data-urlencode "return_url=https://example.com/return"
```

If you don’t have saved addresses for existing customers, you can use the billing or shipping address entered during checkout to assess their location. To use the billing address, set [customer_update.address](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_update-address) to `auto`. Setting this parameter to `auto` replaces the customer’s previously saved addresses with the address entered during checkout.

```curl
curl https://api.stripe.com/v1/checkout/sessions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d ui_mode=elements \
  -d "customer={{CUSTOMER_ID}}" \
  -d "line_items[0][price]={{PRICE_ID}}" \
  -d "line_items[0][quantity]=1" \
  -d "tax_id_collection[enabled]=true" \
  -d "customer_update[name]=auto" \
  -d "customer_update[address]=auto" \
  -d mode=payment \
  --data-urlencode "return_url=https://example.com/return"
```

If you’re saving shipping addresses for existing customers, you can use the shipping address entered during checkout to assess their location. To use the shipping address, set [customer_update.shipping](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_update-shipping) to `auto`. Setting this parameter to `auto` replaces the customer’s previously saved shipping addresses with the address entered during checkout.

```curl
curl https://api.stripe.com/v1/checkout/sessions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d ui_mode=elements \
  -d "customer={{CUSTOMER_ID}}" \
  -d "line_items[0][price]={{PRICE_ID}}" \
  -d "line_items[0][quantity]=1" \
  -d "tax_id_collection[enabled]=true" \
  -d "customer_update[name]=auto" \
  -d "customer_update[shipping]=auto" \
  -d "shipping_address_collection[allowed_countries][0]=DE" \
  -d mode=payment \
  --data-urlencode "return_url=https://example.com/return"
```

This example creates a session in `payment` mode with tax ID collection enabled. For subscriptions, make the same changes with the [mode](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) set to `subscription`.

## Render the Tax ID Element [Client-side] [Public preview]

Use Stripe’s [Tax ID Element](https://docs.stripe.com/js/custom_checkout/create_tax_id_element) to collect tax IDs.

#### React

```jsx
import {useMemo} from 'react',
import {loadStripe} from '@stripe/stripe-js';
import {CheckoutElementsProvider, TaxIdElement} from '@stripe/react-stripe-js/checkout';

const stripePromise = loadStripe('<<YOUR_PUBLISHABLE_KEY>>', {
  betas: [
    'custom_checkout_tax_id_1',
  ],
});

const App = () => {
  const fetchClientSecret = useMemo(() => {
    return fetch('/create-checkout-session', {method: 'POST'})
      .then((res) => res.json())
      .then((data) => data.clientSecret)
  }, []);

  return (
    <CheckoutElementsProvider
      stripe={stripePromise}
      options={{
        clientSecret: fetchClientSecret,
      }}
    >
      <TaxIdElement />
    <CheckoutElementsProvider>
  );
};
```

#### HTML + JS

```html
<div class="tax-id-form">
  <div id="tax-id-element"></div>
</div>
```

```javascript
const stripe = window.Stripe('<<YOUR_PUBLISHABLE_KEY>>', {
  betas: [
    "custom_checkout_tax_id_1",
  ],
});

const clientSecret = fetch("/create-checkout-session", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
  })
    .then((res) => res.json())
    .then((res) => {
      return res.clientSecret;
    });

const checkout = stripe.initCheckoutElementsSdk({
  clientSecret,
});

const taxIdElement = checkout.createTaxIdElement();
taxIdElement.mount("#tax-id-element");
```

## Retrieve the customer tax ID details after a session

Checkout includes provided tax IDs on the resulting [Session](https://docs.stripe.com/api/checkout/sessions/object.md) object. After each completed Session, Checkout emits a [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) event that you can listen for in a *webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) endpoint. If you want to retrieve the collected tax ID from the Session object, it’s available under the Session’s [customer_details.tax_ids](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-customer_details-tax_ids) array:

```json
{
  "object": {
    "id": "cs_test_a1dJwt0TCJTBsDkbK7RcoyJ91vJxe2Y",
    "object": "checkout.session",
    ...
    "customer": {{CUSTOMER_ID}},
    "customer_details": {
      ..."tax_ids": [
        {
          "type": "eu_vat",
          "value": "FRAB123456789"
        }
      ]
    },
    ..."tax_id_collection": {
      "enabled": true
    },
    ...
  }
}
```

Checkout saves collected tax IDs and business names to the [Customer](https://docs.stripe.com/api/customers/object.md) object when you associate the Checkout Session with a Customer. Checkout stores a collected tax ID under the [customer.tax_ids](https://docs.stripe.com/api/customers/object.md#customer_object-tax_ids) array on the Customer. You can retrieve all tax IDs saved to a Customer with the [Tax IDs](https://docs.stripe.com/api/tax_ids/list.md) resource by setting [owner.type](https://docs.stripe.com/api/tax_ids/list.md#list_tax_ids-owner-type) to `customer` and [owner.customer](https://docs.stripe.com/api/tax_ids/list.md#list_tax_ids-owner-customer) to the customer ID. Checkout saves the business name to the Customer’s [name](https://docs.stripe.com/api/customers/object.md#customer_object-name) and [business_name](https://docs.stripe.com/api/customers/object.md#customer_object-business_name) properties. Your subscription invoices always show the collected legal business name.

## Test your integration

In testing environments, you can enter any alphanumeric string that is in the correct format of a supported tax ID type (for example, `DE123456789` for `eu_vat`). For a full list of example tax IDs you can reference our [Customer Tax ID guide](https://docs.stripe.com/billing/customer/tax-ids.md#supported-tax-id). You can also use our [test tax IDs](https://docs.stripe.com/connect/testing.md#test-business-tax-ids) to test various verification state flows.

### Asynchronous Tax ID validation

During the Checkout Session, Stripe verifies that the provided tax IDs are formatted correctly, but not that they’re valid. You’re responsible for ensuring the validity of customer information collected during checkout. To help, Stripe automatically performs asynchronous validation against government databases for [Australian Business Numbers (ABNs)](https://docs.stripe.com/tax/invoicing/tax-ids.md#australian-business-numbers-abn), [European Value Added Tax (EU VAT)](https://docs.stripe.com/tax/invoicing/tax-ids.md#european-value-added-tax-eu-vat-numbers), and [United Kingdom Value Added Tax (GB VAT)](https://docs.stripe.com/tax/invoicing/tax-ids.md#united-kingdom-value-added-tax-gb-vat-numbers) numbers. Learn more about the [validation we perform](https://docs.stripe.com/tax/invoicing/tax-ids.md#validation), and how to consume the status of those checks.

If you use Stripe Tax and your customer provides a tax ID, Stripe Tax applies the reverse charge or zero rate according to applicable laws, as long as the tax ID conforms to the necessary number format, regardless of its validity.

### Real-time tax ID validation (Preview)

In addition to the asynchronous validation described above, you can enable synchronous, real-time tax ID verification directly in the Tax ID Element. When you enable it, Stripe verifies tax IDs against government databases as your customer types and displays the result inline before they submit the payment. Stripe currently supports real-time verification for [Australian Business Numbers (ABNs)](https://docs.stripe.com/tax/invoicing/tax-ids.md#australian-business-numbers-abn), [European Value Added Tax (EU VAT)](https://docs.stripe.com/tax/invoicing/tax-ids.md#european-value-added-tax-eu-vat-numbers), and [United Kingdom Value Added Tax (GB VAT)](https://docs.stripe.com/tax/invoicing/tax-ids.md#united-kingdom-value-added-tax-gb-vat-numbers) numbers. If a government database is unavailable, Stripe falls back to synchronous format validation and performs full verification asynchronously. This feature is in [public preview](https://docs.stripe.com/release-phases.md) and requires the `custom_checkout_tax_id_verification_1` beta.

```javascript
const taxIdElement = checkout.createTaxIdElement({
  ...
  verification: {
    taxId: {
      mode: 'if_supported',
    },
  },
});
```

When you enable verification, the `change` event includes the `verification.taxId.status` field. Its value can be `pending`, `verified`, `unverified`, or `unavailable`. The element’s `complete` status reflects the verification result. See [Create a Tax ID Element](https://docs.stripe.com/js/custom_checkout/create_tax_id_element#custom_checkout_create_tax_id_element-options-verification) and [Tax ID Element on Change](https://docs.stripe.com/js/custom_checkout/element_events/on_change?type=taxIdElement#custom_checkout_element_on_change-handler-verification) for details.

### Supported tax ID types

The Checkout Session collects the following tax ID types in the given regions:

| Country | Enum       | Description                                                                 | Example              | Impact in Tax Calculation* |
| ------- | ---------- | --------------------------------------------------------------------------- | -------------------- | -------------------------- |
| AE      | ae_trn     | United Arab Emirates TRN                                                    | 123456789012345      | Yes                        |
| AL      | al_tin     | Albania Tax Identification Number                                           | J12345678N           | Yes                        |
| AM      | am_tin     | Armenia Tax Identification Number                                           | 02538904             | Yes                        |
| AO      | ao_tin     | Angola Tax Identification Number                                            | 5123456789           | No                         |
| AT      | eu_vat     | European VAT number                                                         | ATU12345678          | Yes                        |
| AU      | au_abn     | Australian Business Number (AU ABN)                                         | 12345678912          | Yes                        |
| AW      | aw_tin     | Aruba Tax Identification Number                                             | 12345678             | Yes                        |
| AZ      | az_tin     | Azerbaijan Tax Identification Number                                        | 0123456789           | Yes                        |
| BA      | ba_tin     | Bosnia and Herzegovina Tax Identification Number                            | 123456789012         | Yes                        |
| BB      | bb_tin     | Barbados Tax Identification Number                                          | 1123456789012        | No                         |
| BD      | bd_bin     | Bangladesh Business Identification Number                                   | 123456789-0123       | Yes                        |
| BE      | eu_vat     | European VAT number                                                         | BE0123456789         | Yes                        |
| BF      | bf_ifu     | Burkina Faso Tax Identification Number (Numéro d'Identifiant Fiscal Unique) | 12345678A            | Yes                        |
| BG      | eu_vat     | European VAT number                                                         | BG0123456789         | Yes                        |
| BH      | bh_vat     | Bahraini VAT Number                                                         | 123456789012345      | Yes                        |
| BJ      | bj_ifu     | Benin Tax Identification Number (Identifiant Fiscal Unique)                 | 1234567890123        | Yes                        |
| BS      | bs_tin     | Bahamas Tax Identification Number                                           | 123.456.789          | No                         |
| BY      | by_tin     | Belarus TIN Number                                                          | 123456789            | Yes                        |
| CA      | ca_bn      | Canadian BN                                                                 | 123456789            | No                         |
| CA      | ca_gst_hst | Canadian GST/HST number                                                     | 123456789RT0002      | Yes                        |
| CA      | ca_pst_bc  | Canadian PST number (British Columbia)                                      | PST-1234-5678        | No                         |
| CA      | ca_pst_mb  | Canadian PST number (Manitoba)                                              | 123456-7             | No                         |
| CA      | ca_pst_sk  | Canadian PST number (Saskatchewan)                                          | 1234567              | No                         |
| CA      | ca_qst     | Canadian QST number (Québec)                                                | 1234567890TQ1234     | Yes                        |
| CD      | cd_nif     | Congo (DR) Tax Identification Number (Número de Identificação Fiscal)       | A0123456M            | No                         |
| CH      | ch_vat     | Switzerland VAT number                                                      | CHE-123.456.789 MWST | Yes                        |
| CL      | cl_tin     | Chilean TIN                                                                 | 12.345.678-K         | Yes                        |
| CM      | cm_niu     | Cameroon Tax Identification Number (Numéro d'Identifiant fiscal Unique)     | M123456789000L       | No                         |
| CR      | cr_tin     | Costa Rican tax ID                                                          | 1-234-567890         | No                         |
| CV      | cv_nif     | Cape Verde Tax Identification Number (Número de Identificação Fiscal)       | 213456789            | No                         |
| CY      | eu_vat     | European VAT number                                                         | CY12345678Z          | Yes                        |
| CZ      | eu_vat     | European VAT number                                                         | CZ1234567890         | Yes                        |
| DE      | eu_vat     | European VAT number                                                         | DE123456789          | Yes                        |
| DK      | eu_vat     | European VAT number                                                         | DK12345678           | Yes                        |
| EC      | ec_ruc     | Ecuadorian RUC number                                                       | 1234567890001        | No                         |
| EE      | eu_vat     | European VAT number                                                         | EE123456789          | Yes                        |
| EG      | eg_tin     | Egyptian Tax Identification Number                                          | 123456789            | Yes                        |
| ES      | es_cif     | Spanish NIF number (previously Spanish CIF number)                          | A12345678            | No                         |
| ES      | eu_vat     | European VAT number                                                         | ESA1234567Z          | Yes                        |
| ET      | et_tin     | Ethiopia Tax Identification Number                                          | 1234567890           | Yes                        |
| FI      | eu_vat     | European VAT number                                                         | FI12345678           | Yes                        |
| FR      | eu_vat     | European VAT number                                                         | FRAB123456789        | Yes                        |
| GB      | eu_vat     | Northern Ireland VAT number                                                 | XI123456789          | Yes                        |
| GB      | gb_vat     | United Kingdom VAT number                                                   | GB123456789          | Yes                        |
| GE      | ge_vat     | Georgian VAT                                                                | 123456789            | Yes                        |
| GN      | gn_nif     | Guinea Tax Identification Number (Número de Identificação Fiscal)           | 123456789            | Yes                        |
| GR      | eu_vat     | European VAT number                                                         | EL123456789          | Yes                        |
| HR      | eu_vat     | European VAT number                                                         | HR12345678912        | Yes                        |
| HU      | eu_vat     | European VAT number                                                         | HU12345678           | Yes                        |
| HU      | hu_tin     | Hungary tax number (adószám)                                                | 12345678-1-23        | No                         |
| IE      | eu_vat     | European VAT number                                                         | IE1234567AB          | Yes                        |
| IN      | in_gst     | Indian GST number                                                           | 12ABCDE3456FGZH      | Yes                        |
| IS      | is_vat     | Icelandic VAT                                                               | 123456               | Yes                        |
| IT      | eu_vat     | European VAT number                                                         | IT12345678912        | Yes                        |
| KE      | ke_pin     | Kenya Revenue Authority Personal Identification Number                      | P000111111A          | No                         |
| KG      | kg_tin     | Kyrgyzstan Tax Identification Number                                        | 12345678901234       | No                         |
| KH      | kh_tin     | Cambodia Tax Identification Number                                          | 1001-123456789       | Yes                        |
| KR      | kr_brn     | Korean BRN                                                                  | 123-45-67890         | Yes                        |
| KZ      | kz_bin     | Kazakhstani Business Identification Number                                  | 123456789012         | Yes                        |
| LA      | la_tin     | Laos Tax Identification Number                                              | 123456789-000        | No                         |
| LI      | li_vat     | Liechtensteinian VAT number                                                 | 12345                | Yes                        |
| LK      | lk_vat     | Sri Lanka VAT number                                                        | 123456789-1234       | Yes                        |
| LT      | eu_vat     | European VAT number                                                         | LT123456789123       | Yes                        |
| LU      | eu_vat     | European VAT number                                                         | LU12345678           | Yes                        |
| LV      | eu_vat     | European VAT number                                                         | LV12345678912        | Yes                        |
| MA      | ma_vat     | Morocco VAT Number                                                          | 12345678             | Yes                        |
| MD      | md_vat     | Moldova VAT Number                                                          | 1234567              | Yes                        |
| ME      | me_pib     | Montenegro PIB Number                                                       | 12345678             | No                         |
| MK      | mk_vat     | North Macedonia VAT Number                                                  | MK1234567890123      | Yes                        |
| MR      | mr_nif     | Mauritania Tax Identification Number (Número de Identificação Fiscal)       | 12345678             | No                         |
| MT      | eu_vat     | European VAT number                                                         | MT12345678           | Yes                        |
| MX      | mx_rfc     | Mexican RFC number                                                          | ABC010203AB9         | No                         |
| NG      | ng_tin     | Nigerian Tax Identification Number                                          | 12345678-0001        | No                         |
| NL      | eu_vat     | European VAT number                                                         | NL123456789B12       | Yes                        |
| NO      | no_vat     | Norwegian VAT number                                                        | 123456789MVA         | Yes                        |
| NP      | np_pan     | Nepal PAN Number                                                            | 123456789            | Yes                        |
| NZ      | nz_gst     | New Zealand GST number                                                      | 123456789            | Yes                        |
| OM      | om_vat     | Omani VAT Number                                                            | OM1234567890         | Yes                        |
| PE      | pe_ruc     | Peruvian RUC number                                                         | 12345678901          | Yes                        |
| PH      | ph_tin     | Philippines Tax Identification Number                                       | 123456789012         | Yes                        |
| PL      | eu_vat     | European VAT number                                                         | PL1234567890         | Yes                        |
| PL      | pl_nip     | Polish NIP number                                                           | 1234567890           | No                         |
| PT      | eu_vat     | European VAT number                                                         | PT123456789          | Yes                        |
| RO      | eu_vat     | European VAT number                                                         | RO1234567891         | Yes                        |
| RS      | rs_pib     | Serbian PIB number                                                          | 123456789            | No                         |
| RU      | ru_inn     | Russian INN                                                                 | 1234567891           | Yes                        |
| RU      | ru_kpp     | Russian KPP                                                                 | 123456789            | Yes                        |
| SA      | sa_vat     | Saudi Arabia VAT                                                            | 123456789012345      | Yes                        |
| SE      | eu_vat     | European VAT number                                                         | SE123456789123       | Yes                        |
| SG      | sg_gst     | Singaporean GST                                                             | M12345678X           | Yes                        |
| SI      | eu_vat     | European VAT number                                                         | SI12345678           | Yes                        |
| SK      | eu_vat     | European VAT number                                                         | SK1234567891         | Yes                        |
| SN      | sn_ninea   | Senegal NINEA Number                                                        | 12345672A2           | No                         |
| SR      | sr_fin     | Suriname FIN Number                                                         | 1234567890           | Yes                        |
| TH      | th_vat     | Thai VAT                                                                    | 1234567891234        | Yes                        |
| TJ      | tj_tin     | Tajikistan Tax Identification Number                                        | 123456789            | Yes                        |
| TR      | tr_tin     | Turkish Tax Identification Number                                           | 0123456789           | Yes                        |
| TW      | tw_vat     | Taiwanese VAT                                                               | 12345678             | Yes                        |
| TZ      | tz_vat     | Tanzania VAT Number                                                         | 12345678A            | Yes                        |
| UA      | ua_vat     | Ukrainian VAT                                                               | 123456789            | Yes                        |
| UG      | ug_tin     | Uganda Tax Identification Number                                            | 1014751879           | Yes                        |
| UY      | uy_ruc     | Uruguayan RUC number                                                        | 123456789012         | Yes                        |
| UZ      | uz_tin     | Uzbekistan TIN Number                                                       | 123456789            | No                         |
| UZ      | uz_vat     | Uzbekistan VAT Number                                                       | 123456789012         | Yes                        |
| ZA      | za_vat     | South African VAT number                                                    | 4123456789           | Yes                        |
| ZM      | zm_tin     | Zambia Tax Identification Number                                            | 1004751879           | No                         |
| ZW      | zw_tin     | Zimbabwe Tax Identification Number                                          | 1234567890           | No                         |

\*Stripe Tax won't apply tax if this tax ID is provided, in line with the relevant laws.

## See also

- [Determining customer locations](https://docs.stripe.com/tax/customer-locations.md)
- [Checkout page and tax IDs](https://docs.stripe.com/tax/checkout/tax-ids.md)
- [Reporting and filing](https://docs.stripe.com/tax/reports.md)
- [Use Stripe Tax with Connect](https://docs.stripe.com/tax/connect.md)
