Title: POP – E-invoicing for Belgium
Author: POP
Published: <strong>November 2, 2026</strong>
Last modified: November 2, 2026

---

Search plugins

![](https://ps.w.org/pop-e-invoicing-for-belgium/assets/banner-772x250.png?rev=3779533)

![](https://ps.w.org/pop-e-invoicing-for-belgium/assets/icon-256x256.gif?rev=3779575)

# POP – E-invoicing for Belgium

 By [POP](https://profiles.wordpress.org/popdev/)

[Download](https://downloads.wordpress.org/plugin/pop-e-invoicing-for-belgium.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/pop-e-invoicing-for-belgium/#description)
 * [Reviews](https://wordpress.org/plugins/pop-e-invoicing-for-belgium/#reviews)
 *  [Installation](https://wordpress.org/plugins/pop-e-invoicing-for-belgium/#installation)
 * [Development](https://wordpress.org/plugins/pop-e-invoicing-for-belgium/#developers)

 [Support](https://wordpress.org/support/plugin/pop-e-invoicing-for-belgium/)

## Description

#### Turn your WooCommerce orders into Belgian e-invoices: generate the structured UBL XML and a PDF copy for free, then send them over the Peppol network.

POP collects the fiscal data at checkout, builds the invoice from each order, handles
numbering, VAT treatment and credit notes, and transmits the structured document
over Peppol, all from one WordPress workflow, with free and paid plans.

This edition is set up for Belgium: the shop country is fixed to Belgium and the
delivery channel is Peppol.

#### The Belgian B2B mandate

Since January 1st, 2026, structured electronic invoicing over Peppol is mandatory
for domestic B2B invoices between VAT-registered businesses established in Belgium.
POP turns each WooCommerce order into the required structured document and sends
it through the network.

#### Get started without an account

Install the plugin and start generating compliant UBL XML and PDF invoices right
away, at no cost, with no account and no setup step required. A free monthly generation
allowance is included out of the box.

When you’re ready to send documents over Peppol, a short setup wizard built into
the plugin guides you through connecting your free POP account, right inside your
WordPress admin.

Every plan, including Free, can send over Peppol. Your plan sets your monthly credit
allowance, not which features you can use.

#### After you install

 1. Generate UBL XML and PDF invoices from your orders straight away, without an account,
    within the free monthly allowance.
 2. When you want to send over Peppol, a short wizard connects a free POP account: 
    email, one-time code, company details.
 3. Your first invoice reaches the recipient over Peppol from the same screen.

#### Who this is built for

 * Belgian WooCommerce stores that need every B2B order to become a Peppol invoice
 * Stores selling B2B that need VAT treatment, reverse charge and Peppol identifiers
   handled at checkout
 * Agencies and developers running invoicing for Belgian WooCommerce stores

#### Core features

 * Automatic structured e-invoice generation in UBL XML for completed orders
 * Branded PDF invoice copy with custom logo and footer text
 * Manual PDF and XML download from the order and document management screens
 * Credit note generation in XML and PDF, on any plan including Free
 * Custom invoice numbering with prefix, suffix, digit length and yearly reset
 * Progressive numbering for invoices and credit notes
 * Checkout fields for VAT number, company details and Peppol identifier
 * VAT number validation at checkout, where supported
 * VAT treatment, exemption and reverse-charge configuration with VIES validation
 * Automatic blocking of zero-total invoices
 * Option to exclude zero-value line items from invoices
 * Invoice search and filters by date, type, order status, invoice number and order
   ID
 * Automatic PDF invoice email delivery
 * HPOS-ready WooCommerce invoice and document management
 * No limit on the number of WordPress installations

#### Transmission network

 * [Peppol](https://popapi.io/integration/peppol/) for Belgian and EU B2B interoperability,
   where enabled

POP supports B2B e-invoicing use cases. B2G use cases are not currently supported.

#### Integrations

 * [WooCommerce](https://wordpress.org/plugins/woocommerce/) / WooCommerce Subscriptions/
   WooCommerce HPOS
 * [Paid Memberships Pro](https://paidmembershipspro.com/) / [Paid Member Subscriptions by Cozmoslabs](https://www.cozmoslabs.com/wordpress-paid-member-subscriptions/)
 * [Make / Zapier / Webhook automations](https://popapi.io/integration/webhook/)
 * [POP API and direct network connectors](https://popapi.io/integrations/)

#### Membership extensions

Two small extensions are bundled with the plugin, in the folders `addon/for/pmpro`
and `addon/for/cozmos`, to invoice membership payments made with Paid Memberships
Pro and Paid Member Subscriptions by Cozmoslabs. Each one loads only when its membership
plugin is active and you switch it on in the plugin’s Integrations tab. They use
this plugin’s text domain and their own PHP namespaces (`WcElectronInvoicePMPro`
and `WcElectronInvoiceCozmos`), add no service of their own, and send documents 
through the same POP service and Peppol channel listed under “External services”.

#### For developers

POP exposes a REST API, WP-CLI commands (`wp popapi invoice search|get|xml|pdf`)
and an [MCP endpoint](https://mcp.popapi.io/) for AI-assisted and scripted invoicing,
plus WordPress Abilities for automation-aware workflows. The API powers the plugin
itself; most stores never need to touch it.

#### Supported document formats

 * Structured UBL XML e-invoices
 * PDF invoice copies as human-readable representations
 * XML and PDF credit notes, on any plan including Free

#### API credits and plans

POP is available in five plans: Free, Basic, Growth, Pro and Enterprise. The Free
plan includes 10 API credits per month.

Every plan, including Free, can send over Peppol. Your plan sets your monthly credit
allowance and overquota rate, not which features you can use.

A credit is the unit used to measure credit-consuming API operations, such as generating
or validating XML or submitting a document over Peppol. Credit consumption depends
on the operation performed.

For paid features, visit: [https://popapi.io/pricing/](https://popapi.io/pricing/).

#### Supported payment methods

 * Cash
 * Bank Transfer
 * Check
 * Payment Cards
 * SEPA Direct Debit

#### Compatibility

 * WooCommerce: 9.x.x or higher, with HPOS support
 * PHP: 7.4 or higher
 * WordPress: 6.0 or higher

#### Why POP

E-commerce invoicing is becoming more structured and more connected to national 
systems. A Belgian WooCommerce store needs to collect the right fiscal data at checkout,
generate the structured UBL invoice, send it over Peppol, manage credit notes and
keep the files available for accounting or customer support.

POP was created to make European e-invoicing easier for e-commerce teams: less manual
work, fewer disconnected tools and a clearer path from order data to structured 
invoice documents.

We can’t make compliance sexy, only easier.

### External services

This plugin uses two outside services and no others: POP (`popapi.io`), the e-invoicing
service run by the developer of this plugin, and VIES (`ec.europa.eu`), the VAT 
number checking service of the European Commission. Each call below has its address,
what it does for you, what is sent and when. The plugin sends no telemetry or installation
data. Calls are made by your server, never by the browser of your visitors or staff,
and show your server’s IP address to the receiving service. Ordinary links to popapi.
io pages open only when you click them and carry no data, except the review link
below. The plugin also requests pages of your own site (loopback, described at the
end); those stay on your server.

Service provided by POP, valid for every POP call below: [Terms and conditions](https://popapi.io/terms-and-conditions/),
[Privacy policy](https://popapi.io/privacy-policy/).

#### POP: building the XML and PDF documents

Addresses: `https://popapi.io/wp-json/api/v2/create-ubl` (the Peppol UBL XML) and`
https://popapi.io/wp-json/api/v2/create-pdf` (the PDF copy).

What it does for you: POP builds the XML and the PDF copy of each invoice and credit
note. It works without a POP account, within a free monthly allowance.

What is sent: the order and fiscal data the document needs. Your company’s name,
address, VAT number, tax details, phone and e-mail; the customer’s name, company,
e-mail, postal address, VAT number and tax code; the order lines, amounts, taxes,
currency, payment method (for a bank transfer, the bank details set in WooCommerce),
dates and document number. For the PDF also the store details, the invoice and footer
texts and the web address of your logo. With them go your site’s title and address,
the plugin and WordPress versions and Live or Sandbox mode. If your POP account 
is connected, your license key is sent as well, in the request and in an `X-API-
Key` header.

When: whenever a document has to be built: you view, download or save a document(
also in bulk), a customer downloads the PDF of their invoice, the optional order
e-mails that carry the XML or PDF are sent, saving XML files to a folder is on and
an order is completed, or a WP-CLI command, the REST API or an automation asks for
a document. A failed request is repeated up to three times.

#### POP: sending over Peppol and checking delivery

Sending. Address: `https://popapi.io/wp-json/api/v2/create-ubl` with the instruction
to send the document over the Peppol network. What it does for you: POP builds the
document and delivers it to your customer over Peppol; a connected POP account is
needed. What is sent: the document data and license key described above, plus the
instruction to send. When: when you send a document from an order, or automatically
when an order reaches the status you set, after the delay in hours you set. The 
automatic job does not send a document already marked as sent.

Delivery status. Address: `https://popapi.io/wp-json/api/v2/peppol/document-get`.
What it does for you: tells you whether the document was delivered. What is sent:
your license key, the document type (invoice or credit note), the identifier POP
gave the document and your shop country (Belgium). When: only when you click the
button that checks the delivery status.

#### POP: webhook (optional)

Used only if you switch on “Enable webhook” in the Advanced settings and enter a
webhook id copied from your POP account. Address: `https://popapi.io/wp-json/api/
v2/create-ubl`. What it does for you: POP sends the document, as XML or as JSON,
to the web address of the webhook you set up in your POP account. You choose that
address (a service of your own or a third-party automation tool); the plugin and
POP do not control what that service does with the document. What is sent: the document
data and license key described above, plus the webhook id. When: when you click “
Send to Webhook” on an order, or automatically when an order reaches the status 
you chose, after the delay in hours you set, if automatic sending is on.

#### POP: setup wizard (connecting your account)

Addresses: `https://popapi.io/wp-json/api/onboarding/v1/request-otp`, `.../verify-
otp`, `.../account-setup` and `.../credentials`.

What it does for you: creates or connects your free POP account without leaving 
WordPress; needed only to send over Peppol or to use a paid plan, and it runs only
while you use it. What is sent, step by step:

 * `request-otp` (and again if you ask for a new code): the e-mail address you enter,
   the two-letter language of your site and the slug of this plugin, so we know 
   which POP plugin the account was created from.
 * `verify-otp`: the e-mail address, the one-time code you received, the platform
   name (“wordpress”) and the address of your site.
 * `account-setup` (each time you move to the next step): what you entered in that
   step (company name, VAT number, tax regime, phone and e-mail), the country (always
   Belgium in this package), the channel you activate, the consents you tick and
   the Live or Sandbox choice. The plugin also reads the form and the values already
   saved in the account, sending only the temporary token of the code step.
 * `credentials`: only that temporary token. POP answers with your license key and
   account number, which the plugin stores.

#### POP: plan, license and account settings refresh

What it does for you: keeps the plan the plugin uses, the add-ons it includes and
your account settings on popapi.io up to date. Three addresses under `https://popapi.
io/wp-json/wp-pop/v1/`:

 * `user-level` (your plan level). Sent: your license key and the plugin version.
   When: about once a month while your account is connected (when the stored plan
   information is missing or more than a month old, triggered by a page that shows
   the plan or by generating a document); right after you connect; when you save
   the license settings; and when you use “Refresh license info”. Nothing is sent
   this way before you connect an account.
 * `allowed-addon` (the add-ons your plan includes). Sent: your license key, the
   plugin and WordPress versions, and the title and address of your site. When: 
   right after you connect, when you save the license settings, and when you use“
   Refresh license info” if your plan level changed.
 * `wizard-config-get` (the account settings stored on popapi.io). Sent: your license
   key and the plugin version. When: when you use “Refresh license info” and when
   you save the Integrations tab with a connected account. If it succeeds, the plugin
   also refreshes your plan level and add-ons with the two requests above.

#### POP: review link

Address: `https://popapi.io/?reviews=add&token=` followed by your license key. Your
browser opens it only when you click “Leave a 5-star review” in the review request
on the plugin’s screens (connected account, after 14 days of use, can be dismissed).
The license key travels as an account token so the review can be tied to your account.
Nothing is sent unless you click.

#### VIES (European Commission)

Addresses: `https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl` (the
description of the service) and the service address that file names, `ec.europa.
eu/taxation_customs/vies/services/checkVatService`.

What it does for you: checks whether an EU VAT number is valid, so the right VAT
treatment (for example reverse charge) is applied to a business customer in another
EU country. What is sent: only the country code and the VAT number, typed by you
or by a customer at checkout. When: only if “Activate VIES validation” is on in 
the Advanced settings. It then runs when a business customer enters a VAT number
at checkout, when the VAT of a cart or order is worked out, when an order’s document
is built and when the order screen shows the result. The answer to the check made
while the customer types is remembered on your site (a week if valid, an hour if
not).

Service provided by the European Commission: [VIES VAT number validation](https://ec.europa.eu/taxation_customs/vies/),
[Legal notice](https://commission.europa.eu/legal-notice_en), [Privacy policy](https://commission.europa.eu/privacy-policy-websites-managed-european-commission_en).

#### Requests to your own website (loopback)

This is not an outside service. To build an XML or PDF copy, the plugin requests
a page of your own site (your site address plus the plugin’s document address, with
the order number and a security key and token) when it attaches a copy to an order
e-mail, saves the XML to a folder, or a customer downloads their PDF. These requests
do not leave your server; the document itself is built by POP, as described above.

### Third-party libraries and source code

The plugin’s own JavaScript and CSS ship in readable form: every minified file (.
min.js) of the plugin sits next to its unminified source in the same folder. The
minified third-party files below (SweetAlert2 11.26.25 and the jQuery UI 1.12.1 
theme CSS) are the unmodified upstream releases, and the source of every third-party
library is in the repository linked next to it:

 * SweetAlert2 (MIT) – assets/js/vendor/sweetalert2 and assets/css/vendor/sweetalert2–
   [https://github.com/sweetalert2/sweetalert2](https://github.com/sweetalert2/sweetalert2)
 * jQuery UI (MIT) – assets/css/vendor/jquery-ui – [https://github.com/jquery/jquery-ui](https://github.com/jquery/jquery-ui)
 * jQuery UI date picker translations, from the jQuery UI i18n files (MIT) – assets/
   js/datepicker-lang – [https://github.com/jquery/jquery-ui/tree/main/ui/i18n](https://github.com/jquery/jquery-ui/tree/main/ui/i18n)
 * NuSOAP, econea/nusoap (LGPL) – vendor/econea/nusoap, installed with Composer (
   see composer.json) – [https://github.com/econea/nusoap](https://github.com/econea/nusoap)

### Requirements

PHP: >= 7.4
 WordPress: >= 6.0

## Screenshots

[⌊Invoice list - filter and manage every invoice and credit note by type, status,
sent/not-sent and date, with bulk download of XML and CSV.⌉⌊Invoice list - filter
and manage every invoice and credit note by type, status, sent/not-sent and date,
with bulk download of XML and CSV.⌉[

Invoice list – filter and manage every invoice and credit note by type, status, 
sent/not-sent and date, with bulk download of XML and CSV.

[⌊General settings - connect your POP account, switch between Sandbox and Live environment,
and manage your company's fiscal data in one place.⌉⌊General settings - connect 
your POP account, switch between Sandbox and Live environment, and manage your company's
fiscal data in one place.⌉[

General settings – connect your POP account, switch between Sandbox and Live environment,
and manage your company’s fiscal data in one place.

[⌊Integrations - the Peppol channel with one-click activation.⌉⌊Integrations - the
Peppol channel with one-click activation.⌉[

Integrations – the Peppol channel with one-click activation.

[⌊Connection wizard, step 1 - start with just an email. Documents can already be
generated without a POP account; connecting is only needed to send them over Peppol.⌉⌊
Connection wizard, step 1 - start with just an email. Documents can already be generated
without a POP account; connecting is only needed to send them over Peppol.⌉[

Connection wizard, step 1 – start with just an email. Documents can already be generated
without a POP account; connecting is only needed to send them over Peppol.

[⌊Connection wizard, step 2 - verify your email with a one-time code.⌉⌊Connection
wizard, step 2 - verify your email with a one-time code.⌉[

Connection wizard, step 2 – verify your email with a one-time code.

[⌊Connection wizard, step 3 - enter your company details.⌉⌊Connection wizard, step
3 - enter your company details.⌉[

Connection wizard, step 3 – enter your company details.

[⌊Document numbering - configure invoice and credit note numbering: digit count,
yearly reset and suffix format.⌉⌊Document numbering - configure invoice and credit
note numbering: digit count, yearly reset and suffix format.⌉[

Document numbering – configure invoice and credit note numbering: digit count, yearly
reset and suffix format.

[⌊Advanced settings - set up reverse charge with VIES validation and per-case tax
treatment codes for EU customers.⌉⌊Advanced settings - set up reverse charge with
VIES validation and per-case tax treatment codes for EU customers.⌉[

Advanced settings – set up reverse charge with VIES validation and per-case tax 
treatment codes for EU customers.

## Blocks

This plugin provides 1 block.

 *   POP Checkout Fields

## Installation

This section describes how to install and run the plugin. 1. Upload the ‘pop-e-invoicing-
for-belgium’ folder to the /wp-content/plugins/ directory. 2. Activate **POP – E-
invoicing for Belgium** from the WordPress ‘Plugins’ page.

## FAQ

### Do I need to create an account to use POP?

No. You can install the plugin and start generating UBL XML and PDF invoices right
away, with no account and no setup step, within a free monthly generation allowance.

Creating a free POP account is only needed when you want to send documents over 
Peppol. A short setup wizard built into the plugin guides you through it, right 
inside your WordPress admin.

### Is the POP plugin free?

Yes. POP offers a Free plan that includes 10 API credits per month, and Peppol transmission
is available on it: the Free plan is not limited to a smaller feature set.

Some plugin features are included without credit consumption, while operations such
as XML generation and Peppol transmission may consume credits depending on your 
workflow. To unlock more credits, you can activate a paid plan.

### Can I automatically send invoices over Peppol?

Yes, on any plan including Free. POP can send the structured XML over the Peppol
network directly from your e-commerce workflow. Your plan determines your monthly
credit allowance, not whether you can use the network.

### Is it possible to customize invoices generated with POP?

Yes. You can customize the PDF invoice copy with your company logo and custom footer
text, and configure invoice prefix, suffix and progressive numbering.

### Does POP support invoicing for foreign customers?

Yes. POP supports EU and international B2B customers and routes the structured XML
over Peppol where the recipient is reachable. Regulatory requirements vary by jurisdiction
and transaction type; users should verify the obligations that apply to them.

### Is it possible to generate credit notes with POP?

Yes, on any plan including Free.

### What happens if I run out of credits?

 * Free plan: the service stops when credits are exhausted.
 * Paid plans: overquota is allowed, charged according to your plan’s overquota 
   rate.

You can upgrade your plan at any time to increase your monthly credit quota.

### Can I use POP only to generate XML invoices without sending them?

Yes. POP can be used for UBL XML generation and validation without network submission,
and without creating an account, within a free monthly generation allowance.

### Does the plugin offer customer support?

Yes. For support requests, contact us through the support link in the plugin or 
open a ticket from our official website.

### Does the plugin send any data on its own?

Only what the service needs. Generating a document sends that document’s data to
POP so it can build it, and connecting your account sends the details you enter 
in the setup wizard. The plugin sends no telemetry or installation data; with a 
connected account it asks popapi.io for your plan level about once a month. Everything
the plugin sends, and when, is listed in the “External services” section below.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“POP – E-invoicing for Belgium” is open source software. The following people have
contributed to this plugin.

Contributors

 *   [ POP ](https://profiles.wordpress.org/popdev/)
 *   [ Alfio Piccione ](https://profiles.wordpress.org/picaland/)
 *   [ Mirco Babini ](https://profiles.wordpress.org/mirkolofio/)
 *   [ Babini Mazzari ](https://profiles.wordpress.org/babinimazzari/)

[Translate “POP – E-invoicing for Belgium” into your language.](https://translate.wordpress.org/projects/wp-plugins/pop-e-invoicing-for-belgium)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/pop-e-invoicing-for-belgium/),
check out the [SVN repository](https://plugins.svn.wordpress.org/pop-e-invoicing-for-belgium/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/pop-e-invoicing-for-belgium/)
by [RSS](https://plugins.trac.wordpress.org/log/pop-e-invoicing-for-belgium/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.0

 * First release: Belgian e-invoicing for WooCommerce over Peppol. Generate the 
   structured UBL XML and a PDF copy from each order, handle numbering, VAT treatment
   and credit notes, and send over the Peppol network, on any plan including Free.

## Meta

 *  Version **1.0.0**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [Belgium](https://wordpress.org/plugins/tags/belgium/)[e-invoicing](https://wordpress.org/plugins/tags/e-invoicing/)
   [peppol](https://wordpress.org/plugins/tags/peppol/)[ubl](https://wordpress.org/plugins/tags/ubl/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/pop-e-invoicing-for-belgium/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/pop-e-invoicing-for-belgium/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/pop-e-invoicing-for-belgium/reviews/)

## Contributors

 *   [ POP ](https://profiles.wordpress.org/popdev/)
 *   [ Alfio Piccione ](https://profiles.wordpress.org/picaland/)
 *   [ Mirco Babini ](https://profiles.wordpress.org/mirkolofio/)
 *   [ Babini Mazzari ](https://profiles.wordpress.org/babinimazzari/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/pop-e-invoicing-for-belgium/)