Odoo guides
OdooPeppol BIS 3.0

Peppol BIS 3.0 in Odoo

Odoo connects to Peppol through Access Point integrations—Storecove has native Odoo integration, or use OCA modules for other Access Points. This guide covers both paths, with specific focus on participant ID schemeID configuration and the ProfileID setting that causes PEPPOL-EN16931-R001 rejections in older module versions.

Prerequisites

  • Odoo 16.0 or later with Accounting module configured
  • Peppol Access Point subscription (Storecove recommended for easiest Odoo integration)
  • Your company Peppol Participant ID registered with your Access Point
  • For OCA path: account_invoice_peppol module from OCA GitHub repository
  • Trading partners discoverable in Peppol directory (check directory.peppol.eu)

Step-by-Step Setup

1

Choose integration path: Storecove native or OCA modules

Storecove path: Apps → search "Storecove" → Install "Storecove Peppol Integration". This is turn-key with built-in Access Point. OCA path: Download account_invoice_peppol from github.com/OCA/edi → install via Apps → Update Apps List. OCA requires separate Access Point subscription (Basware, Pagero, etc.).

2

Configure your company Peppol Participant ID

Settings → Companies → select company → Edit. Go to "E-Invoicing" or "Peppol" tab (depends on module). Enter your Peppol ID with correct scheme. Format: "schemeID:identifier" (e.g., "0208:0123456789" for Belgian KBO, "0106:12345678" for Dutch KVK, "0088:5412345678908" for GLN). The schemeID is critical—wrong scheme = PEPPOL-EN16931-R010/R020 error.

3

Add customer Peppol Endpoint IDs

Contacts → select customer → Edit → "E-Invoicing" tab. Add Peppol Participant ID with schemeID. Look up customers at directory.peppol.eu to find their registered IDs. Common schemes: 0088 (GLN), 0106 (NL KVK), 0190 (NL OIN), 0208 (BE KBO), 9925 (BE VAT), 9930 (DE VAT). If customer not in directory, they cannot receive Peppol invoices.

4

Verify ProfileID in module configuration

Critical for older OCA modules: Settings → Technical → System Parameters → search "peppol.profileid". Value must be "urn:fdc:peppol.eu:2017:poacc:billing:01:1.0". Older modules (pre-2022) may have outdated ProfileID causing PEPPOL-EN16931-R001 rejection. For Storecove module, this is handled automatically.

5

Test with your own Peppol ID (loop test)

Create customer record with YOUR company Peppol ID as the Endpoint ID. Create and send test invoice to this customer. Invoice routes through Peppol 4-corner model back to your inbox. Check Access Point dashboard for delivery confirmation. Download received XML and compare with sent. Validate with Invoice Navigator before real trading partner tests.

Common Odoo Errors

PEPPOL-EN16931-R001Missing Business Process
Full guide →

Why this happens in Odoo

Odoo Peppol connectors (both OCA and partner solutions) may not default to the correct ProfileID. Some connectors are pre-2022 and use outdated process identifiers.

How to fix it

In Peppol connector settings, verify ProfileID = urn:fdc:peppol.eu:2017:poacc:billing:01:1.0. Update connector module to latest version.

PEPPOL-EN16931-R010Invalid Buyer Endpoint Identifier
Full guide →

Why this happens in Odoo

Customer Peppol IDs entered without proper schemeID. Common when importing customer data from CSV or external CRM systems.

How to fix it

Update customer records with full Peppol ID including schemeID: 0088 for GLN, 0208 for Belgian KBO, 0106 for Dutch KVK.

BR-16Missing Line Identifiers
Full guide →

Why this happens in Odoo

Odoo invoice lines get internal IDs, but these may not transfer correctly to UBL output. Issue particularly common with OCA module older than 14.0.

How to fix it

Update to latest OCA account_invoice_ubl module. Verify line IDs are populated in exported UBL.

Pre-Export Checklist for Odoo

Before exporting Peppol BIS 3.0 from Odoo, verify these items:

  • 1
    Verify customer Peppol participant ID has correct schemeID
  • 2
    Confirm Peppol connector has correct ProfileID configured
  • 3
    Check Access Point connectivity and credentials
  • 4
    Ensure all invoice lines have unique identifiers
  • 5
    Test with your own Peppol ID first (send to yourself)
  • 6
    Verify delivery confirmation from Access Point

Testing Your Setup

Configure your Peppol connector to send a test invoice to your own participant ID. This validates the full send/receive flow.

💡 Peppol Access Points typically provide sandbox environments for testing. Ask your provider for test credentials.

Validate Your Output

Before Peppol transmission, export UBL and validate with Invoice Navigator Peppol BIS 3.0 validator.

Validate Peppol BIS 3.0

FAQ

Which Peppol Access Points work with Odoo?
Most Access Points provide APIs compatible with Odoo. Popular choices include Basware, Pagero, Unifiedpost, and regional providers. Check OCA apps or partner solutions for connectors.
Can Odoo receive Peppol invoices?
Yes, with the appropriate connector module, Odoo can receive incoming Peppol invoices. Documents are converted from UBL to Odoo vendor bills automatically.

Related Guides

Ready to Test Your Odoo Export?

Upload your Peppol BIS 3.0 invoice and get instant compliance feedback with Odoo-specific recommendations.

Validate Peppol BIS 3.0 Invoice