Operations & WaWi · 9 min
DACH Wholesale on Shopify: Custom B2B Setup for 2026
What German, Austrian, and Swiss wholesalers actually need from Shopify B2B in 2026: USt-IdNr, reverse charge, customer pricing tiers, OSS, and where custom beats apps.
What DACH Wholesalers Actually Need From Shopify B2B
That gap — between what Shopify B2B ships and what a DACH wholesaler runs on — is where most projects either get stuck on stitched-together apps or end up as a real custom build. This article maps the gap, names the parts that off-the-shelf apps still fudge, and shows where a one-time custom build is cheaper than three years of per-order app fees.
The DACH B2B Stack: What Has To Work
VAT identification. Capture and validate USt-IdNr at signup. Validate against the VIES (VAT Information Exchange System) — not just a regex check. An invalid USt-IdNr means you must charge VAT; treating it as B2B reverse-charge by mistake exposes you to a tax claim.
Reverse-charge invoicing. For intra-EU B2B with valid USt-IdNr, the invoice is 0% VAT with a mandatory clause ("Steuerschuldnerschaft des Leistungsempfängers / Reverse Charge"). For domestic German B2B, you charge German VAT normally. For cross-border non-EU, separate rules. An invoicing app that gets this wrong produces invoices that get rejected by the customer's Steuerberater.
Customer-specific pricing. Wholesale runs on negotiated rates. Each customer needs their own price list — sometimes per-SKU, sometimes a percentage off catalog, sometimes a volume break. Shopify B2B catalogs handle the simple case; the complex case (different prices for the same SKU across 200 customers) often needs custom logic.
Tax engine. OSS-VAT for cross-border B2C in the EU, intra-EU B2B reverse charge, Schweizer Inlandverkauf, exports outside the EU. Shopify's tax engine handles most baseline cases; the edge cases (mixed B2B/B2C in one order, partial-delivery VAT timing) often don't fit cleanly.
WaWi integration. Stock, customer master data, and invoice records have to sync to whatever runs the back office. Custom connectors are common precisely because off-the-shelf JTL/plenty connectors don't cover B2B price tiers or customer-specific catalogs well.
Where Off-the-Shelf Shopify B2B Apps Fall Short
USt-IdNr validation against VIES isn't standard. Many "B2B signup" apps accept a string and call it validated. Real validation means a live API call to VIES, a stored verification timestamp, and re-validation when the customer's status changes. That's a back-office requirement, not a checkout convenience.
Reverse-charge invoice text varies by language and jurisdiction. An app that hardcodes one English clause fails German tax review. The Pflichtangaben for reverse-charge invoices (legal basis, exact wording) are jurisdiction-specific.
Sammelrechnungen don't fit Shopify's per-order invoice model. German wholesale customers expect a monthly collective invoice across all their orders — not 40 separate invoices. Most Shopify invoicing apps can't natively aggregate.
Customer-specific price catalogs at scale. Shopify B2B supports catalogs, but maintaining 50+ customer-specific catalogs across 2,000 SKUs becomes operationally painful without bulk import / WaWi-driven price updates.
Mixed-VAT orders. An order with one B2B reverse-charge item and one B2C item is technically possible and operationally a nightmare. Standard apps split or fail.
None of these are unsolvable, but each one becomes an app dependency — and most stack apps still charge per order or per invoice, so the bill grows with the wholesale volume that's supposed to be the win.
Cost Model: Apps vs. Custom for DACH Wholesale
| Function | App stack monthly |
|---|---|
| B2B portal app (catalogs, customer-specific pricing) | €80–250 |
| USt-IdNr / VIES validation | €30–80 |
| Reverse-charge-aware invoicing (per-invoice fees) | €150–400 |
| Sammelrechnung / collective invoice add-on | €40–120 |
| WaWi connector (JTL or plenty, B2B-extended) | €80–200 |
| Customer-specific catalog management | €50–150 |
Round trip: €430–€1,200/month, growing with orders because invoicing scales per invoice. Annualised: €5K–€14K/year, before counting the inevitable edge-case fixes when a customer's USt-IdNr expires or a Sammelrechnung needs a manual correction.
A one-time custom B2B module covering the same scope — VIES validation, reverse-charge-correct invoicing, customer-specific pricing tied to your WaWi, Sammelrechnung at month-end — sits in the €18,000–€35,000 range as a fixed price. Hosting and maintenance after launch typically €80–€250/month. The break-even against the app stack lands inside 18–24 months for stores at 1,500+ B2B orders/month, and then keeps saving.
When Custom Is Actually The Right Call
You're above 500 B2B orders/month with per-order or per-invoice app fees. Below that, the app stack is fine — payback period on a build is too long.
You run your back office on a DACH WaWi (JTL, plentymarkets, Pixi). The off-the-shelf B2B connectors for these systems generally don't handle customer-specific pricing or B2B catalogs well; a custom layer is often required regardless.
You issue Sammelrechnungen or otherwise diverge from Shopify's per-order invoice model. The aggregation logic, GoBD archival, and Pflichtangaben don't fit standard apps.
Reverse-charge and mixed-VAT scenarios are a regular part of your order mix, not the exception. Standard apps cover the simple case; the moment you ship to Austrian B2B with valid UID-Nummer alongside German B2C in one promotion, the standard tooling starts to leak.
Your Steuerberater has flagged invoice issues — even one Abmahnung over non-conforming Rechnungen is a real reason to fix the source rather than patch the symptom. The B2B e-invoicing rules taking effect 2027 add another reason: structured invoice output (XRechnung/ZUGFeRD) becomes mandatory and most stack apps don't emit it.
What a Custom DACH-B2B Build Includes (and Doesn't)
In scope:
- USt-IdNr capture at signup, live VIES validation, stored verification, scheduled re-validation.
- Customer-tier pricing pulled from your WaWi or maintained in an admin UI — applied at PDP, cart, and checkout.
- Reverse-charge logic: detect intra-EU B2B with valid USt-IdNr, output VAT 0% with correct clause in the invoice language.
- Invoice generation as XRechnung or ZUGFeRD 2.x for German domestic B2B, PDF for non-affected cases, GoBD archival.
- Sammelrechnung: monthly aggregation per customer with line-item detail.
- WaWi sync: customer master, prices, stock, invoice records — bidirectional or one-way as the operation requires.
- Admin UI in German for the back office that actually uses it.
Not in scope (by design): a full storefront rebuild, replacing your tax engine wholesale, or your CRM. Custom belongs where the operational reality diverges from off-the-shelf assumptions — not as a re-platform.
For a German wholesaler running on Shopify with a WaWi behind it, this is the realistic build. NoRentApps quotes this scope as a fixed price after an App Stack Audit — source code handover, no per-order or per-invoice fees afterwards.
FAQ
Frequently Asked Questions
Is Shopify B2B enough for a DACH wholesaler in 2026?+
Shopify B2B (now on all plans) handles the storefront and basic customer catalogs well. What it doesn't ship: live USt-IdNr/VIES validation, reverse-charge-correct invoicing, Sammelrechnung aggregation, customer-specific price lists at scale, and tight WaWi integration (JTL, plentymarkets, Pixi). For most DACH wholesalers above 500 B2B orders/month, the gap is filled with app stacks or a custom B2B module.
How do I validate USt-IdNr on a Shopify B2B portal?+
Real validation means a live API call to the EU VIES system at signup, storing the verification timestamp and result, and re-validating periodically. A string-format check is not validation — VIES is the only authoritative source. Several Shopify B2B apps call VIES; a custom integration lets you store, re-validate, and tie the result into invoicing logic.
Does Shopify handle reverse-charge invoicing automatically?+
Shopify's tax engine can zero-rate B2B intra-EU orders when a customer's tax exemption is correctly configured, but the invoice itself — the reverse-charge clause text, the legal basis, the language — depends on the invoicing app. Most US-built invoicing apps produce a generic English reverse-charge note that does not meet German Pflichtangaben. A DACH-correct invoicing setup needs the clause in the right language with the right legal reference.
Can I do Sammelrechnungen on Shopify?+
Not natively, and not with most invoicing apps — Shopify is built around per-order invoices. A monthly collective invoice across many orders for one B2B customer requires either a back-office tool (JTL-Wawi, DATEV) to issue them outside Shopify, or a custom invoicing module that aggregates Shopify orders into one document at period close. DACH wholesale customers typically expect Sammelrechnungen, so this is one of the most common reasons custom invoicing gets built.
When does a custom B2B build pay back vs. app stacking?+
For a typical DACH wholesaler at 1,500+ B2B orders/month paying €430–€1,200/month across B2B app stacks, a custom build at €18K–€35K fixed price typically breaks even in 18–24 months — and the savings keep growing because per-order/per-invoice app fees stop scaling with your wholesale volume.