Setting up a B2B store on PrestaShop is not just flipping a switch in the back office. I have configured B2B operations for wholesalers, distributors, and manufacturers across the EU, and the gap between "B2B mode enabled" and "actually functioning B2B operation" is significant. VAT handling alone involves dozens of configuration decisions that directly impact whether your invoices are legally compliant and whether your prices make sense to business buyers.

This guide covers everything: from initial customer group setup to VIES validation, reverse charge implementation, net price display, payment terms, and country-specific invoice requirements. If you are serious about selling B2B through PrestaShop, this is the reference you will keep coming back to.

The B2B E-Commerce Landscape in Europe

B2B e-commerce in Europe is growing faster than B2C. According to Statista's 2025 report, European B2B e-commerce revenue exceeded €1.8 trillion, with digital channels accounting for an increasing share of wholesale and distribution transactions. Business buyers now expect the same self-service experience they get as consumers — online catalogs, instant pricing, digital ordering — but with business-specific requirements layered on top.

B2B business meeting discussing e-commerce VAT and payment terms

Those requirements are where most e-commerce platforms struggle. Consumer-focused platforms treat VAT as a simple percentage added at checkout. B2B VAT in the EU is anything but simple. You need to handle domestic sales with standard VAT, intra-community supplies with zero-rated VAT, export sales outside the EU with no VAT, customer-specific tax exemptions, and reverse charge mechanisms — all from the same store, often for the same product.

PrestaShop can handle all of this. But only if you configure it correctly.

Step 1: Enable B2B Mode and Create Customer Groups

Enabling B2B Mode

Navigate to Shop Parameters → Customer Settings and enable B2B mode. This unlocks additional fields on customer profiles:

  • Company name (required for business invoices)
  • SIRET / Company registration number
  • APE / Business activity code
  • Website
  • Allowed outstanding amount (credit limit for deferred payments)
  • Maximum payment days (net 30, 60, 90)
  • Risk rating (none, low, medium, high)

These fields appear on the customer edit page in the back office and on the registration form in the front office. For most B2B operations, I recommend disabling front-office self-registration and instead creating business accounts manually after verifying the company's legitimacy and VAT number.

Creating B2B Customer Groups

Navigate to Customers → Groups and create dedicated groups for your business customers. I typically set up the following structure:

Group NamePrice DisplayDiscountUse Case
B2B DomesticTax excluded0-15%Business customers in your country (VAT charged)
B2B EU (VAT validated)Tax excluded0-15%EU businesses with valid VAT number (reverse charge, 0% VAT)
B2B Non-EUTax excluded0-15%Businesses outside the EU (export, 0% VAT)
B2B WholesaleTax excluded20-40%High-volume distributors with preferential pricing

For each group, the critical setting is Price display method. Set this to "Tax excluded" so business buyers see net prices throughout the catalog, cart, and checkout. This is not just a convenience — it is how B2B buyers expect to see prices, and it avoids confusion during purchase decisions.

You can also set a group-wide discount percentage that applies to all products. For more granular control, use PrestaShop's Specific Prices feature to set per-product or per-category pricing for each group.

Step 2: Configure Tax Rules for B2B Scenarios

Tax configuration is where most B2B PrestaShop setups go wrong. The core challenge is applying different VAT treatment based on three variables: the customer's location, the customer's business status, and whether their VAT number has been validated.

Understanding the Three B2B Tax Scenarios

Scenario A: Domestic B2B Sale
You sell from Germany to a German business. Standard German VAT (19%) applies. The invoice shows VAT separately, and the buyer reclaims it through their VAT return. No special treatment needed — this works like a regular sale, just with net price display.

Scenario B: Intra-Community Supply (Reverse Charge)
You sell from Germany to a French business with a valid French VAT number. Under EU Directive 2006/112/EC, this is an intra-community supply. You charge 0% VAT and the French buyer accounts for VAT in France through the reverse charge mechanism. Your invoice must include specific text referencing the reverse charge and the buyer's VAT number.

Scenario C: Export Outside the EU
You sell from Germany to a business in Switzerland, the UK (post-Brexit), or the United States. No EU VAT applies. Your invoice shows 0% VAT with a reference to export exemption. Import duties and local taxes are the buyer's responsibility.

Setting Up Tax Rules in PrestaShop

Navigate to International → Taxes → Tax Rules. You need to create tax rules that match each scenario. For a German-based store:

  1. Create a tax rule group called "Standard VAT (Domestic + EU consumers)" — this is your default, applying each country's standard VAT rate (19% for DE, 20% for FR, 21% for NL, etc.).
  2. Create a tax rule group called "B2B EU Reverse Charge (0%)" — set all EU countries to 0% tax. This rule group will be applied to validated intra-community B2B customers.
  3. Create a tax rule group called "Export (0%)" — set all non-EU countries to 0% tax.

