Skip to content

--:-- IST

Case studyVerifyID · Aug 2024 to now

MitID and BankID age checks, inside the shops people already run

I've been VerifyID's CTO since the first commit. I built the platform it runs on, and it went to production the same month.

The live site

VerifyID's homepage in Danish: a blue hero with a headline about checks with MitID, two buttons, and cards for age verification, eID API, MitID door lock and KYC flows.
verifyid.dk

Fact sheet

The platform behind VerifyID's age and identity checks: the shop plugins and the Shopify app, MitID and BankID, the merchant dashboard, billing, and the API and docs.

Client
VerifyID, Denmark
Through
VerifyID
Role
CTO, full time, Denmark, remote
When
Aug 2024 to now
Who else
The platform is my build. The company is VerifyID's.
Stack
  • Python
  • Flask
  • MongoDB
  • React
  • PHP
  • Shopify
  • Next.js
VerifyIDa buyer, verified

The problem

Denmark brought in new age check rules for webshops, in force from October 2024. A shop that sells something with an age limit has to know the buyer is old enough, and the way people in Denmark prove who they are online is MitID.

VerifyID set out to make that check one step inside the shop, using the ID people already have.

Constraints

  • It had to live inside each shop. Shops run on Shopify, WooCommerce, WordPress, PrestaShop and more, so the check had to sit in each platform's own checkout or pages, not on a separate site.
  • MitID goes through a certified broker. The platform talks to MitID through one.
  • Not every buyer has MitID. Shoppers from outside Denmark usually don't, and later Sweden and Norway meant BankID.

What changed along the way

  1. Shopify started as a script in September 2024. By November 2024 it was a Shopify app with the check inside Shopify checkout itself, listed on the Shopify App Store.
  2. A shop decides what's protected: one product, a category or the whole store. Shoppers from outside Denmark can pass where the shop allows it.
  3. In October 2024 MitID moved to a different certified broker.
  4. The first checks only answered one question: old enough? In 2026 I added full identity checks for the cases that need to know who someone is, and I rebuilt the merchant dashboard in React.

How it works

  1. A shopper reaches a protected product, page or checkout.
  2. They log in with MitID through a certified broker, or with BankID in Sweden and Norway.
  3. The shop gets the answer: old enough, or, for full identity checks, who the person is.
  4. The merchant sees the record in the dashboard, exports it, and can send a compliance certificate to the authorities if they ask how the shop checks age.
  5. Developers can do the same through the REST API or the MitID API.

Drawing

Where VerifyID plugs in

Shop platformsWordPress, WooCommerce,Shopify, PrestaShop,Wix, MagentoREST API and MitID APIdocs.verifyid.dkVerifyID platformdashboard, certificates,partner panel, billingMitIDDenmark, age or fullidentityBankIDSweden and Norway
  1. Shop platforms

    WordPress, WooCommerce, Shopify, PrestaShop, Wix, Magento

    • leads to VerifyID platform
  2. REST API and MitID API

    docs.verifyid.dk

    • leads to VerifyID platform
  3. VerifyID platform

    dashboard, certificates, partner panel, billing

    • leads to MitID
    • leads to BankID
  4. MitID

    Denmark, age or full identity

  5. BankID

    Sweden and Norway

Left and middle: what I built. Right: the national eIDs it connects to.

Results

  • The check runs inside Shopify, WooCommerce, WordPress, PrestaShop, Wix and Magento, and through the REST API and the MitID API, with MitID in Denmark and BankID in Sweden and Norway.
  • The platform, and every email it sends, works in Danish, English, Swedish and Norwegian.
  • VerifyID was named Identity Week Europe Start-up of the Year 2026.

Every release, by date, on the VerifyID page

PermissionThis page uses my own work and what VerifyID publishes. It names no customers and carries no figures.