Customer Tax Identification Numbers

    Storing, validating, and rendering customer tax ID numbers with Stripe Billing.

    Displaying a customer’s tax ID on invoice documents is a common requirement.

    With Stripe, you can add one or multiple tax IDs to a customer. A customer’s tax IDs are displayed in the header of invoice and credit note PDFs.

    Supported Tax ID types

    Currently, Stripe Billing supports the following Tax ID types in the following regions:

    Country Enum Description
    Austria eu_vat European VAT number
    Belgium eu_vat European VAT number
    Bulgaria eu_vat European VAT number
    Cyprus eu_vat European VAT number
    Czech eu_vat European VAT number
    Germany eu_vat European VAT number
    Denmark eu_vat European VAT number
    Estonia eu_vat European VAT number
    Spain eu_vat European VAT number
    Finland eu_vat European VAT number
    France eu_vat European VAT number
    United Kingdom eu_vat European VAT number
    Greece eu_vat European VAT number
    Croatia eu_vat European VAT number
    Hungary eu_vat European VAT number
    Ireland eu_vat European VAT number
    Italy eu_vat European VAT number
    Lithuania eu_vat European VAT number
    Luxembourg eu_vat European VAT number
    Latvia eu_vat European VAT number
    Malta eu_vat European VAT number
    Netherlands eu_vat European VAT number
    Poland eu_vat European VAT number
    Portugal eu_vat European VAT number
    Romania eu_vat European VAT number
    Sweden eu_vat European VAT number
    Slovenia eu_vat European VAT number
    Slovakia eu_vat European VAT number
    Norway no_vat Norwegian VAT number
    India in_gst Indian GST number
    Australia au_abn Australian Business Number (AU ABN)
    New Zealand nz_gst New Zealand GST number

    Validation

    You are responsible for ensuring customer information, including their tax identification number, is accurate.

    Stripe Billing provides automatic validation for some tax ID types.

    European Value-Added-Tax (EU VAT) Numbers

    Stripe automatically validates all European Value-Added-Tax (EU VAT) numbers with the European Commission’s VAT Information Exchange System (VIES). This process only validates whether or not the tax ID is valid—you’ll still need to verify the customer’s name and address to make sure it matches the registration information.

    VIES validation usually takes only a few seconds, but depending on the availability of various government databases, may take longer. Stripe will automatically handle VIES downtime and attempt retries for you.

    Australian Business Numbers (ABN)

    Stripe also automatically validates all Australian Business Numbers (ABNs) with the Australian Business Register (ABR).

    Validation webhooks and Dashboard display

    Because this validation process happens asynchronously, you will be notified of validation updates via the customer.tax_id.updated webhook.

    Hover over a customer’s EU VAT number to display their VIES information.

    The results of the validation are displayed in the Dashboard while displaying the customer details, including details returned from the government databases, as well as the registered name and address.

    When automatic validation is not available, we strongly recommend that you manually verify these IDs.

    Managing

    Tax IDs can be managed via the Customer page on the Dashboard, or via the Tax ID API.

    The Customer detail page and Tax ID field.

    Navigate to the Customer page, clicking the Update details button in the top of the Details panel. The Update customer invoice details modal will appear, with the Tax ID section visible.

    Clicking the Add tax ID link will add a row to the Tax ID list, where you can select the ID type and value.

    Removing a Tax ID from a customer is as simple as removing the row.

    Using the API

    You can add, update, or delete Tax IDs via the API.

    The following example shows how to create a new Tax ID on a Customer, storing their VAT number.

    curl https://api.stripe.com/v1/customers/cus_4fdAW5ftNQow1a/tax_ids \
      -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
      -d value=DE123456789 \
      -d type=eu_vat
    
    # Set your secret key: remember to change this to your live secret key in production
    # See your keys here: https://dashboard.stripe.com/account/apikeys
    Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'
    
    Stripe::Customer.create_tax_id(
      'cus_4fdAW5ftNQow1a',
      {
        type: 'eu_vat',
        value: 'DE123456789',
      }
    )
    
    # Set your secret key: remember to change this to your live secret key in production
    # See your keys here: https://dashboard.stripe.com/account/apikeys
    stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'
    
    stripe.Customer.create_tax_id(
      'cus_4fdAW5ftNQow1a',
      type='eu_vat',
      value='DE123456789',
    )
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    \Stripe\Stripe::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc');
    
    \Stripe\Customer::createTaxId(
      'cus_4fdAW5ftNQow1a',
      [
        'type' => 'eu_vat',
        'value' => 'DE123456789',
      ]
    );
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc";
    
    Customer customer = Customer.retrieve("cus_4fdAW5ftNQow1a");
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("type", "eu_vat");
    params.put("value", "DE123456789");
    TaxId taxId = customer.getTaxIds().create(params);
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    const stripe = require('stripe')('sk_test_4eC39HqLyjWDarjtT1zdp7dc');
    
    stripe.customers.createTaxId(
      'cus_DqZrTNCO4puf2p',
      {
        type: 'eu_vat',
        value: 'DE123456789',
      },
      function(err, taxId) {
        // asynchronously called
      }
    );
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"
    
    params := &stripe.TaxIDParams{
      Customer: stripe.String("cus_4fdAW5ftNQow1a"),
      Type:     stripe.String(string(stripe.TaxIDTypeEUVAT)),
      Value:    stripe.String("DE123456789"),
    }
    taxId, err := taxid.New(params)
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    StripeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc";
    
    var options = new TaxIdCreateOptions
    {
      Type = "eu_vat",
      Value = "DE123456789",
    };
    var service = new TaxIdService();
    var taxId = service.Create("cus_4fdAW5ftNQow1a", options);
    

    You can delete a Tax ID, as shown in the this example:

    curl https://api.stripe.com/v1/customers/cus_Euql8T6KrknXwN/tax_ids/txi_123456789 \
      -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
      -X DELETE
    
    # Set your secret key: remember to change this to your live secret key in production
    # See your keys here: https://dashboard.stripe.com/account/apikeys
    Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'
    
    Stripe::Customer.delete_tax_id(
      'cus_4fdAW5ftNQow1a',
      'txi_123456789',
    )
    
    # Set your secret key: remember to change this to your live secret key in production
    # See your keys here: https://dashboard.stripe.com/account/apikeys
    stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'
    
    stripe.Customer.delete_tax_id(
      'cus_4fdAW5ftNQow1a',
      'txi_123456789',
    )
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    \Stripe\Stripe::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc');
    
    \Stripe\Customer::deleteTaxId(
      'cus_4fdAW5ftNQow1a',
      'txi_123456789',
      function(err, confirmation) {
        // asynchronously called
      }
    );
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc";
    
    Customer customer = Customer.retrieve("cus_4fdAW5ftNQow1a");
    TaxId taxId = customer.getTaxIds().retrieve("txi_123456789");
    taxId.delete();
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    const stripe = require('stripe')('sk_test_4eC39HqLyjWDarjtT1zdp7dc');
    
    stripe.customers.deleteTaxId(
      'cus_4fdAW5ftNQow1a',
      'txi_123456789',
      function(err, confirmation) {
        // asynchronously called
      }
    );
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"
    
    params := &stripe.TaxIDParams{
      Customer: stripe.String("cus_4fdAW5ftNQow1a"),
    }
    taxid, err := taxid.Del("txi_123456789", params)
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    StripeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc";
    
    var service = new TaxIdService();
    service.Delete("cus_4fdAW5ftNQow1a", "txi_123456789");
    

    Questions?

    We're always happy to help with code or other questions you might have. Search our documentation, contact support, or connect with our sales team. You can also chat live with other developers in #stripe on freenode.

    Was this page helpful? Yes No

    Send

    Thank you for helping improve Stripe's documentation. If you need help or have any questions, please consider contacting support.

    On this page