The key mechanism: when a customer's VAT number is validated and they are assigned to the "B2B EU" customer group, PrestaShop uses the tax rules associated with that group. By setting the group's tax rule to the reverse charge (0%) rule group, VAT is automatically removed for qualified intra-community transactions.

Practical Implementation

In PrestaShop, you can assign tax rules at the product level, but for B2B scenarios, the more effective approach is to use customer group-based tax exemption. When a customer belongs to the "B2B EU (VAT validated)" group, PrestaShop can apply zero-rate tax rules automatically.

The exact mechanism depends on your PrestaShop version:

  • PrestaShop 1.7.x and 8.x: Use a module to automate the group assignment based on VIES validation result. The module checks the VAT number, confirms it is valid, and moves the customer to the tax-exempt group.
  • PrestaShop 9.x: Similar approach, with improved API support for external validation services.

Step 3: Implement VIES VAT Number Validation

The VAT Information Exchange System (VIES) is the EU's official database for validating VAT registration numbers across all 27 member states. Before you zero-rate an intra-community supply, you are legally required to verify the buyer's VAT number is valid and corresponds to an active registration.

Why Manual Validation Is Not Enough

Some merchants check VAT numbers manually on the VIES website. This fails for three reasons:

  1. It does not scale. Checking every order manually takes time and creates bottlenecks.
  2. It does not create an audit trail. Tax authorities want timestamped proof that you validated the number at the time of the transaction, not a screenshot from a website.
  3. It does not catch changed registrations. A VAT number that was valid when the customer registered might be deactivated later. You need to revalidate periodically.

Automated VIES Validation in PrestaShop

Our Automatic EU VAT Checker module integrates VIES validation directly into PrestaShop's checkout flow:

  1. Customer enters their VAT number during registration or at checkout.
  2. The module queries the VIES SOAP API in real-time, checking the number against the EU database.
  3. If valid: The customer is automatically assigned to the B2B EU customer group. Tax is recalculated to 0% (reverse charge). A validation record is stored with timestamp, request ID, and the VIES response.
  4. If invalid: The customer is informed that their VAT number could not be validated. Standard VAT is applied. They can proceed with the order (at full VAT) or correct their number.
  5. If VIES is unavailable (the service has scheduled downtime): The module can be configured to either apply standard VAT (safe default) or temporarily accept the number pending re-validation.

The validation record is essential for tax audits. When a tax authority asks why you zero-rated a specific invoice, you need to produce timestamped proof showing that VIES confirmed the buyer's VAT number at the time of sale.

VIES Country Code Format

Each EU member state has a specific VAT number format. Common examples:

CountryPrefixFormatExample
GermanyDE9 digitsDE123456789
FranceFR2 chars + 9 digitsFR12345678901
NetherlandsNL9 digits + B + 2 digitsNL123456789B01
SpainES1 char + 7 digits + 1 charESX1234567A
ItalyIT11 digitsIT12345678901
PolandPL10 digitsPL1234567890
BelgiumBE10 digitsBE0123456789
AustriaATU + 8 digitsATU12345678
SwedenSE12 digitsSE123456789012
IrelandIE7 digits + 1-2 charsIE1234567A

A proper validation module handles format checking before querying VIES, preventing unnecessary API calls for obviously invalid numbers.

Step 4: Configure Net Price Display

Business buyers think in net prices (excluding tax). Consumer prices are gross (including tax). In a hybrid B2C/B2B store, you need both displays to work simultaneously.

How PrestaShop Handles Price Display

PrestaShop's price display is controlled at the customer group level. Each group has a "Price display method" setting:

  • Tax included: Shows prices with VAT (default for B2C groups, "Visitor" and "Customer")
  • Tax excluded: Shows prices without VAT (used for B2B groups)

When a logged-in B2B customer browses your catalog, they see net prices everywhere: product listings, product pages, cart, and checkout. The VAT is shown as a separate line item at checkout for transparency but does not inflate the displayed prices.

The Guest Visitor Problem

Before a customer logs in, PrestaShop displays prices based on the default customer group (usually "Visitor," which shows tax-included prices). This creates a jarring experience for B2B buyers who land on your site and see gross prices until they log in.

