Skip to content

Magento 2

VAT, postcode and street lookups are free and need no key. The optional KvK lookup needs your own KvK API subscription, billed by KvK (about €6.20 per month in October 2026; the optional full address costs about €0.02 per lookup).

Selling to Dutch and Belgian businesses? Let them type a VAT number and the rest fills itself in.

The extension checks the VAT number the way customers actually type it (with or without country code, spaces or dots), first offline and then with VIES, the EU VAT register. For Dutch and Belgian companies it fills in the registered company name and address. Dutch addresses come from postcode + house number (PDOK, the Dutch government address register); Belgian streets are suggested from the postcode (BeST), in Dutch or French.

Customers are never punished for a slow government service: when VIES is down, the order goes through and the number is flagged for you. Nothing the customer typed is overwritten without asking, and every filled field stays editable. Magento’s own VAT validation (automatic customer groups) uses the same check, so a VIES outage no longer moves a customer to the wrong group.

For Dutch B2B shops, the extension can also look up the KvK number (Dutch Chamber of Commerce) with your own KvK API key. Try it first in the free KvK test environment.

In the admin you see the VAT and KvK status on every customer and order, a lookup log that explains each lookup in plain words, a “Test connection” button for each source, and the KvK calls of the month.

Works on registration, the address book and the checkout (also guest checkout), on Luma and on the free Hyvä theme.

  • VAT check with VIES for all EU countries, offline checksum first (NL post-2020 numbers included)
  • Autofill of company name and address from VIES for NL and BE
  • Free Dutch postcode + house number lookup (PDOK), with addition picker and manual entry
  • Free Belgian street suggestions and address check (BeST), Dutch/French street names, province from the postcode
  • Optional KvK number lookup with your own key; free test environment
  • Never blocks checkout when VIES is down: accept and flag (or reject “not registered”, your choice)
  • Magento’s VAT validation and customer group assignment use the same check: an outage is never “invalid”
  • VAT/KvK status, date, source and VIES request ID on customer, address and order
  • Lookup log grid with filters and plain-language reasons; “Test connection” per source; KvK call counter
  • “Copy diagnostics” for fast support, without keys or customer numbers
  • Server-side re-check on every customer and address save and at order placement
  • Luma and the free Hyvä theme (with Hyvä’s Luma checkout fallback)
  • Accessible: keyboard-operable suggestion lists, no premature error messages
  • Storefront in Dutch, French, German and English
  • Settings per website and store view
  • No licence key, no phone-home, no locked features
  • Without KvK: {PRICE_BASE} (only if the owner lists a base edition; P-13 prefers one product)
  • With KvK lookup (the whole extension): {PRICE_WITH_KVK}
  • Updates and support: {SUPPORT_UPDATE_WINDOW}

One purchase covers the whole extension, including KvK lookup; there is no licence key and no locked feature. No free trial: the Adobe Commerce Marketplace’s refund rules apply (P-15). Option A one-time + yearly renewal, option B Marketplace subscription: owner decides at listing.

Item Supported
Magento Open Source 2.4.7 (tested 2.4.7-p10), 2.4.8 (tested 2.4.8-p5), 2.4.9
Mage-OS 3.6.0
Adobe Commerce same code base, not tested by us
PHP 8.2, 8.3, 8.4
Storefront theme Luma; free Hyvä theme 1.5.3 with Hyvä’s Luma checkout fallback (hyva-themes/magento2-luma-checkout)
Not supported in 1.0 Hyvä Checkout (Magewire), planned for 1.1; GraphQL lookups and headless storefronts
Storefront languages English (en_US), Dutch (nl_NL), German (de_DE), French (fr_BE)
Network outgoing HTTPS from your server to VIES, PDOK, BeST and (optional) KvK

Run the commands in your Magento root as the user that owns the files.

From the Adobe Commerce Marketplace (uses your repo.magento.com access keys):

