Which VAT rate applies? A decision tree for cross-border selling
Domestic rate, reverse charge, One-Stop-Shop or zero-rated export — four outcomes, three questions. Plus a free calculator that picks the rule for you.
// Blog
Shopware, Node.js, React, performance, AI, cloud and the boring B2B details nobody blogs about. No listicles, no reheated vendor marketing — only things we have actually done.
Domestic rate, reverse charge, One-Stop-Shop or zero-rated export — four outcomes, three questions. Plus a free calculator that picks the rule for you.
Protocols, councils and press releases are multiplying. Underneath the noise, one thing genuinely changes for your shop — and it is not the checkout.
A 50% markup is a 33% margin. Confuse the two and you have quietly given away a third of your profit on every product in the catalogue.
Shopify, Magento, WooCommerce, PrestaShop, OpenCart, Odoo, Wix, Square, Zoho and more — measured against Shopware 6 on the things that actually decide a B2B project.
AI coding assistants genuinely changed how we work. They also cannot tell you why your customer's pricing rule contradicts itself.
Not every Shopware 5 shop needs to migrate this year. Here is how to tell whether yours is a healthy earner or a ticking maintenance bill.
Apps run outside the shop and survive updates. Plugins run inside it and can do anything. The choice decides your maintenance bill for years.
Shopify will have you live in weeks. Shopware will still be doing what you need in ten years. The honest trade-off, with the numbers.
Long requirement documents make everyone feel safe and tell you nothing. Three exercises that reveal more than any feature matrix.
The app manifest is easy. The handshake, the shop secret and verifying every incoming request are where first-time app builders get burned.
Two open, extensible, B2B-capable platforms. One of them needs a devops team just to stay upright. Here is what that actually costs.
The Admin Extension API lets an app add modules, action buttons and notifications through an iframe and a message bridge. Less power, far less pain.
WooCommerce is the cheapest way to start selling and the most expensive way to scale. The exact point where that flips.
Store plugins promise a lot and deliver about 70% of it. Here is the decision framework we use with clients before spending a cent on either option.
App Scripts run inside Shopware's process but ship with your app. They are how you touch the cart without a plugin — and without an HTTP call per line item.
Both are open, both are European, both are free to download. The difference shows up in the second year, not the first.
OpenCart is light, fast to install and costs almost nothing. It is also the system we most often find holding a growing business back.
Shopware lets an external endpoint calculate tax for the whole cart. For cross-border B2B, that is the difference between a rule table and an audit.
Odoo gives you commerce inside the ERP. That solves your integration problem and creates a storefront problem. Which one hurts more?
Comparing these two is like comparing a van to a bicycle. The real question is what you are carrying — and how far.
Data migrates fine. It is the SEO URLs, the custom logic and the plugin gaps that kill migrations. A field-tested checklist from real projects.
Square Online exists to extend a point-of-sale into the web. Judge it as that, and it is very good. Judge it as a B2B platform and it is not one.
If you already live in Zoho, its shop is tempting and integrated. That integration is exactly what you pay for later.
Custom fields are a five-minute solution that becomes a five-month problem. Here is the line at which you must switch to a real entity.
Three German platforms, three different centres of gravity. If you are choosing between them, you are choosing an ecosystem more than a feature list.
Customer groups, scale prices, contract prices, rule builder — four mechanisms that overlap. Here is which one to reach for, and when.
Composable commerce is real engineering, not a buzzword — and it is far more platform than most mid-market companies need or can staff.
Every landing page that needs a developer is a landing page that will not be built. Custom blocks turn your team into people who can ship.
Headless is not automatically faster or better. It buys you freedom and costs you a whole frontend. Four questions that tell you if it pays off.
Teach Shopware one new verb and one new condition, and your non-technical team can automate things you never anticipated.
Most Shopware 6 shops use Flow Builder for order confirmation emails and nothing else. Here are the flows that actually save hours every week.
Context tokens, sales-channel keys and the cart that lives on the server. The three things every headless build gets wrong on the first attempt.
Not everything belongs in the shop. A small Node service between Shopware and your ERP solves problems a plugin never will.
Most integrations fetch far too much data because nobody read the criteria docs. Filters, aggregations and associations, explained by example.
Both are excellent. The right answer depends far less on the framework than on who maintains it after we leave.
One request per product is a 28-hour import. Bulk payloads and the sync API turn it into twenty minutes — if you get the batching right.
GraphQL solves over-fetching. It also hands your clients a loaded gun pointed at your database. When each one is the right call.
B2B buyers are not asking for a prettier shop. They are asking to stop phoning your sales rep to find out where their delivery is. What that actually requires, and what to build first.
Building headless from scratch means rebuilding routing, SEO and checkout state. Frontends gives you those — at the cost of following someone else's shape.
Types do not prevent bugs. They prevent a specific, expensive class of bug — the one that reaches your customer's invoice.
Nothing is broken, nothing errors, and nothing runs. The message consumer is almost always the answer — and here is how to prove it in five minutes.
Redis is not magic. Used badly it serves stale prices to real customers. Four patterns, and how to invalidate without fear.
There is no single cache. There are five, and the one you forgot is the one still serving yesterday's price.
MySQL LIKE queries die at 50,000 products. Here is what Elasticsearch fixes, what it does not, and the fields that decide relevance.
Your firewall is fine. Your accountant, on a Friday afternoon, looking at an invoice from a supplier they know — that is the attack surface.
Time to First Byte is the number your CDN cannot fake. Five causes, in the order we check them on real Shopware shops.
Certificates expire on Sundays. Browsers block the shop entirely. And the renewal reminder went to an inbox nobody has read since 2023.
Layout shift is the vital that costs you conversions directly — buyers click the wrong button. It is also the easiest one to fix.
Not legal advice — an engineering checklist. The technical facts you must be able to state about your shop when someone finally asks.
We have made shops score 98 and convert worse. The score is a proxy; revenue is the target. How to optimise for the second one.
Structured invoicing (ZUGFeRD, XRechnung) is becoming mandatory in B2B. A PDF attached to an email will not satisfy it — and your shop has to change.
Product descriptions, search, support triage, forecasting. Three of those pay for themselves. We separate the working from the pitching.
We used to argue that a profitable SW5 shop could stay. That argument has run out — not because the framework got worse, but because everything around it moved on. What unsupported really costs, and how a very late mover should plan.
Your customer searches 'leaking pipe joint'. Your catalogue says 'compression fitting'. Keyword search finds nothing. Vector search finds the product.
The model is the easy part. Chunking, retrieval and the honest 'I don't know' are what separate a useful assistant from a liability.
Buyers increasingly ask an assistant, not a search engine. If your catalogue is not machine-readable, you are simply not in the answer.
Generating catalogue copy with an LLM works — if you never let it invent a number. The pipeline we use in production.
Public funding can carry a meaningful part of a digital project. It can also eat six weeks and change nothing. How to tell which one you are in.
The nightly script that 'usually runs' is a business risk. How to turn recurring work into something you can trust and observe.
Deployment, updates, support and onboarding all collapse into one thing when the app lives at a URL. The exceptions are real, but rarer than people think.
You can run a serious B2B shop on far less AWS than a consultant will sell you. The minimal architecture that scales.
Buying tools is not building an infrastructure. Three mistakes we see in almost every mid-sized company that 'went remote' and never quite arrived.
If deploying is scary, you deploy rarely, so each deploy is huge, so it is scarier. Here is how to break that loop.
The build is the cheap part. Store fees, OS updates, device fragmentation and the second platform are what turn a €60k app into a €200k decision.
Uptime checks tell you the server answered. They do not tell you that checkout has been failing for six hours. Monitor the business, not the box.
MCP lets an assistant call your stock lookup instead of guessing at it. The protocol is a week of work. Deciding what an assistant may see and do on behalf of a customer is the actual project.
Forget keyword density. In a B2B shop, rankings are won with URL structure, faceted-navigation control and pages that actually load.
SEA buys traffic today and stops the moment you stop paying. SEO compounds and takes months. A framework for splitting the budget.
Your B2B customers do not want a monthly newsletter. They want to know their reorder is due and their quote expires Friday.
Get tax wrong and you do not get a bug report — you get an audit. The rules a B2B shop must encode, in plain language.
Your B2B buyer does not want a story. They want to know whether it fits, when it ships, and what happens if it breaks.
Ignore the metaverse. The real shifts are boring, already underway, and they will decide who your customers order from in 2028.
'The code is messy' is not a business case. Translate debt into delivery speed, outage risk and hiring cost — then it gets funded.
GEO, answer-engine optimisation, LLM visibility — the offers are arriving faster than the knowledge. What plausibly helps, what is genuinely unknowable right now, and how to spend nothing to find out.
Not a cookie-apocalypse panic piece. Your orders, your accounts, your search terms and your email list were always the better signal. What to collect, what to never collect, and how the DSGVO framing actually helps you.
A major Shopware upgrade removes what was deprecated, and your plugins are what break. How to find the wall before you hit it, how to rehearse on staging, and how to plan a weekend that does not become a fortnight.
The 'what is X' article now gets summarised at the top of the results and never clicked. Transactional queries are far less affected. What that actually means for a shop, without invented percentages.
The MACH pitch sounds like freedom. What a 40-person wholesaler actually buys is five vendors, five contracts and an integration layer nobody put in the budget. When composable wins — and when a monolith with a good API is the adult choice.
Most shops fight returns in the warehouse. The damage is done on the product page. How to measure return reason per SKU, find the ten products doing the harm, and fix them.
Format wars are the least interesting part of image performance. Why your thumbnail generator matters more than AVIF, how to do srcset properly, and why lazy-loading the hero image makes everything worse.
Moving Shopware 5 templates to Shopware 6 is not a syntax exercise. Block structure, theme inheritance and the parts you should rebuild instead of translate.
Most personalisation projects fail on data volume, not on algorithms. Why 'customers also bought' on decent data beats a neural network on thin data, and when a rules engine is the honest answer.
From 28 June 2025 the European Accessibility Act applies to online shops. Who is in scope, what WCAG 2.1 AA means for a real checkout, and why an inaccessible shop is losing orders today.
The audit method, in order: crawl, index bloat, filter URLs eating your crawl budget, duplicate variants, canonicals, pagination, redirects. And an honest list of what to ignore.
Kauf auf Rechnung is not a nice-to-have in German B2B, it is the default. Here is what it really costs — credit checks, terms, dunning, the ERP handshake — and how a card-only shop quietly loses buyers to email.
Headless is a cost you pay for a freedom most shops never use. Here is when it genuinely pays, when it is an expensive way to rebuild the standard storefront, and the team-size question nobody asks first.
Google's position is about helpfulness, not authorship. So why do 30,000 generated product texts still sink? Not because a machine wrote them — because they say nothing.
The Shopware-specific work that moves a slow shop: HTTP cache and cache tags, the N+1 hiding in your criteria, the admin worker, when Elasticsearch is worth it — and the tuning that is pure cargo cult.
Three months of putting a language model to work in real shop projects. What earned its keep, what embarrassed us in front of a customer, and the one rule we now refuse to break.
It is almost never the web server. It is the database, the ERP sync and the payment provider's rate limit. Written while it is fresh: what to rehearse, what to switch off, and why the fix is capacity you tested in October.
Most abandonment advice is folklore repeated until it sounds like data. Here is how to find the step people actually leave at — and why the answer is nearly always a surprise cost, a forced account, or a missing payment method.
A legally clean consent banner loses you measurement and some traffic. Dark patterns are illegal and also do not work. What a compliant banner must actually do under DSGVO and TTDSG — and how to run a shop when a large share of visitors say no.
Universal Analytics stops processing on 1 July 2023 and your history does not come with it. Why running both in parallel now is the whole point, what breaks in e-commerce tracking, and why consent makes this messier in Germany than Google admits.
A PIM bought too early is shelfware with a licence fee. The threshold is channels times attributes times rate of change — and for most shops a spreadsheet is still the right answer.
Not a checklist — a retrospective. The estimates we got wrong, the plugin inventory that turns out to be the whole project, and the six-figure job that produces no new revenue on launch day.
After a year of container chaos, 'in stock, ships in 2-3 days' has quietly become a lie in a lot of shops. The lie does not cost you the sale — it costs the return, the ticket, the chargeback and the customer.
Digitalising a mid-size German wholesaler is not a software problem. It is the problem that your best sales rep knows the customer's order by heart, and the portal does not. What to automate first, what to leave alone, and why 'we will digitise everything' fails.
Google started rolling out the page experience update this month. It is real, it is measurable, and it is a tiebreaker — not the lever the panic emails are selling you. Here is what genuinely changes for a shop.
Shopware 6 exists and is getting better every release. That is not a reason to move a profitable Shopware 5 shop this year. Here are the three honest paths, what each one costs, and how to tell which one you are actually on.
Most new shops spend their first three months on the wrong things. Here is the order of work that gets you to a first repeatable sale instead of a beautiful, empty storefront.
No articles in this category yet.
// FAQ
The developers who ship the work. They go out under a Codewerk Team byline rather than personal ones, because most of them come out of a project several of us touched. We use AI assistants while writing, the same way we use them while coding, and someone who has actually done the thing signs off on every claim. When an article says we tried something, we tried it.
There is no schedule and we will not pretend there is. Articles appear when a project throws up something worth writing down. Look at the dates on this page and you can see the real rhythm: clusters, then quiet weeks. Client work comes first, always. A blog that ships on a content calendar is a blog written to fill a content calendar, and you can usually tell within two paragraphs.
Yes — send the question you actually have to info@codewerk-it.com. Several pieces here started as a question from someone who was not a client. Two caveats: we do not promise to write it, and we will not write it as a favour to somebody's product. If the answer turns out to be short, you simply get the answer in a reply, which is usually what you wanted in the first place.
We can, but read the piece first. These are written so that a competent in-house developer can do the work without us, and often that is the cheaper answer: the migration checklist and the caching articles are things a decent team can follow on their own. Hire us when the problem is bigger than the article, when the shop is already bleeding, or when nobody in-house has the time to own it.
Most of these articles started as a client's broken shop. Tell us about yours.