Shopify B2B app theme blocks en tax checkout: waar de embed zit, wanneer een cart-drawer een thema-edit is, en waarom een btw-veld ín checkout Plus blijft.
2026-11-05

B2B-app: thema, btw en lock-in

Je wisselt van thema. De groothandelsprijzen staan nog in de app. Op de winkelwagen is het btw-nummer weg. Dat is geen bug in de prijslijst. Dat is een blok dat niet is meeverhuisd. De technische vraag bij een Shopify B2B-app is daarom: wat is een theme app extension, wat is een handmatige Liquid-plak, en welk deel van de btw-check mag überhaupt in de checkout.

De app in dit stuk is OO - B2B & Wholesale. De listing van 5 november 2026 is Built for Shopify. De badge is een feit over Shopify’s lat, niet een bewijs dat elk scherm van jouw thema al goed staat.

Must-haves

Een app zonder deze punten valt af, ook met een mooie review.

  • Prijzen, btw-weergave en “login to see prices” lopen via de gedeelde app embed. Geen embed, geen storefront-prijs voor die modules.

  • Bulk form, quote, wholesale cart en registratie zijn theme blocks op een specifieke template. De embed alleen zet die formulieren niet neer.

  • Het dashboard zegt of het blok op het gepubliceerde thema actief is. Een blok op een ongepubliceerde kopie telt niet als live.

  • Een themawissel wist de configuratie in de app niet. Je moet embed en blokken wel opnieuw op het nieuwe thema zetten.

  • Het btw-formulier op `/cart` is een blok. Een cart drawer pakt dat blok niet. De gedocumenteerde uitweg is een snippet in het drawer-bestand. Dat is een thema-codewijziging, en die ruimt zichzelf niet op bij uninstall.

  • Een btw-veld ín de checkout is een Checkout UI Extension op een Plus-checkout. Andere plannen houden het formulier op de cart of in de drawer.

  • VIES en de tax-exempt-module zitten op Starter, niet op Free.

  • Goederen die van buiten de EU vertrekken vallen buiten deze verlegging. De FAQ vraagt dan een EU-fulfillmentlocatie.

Embed of blok

De modulekaart splitst het thema in twee paden.

ModuleWaar het in het thema zitPlan
Custom pricingGedeelde app embedFree: één actieve lijst. Starter haalt de cap eraf
Volume pricingZelfde embedStarter
Tax displayZelfde embedStarter
Login to see pricesZelfde embedStarter
Order limitsZelfde embedGrowth
Tax ExemptEmbed, plus een cart-blok of een drawer-snippetStarter
Bulk formsBlok op de producttemplate of op een paginaGrowth
Quote requestTheme blockGrowth
Wholesale cartBlok op de cart-templateGrowth
Registration formsTheme blockFree: één actief formulier. Starter: onbeperkt

Elke module heeft een Finish setup op zijn kaart. Zonder die stap staat de configuratie in de app en niets op de storefront. De docs van het bulk-formulier zeggen het hard: er komt niets in het thema tot je een blok plaatst. Het dashboard toont Product Page Active of Bulk Order Page Active alleen als dat blok op het gepubliceerde thema is opgeslagen.

Company price lists gebruiken die embed ook. De company-docs zeggen dat een company-contact de custom price ziet na het inloggen, zodra de embed aan staat. Die lijsten vullen geen Shopify-catalogus-slot. Basic, Grow en Advanced blijven op hun eigen cataloguslimiet zitten. Deze app claimt die slots niet te vervangen.

Midden in de setup is de listing de plek om het plan te controleren, niet een andere app: OO - B2B & Wholesale.

Btw: cart, drawer, checkout

Twee dingen moeten aan staan voordat het btw-formulier verschijnt. De app embed op het actieve thema, en het formulier op de cart of in de drawer. Dat staat in Add Tax Exempt to your theme. Het dashboard zegt App active als de embed op het gepubliceerde thema aan staat. Blijft het Not active, dan ontbreekt de embed of is het thema niet opgeslagen.

Op een echte cart-pagina (`/cart`) plaats je het Tax Exempt-blok via Add Cart Extension en sla je op.

Een cart drawer negeert dat pagina-blok. De docs laten je dan een leeg element in het drawer-bestand plakken, `div` met id `ooTaxExemption`, in `cart-drawer.liquid`, `drawer-cart.liquid`, `mini-cart.liquid` of `cart-notification.liquid`. Er zit een kopieerknop op de setup-pagina. Vind je het bestand niet, dan vragen de docs je de in-app chat te gebruiken. Dat is eerlijk, en het is het lock-in-punt van deze app. Theme app blocks verdwijnen mee als je de app verwijdert. Shopify eist dat voor Built for Shopify: geen achtergebleven code in het thema. Een snippet die jij zelf in een Liquid-bestand plakt, is geen app-blok. Die haal je bij uninstall zelf weg, anders blijft er een leeg anker in de drawer staan. Geen prijslogica, wel een restant.

Een veld ín de checkout is een andere install. De checkout-handleiding beschrijft een EU VAT Validation-blok in de checkout-editor, met “Allow app to block checkout”, en die handleiding noemt een Shopify Plus-store. Plaatsing hangt af van one-page of three-page, en van fysieke versus digitale goederen. Digitale carts hebben geen verzendvelden, dus daar hoort een tweede blok bij de betaling. De FAQ zegt hetzelfde in het kort: Plus kan de checkout uitbreiden. Andere plannen houden dit formulier op de cart of in de drawer. “Require VAT validation before checkout” zet de checkout-knop uit tot de check slaagt, en dat kan volgens die FAQ zonder Plus. Een custom veld binnen de checkout beloven op Basic, Grow of Advanced is het tegenovergestelde van wat daar staat.