composer require codesaur/module-company-autofill

Or from the zip file codesaur-module-company-autofill-1.0.0.zip: put it in a folder that stays on the server, register that folder as a Composer artifact repository and require the package:

composer config repositories.codesaur-autofill artifact /path/to/dir-with-zip
composer require codesaur/module-company-autofill
bin/magento module:enable Codesaur_CompanyAutofill
bin/magento setup:upgrade

In developer mode, run setup:upgrade without --keep-generated.

In production mode, compile and deploy the static files next (use the locales of your store views):

bin/magento setup:di:compile
bin/magento setup:static-content:deploy nl_NL en_US de_DE fr_BE

Then, in every mode:

bin/magento cache:flush

Do not skip the static content step. Magento 2.4.7 and later protect the checkout scripts with integrity (SRI) hashes stored in sri-hashes.json. The extension adds to requirejs-config.js; with the old hashes the browser blocks that file and the checkout hangs on the loading spinner.

  1. Run bin/magento hyva:config:generate. It registers the extension’s Tailwind sources for your theme.
  2. If your Hyvä theme is built from source, rebuild its CSS: npm ci && npm run build in the theme’s web/tailwind folder. Then deploy static content again in production mode.
  3. Keep Hyvä’s Luma checkout fallback (hyva-themes/magento2-luma-checkout) for the checkout. The extension works there like on Luma. Hyvä Checkout (Magewire) is not supported in version 1.0.
  1. Open Stores > Configuration > codesaur > VAT & Company Autofill.
  2. In Connection test and support, click Test connection for VIES, PDOK and BeST. Each should show OK with a response time.
  3. To show the VAT field on the storefront, set Stores > Configuration > Customers > Customer Configuration > Create New Account Options > Show VAT Number on Storefront to Yes (a Magento setting).
  4. Optional: try KvK in the test environment (section 6).
composer update codesaur/module-company-autofill
bin/magento setup:upgrade

Then, as in 3.2: production mode setup:di:compile and setup:static-content:deploy; cache:flush; on Hyvä 3.3.

Stores > Configuration > codesaur > VAT & Company Autofill. Every setting can be set per website and per store view. The defaults work without any key.

Setting What it does Default
Check VAT numbers in VIES Checks VAT numbers and fills company name and address. Also used by Magento’s own VAT validation. Yes
When VIES says a number is not valid Accept the order and flag the number, or Reject the number. An outage is never treated as “not valid”. Accept and flag
Fields autofill may fill Company, street and house number, postcode, city, country all
Dutch postcode lookup (PDOK, free) Postcode + house number gives street and city Yes
Belgian address lookup (BeST, free) Postcode gives street suggestions; address check Yes
Ask for the business address at registration Shows company, VAT number and address on the registration form Yes
Check NL/BE postcode format Rejects postcodes in an impossible format Yes
Setting What it does Default
KvK lookup Off; Test environment (fictional companies); Production (your own API key) Off
Your KvK API key Shown in production mode. Stored encrypted; never shown again after saving. empty
KvK number field Automatic (optional when KvK lookup is on), Hidden, Optional, Required for companies Automatic
Fetch the full address (Basisprofiel, about EUR 0.02 per lookup) Off: free Zoeken lookup (name, street, city). On: also postcode and house number, paid per call on your KvK key. No

This group also shows the How to get a KvK API key guide and the KvK calls counter (section 6).

Setting Default
Lookups per visitor (IP) per minute 40
Lookups per visitor (IP) per day 1000

A visitor over the limit gets “too many lookups” (HTTP 429) until the minute or day is over. The visitor’s IP address is never stored, only a hash.

Setting Default
Keep a lookup log Yes
Keep log entries for (days, max 180) 30

A daily cron job deletes older entries. Magento’s cron must run.

