WooCommerce B2B VAT number field at checkout
If you sell across the EU, your B2B orders should not count toward the EUR 10,000 OSS threshold — but only if you can actually tell which orders are B2B. A WooCommerce B2B VAT number field at checkout is how a business customer identifies themselves, and how your store separates a genuine cross-border B2C sale (which counts) from an intra-EU business supply (which does not).
EU VAT One Stop Shop (OSS) for WooCommerce adds that field for free. This page covers exactly what the free field does, what it validates, and where live VIES verification (the Pro upgrade) takes over.
Where the field appears
Since version 1.2.0, the free plugin adds an optional VAT number field to both checkout types:
- Classic (shortcode) checkout — a field labelled VAT number (EU businesses) in the billing section.
- Block-based checkout (the WooCommerce default) — an optional VAT number field in the contact section.
The field is always optional for customers. An empty value is simply treated as a B2C order. The number entered is stored on the order in the _oss_vat_number meta key and read by order classification to decide whether the order is excluded from your threshold total.
Three display modes
Under WooCommerce → One Stop Shop → Settings, the VAT number field at checkout setting has three modes:
- Auto — show unless another VAT plugin provides one (default). If a known third-party EU VAT plugin is detected — such as WooCommerce EU VAT Number, Aelia EU VAT Assistant, or Germanized — the plugin defers to it and does not render a duplicate field. Classification still reads the other plugin’s number.
- Always show — render the field regardless.
- Never show — never render the field. VAT numbers stored by other plugins are still respected.
This is the right default for most stores: if you already collect VAT numbers, you won’t get two fields; if you don’t, you get one for free.
Local format validation only (free)
The free plugin validates the format of the VAT number locally — the country prefix plus each member state’s length and pattern — without contacting any external service. A few details worth knowing:
- Greece uses the prefix EL, not GR.
- Northern Ireland uses XI (a GB address with a BT postcode), and stays in scope for goods.
- Great Britain (GB) numbers are not valid EU B2B identifiers post-Brexit.
Format validation tells you the number looks structurally correct. It does not tell you the number is real, active, or belongs to the customer. Confirming that is a live VIES lookup, available with VIES B2B validation (Pro).
A malformed number never silently hides a sale
This is the design principle worth internalising. A B2B field is a place where a typo or a fake number could quietly remove a sale from your threshold count — and that is exactly the under-counting that gets stores in trouble. So the plugin does the opposite:
A malformed VAT number keeps the order counting toward the threshold.
The plugin never drops a sale because of a number it cannot trust. Instead the order is flagged with a red warning icon in the orders list — “A B2B VAT number was provided but is invalid or unverified — this sale is counted toward the threshold” — so you can review it and, if it was a typo, correct the number on the order. The error always falls on the side of counting too much, never too little.
Validation statuses
Every VAT number on an order resolves to one of these statuses, visible in the orders-list tooltip and the EU VAT OSS order box:
| Status | Meaning | Counts toward threshold? |
|---|---|---|
| none | No VAT number present (B2C) | Yes |
| exempt | Order marked VAT-exempt (is_vat_exempt = yes) | No |
| assumed | Format-valid number, not VIES-verified | No by default (Yes in strict mode) |
| verified | Confirmed via VIES (Pro) | No |
| invalid | Malformed, or VIES confirmed it does not exist | Yes — flagged for review |
A company name alone never triggers B2B classification — only a usable VAT number or an explicit VAT exemption does.
Reads VAT numbers from other plugins
Even when the plugin’s own field is hidden, classification checks the common meta keys used by popular EU VAT plugins: _oss_vat_number, _vat_number, _billing_vat_number, _billing_eu_vat_number, vat_number, _vat_id, and _billing_vat. If you store the number somewhere else, the list is extendable via the oss_vat_number_meta_keys filter. You keep your existing checkout; the OSS plugin just reads the number it already collects.
Strict mode: require VIES verification
The Require VIES verification for B2B checkbox in Settings flips the default for format-valid numbers:
- Off (default) — a structurally valid VAT number excludes the order from the threshold.
- On — an order is excluded only after its number is confirmed via the EU VIES service. Until then it keeps counting.
The toggle lives in the free plugin, but the VIES check itself is a Pro feature. If you enable strict mode without Pro, orders carrying a VAT number simply keep counting — conservative, never under-counting.
What VIES verification (Pro) adds
The free field excludes B2B orders from the threshold based on a format check. VIES B2B validation is the Pro layer on top:
- The number is verified live against the EU’s official VIES service (requires the PHP SOAP extension).
- A confirmed-valid cross-border number removes VAT during checkout — the customer sees and pays the zero-rated total — and the order carries the Article 138 reverse-charge statement. Domestic VAT numbers never zero-rate.
- A VIES outage is never recorded as “invalid”: the order falls back to the format check (assumed) rather than punishing a genuine business. Definitive results are cached for 24 hours, and the checkout endpoint is rate-limited.
Not tax advice
This plugin is a tracking and awareness tool. It identifies which orders count toward the EUR 10,000 OSS threshold and prepares the figures — it does not file or submit an OSS return, and it tracks standard VAT rates only. It is not tax or legal advice. Confirm your actual VAT registration and reporting obligations with a qualified professional.
Ready to capture B2B VAT numbers correctly? Install the free plugin and add the field in minutes.
Frequently asked questions
Does the free plugin add a VAT number field to WooCommerce checkout?
Yes. Since version 1.2.0 the free plugin adds an optional VAT number field to both classic (shortcode) and block-based checkout. The number is stored on the order and used to classify it as EU B2B so it is excluded from the threshold.
Does it validate the VAT number?
The free plugin validates the format locally — the country prefix plus each member state's length and pattern — with no external call. Confirming the number actually exists and is active via the EU VIES service is the Pro upgrade.
What happens if a customer enters an invalid VAT number?
A malformed number never silently hides a sale. The order keeps counting toward the threshold and is flagged with a red warning icon in the orders list so you can review or correct it.
Will it clash with my existing EU VAT plugin?
In the default Auto mode, the plugin defers to a known third-party EU VAT plugin and does not add a duplicate field. Classification still reads the other plugin's VAT number from its usual meta keys.
Does entering a valid VAT number remove VAT at checkout?
Not in free. Free local format validation only excludes the order from the threshold. Live VIES verification and zero-rating of confirmed cross-border B2B orders are Pro features.
Can I require VIES verification before excluding a B2B order?
Yes — the Require VIES verification for B2B (strict mode) toggle exists in the free plugin. The verification itself needs Pro; with strict mode on and no Pro, orders carrying a VAT number keep counting, which is the conservative behaviour.
Capture B2B VAT numbers and track your OSS threshold
Install the free EU VAT One Stop Shop plugin to add a B2B VAT number field and watch your EUR 10,000 threshold in real time.
See plans & pricingOr read the documentation.