A Danish B2B checkout, from one CVR number.

When a company customer enters their CVR number, the company name, address, postcode and city are filled in from the public Danish CVR register. CVR numbers are checked, EU VAT numbers can be checked against VIES, and public-sector buyers get an EAN/GLN field.

CVR autofillModulus-11 checkEU-VAT via VIESEAN/GLN and P-numberClassic checkout + Checkout BlocksHPOS ready

Free and fully functional, with no payment and no external account. The CVR lookup uses the free cvrapi.dk tier, which needs no key, and results are cached on your server.

8

digits, checked against the official modulus-11 checksum — then the register fills in the rest.

🏢
The company, filled inName, address, postcode and city from the public CVR register.
🇪🇺
EU VAT, checkedOptional validation against the European Commission’s VIES service.
🏛️
Ready for public-sector ordersEAN/GLN with check-digit validation, plus an optional P-number.

Why CVR Checkout for WooCommerce

One number instead of five fields

A company customer types their CVR number and the company name, address, postcode and city arrive from the public Danish CVR register. Fewer typos on the order, and less for the buyer to fill in.

Both checkouts, one plugin

The classic shortcode checkout and the new Checkout Blocks are both supported, the blocks through the Store API’s additional checkout fields, and it is compatible with High-Performance Order Storage.

It stays on the order

CVR, company, EAN and VAT are saved on the order and shown on the admin order screen, in the order emails and in the customer’s own order view — and they are included in WooCommerce’s personal-data export and erasure tools.

Everything you need — included, free

No "Pro" tier, no nag screens. The features other plugins paywall are here from day one.

🏢
CVR autofill

Enter a CVR number, get the company name and address filled in automatically from the public Danish CVR register.

🔢
CVR validation

8-digit format and the official modulus-11 checksum.

🇪🇺
EU-VAT validation (VIES)

Optional: validate non-Danish EU VAT numbers against the European Commission’s VIES service.

🏛️
EAN/GLN and P-number

An optional 13-digit GS1 location number with check-digit validation for public-sector orders, plus an optional P-number field.

🔀
B2C + B2B, or B2B only

Choose the mode, and make the CVR field required or optional.

🧾
Stored on the order

Shown in the admin order screen, the order emails and the customer’s order view.

🧱
Classic and Checkout Blocks

Both supported, the blocks through the Store API’s additional checkout fields.

⚡
HPOS compatible

All order data is read and written through the WooCommerce order API, so it works with legacy storage and High-Performance Order Storage alike.

💾
Lookups cached

Results are cached on your server, so repeated lookups of the same number do not leave your site and stay inside the free cvrapi.dk tier.

Requirements

6.0+WordPresstested up to 7.0
7.4+PHP
GPLv2+License
3Languages

FAQ

Is the free version fully functional?

Yes. The CVR checkout, validation, VIES and EAN/GLN features all work without any payment or external account.

Does it work with the new block checkout?

Yes. It registers additional checkout fields through the WooCommerce Store API and also fully supports the classic shortcode checkout.

Is it HPOS compatible?

Yes. All order data is read and written through the WooCommerce order API, so it works with both legacy storage and High-Performance Order Storage.

Where does the company data come from?

From the public Danish CVR register via cvrapi.dk. Only the 8-digit CVR number the customer entered is sent — no name, email, address or payment data.

Do I need an API key?

No. The free cvrapi.dk tier (50 lookups a day) needs no key. Lookups are cached to stay within that limit.

Is anything paid?

Not in this plugin. A separate, optional paid service is planned on plugins.lynbro.dk for server-side order-to-invoice synchronisation with Danish accounting systems (e-conomic, then Dinero and Billy). It would only add automation; every checkout feature above works on its own.