Base URL per source (VIES, PDOK, BeST, KvK) and the request timeout. Leave the URLs empty to use the official services. Only change these when support asks you to.

  • Test connection: one button per source (VIES, PDOK, BeST, KvK). It uses the saved settings of the scope selected at the top of the page and bypasses the cache and the circuit breaker. It shows OK with the response time, or the failure in plain words. Save your settings before testing.
  • Copy diagnostics: builds a support report, shows it in a text box and copies it to the clipboard (section 9).

Reports > VAT & Company Autofill > Lookup log.

A grid of every lookup, newest first, with a filter on every column except the reason (Filters button above the grid).

Column Meaning
ID the log entry number
Time when the lookup ran (shown in the admin’s time zone)
Store view ID the store view it ran in
Source VIES, PDOK, BeST or KvK
Where where the lookup ran: storefront (a form field), registration, account, address, order
Masked input the number or postcode, partly hidden
Result Valid, Not registered, Wrong format, Could not be checked (service busy or down), Found, Not found, Several matches
Error code the technical code, for support
Reason what happened, in plain words
From cache Yes when the answer came from the cache, without a call

Access is controlled by the ACL resource Lookup log (System > Permissions > User Roles).

Customers > All Customers > edit, tab VAT & Company Autofill: VAT number, VAT status, checked at, source, VIES request ID, KvK number, KvK status, checked at. For each saved address: the same fields plus the address check.

Sales > Orders > view, block VAT & Company Autofill in the order’s information section: the VAT status at order time, VAT number, checked at, source, VIES request ID, KvK number, KvK status and checked at, and the status of the billing address. These values are copied when the order is placed and do not change later.

Status Meaning Effect
Valid VIES confirms the number accepted
Not registered (invalid) VIES says the number is not active accepted and flagged, or rejected (your setting)
Wrong format wrong length or check digits rejected; no call is made
Could not be checked VIES or the national register is busy or down always accepted and flagged

KvK does not allow a shared key and does not allow KvK data to be passed between shops. KvK lookups therefore use your own KvK API subscription, billed by KvK to you.

  • Test environment. Set KvK lookup to Test environment (fictional companies). No key needed. Use KvK’s fictional test companies, for example KvK number 68750110.
  • Production. Request a key at KvK’s developer portal (developers.kvk.nl) or order the KVK API on kvk.nl. Prices: developers.kvk.nl/pricing. Paste the key in Your KvK API key, set KvK lookup to Production, save, and click Test connection for KvK.
  • What the free lookup returns. The KvK Zoeken lookup (free per call) returns the company name, street and city, but no house number and no postcode.
  • Full address. Turn on Fetch the full address. The extension then also calls the Basisprofiel (about €0.02 per call, charged by KvK on your key) for postcode, house number and addition.
  • KvK calls counter. The KvK group shows the calls of this month and of previous months, per kind: zoeken (free), basisprofiel and vestigingsprofiel (paid). Compare it with your KvK invoice.
  • Where KvK data is shown, the storefront shows the required KvK notice: always consult the Handelsregister for current information with legal effect.
  • A VAT field (Magento’s own) with a check while they type. A valid NL or BE number fills company name and address.
  • For the Netherlands: house number (and addition) fields next to the postcode; street and city are filled in.
  • For Belgium: street suggestions after the postcode; the province is selected.
  • An optional KvK number field (Netherlands).
  • Messages appear only after the customer has typed something. A VIES outage shows that the check is paused; the customer can continue.
  • Works on the registration form, the address book and the checkout (also as a guest).
  • Data goes only to the official sources: the VAT number to VIES (European Commission), postcode and house number to PDOK (Kadaster, Netherlands), postcode and street to BeST (Belgian federal government), the KvK number to KvK with your own key.
  • All calls go from your server. The storefront loads no third-party scripts and sets no third-party cookies.
  • No data is sent to codesaur.
  • Your KvK key is stored encrypted on the server and never sent to the browser.
  • The lookup log stores masked input only and is deleted after 30 days by default (at most 180 days).

