With every paid order
As soon as Commerce marks an order as paid, PeppolKit makes the invoice, numbered in sequence, and emails it to your customer. Your checkout does not wait for it.
PeppolKit
A module that fits how you already run Drupal. Every paid order gets an invoice with the right VAT, business customers receive it over Peppol, and a refund is followed by its credit note automatically.

As soon as Commerce marks an order as paid, PeppolKit makes the invoice, numbered in sequence, and emails it to your customer. Your checkout does not wait for it.
PeppolKit
Belgian shop? Every invoice to a business customer also goes out as an e-invoice over the Peppol network. Included in every plan, with no cost per send.
When you refund all or part of a payment in Commerce, PeppolKit makes the credit note for the original invoice and sends it to your customer.
Commerce has a VAT number field on the customer profile. Put it in your checkout and PeppolKit checks the number in VIES and puts it on the invoice.
Unpack the zip in modules/custom and enable the module under Extend, or with drush en peppolkit.
Under Commerce → Configuration → PeppolKit, enter your email address and click Connect. Your free account is created automatically.
Open the PeppolKit dashboard from the module: company number, VAT number and logo. One button also invoices the paid orders of the last 60 days.
Four screens from the PeppolKit dashboard for your Drupal shop, with what each one shows.

PeppolKit checks business VAT numbers in the EU register (VIES) and applies the rule: reverse charge, OSS for EU consumers, or 0% on exports.

Belgian shop? Every invoice to a business customer goes over Peppol through our partner SUPER PDP. On every plan, the free one too.

Every invoice is tested against the official EN 16931 and Peppol BIS 3.0 rules. Only an approved invoice goes over Peppol. If one fails, you see which rule and why.

Six PDF designs with your logo and brand colour. Dutch, French or English, chosen per customer.
To try it out, or for a shop with the odd business customer.
€0 / month
Start freeFor a webshop that sells to businesses now and then.
€9 / month
Start freeFor shops that sell to businesses every week.
€19 / month
Start freeFor high volumes and lots of Peppol traffic.
€49 / month
Start freeFor a Belgian shop, invoices to businesses go over Peppol automatically, with no cost per send. Consumers get their invoice by email; it counts as an invoice, but never goes over Peppol. Credit notes for refunds are included.
Shop in the Netherlands? You have no Peppol obligation. If you sell to Belgian businesses, send for free through your own Peppyrus account (up to 100 a month).
Prices in euros, excl. VAT. Monthly through Mollie, cancel in your PeppolKit dashboard. There's no trial: start with the free plan. Belgian shop? Every invoice to a business goes over Peppol, included in every plan and with no cost per send.
Yes, with the PeppolKit module. Every paid Commerce order becomes an invoice that meets the European standard (EN 16931, Peppol BIS 3.0). Business customers on Peppol receive it over the Peppol network, consumers as a PDF by email. Check whether a customer is on Peppol with the free Peppol check; when it is mandatory is explained in E-invoicing mandatory in Belgium.
Drupal 10.3 or 11 with Drupal Commerce 2.40 or 3 (the Order and Payment modules) and PHP 8.1 or newer. Cron has to run, as on every Drupal site: what cannot be sent right away goes with the next cron run.
Yes, since November 2026: drupal.org/project/peppolkit. Install it with composer require drupal/peppolkit, or download the zip here and unpack it in modules/custom.
Commerce Tax has a VAT number field on the customer profile, but only shows it at checkout once you switch it on: Configuration → People → Profile types → Customer → Manage form display. PeppolKit reads the field, checks the number in VIES and puts it on the invoice.
The order as Commerce calculated it: lines, discounts, tax, shipping, the billing address and the VAT number. The key of the connection is kept in Drupal's state, not in configuration, so it never ends up in an export or in your repository.
In your PeppolKit dashboard you choose a plan and pay through Mollie, then automatically every month. The free plan has no end date and asks for no payment details.
When you refund (part of) a payment in Commerce, PeppolKit automatically creates a credit note that refers to the original invoice and sends it to your customer.
Free to install · Drupal 10.3 or 11 with Drupal Commerce