Work/HEMA/E-invoicing & Web Apps
Cloud Native Engineering

A legal deadline, and the apps behind the shop floor

B2B electronic invoicing live for Belgium and France on the day each mandate started, and a standard for the internal web apps HEMA employees work in every day.

Customer HEMA
Client HEMA
Sector Omnichannel retail
Service Cloud Native Engineering, Composable Commerce
Platform AWS
Scope E-invoicing & internal web apps
The challenge

Two deadlines set by law, and a lot of work still done in Excel

From 1 January 2026 the Belgian government requires electronic invoices for all business-to-business receipts. France follows on 1 September 2026, and the rest of the European Union after that. HEMA sells to business customers in both countries, and had no way to issue an electronic invoice.

The two countries are not one problem. Different identifiers, different mandatory fields, a different payload, a separate account on the invoicing network. France is stricter than Belgium.

In parallel, HEMA employees were running core processes on spreadsheets. Product specifications were assembled by print-screening PDFs into Excel, a hundred articles or more per project. The range calendar for every shelf, store and country lived in one Excel file covering two years.

Every new internal app also meant starting the infrastructure discussion again. HEMA needed one approved way to build them.

HEMA shop floor
HEMA shop floor. The range calendar decides what sits on which shelf, in which week, in which country.
What we did

Two workstreams, one team

First the invoicing system, because the date was set by law. Then the template that the internal web apps are built on, and the apps themselves.

01 · E-invoicing
01

Split it in two

A front end where the business customer enters the receipt, and a back end that holds the business logic and talks to the invoicing platform. Two applications, one flow.

02

Belgium first, by 1 January

A two-step form: business details and receipt search, then a success page. The receipt is validated against HEMA’s own purchase data before an invoice is created.

03

Then France, on the same API

Four steps, a second set of identifiers, a separate account on the invoicing platform and a different payload. The front end still calls one API. The country code decides the rest.

04

Listen for returns

A purchase produces an invoice, a return produces a credit note. A Kafka event triggers the handler, and the credit note is generated without anyone asking for it.

05

Watch the cents

HEMA’s purchase data service totals to two decimals, the invoicing platform to five. We moved to five decimals and monitor every invoice for what is left. Above half a cent, finance gets an email.

02 · Web Apps
01

Get one standard approved

A mono repo with front end and back end together, hosted zones and DNS, Azure AD single sign-on, and the whole thing signed off by HEMA’s standards process.

02

Build the next app

The first app on the template handles product specifications. Same infrastructure, same components, no new discussion about how to host it.

03

Take the manual step out

Enter an article number, the app finds the PDF in SharePoint and decomposes it: images, text, attributes, all into the article record. The user checks it instead of rebuilding it.

04

Then the range calendar

Same template, same tech. A range calendar with real data instead of a two-year spreadsheet, with requests and approvals for when a product goes on a shelf.

The result

Compliant on both dates, and one way to build the next app

8.000+
Electronic invoices issued in Belgium since the mandate started
2
Countries live, each on the first day its mandate applied
0,5 ct
Threshold above which finance is alerted on a rounding difference. Residual runs at 0,01
3
Internal web apps on one approved template, the third in build

The next country is a country code, a set of identifiers and an account. The next internal app is a copy of the template. HEMA is presenting the standard at its own Digital Days.

What runs today

Five things in production or on their way

Live

E-invoicing Belgium

Since the mandate started on 1 January 2026. One identifier per customer: VAT, CBE or GLN.

Live

E-invoicing France

Deployed for the 1 September 2026 deadline. Multiple identifiers per customer: VAT, SIREN, SIRET, CBE, and a check on network registration.

Approved

The app template

A standardised mono repo signed off through HEMA’s standards process, reusable for every internal app that follows.

In testing

Product specification app

Designer groups are testing it now. Up to fifty images decomposed from a single PDF, and around a hundred PDFs handled at once.

In build

Range calendar app

Which product sits on which shelf, in which week, in which store and country. Requested and approved in the app instead of argued over in Excel.

The e-invoicing flow, from transaction to submitted PSF filing.
What we delivered

The systems, and the standard under them

Self-service invoicing for business customers

Enter the receipt details, have them validated against HEMA’s purchase data, receive a compliant electronic invoice. Two steps in Belgium, four in France.

One back end, per-country routing

Node.js on AWS Lambda. Validation and creation APIs, separate accounts, keys and party IDs per country, and the payload mapping each one requires.

Credit notes on returns

A Kafka topic carries the event, a Lambda handler picks it up and generates the credit note.

Rounding monitor with alerting

A DynamoDB stream listener recalculates both totals per invoice and emails HEMA’s finance team when the difference passes half a cent.

The internal app template, and the apps on it

An approved mono repo with front end, back end, DNS and single sign-on, plus the product specification app and the range calendar built from it.

Carsten Klomp, Brighting

“A legal deadline does not move. You either issue the invoice on the first day, or you do not sell to business customers that morning.”

Carsten Klomp, Brighting
What we brought

Engineers inside HEMA’s landscape, not next to it

We work in HEMA’s own design system, its cloud accounts and its standards process. That is why a regulatory deadline and an internal app can be handled by the same team.

Compliance treated as engineering

Two mandates read, two identifier sets mapped, one API kept stable. The country code is where the difference lives, so the next country is configuration and a payload, not a rewrite.

Third parties handled honestly

We cannot change how a vendor rounds a total. We can recalculate it, set a threshold, alert the people who care, and document what is out of our hands for whoever picks it up next.

Build the first one twice as well

Two weeks went into the OpenNext and CloudFront setup, among the first at HEMA. Every internal app since has started from it.

Next.js & React OpenNext on CloudFront Tailwind HEMA Design System Node.js & TypeScript AWS Lambda DynamoDB streams Kafka Azure AD SSO SharePoint Billit Peppol network

More of our work

All cases →
ASICS

Full readiness assessment for AI scalability across 42 capabilities

42 capabilities scored · 2-week assessment
ASICS

Eight weeks from signing to the first agent live

8 weeks to first agent live
HEMA

Real-time pricing on every shelf, in every store

800+ stores live · 4-year partnership

Which country is next on your list?

Tell us where you sell business to business and what your invoicing runs on today. We will tell you what compliance takes.

+31 20 210 13 90 info@brighting.nl Grasweg 183, 1031 HX Amsterdam