We support the extension, not your hosting or server setup.

Ask through the support contact on the extension’s Adobe Commerce Marketplace page. Please include the diagnostics report:

  1. Go to Stores > Configuration > codesaur > VAT & Company Autofill > Connection test and support.
  2. Click Copy diagnostics. The report appears in a text box and is copied to the clipboard.
  3. Paste it into your message.

The report is always in English and contains: extension version, Magento edition and version (or Mage-OS), PHP version, deploy mode (developer, production or default), storefront theme per store view (Luma, Hyvä or other, with the theme code), store view, KvK mode and whether a key is saved (yes or no only), a summary of the settings, the endpoints (default, or the custom host only), the health of each source (checked live, in ms), the circuit breaker states, the KvK calls of this month and the last 10 failed lookups (masked). It ends with the line “This report contains no API keys, passwords or full customer numbers.”

The checkout hangs on the loading spinner after installing or updating. Magento 2.4.7+ blocks the changed requirejs-config.js because the stored SRI hashes (sri-hashes.json) are old. Production mode: run bin/magento setup:static-content:deploy for your locales, then bin/magento cache:flush. Developer mode: run bin/magento setup:upgrade without --keep-generated.

The fields look unstyled on a Hyvä theme built from source. Run bin/magento hyva:config:generate, then rebuild the theme CSS (npm ci && npm run build in the theme’s web/tailwind) and deploy static content.

“VAT check paused” or “could not verify”. VIES or the national register is busy or down. This never blocks the customer: the number is accepted and flagged with “could not be checked”. Click Test connection for VIES and look at the Lookup log. If every test fails, your server cannot reach the internet over HTTPS (firewall, proxy, blocked outgoing traffic): ask your hosting provider.

The KvK lookup fills no house number or postcode. The free KvK Zoeken lookup does not return them. Turn on Fetch the full address (paid per call on your KvK key).

The KvK lookup does not work in production. Production mode needs your own KvK API key. Paste it, save, and click Test connection for KvK. Without a key the KvK field stays hidden.

“Too many lookups” (HTTP 429). A visitor reached the limit. Raise Lookups per visitor (IP) per minute or per day in Abuse protection. Many shoppers behind one office IP can need a higher limit.

On Hyvä: “Zip/Postal Code field is required” right after the autofill changed the country. This is Hyvä’s own form validation reacting to the country change, not an error of the extension. It disappears once the postcode is filled.

No postcode or street suggestions. Check that the Dutch or Belgian lookup is on for this store view, flush the cache, and click Test connection for PDOK or BeST.

Keep the data (default): bin/magento module:uninstall Codesaur_CompanyAutofill (Composer installs), or bin/magento module:disable Codesaur_CompanyAutofill. Statuses on customers and orders, the lookup log and the settings stay in the database.

Remove the data: bin/magento module:uninstall --remove-data Codesaur_CompanyAutofill. This drops the extension’s tables, columns, attributes, settings and cron entries. Make a database backup first.

After either, run bin/magento setup:upgrade and, in production mode, setup:di:compile and setup:static-content:deploy, then bin/magento cache:flush.

No. VIES, PDOK and BeST are free public services. Only the KvK lookup needs your own KvK API key; the KvK test environment works without one.

The Netherlands and Belgium: VAT check with company autofill, Dutch postcode + house number lookup and Belgian street suggestions. The VAT check itself works for every EU VAT number.

The customer can continue. The order and the customer are marked “could not be checked”, and you see it on the order, on the customer and in the lookup log.

Only if you switch on the VAT exemption (reverse charge) for valid intra-EU business customers. It is off by default. You decide the VAT treatment of your sales.

Not for the plugins you install on your own server (Shopware, WooCommerce, Magento, PrestaShop): they talk directly to the public services. The hosted apps (Shopify, Lightspeed) run on our server in the EU, as your processor. See external services and the privacy policy.