Solutions:

  • Tax Display Switcher: Our Tax Display Switcher module adds a toggle on the storefront that lets visitors switch between gross and net price views without logging in. This is particularly useful for hybrid stores serving both B2C and B2B customers.
  • Separate B2B subdomain: Create a dedicated B2B storefront (e.g., wholesale.yourdomain.com) using PrestaShop's multistore feature, with the default group set to B2B (tax excluded). This gives business buyers a dedicated experience from first visit.
  • Login-gated pricing: Hide prices entirely for non-logged-in visitors and require registration to see pricing. Common in wholesale operations where you want to approve accounts before revealing trade prices.

Step 5: Implement the EU Reverse Charge Mechanism

The reverse charge is not just a tax rate change — it is a legal invoicing requirement with specific documentation obligations.

What the Reverse Charge Requires

Under the EU VAT Directive (2006/112/EC, Articles 138 and 196), when you supply goods or services to a VAT-registered business in another EU member state:

  1. You do not charge VAT on the invoice.
  2. Your invoice must state that the reverse charge applies, with a reference to the relevant article (e.g., "Reverse charge — Article 138, Directive 2006/112/EC").
  3. Your invoice must include the buyer's VAT number.
  4. The buyer declares the VAT in their own country's VAT return, both as output VAT (payable) and input VAT (reclaimable). The transaction is typically VAT-neutral for the buyer.
  5. You report the transaction in your EC Sales List (Zusammenfassende Meldung in Germany, Déclaration Européenne de Services in France).

Configuring Reverse Charge in PrestaShop

PrestaShop does not have a built-in "reverse charge" checkbox. Instead, you achieve it through the customer group and tax rule combination described in Step 2:

  1. Customer's VAT number is validated via VIES (Step 3).
  2. Customer is assigned to the "B2B EU (VAT validated)" group.
  3. That group's tax rules apply 0% VAT for all EU countries.
  4. The invoice template is customized to include the reverse charge notice and the customer's VAT number.

