Adding VAT and Custom Tax Fields to WooCommerce invoices

Want to show value-added tax (VAT) on your WooCommerce invoices? Adding VAT or other custom tax fields using default WooCommerce settings requires a fair bit of work. Invoicing plugins are a more efficient way to create VAT-compliant invoices. In this post, we take you through the easiest way to add taxation to your WooCommerce invoices.

What is a WooCommerce VAT invoice?

VAT is a type of tax levied on products and services for the value added at various points during production and distribution. The end customer pays the entire VAT. If your WooCommerce store trades in the United Kingdom or European Union, it is likely that you will have encountered VAT, but value-added taxes are prevalent worldwide; as of 2020, 170 countries and territories worldwide had a VAT

The US doesn’t employ a VAT or a national sales tax, for that matter, but gives states broad freedom to set sales taxes for businesses operating within their jurisdiction. For example, if you provide retail products or services in the state of Washington, you’re required to collect a retail sales tax from customers. However, if you also sell products and services to customers in a country that implements a VAT, say the United Kingdom, then you should be aware of your responsibility for collecting this tax.

A VAT invoice is a type of invoice issued when a purchase has value-added tax applied to it. It includes details on the rate of tax added to the invoice amount, plus the total invoice amount before and after tax. It must also include the registered VAT number of the company, and will sometimes include the customer’s VAT number, too (e.g. if you run a B2B store and your customers are VAT-registered).

When to add VAT rates and custom tax fields in WooCommerce

If you need to add VAT and/or other taxes, extra fields or custom tax fields will make your job easy. Here’s a look at some situations where custom fields for WooCommerce taxes are useful:

  • You want to charge different taxes for different products or services
  • You ship products internationally and must account for different tax rates in different countries
  • Your product comes under a temporary VAT rate or relief
  • Your products are VAT exempt, so you don’t want to include the default tax that you’d normally charge
  • You want to create your own tax rates instead of using the default ones

If you anticipate charging VAT in the future, as you expand or grow your business, knowledge of creating a WooCommerce VAT invoice will no doubt be helpful. You’ll be able to generate PDFs of VAT-compliance invoices in bulk and send them out in a timely manner to avoid the negative effects of late payments.

How to set VAT rates and custom tax fields in WooCommerce

Creating custom tax rates in WooCommerce is easy. Go to WooCommerce > Settings > General. Click ‘Enable tax rates and calculations’.

Enable tax rates

Navigate to WooCommerce > Settings > Tax.

Under the tax tab, you’ll see the different tax rates that you can apply to purchases, as well as options for where you want to display tax in your eCommerce store. You might wish to only display tax on your WooCommerce checkout page, or you might prefer to include tax on all prices in the shop, to avoid any surprises when your customers reach the checkout.

You can also display itemized tax totals on your final invoice, which can be useful if you are running a B2B store where your customers will be VAT-registered (and therefore won’t be required to pay VAT with you), as this will allow customers to easily identify what they owe. Using the ‘price display suffix’ field, you can also define text that you want to include after your product prices (e.g. if you wanted to include a note which says ‘price inc. VAT’ or similar).

View tax options

If you need the customer to submit their VAT number with their order, use the official EU VAT Number plugin. The plugin takes care of the automatic validation of the VAT number and stores the number in a meta field named _billing_vat_number. BizPrint, our recommended plugin for creating and printing VAT invoices in WooCommerce, can then retrieve and display the VAT number from this field, by using a custom template. Read on to see why BizPrint is the best solution for adding taxation to WooCommerce invoices.

Create and print WooCommerce VAT invoices with BizPrint

BizPrint is an all-in-one plugin designed to help automate the creation and printing of WooCommerce invoices, receipts, shipping labels, and more. It’s easy to set up, allows you to configure custom invoices with applicable VAT and tax rates, and print a WooCommerce VAT invoice as soon as a new order is created.

BizPrint can be configured to work with multiple printers, so you can print WooCommerce VAT invoices to your office printer, for example, and different documents to your store or fulfillment center. The plugin is compatible with all major printer brands, removing the need for additional purchases.

How to generate a WooCommerce VAT invoice using BizPrint

This brief tutorial takes you through the steps of setting up WooCommerce VAT invoice creation and printing using BizPrint within your WordPress dashboard. Once you’ve set up the plugin and configured your invoice template to your needs, BizPrint will pretty much run on auto-pilot, saving you substantial time and effort in manually creating and printing VAT-compliant invoices. Let’s get started!

1. Choose a BizPrint plan – BizPrint offers scalable solutions designed to work for all shapes and sizes of business, so you’ll be able to find one that fits your unique needs with no problem!

2. Follow the quick start guide and choose the printers you want to use with BizPrint, whether they’re in-store, at a home office, or at a fulfillment center.

3. Navigate to WooCommerce > Print Settings > Locations and click ‘Add New’.

Add new location

4. Choose a title for your location, such as ‘VAT Invoice – Store Copy’.

Add location title

5. Select the printer in that location from the list of printers you set up during the quick start guide.

6. Choose the ‘Customer Receipt’ template from the drop-down section. This template contains all the information on an invoice, such as products, quantity, time, date, and price. Information such as the order number and payment method are also included as standard. We’ll set VAT up in the next step. 

Select the customer receipt template

7. Choose any other details you’d like to include on your order confirmations using the checkboxes, such as shipping method or pickup/delivery type.

