Transform your invoicing process with seamless, compliant, and automated PEPPOL integration

Discover how Odoo makes PEPPOL e-invoicing effortless, compliant, and ready for the EU’s 2026
Europe is entering a new era of digital finance.
Starting 1st January 2026, e-invoicing becomes mandatory for all European companies, marking one of the biggest transformations in business operations in decades. Traditional paper invoices and emailed PDFs will no longer meet compliance standards. Instead, businesses will be required to exchange invoices in a structured, government-approved e-invoicing format.
At the heart of this shift lies PEPPOL, the global network trusted by governments and enterprises for secure electronic document exchange.
And with the release of Odoo, companies now have a powerful, ready-to-use PEPPOL integration that makes this transition not just compliant—but smooth, efficient, and future-proof.
What Exactly Is PEPPOL?
PEPPOL (Pan-European Public Procurement Online) is a secure digital network that allows businesses and public authorities to exchange e-invoices and other procurement documents in a standardized format.
PEPPOL ensures:
- Faster delivery
- Verified and traceable transmission
- Universal interoperability
- Compliance with EU e-invoicing laws
Today, PEPPOL has evolved into a global standard, already adopted by more than 30 countries.
As Europe prepares for mandatory e-invoicing, PEPPOL is no longer just a benefit—it’s becoming a legal requirement.

Countries Supported
The following countries are eligible for PEPPOL registration in Odoo - As of November 2025. Countries marked in Blue Colour.
| Andorra | Germany | Ireland | Malta | San Marino |
Albania | Denmark | Iceland | Netherlands | Turkey |
Austria | Estonia | Italy | Norway | Holy See (Vatican City State). |
Bosnia | Spain | Liechtenstein | Poland | Czech Republic |
Herzegovina | Finland | Lithuania | Portugal | Hungary |
Belgium | France | Luxembourg | Romania | North Macedonia |
Bulgaria | United Kingdom | Latvia | Serbia | Slovakia |
Switzerland | Greece | Monaco | Sweden | |
Cyprus | Croatia | Montenegro | Slovenia |
Formats Supported:
Supported formats for sending documents include BIS Billing 3.0, XRechnung CIUS, and NLCIUS
Why PEPPOL Matters for Modern Businesses?

1. Compliance with the 2026 Mandate
The biggest advantage: PEPPOL ensures your invoices are accepted under evolving EU regulations. Avoid penalties and stay ahead of the curve.
2. Faster Payments
Structured validated invoices reach customers instantly—resulting in quicker approvals and shorter payment cycles.
3. Lower Administrative Costs
Automated document delivery reduces reliance on manual entry, email exchanges, and human verification.
4. Enhanced Accuracy & Data Quality
Standardized data formats drastically reduce errors, disputes, and rejections.
5. Secure & Verified Delivery
Every invoice is transmitted via certified Access Points, ensuring security, traceability, and guaranteed receipt.
6. International Reach
Once connected, you can send compliant invoices to any PEPPOL participant worldwide. No additional integrations needed.
Why Companies Should Act Now:
The 2026 deadline is approaching fast—and early adopters are already enjoying the benefits:
Reduced administrative burden
Faster payment turnaround
Streamlined accounting workflows
Centralized document exchange
Zero compliance worries
A modern, digitalized finance operation
While others scramble last minute, your business can run ahead with a mature, tested e-invoicing setup.
How to Configure PEPPOL in Odoo?
Step 1: To use PEPPOL functionality, in Odoo Apps, 3 modules should be installed
- Account_PEPPOL
- Account_PEPPOL_advanced_fields
- Documents_account_PEPPOL

Step 2: Go to Accounting -> Configuration
You will be able to see an option named Active Electronic Invoicing
Click on it

Step 3: Odoo will ask you to select the Company registry type. Here, you can select a different country-specific registry. You will have to define a Registry number, Email ID, and Phone number. After that, click on Activate PEPPOL

After successfully linking, Odoo will generate a success notification