For the invoice customization, you need to modify your invoice template (located in /pdf/invoice.tpl or your theme's override) to conditionally display the reverse charge notice when the customer belongs to the B2B EU group. The template should include:

  • The buyer's VAT number prominently displayed
  • The legal text: "Intra-community supply exempt from VAT — Article 138, Directive 2006/112/EC. VAT to be accounted for by the recipient under the reverse charge mechanism."
  • Both seller and buyer company details

Step 6: Invoice Requirements by EU Country

While the EU VAT Directive provides a common framework, individual member states have specific invoice requirements that you must follow when selling to businesses in those countries.

Mandatory Invoice Fields (All EU Countries)

  • Sequential invoice number
  • Invoice date
  • Seller name, address, and VAT number
  • Buyer name, address, and VAT number
  • Description of goods or services
  • Quantity and unit price (net)
  • VAT rate and amount (or reverse charge notice)
  • Total amount due
  • Payment terms and due date

Country-Specific Additions

CountryAdditional Requirement
GermanyTax number (Steuernummer) OR VAT ID on every invoice. Sequential numbering must be continuous (no gaps). Invoices must be retained for 10 years.
FranceSIREN/SIRET number required. Mention of penalties for late payment mandatory since 2013. Discount terms must be specified.
ItalyElectronic invoicing (FatturaPA) mandatory for domestic B2B since 2019. Cross-border transactions reported via SDI (Sistema di Interscambio).
SpainSpanish Tax ID (NIF/CIF) required. Corrective invoices require reference to original. SII (Suministro Inmediato de Información) real-time reporting for large companies.
NetherlandsKvK (Chamber of Commerce) number recommended. BTW-id number required.
PolandNIP (tax identification number) required. KSeF (Krajowy System e-Faktur) mandatory e-invoicing being rolled out in 2026.
BelgiumEnterprise number (KBO/BCE) required. Payment terms legally capped at 60 days for B2B.

PrestaShop's invoice template can be customized to accommodate these variations, but be aware that country-specific electronic invoicing mandates (Italy's FatturaPA, Poland's KSeF) require dedicated integration modules that generate invoices in the required XML format and submit them to government portals.

Step 7: Implement Payment Terms

Traditional B2B transactions rarely involve immediate payment. Business buyers expect to receive goods, verify them, and pay according to agreed terms — typically net 30, net 60, or net 90 days. This is fundamentally different from B2C e-commerce where payment is collected at checkout.

Business invoices and financial documents for B2B e-commerce transactions

What You Need for Deferred Payments

  • Order completion without payment: The checkout process must allow approved customers to place orders without entering payment details.
  • Credit limit management: Each B2B customer should have a maximum outstanding balance. When they hit their limit, new orders require prepayment until invoices are settled.
  • Invoice generation with due dates: Invoices must show the payment due date calculated from the order date plus the agreed payment terms.
  • Outstanding balance tracking: You need a dashboard showing who owes what, what is overdue, and what is coming due.
  • Payment reminders: Automated emails at due date, 7 days overdue, and 30 days overdue.
  • Credit note handling: When a partial return occurs, the credit note must reference the original invoice and adjust the outstanding balance.

PrestaShop's Built-in B2B Payment Features

PrestaShop's B2B mode provides basic infrastructure: the customer profile includes fields for "allowed outstanding amount" and "maximum payment days." However, the native implementation is minimal — it blocks orders exceeding the credit limit but does not provide proactive reminders, aging reports, or integrated payment tracking.

For a production-ready implementation, our B2B Deferred Payment Terms module extends PrestaShop with:

  • Configurable payment terms per customer group (net 7, 14, 30, 60, 90)
  • Automatic due date calculation on invoices
  • Credit limit enforcement with configurable behavior (block order vs. require approval)
  • Outstanding balance dashboard in the back office
  • Automated payment reminder emails at configurable intervals
  • Payment recording against specific invoices
  • Aging report (current, 30 days, 60 days, 90+ days overdue)

Alternative Payment Approaches for B2B

Not every B2B operation needs full deferred payment. Consider these alternatives:

  • Proforma invoice workflow: Customer places order → you generate a proforma invoice → customer pays by bank transfer → you ship upon payment receipt. This eliminates credit risk while maintaining a professional B2B workflow.
  • Split payment: 50% deposit at order, 50% upon delivery. Reduces credit exposure while accommodating business purchasing processes.
  • Payment gateway with B2B features: Some gateways (like Billie or Mondu) specialize in B2B buy-now-pay-later, handling credit checks and payment collection on your behalf for a fee.

Step 8: Handle Special Pricing and Quantity Discounts

B2B pricing is rarely a flat catalog price. Business buyers expect tiered pricing based on volume, negotiated rates based on relationship, and sometimes customer-specific pricing that reflects contractual agreements.

PrestaShop's Pricing Tools for B2B

Specific Prices: Navigate to a product's Pricing tab and add specific prices for each customer group. You can set:

  • A fixed price (overriding the base price)
  • A percentage discount from the base price
  • A fixed amount reduction
  • Quantity thresholds (price applies only when ordering X or more units)

Example tier structure for a product with €100 base price:

QuantityB2B Domestic PriceB2B Wholesale Price
1-9 units€90 (10% off)€75 (25% off)
10-49 units€85 (15% off)€70 (30% off)
50-99 units€80 (20% off)€65 (35% off)
100+ units€75 (25% off)€60 (40% off)

Cart Rules for B2B: Use PrestaShop's cart rules to create group-specific promotions: free shipping over a certain order value, additional discount for first-time wholesale orders, or volume bonuses applied automatically.

Step 9: Restrict Access and Manage Approvals

Most B2B stores should not be fully open to the public. You typically want to:

  • Require registration approval: New accounts are created in "pending" status. An admin reviews the company details, validates the VAT number, and activates the account. PrestaShop's built-in "Customer awaiting email validation" flag can be repurposed for this, or a dedicated module provides a more robust approval workflow.
  • Hide prices from guests: Configure your theme to show "Login for pricing" instead of actual prices for non-authenticated visitors. This protects your trade pricing from competitors and enforces the registration requirement.
  • Restrict product visibility: Some products or categories may be available only to specific customer groups. PrestaShop's category permissions (configured per group) handle this natively.
  • Minimum order quantities: B2B operations often require minimum order values or quantities. This can be enforced through cart rules or dedicated modules.

Step 10: Reporting and Compliance

EC Sales List (ESL) Reporting

If you make intra-community supplies (reverse charge transactions), you are required to submit an EC Sales List to your tax authority. This report lists each EU business customer you sold to, their VAT number, and the total value of supplies in the reporting period.

PrestaShop does not generate ESL reports natively. You need to either:

  • Export order data filtered by the "B2B EU" customer group and format it for your local filing system
  • Use accounting software (like DATEV in Germany, Sage in France) that imports PrestaShop order data
  • Have your accountant generate the report from your invoicing data

Intrastat Reporting

For businesses exceeding certain thresholds of intra-EU trade (typically €400,000-800,000 per year, varying by country), Intrastat declarations are required. These detail the goods shipped between EU countries, including commodity codes, weights, and values. This is typically handled by your logistics or accounting department, but PrestaShop's order export data provides the raw material.

Record Retention

EU VAT regulations require you to retain invoices and supporting documentation for a minimum period — typically 7-10 years depending on the member state. PrestaShop stores this data in the database, but you should also maintain offline backups of:

  • All issued invoices (PDF copies)
  • VIES validation records (timestamps, responses)
  • Proof of dispatch for intra-community supplies
  • Customer VAT number change history

The Complete B2B Setup Checklist

Here is the implementation sequence I follow for every B2B PrestaShop project:

  1. Enable B2B mode (Shop Parameters → Customer Settings)
  2. Create customer groups (B2B Domestic, B2B EU, B2B Non-EU, Wholesale)
  3. Configure tax rules (standard rates for domestic, 0% for reverse charge, 0% for export)
  4. Install VIES validationAutomatic EU VAT Checker
  5. Configure net price display for all B2B groups
  6. Set up payment termsB2B Deferred Payment Terms
  7. Customize invoice template with reverse charge notices, buyer VAT number, and country-specific fields
  8. Configure specific prices and tier discounts per group
  9. Set up registration approval workflow
  10. Install tax display switcher for hybrid B2C/B2B stores — Tax Display Switcher
  11. Test every scenario: domestic B2B order, intra-community order with valid VAT, intra-community order with invalid VAT, non-EU order, order exceeding credit limit
  12. Brief your accountant on the setup, invoice format, and ESL reporting data export

Common Mistakes I See in B2B PrestaShop Setups

1. Applying Reverse Charge Without VIES Validation

Some merchants zero-rate all B2B orders to EU countries without actually validating VAT numbers. This creates liability: if a VAT number turns out to be invalid, you owe the VAT to your own tax authority. Always validate before zero-rating.

2. Not Storing Validation Proof

Validating the VAT number is not enough — you need to prove you validated it. Store the VIES response (including timestamp and consultation number) with each order. Tax auditors ask for this.

3. Forgetting About the UK Post-Brexit

Since January 1, 2021, the UK is not part of the EU for VAT purposes. Sales to UK businesses are exports, not intra-community supplies. The reverse charge mechanism does not apply (though the UK has its own domestic reverse charge for certain sectors). UK VAT numbers start with "GB" and are validated through HMRC's API, not VIES.

4. Using One B2B Group for Everything

A single "B2B" customer group cannot distinguish between domestic sales (VAT applies), intra-community sales (reverse charge), and export sales (no VAT). You need separate groups with different tax rule assignments.

5. Ignoring Payment Term Limits

Several EU countries have legislated maximum payment terms. Belgium caps B2B payment terms at 60 days. France limits them to 60 days from invoice date (or 45 days end-of-month). Offering "net 90" to a Belgian customer could violate local law.

6. Not Testing the Full Customer Journey

The most common failure mode: everything looks correct in the back office, but the front-end customer experience is broken. Always test by logging in as a B2B customer and going through the entire flow: browse catalog (verify net prices), add to cart, enter VAT number (verify VIES validation), complete checkout (verify 0% VAT applied), and check the generated invoice (verify reverse charge notice).

The All-in-One Option

If you need VAT validation, tax display switching, and deferred payment terms together, our B2B Essentials Pack bundles all three modules at a significant discount compared to individual purchases. It is designed specifically for the configuration workflow described in this guide, with each module designed to work together.

Final Thoughts

B2B e-commerce on PrestaShop is not complicated — it is detailed. Each individual step (create a group, set a tax rule, validate a number) is straightforward. The complexity comes from the interactions between all of these configurations and the legal requirements that vary across 27 EU member states.

The good news: once configured correctly, a B2B PrestaShop store handles tax calculations, price display, and invoicing automatically. Your B2B customers see the right prices, get the right VAT treatment, and receive compliant invoices without manual intervention. That automation is what makes e-commerce viable for B2B — without it, you are doing manual invoicing for every order, which defeats the purpose of having an online store.

Take the time to get the setup right. Test every scenario. Brief your accountant. And if you hit a configuration wall, reach out — B2B VAT setup is one of the most common support questions we handle, and we have seen every edge case there is.

  • GDPR for Online Stores: What You Must Do (and What You Can Skip)
  • Cross-Border Returns: The Legal Side of Selling to Other EU Countries
  • Data Breach Response: What to Do If Your Store Gets Hacked
Share this post:
David Miller

David Miller

Over a decade of hands-on PrestaShop expertise. David builds high-performance e-commerce modules focused on SEO, checkout optimization, and store management. Passionate about clean code and measurable results.

Enjoyed this article?

Get our latest tips, guides and module updates delivered to your inbox.

Comments

No comments yet. Be the first!

Be the first to ask a question or share useful feedback.

Loading...
Back to top