Select invoice details

8. Input your company VAT number in one of the fields in the ‘Appearance’ panel on the right-hand side, such as ‘Check Header’ or ‘Company Info’. It will ensure that your VAT number is visible on all invoices generated by BizPrint – including a VAT number field is essential to make your invoice count as a valid VAT invoice for tax purposes.

Add your VAT number to any field

If you want to display the customer VAT number, you’ll need to customize the Customer Receipt template. Below is a specific code snippet you can use to add the customer VAT number to the invoice:

<?php

if ( function_exists( 'wc_eu_vat_get_vat_from_order' ) ) {
add_action( 'Zprint\templates\customer-html\afterBaseCustomerDetails', 'add_vat_to_customer_html', 10, 2 );
add_action( 'Zprint\templates\details-html\afterBaseCustomerDetails', 'add_vat_to_other_html', 10, 2 );
add_action( 'Zprint\templates\order-html\afterBaseCustomerDetails', 'add_vat_to_other_html', 10, 2 );
add_action( 'Zprint\templates\customer-plain\afterBaseCustomerDetails', 'add_vat_to_all_plain', 10, 2 );
add_action( 'Zprint\templates\details-plain\afterBaseCustomerDetails', 'add_vat_to_all_plain', 10, 2 );
add_action( 'Zprint\templates\order-plain\afterBaseCustomerDetails', 'add_vat_to_all_plain', 10, 2 );
}

function add_vat_to_customer_html( int $order_id, \WC_Order $order ): void {
$vat = wc_eu_vat_get_vat_from_order( $order );

if ( empty( $vat ) ) {
return;
}
?>
<tr>
<td><?php echo esc_html__( 'VAT' ); ?></td>
<td><?php echo esc_html( $vat ); ?></td>
</tr>
<?php
}

function add_vat_to_other_html( int $order_id, \WC_Order $order ): void {
$vat = wc_eu_vat_get_vat_from_order( $order );

if ( empty( $vat ) ) {
return;
}
?>
<tr><td><?php echo esc_html__( 'VAT' ) . ': ' . esc_html( $vat ); ?></td></tr>
<?php
}

function add_vat_to_all_plain( int $order_id, \WC_Order $order ): void {
$vat = wc_eu_vat_get_vat_from_order( $order );

if ( empty( $vat ) ) {
return;
}

echo Zprint\Document::symbolsAlign( __( 'VAT' ), $vat );
}

Alternatively, BizPrint also offers a service to do these customizations for you, through their Print Template Development service, available as an add-on to any BizPrint plan. This service gives you the flexibility to create a fully customized template based on your business requirements. For more information, you can get in touch with the BizPrint support team, who have helped hundreds of businesses to build templates that reflect their specific needs.

You’ve now created a custom VAT invoice template. Any time an order is made, BizPrint will generate a WooCommerce VAT invoice according to the order details! If the customer’s order contains products subject to custom tax rates, those tax rates will also be visible on the invoice.  

Below is an example of a tax on an invoice printed by BizPrint:

Taxation on an invoice using BizPrint

This matches with the tax calculation in WooCommerce that the customer sees when ordering, as seen below.

Taxes shown in total price

How to automatically print WooCommerce VAT invoices 

You can now set up automatic printing so that a VAT invoice is printed as soon as a WooCommerce order is made. This is a great feature if you’re running WooCommerce with an in-store Point of Sale system, or you want to send VAT invoices to your fulfillment center printer to act as packing slips. Using BizPrint’s mapping add-ons, you can even configure your BizPrint printing locations to trigger auto-printing based on variables such as shipping zone, method, or product category. This enables you to only trigger printing a VAT invoice when customers in shipping zones subject to VAT place an order.

Go to WooCommerce > Print Settings > General, and click the checkbox to enable automatic order printing. Automatic printing is triggered based on a specific order status (e.g. ‘processing’ or ‘completed’) – simply select the stage at which you would like automatic printing to commence, and that’s it!

Enable automatic printing

Now your VAT invoices will be printed automatically to the printer of your choice as soon as your WooCommerce orders reach that specific status. Using BizPrint, you can create WooCommerce PDF invoices for printing or emailing to customers, as well as packing slips, shipping labels, credit notes, delivery notes, receipts, proforma invoices, and pick lists.

Add VAT and other taxes to your WooCommerce invoices

If you plan to sell internationally, you should be aware of VAT tax laws. Compliance with VAT and other tax laws helps protect your revenue and supports your growth in foreign markets. It’s not enough to correctly calculate VAT for the products you sell to countries outside the US. You should also create WooCommerce VAT invoices that show taxes in the pricing information and ensure transparency between you and your customer.

The default settings in WooCommerce don’t allow a lot of invoice customization, and you’ll encounter this limitation when you need to add VAT or other taxes. Rather than turning to PHP/HTML/CSS developer resources, you can use BizPrint, which is fast becoming popular among physical and eCommerce businesses looking for invoice creation and printing functionality.

For a number of reasons, BizPrint is an excellent WooCommerce plugin for creating VAT invoices:

  • Quick and easy to set up
  • Can set up the plugin at multiple printer locations
  • Invoices are customizable to your business needs
  • Prints a VAT invoice as soon as an order is made, making it perfect when you need to generate physical invoices at your physical store or send them to a fulfillment station for use as packing slips

Leave a Reply

Your email address will not be published. Required fields are marked *