AVG Architecture, Correct BTW Invoicing

Full-Stack Web Development Agency Netherlands

React/Next.js and Node.js applications for Dutch businesses that have outgrown WordPress or Shopify, with an AVG-aligned data model, correct multi-rate BTW invoicing, and a signed verwerkersovereenkomst as standard, not an afterthought.

skilleddesk.com/analytics
Search Impressions
12,913
+32% QoQ
Conversions tracked, last 8 weeks
Web designFull-stack web developmentSocial media marketingGoogle PPC campaignDropshipping websiteEmail marketing & automationConversion tracking setupGraphic designWeb designFull-stack web developmentSocial media marketingGoogle PPC campaignDropshipping websiteEmail marketing & automationConversion tracking setupGraphic design

The Same Build Discipline, The Netherlands Or Any Of The Other 13 Countries

130+
Brands Served
14+
Countries Reached
2019
Founded, Serving Clients Worldwide
1:1
Direct Founder Access
The Problem

Where A Template Beats A Custom Software Development Company

A Cookie Banner That Fires Trackers Before Anyone Clicks Anything

The Telecommunicatiewet requires genuine prior opt-in before a non-functional or tracking cookie is allowed to fire at all, and the Autoriteit Consument & Markt enforces that requirement specifically — a banner bundled with a theme that loads analytics or ad-tracking scripts the moment the page renders, consent or not, isn't a styling choice, it's the exact behaviour the law was written to stop.

A Data-Subject Request With No Way To Meet Its Own Deadline

The AVG gives a business exactly one month to answer a customer's recht op inzage or recht op vergetelheid request once it's filed, and the Autoriteit Persoonsgegevens has already shown that enforcement isn't theoretical: the AP fined Uber €290 million over transfers of driver data to the US without adequate safeguards. A customer database with no field for where a contact's data actually lives or who it's shared with turns that one-month window into a manual search through spreadsheets, every single time.

A Quoting Tool That Applies One BTW Rate To Everything It Invoices

Dutch BTW isn't a single number — 21% is the standard rate, but a defined list of goods and services (certain foodstuffs, books, some cultural and medical services) bills at 9% instead, and applying the wrong one on an invoice is a correction a Dutch accountant ends up making by hand. A quoting or invoicing tool hardcoded to one flat BTW percentage regardless of what's actually being billed gets this wrong in exactly the direction a bookkeeper notices first.

What Custom Web Application Development Covers For A Dutch Client

A Dutch business usually outgrows WordPress or Shopify in three places at once, and all three are legal rather than technical. SkilledDesk works as a full-stack web development agency for the Netherlands, with iDEAL and BTW handled in the data model from sprint one. A cookie banner fires tracking scripts before anyone has opted in. A customer database with no way to answer a recht-op-inzage request inside the AVG's one-month deadline. And a quoting tool that bills each line at the same BTW rate whatever is being sold. When one of three bolted-on plugins breaks, there is rarely a clear answer about whose responsibility that is. Three parties can each point at the other two, and none of them owns the fix. What removes that ownership gap is one custom application built on React and Node, with every requirement living in the same database from the start. All three then stay consistent by design.

It is the architecture SkilledDesk already runs for clients in 13 other countries. Working with the Dutch market means designing that database against the AVG from the first architecture conversation. That covers prior-opt-in-gated script loading for the Telecommunicatiewet, a data model that can answer a subject-access or erasure request inside the statutory one-month window, and BTW applied at the correct rate per line item rather than one flat percentage across the invoice. All three, one schema. A signed verwerkersovereenkomst comes as standard. Calls land inside whichever slice of the day overlaps with the US. Everything else runs async, the same rhythm already in place for SkilledDesk's clients elsewhere in Europe.

FAQ

What Dutch Clients Ask First