Afterward, in the PEPPOL configuration, you will have 2 options: to manage via
1. Receive in Journal - Here, you will have to define an Invoice Journal
Incoming PEPPOL vendor invoices will go directly into the Accounting → Vendor Bills section.
Odoo will:
- Create a draft Vendor Bill automatically
- Fill in vendor details, invoice lines, totals, VAT, etc.
- Attach the original PEPPOL XML
- Create a PDF preview
This is best when: - You want invoices to be created automatically
- our accounting team works mainly inside Accounting → Bills
- You don’t use Odoo Documents module

2. Receive in Documents - Here you can define a Document folder or via a Document tag
Incoming PEPPOL invoices will first arrive in the Documents app, NOT directly in Accounting.
Odoo will:
- Put the XML and PDF inside the specified Document Folder
- Add tags if selected
- Wait for a user to review/approve in Documents
- Only convert to a bill when you click "Create Vendor Bill"
This is best when:
- You want a workflow, like: Received → Confirm → Approve → Convert to Bill
- You store invoices centrally in Odoo Documents
- You want approvals before the bill is created

Customer configuration
Step 1: By going to Customer master, in the Accounting tab, you will have to perform the following steps under the Customer Invoices section
Step 2: 1. Set Invoice sending: by PEPPOL -

2. Set eInvoice Format - You can set it as per the customer’s choice. Here, we have

3. Belgian Company Registry - write down Endpoint for PEPPOL

Step 3: You will be asked to verify customer details with PEPPOL. There is A Verify button that will be displayed; click on the Verify button to verify customer registration details with PEPPOL

Step 4: Now, create an invoice for that customer with invoice lines, and post it.

Step 5: When you click on the Send button, a wizard will pop up in which you can see an option to send by PEPPOL

Step 6: After doing that operation, a process log will be generated as shown in the figure, also the system will generate a file for UBL XML format, as we did the configuration for that customer earlier
Step 7: By going to the list view of invoices, under PEPPOL Status, you will be able to see the Current status here


Apart from only sending an invoice to PEPPOL, you can also be able to manage the details of the Advanced PEPPOL configuration to manage
- Contract Document Reference
- Project Reference
- Originator Document Reference
- Despatch Document Reference
- Additional Document Reference
- Accounting Cost
- Delivery Location - GLN
- XML Invoice - Odoo automatically attaches an XML file when the status of this Invoice with PEOPPL becomes successful
The user will also be able to select multiple invoices from the list view, and will also be able to send them via the PEPPOL option

By clicking on the Documents smart icon, you will be able to see attached copy of Invoices and XML UBL document for this customer


In case when Odoo maps customer Invoice data with PEPPOL and finds some irrelevant data for that customer or Invoice lines, the system will generate a warning while sending the customer Invoice to Peoppl
Condition 1: Each Invoice line should have at least one tax defined
Condition 2: Each Invoice line should have only one tax
Condition 3: Each Invoice line should have a product or a label

Self-Billing through PEPPOL
If activated, as a customer, you will be able to send and receive self-billed invoices via PEPPOL
Because some companies don't receive vendor bills from some vendors, in this case, they can be able to create a self-billing and then will be able to send it to their suppliers as a Sales Invoice
Step 1:For this, please go to Accounting -> Settings -> Peppol Configuration
Go to Advanced Configuration

Step 2: From the wizard, you will have to enable an option named Self Billing

Step 3: While self-billing, we will have to create a separate journal in Odoo as this is a legal requirement, so that they won't match with the normal journal
Go to Accounting -> Journal -> Create a Self Billing Journal with Journal type as Purchase

Go to the Advanced Settings of the Journal and enable the option named Self-billing

Important: Unless and until you will not enable Self Billing option in Journal, you will not be able to send a vendor bill to the vendor via Odoo via PEPPOL
Step 4: Go to the Accounting Dashboard and proceed with the Self-billing Journal

Step 5: Create a vendor bill with vendor bill lines
Please note: A vendor should also be registered with PEPPOL

Step 6: Click on the Send button, and a wizard will pop up. From there, select an option named By PEPPOL, then click on the Send button

Step 7: After an invoice is sent to PEPPOL, in the Chatter part, you will be able to see the PEPPOL status

By clicking on the Vendor bill action button, you will also be able to refresh the e-Invoice status

Step 8: After the PEPPOL status becomes Done, you will be able to see the relevant message in Odoo chatter from the same record

