The same rule drives the checkout notice and the PDF invoice, so both always agree.
Woodworking-supplies shop · DE · 2024–2025
EU VAT rules, PDF invoices and free shipping for a WooCommerce shop
Business buyers from other EU countries now see the right tax note at checkout and on the invoice, and my custom work survives theme updates.
I moved the custom code into a child theme tested against a clean parent, so updates don't wipe it.
A small German shop sells joinery supplies across the EU. Another developer at the agency built it, and the custom WooCommerce work came to me as a separate job.
Business buyers from other EU countries couldn’t enter a VAT number at checkout, so the shop couldn’t show a tax-free delivery the way German law requires. I found that the new block checkout ignored the field. Once the classic checkout was back, the field worked.
Then I reduced the tax rule to one condition: the buyer is outside Germany and gives a valid VAT number and a company name. The same rule drives the notice at checkout and the PDF invoice, so both always agree. The checkout notice needs PHP and JavaScript together, because the server can’t see fields that aren’t submitted yet.
I also made custom invoice and packing-slip templates. They show the tax note only when the rule holds, carry product images, and have a footer that splits any number of fields into equal columns the client can edit. Postcode and region labels now follow the selected country, through a maintained copy of WooCommerce’s address script that updates don’t overwrite. Inside Germany, free shipping above a set order value is selected in the cart by a script that recalculates the total.
When a theme update wiped the custom work
After one theme update the customisations were gone. Before fixing anything I gave the agency an inventory and a plan. Then I moved everything into a child theme and tested it against a clean parent theme. That test also showed an old invoice template the PDF plugin still read from the parent, and I removed it.
The live shop runs on an active child theme today.
A cosmetics shop rebuilt from scratch after the old one went dark
The brand's hosted store went offline. I rebuilt the shop on WooCommerce with a German-law checkout and brought back its old links and reviews.
WordPress support for a German timber merchant's site
Two support cases on a timber merchant's WordPress site. I traced an admin hang on a copy, reopened a locked admin and measured why updates kept failing.
A German WooCommerce shop: theme migration and hack clean-up
I moved a small shop off an abandoned theme to Flatsome. Two years later I found a hack hidden since 2019 and cleaned it out with the catalogue intact.
Contact
Have something similar?
Use the form or message me on LinkedIn.
Already working with me on Upwork? Write there.