The AVG, the Netherlands' implementation of GDPR and formally the Uitvoeringswet AVG, is enforced by the Autoriteit Persoonsgegevens. That is not a light-touch regulator. The AP fined Uber €290 million for sending driver data to the US without adequate safeguards, and later issued a further penalty of nearly €825 million over automated driver deactivation. Those sit among the largest GDPR penalties anywhere in the EU. A recht op inzage or recht op vergetelheid request has to be answered within one month of filing. That only works if the data model already tracks where each contact's data lives. We architect that in from the first sprint, not after a request arrives that the system cannot answer on time.
BTW is not a single line to add at the end. The standard rate is 21%, but a defined list of goods and services bills at 9% instead, and which one applies depends on what is actually being invoiced. What sets the underlying number is how many user roles, integrations and dashboards the build carries. A single-feature booking tool sizes up quickly on the discovery call. A multi-role platform with billing and permission tiers takes a longer scoping conversation. Either way, what comes back is one itemised EUR quote with the correct BTW rate applied per line. Ours opens at $1,199, invoiced in euro, with iDEAL and BTW handling scoped at the start rather than discovered halfway through the build.
The Telecommunicatiewet requires real prior opt-in before a non-functional cookie loads at all. Not a banner that displays a choice while analytics or ad-tracking scripts fire in the background regardless of what gets clicked. The Autoriteit Consument & Markt enforces this specifically, separate from the AVG's own data-protection rules. The consent-gating logic goes into the page's script-loading order from the first build. Nothing tracking-related runs before a genuine opt-in lands.
Article 28 of the AVG requires one whenever a business hands customer data to an outside developer to process on its behalf. Plenty of freelancers and smaller shops never get around to signing one, which leaves the client fully exposed as the data controller if something goes wrong on the processor's end. SkilledDesk signs a proper verwerkersovereenkomst as a standard part of each Dutch engagement. It spells out exactly what data gets processed, how, and for how long, before any development work starts.
What drives this number for a Dutch build is not role count on its own. It is how many separate AVG compliance workflows the application has to support end to end. A tool that only needs basic consent logging ships fastest. Add a self-service data-export flow for recht-op-inzage requests, an automated erasure workflow, and a retention-schedule engine on top. Each is a separate piece of logic to design and test. We map that workflow count on the discovery call before committing to a delivery date.
The build uses React, Next.js, Node.js, TypeScript, and PostgreSQL or MySQL for storage. Deliberately common, widely taught tools rather than anything proprietary. A Dutch business that later wants to bring development in-house is not stuck relying on the original builder either. Any developer familiar with this stack can pick up the codebase directly, with no reverse-engineering phase first.
Central European Time runs five to six hours ahead of the US East Coast, depending on the time of year. That is a real but genuinely workable overlap late in the Dutch afternoon. Dutch business communication also leans toward direct, written updates over meetings called just to check in. That fits an async-first process better than it fights it. Scheduled calls land inside that overlap window when a live discussion is needed. Everything else moves on async documentation and same-day bug triage, the same standard already running for clients in 13 other countries.
Article 28 of the AVG requires a signed verwerkersovereenkomst whenever customer data reaches an outside developer. Plenty of local freelancers and smaller shops simply never produce one, which leaves the client as the exposed data controller if anything goes wrong on the processor's side. Each SkilledDesk engagement includes a properly signed one as standard. Alongside it comes an itemised EUR quote with the correct BTW rate per line. The founder runs the project directly from architecture through handoff. Real client applications sit open on the portfolio to check first.

A Standard, Not A Mode For One Market

Most of our client base already sits inside the EU, so an AVG-level compliance bar is the baseline rather than a Dutch special case. The builds are on the portfolio.
See Our Full Portfolio

When No-Code Stops Being Enough

Neither tool is wrong. A no-code builder or a WordPress theme does a perfectly good job on a straightforward brochure site in the Netherlands, or anywhere else for that matter. Pushing logic into the wrong layer is where builds go sideways. A cookie-consent flow that actually gates tracking scripts behind a genuine opt-in. A data-subject-request workflow that can answer inside the AVG's one-month deadline. Or an invoicing engine that applies the correct BTW rate by what is being sold, instead of one flat default. A marketplace plugin can fake any one. It stays a rental. The subscription falls due every month for as long as the site exists. It keeps falling due whether or not the plugin stays maintained. Ownership flips on a custom build, because the codebase belongs to the client from day one and keeps belonging to them whatever happens to any vendor afterwards. One itemised EUR quote covers it, with the correct BTW rate applied per line, and a signed verwerkersovereenkomst included as standard. The founder carries each decision from the first architecture sketch through to handoff. And whatever gets asked for next simply builds onto that same foundation, rather than stacking another plugin onto a chain it was never designed to support.

Ready To Build Past What A Template Can Hold?

Send the brief and we'll come back with the payment-integration questions answered first.

Get Free Consultation