Step 9: Afterward, by going to Documents, you will be able to see an invoice copy along with UBL BIS 3 XML format


Scheduled Actions - Odoo
To manually trigger the scheduled action used to check the PEPPOL registration status, enable developer mode, open the Settings app, go to Settings ‣ Technical ‣ Scheduled actions, and search for PEPPOL: update participant status. Open the scheduled action, then click Run Manually.

Use of each Odoo Scheduler
Scheduler 1: PEPPOL: Retrieve new documents - This scheduler fetches new incoming PEPPOL documents from your PEPPOL Access Point (AP).
Why is it important?
Without this, Odoo wouldn’t automatically receive new vendor invoices from PEPPOL.
Result in Odoo
Result in Odoo
Depending on your setting:
-> If “Receive in Journal” → Creates Vendor Bill
-> If “Receive in Documents” → Stores XML/PDF in Documents folder
Depending on your setting:
-> If “Receive in Journal” → Creates Vendor Bill
-> If “Receive in Documents” → Stores XML/PDF in Documents folder
Scheduler 2: PEPPOL: Update Message Status - This scheduler checks the delivery status of all outgoing PEPPOL documents (invoices, credit notes, etc.).
Status includes: Pending, Sent, Delivered, Rejected, Accepted, Failed
Why is it important?
PEPPOL deliveries are asynchronous — the recipient’s Access Point may send status updates hours later.
This scheduler keeps Odoo up-to-date by pulling the latest message status from the PEPPOL network.
Result in Odoo:
You see updated delivery statuses under:
Accounting → E-Invoicing → PEPPOL Messages
Scheduler 3: PEPPOL: update participant status - This scheduler checks the status of your own company’s PEPPOL registration and the validity of your endpoint on the PEPPOL SMP (Service Metadata Publisher).
It verifies things like:
- Your PEPPOL Endpoint is active
- Correct document types are registered
- Your SMP registration is valid
- Your company is discoverable on the PEPPOL network
Why is it important?
PEPPOL endpoints can expire, get disabled, or require re-validation by your Access Point.
This automated check prevents failed deliveries due to outdated endpoint metadata.
Result in Odoo:
PEPPOL onboarding screen shows updated connection/activation state.
Scheduler 4. POPPOL: Webhook keep alive - This verifies and maintains the webhook connection between Odoo and your PEPPOL Access Point.
A "webhook" means your AP can automatically notify Odoo when:
- A new invoice arrives
- A message status changes
- A delivery is updated
Why it’s important:
Some Access Points automatically deactivate inactive or expired webhook URLs.
This keeps your webhook active so that real-time notifications continue to work.
Result in Odoo:
Ensures real-time updates for incoming documents and message statuses remain functional.
How to Switch b/w Demo and Production mode of PEPPOL in Odoo?
To try PEPPOL without sending real data, enable demo mode by selecting Odoo Demo ID as the PEPPOL endpoint identifier. To switch back to production mode, deregister from the demo mode and register in production.


Common FAQs
Because Odoo expects a pure 10-digit identifier (e.g., 0477472701), not BE0477472701 or 0208:0477472701.
You didn’t select an e-invoice format (BIS 3.0), or the customer has no PEPPOL ID set.
You didn’t select an e-invoice format (BIS 3.0), or the customer has no PEPPOL ID set.
Yes — enable Receive in Journal or Receive in Documents under PEPPOL settings.
Because “Receive in Documents” is selected, bills are created only after you convert them manually.
Odoo delivered it successfully via PEPPOL, but your AP returned a format or tax error afterward.
Your PEPPOL participant status is inactive — check the scheduled action: update participant status.
Using the scheduler “webhook keep alive” every 2 weeks.
The scheduler “retrieve new documents” is disabled or has failed.
Because self-billing must follow a legally separate numbering from vendor bills.
Most common reasons:
Wrong endpoint scheme
Wrong tax configuration
Missing legal identifiers
Yes — enable PEPPOL Test/Sandbox Mode in Odoo.
You must set a Self-Billing Journal + self-billing sequence + vendor PEPPOL ID.
Only limited/structured attachments — PDFs are sometimes rejected depending on country rules.
The customer's “Send by PEPPOL” setting overrides email by default.