De verlegging zelf is intra-EU. Een nummer uit hetzelfde land wordt gevalideerd en de btw blijft. Een buitenlands EU-nummer wordt gevalideerd en de btw gaat eraf waar de regel dat toelaat. Vertrekt de zending van buiten de EU, dan geldt de verlegging niet. De FAQ noemt dan een EU-fulfillmentlocatie.

Kies één checkout-logica en lees de beperkingen. Standard checkout leunt op Shopify Tax en Markets. Draft-order-logica maakt na de check een draft en heeft een eigen restrictiepagina. Die twee niet stapelen alsof ze hetzelfde pad zijn.

Wat een themawissel wel en niet bewaart

De configuratie in de app blijft. Embed en blokken zet je opnieuw. De statuscheck kijkt naar het dashboard en, als dat afwijkt, naar het live thema. Een blok op een thema dat niet gepubliceerd is, is geen Product Page Active.

Deinstalleren haalt de extension-blokken en de embed weg. Dat is wat de Built for Shopify-badge eist van theme app extensions. De drawer-snippet blijft jouw edit. Bij een themawissel laat je hem in het oude thema achter en plak je hem in het nieuwe. Een export van elke prijsregel als bestand staat niet in de pagina’s die hier geciteerd worden. De prijslijsten zitten in de app. Zeg niet dat er een vrije export is, en verzin ook geen verborgen val.

Listing, 5 november 2026

Built for Shopify. Taal van de listing: English. Werkt met Checkout, Shopify Flow en Shopify Admin. Gelanceerd op 9 februari 2024. Rating 5,0 uit 34: 33 keer vijf sterren, één keer vier, niets daaronder. De tekst van die ene vier heb ik op de drie nieuwste kaarten niet. Die drie zijn positief.

PlanPrijsTechnisch relevant
Free$01 custom pricing rule, 1 registratieformulier met approve/reject, Flow-templates. Development stores: geen caps
Starter$22/maand of $220/jaarOnbeperkte custom- en volumeprijzen, company blocks, onbeperkte registratie, EU tax exemption met VIES en logs, tax display, login to see prices. 14 dagen trial
Growth$37/maand of $370/jaarStarter, plus bulk forms, draft checkout, repeat order, quote request, AI-formules voor quotes, order limits, wholesale cart. 14 dagen trial

Net terms staan in de categorieën, niet op een planregel. Niet citeren als “zit in Starter”.

Drie recente reviews, zonder verzonnen toon:

  • 6 oktober 2026, Sensorkranenwinkel.nl: de btw-verlegd-optie werkt, support reageert snel. Ongeveer twee jaar gebruiker.

  • 11 juni 2026, POPlab Sounds (Duitsland): het veld voor de notitie is hernoembaar en sluit aan op hun boekhouding.

  • 21 april 2026, Rohleder AT (Oostenrijk): noemt FAQ, chatbot, prijs en ingebouwde vertaling. Korte gebruikstijd op de kaart.

Geen developer-antwoord op die drie. Er was geen één-ster om te beantwoorden. De enkele vier blijft een gat in deze tekst zolang de kaart niet in de nieuwste drie staat. Check de listing live.

Wanneer native genoeg is

Een binnenlandse order waarop de btw gewoon blijft, heeft deze embed niet nodig. Een winkel met een handvol bedrijven op Shopify Plus, waar de native catalogi de prijs dekken, hoeft de app niet te installeren om “ook B2B” te kunnen zeggen. Plus wint daar op catalogi, locaties en de checkout-extensie die Shopify zelf aan Plus koppelt. Deze app vervangt die catalogi niet.

Native verliest zodra het btw-nummer tegen VIES moet, met een log, op een plan dat geen checkout-UI-extensie heeft. Dan is de cart of de drawer de gedocumenteerde plek, en is de drawer-snippet de prijs die je betaalt voor een thema zonder cart-pagina. Native verliest ook zodra elke company een eigen prijslijst nodig heeft buiten de cataloguslimiet van Basic, Grow of Advanced. De embed is dan de technische voorwaarde, niet een optionele styling.

Bronnen

Tot slot

De technische fit is helder als je de embed, het juiste blok en het juiste plan op één lijn zet. OO - B2B & Wholesale documenteert dat pad, inclusief het punt waar het pad ophoudt: een drawer-snippet is jouw Liquid, en een btw-veld in de checkout is Plus. De badge dekt de extension-blokken. Hij dekt die snippet niet. Wie dat onderscheid in de checklist zet, installeert de app voor het werk dat de docs echt beschrijven.

online origins logo full

Dé Shopify select partner voor ambitieuze e-commerce bedrijven die willen groeien!

linkedin online origins iconinstagram online origins icon

Reviews

5/5

Bekijk op Google

Mail: info@onlineorigins.nl

Tel: 073 234 0612

KVK: 89825624

BTW: NL865123639B01

Bruistensingel 500,
5232 AH 's-Hertogenbosch
Cookies

© 2026 Online Origins