When Odoo Peppol e-invoicing becomes a project for your organization
Odoo can send and receive e-invoices over the Peppol network from within Odoo, and a self-hosted deployment can keep that workflow inside infrastructure you control. Whether it is a small configuration task or a project depends on what your organization must send and receive, in which countries, and on which Odoo edition and hosting model you run. Treat it as a project when you need Peppol across several entities, when inbound vendor bills must flow into approval and posting, or when the feature set you rely on is not yet confirmed for your version. Odoo's documentation describes Peppol support for sending and receiving electronic invoices from Odoo, using Peppol participant identifiers, with invoice formats such as BIS Billing 3.0 and XRechnung. Those are the formats to plan around, but the exact feature set, the countries where Peppol is available, and the edition or subscription needed for each capability must be confirmed against Odoo's current documentation for the version you run. This page does not assume them, and neither should your plan. Start by listing every legal entity and sales or purchase journal that will exchange invoices. For each one, record the Peppol identifier scheme your counterparties use, whether you need outbound sending, inbound receiving, or both, and which document types are in scope, such as customer invoices, credit notes and vendor bills. Confirm with your access point or service provider how registration is completed and who holds the credentials, because that determines who must be involved in onboarding. Next, check your hosting and edition against the requirements you confirmed. Odoo's pricing page states that only the Custom plan can be hosted on Odoo.sh or on-premise, and that multi-company, external API access and custom modules sit in that plan. Ask Odoo or your partner which Enterprise capabilities Peppol depends on in your chosen setup, and whether self-hosted deployments need the Enterprise subscription activated before the feature is available. Document the answer as a dependency, not an assumption. Finally, plan the work that makes the feature safe to run. That includes test invoices against a test database, validation of inbound documents before they reach posting, a rollback path if a counterparty rejects output, and a named owner for Peppol registration renewals and identifier changes. The effort driver is usually the number of entities, the volume of inbound documents that need manual review, and how much your existing invoice data must map to Odoo's fields. Ask any partner for a written scope that lists these items, the edition and hosting assumptions, and what is excluded.
Peppol setup options by Odoo edition and hosting type
This table compares the Odoo hosting options and editions against what each means for Peppol setup. Read each row as a question to settle with Odoo before scoping, since Peppol availability is not confirmed per edition here. The main takeaway is that only the Custom plan can run on Odoo.sh or on-premise, and on-premise Enterprise use also needs a subscription.
| Option | Plan or edition | Hosting and access | What it means for Peppol |
|---|---|---|---|
| Odoo Online, free and Standard | One App Free and Standard plans | Odoo Online only. No custom modules or external API access on these plans. | Confirm with Odoo whether Peppol is available on these plans before choosing this option. |
| Odoo Online, Custom | Custom plan | Odoo Online. Includes custom modules and external API access. | Confirm Peppol availability for this plan with Odoo. Check whether any integration work needs the API. |
| Odoo.sh | Custom plan only | Can be hosted on Odoo.sh. Major version upgrades are mandatory every two years. | Confirm Peppol availability on Odoo.sh with Odoo. Plan upgrades so the Peppol setup is retested on each version. |
| On-premise, Enterprise | Custom plan with an Enterprise subscription | Self-hosted in your infrastructure. Databases are activated with the subscription code. | Confirm Peppol availability and access with Odoo. Your team owns the network, certificates and identifiers in the deployment. |
| On-premise, Community | Community edition (LGPL-3.0) | Self-hosted from public source. No access to the upgrade service. | Confirm with Odoo whether Peppol e-invoicing is offered for Community. Do not assume it is included. |
| Enterprise source code | Enterprise edition | Source code is not public. Access requires a subscription or partner access. | Peppol features in Enterprise can only be reviewed or changed with the right access. Confirm this before scoping custom work. |
How Peppol identifiers, formats and access points fit together
Before a buyer can send or receive e-invoices through Peppol from Odoo, three parts have to line up: the identifier each legal entity uses on the network, the document format the invoice is written in, and the access point that carries the document between the two trading partners. Keeping these separate in your head makes the rest of the project easier to scope, because each one has its own owner, its own registration steps and its own failure modes.
The participant identifier. Each legal entity that sends or receives documents needs a participant identifier in the Peppol network. Your organization, not DeployOpen or Odoo, has to establish which legal entities need one, which company records in Odoo will carry it, and who holds the registration. Multi-company databases add a question: each company that issues or receives invoices may need its own identifier, so confirm the mapping before configuring company records. The exact registration route depends on your country and on the provider you choose, so confirm each step with Odoo and with the national Peppol authority or the provider you plan to use.
The document formats. BIS Billing 3.0 is the Peppol business interoperability specification for invoices and credit notes that most Peppol participants exchange. XRechnung is the German national CIUS, which is used for invoices to German public sector buyers and is built on the same underlying semantic model. Your trading partners and their country determine which format a given document must follow. Ask each customer group and public buyer which format they accept, and confirm with Odoo which format and localization each of your companies will generate and receive, because a sender cannot assume the receiver accepts the other format.
The access point. A Peppol access point is the service that takes a document from the sender's system, looks up the receiver's identifier in the network directory, and delivers the document to the receiver's access point in the required format. Odoo connects to the network through an access point provider, so the arrangement you make with that provider determines transmission, acknowledgements and support hours. Ask the provider which identifier schemes they support, how they handle receiving and sending in your country, what message status information they return to Odoo, and what their onboarding requires from your side. Those answers, together with written confirmation from Odoo on the supported setup, should drive your build plan.
Setting up Odoo Peppol e-invoicing in the right sequence
This sequence moves from licensing and hosting decisions to a tested, production-ready setup for sending and receiving Peppol documents. Each step closes with a check, so the team knows when it can move on. Testing happens in a non-production copy before any document reaches the live network.
Confirm edition and hosting model
Start by confirming which Odoo edition and hosting model you will run, because they decide whether Peppol features are available to you at all. Odoo's pricing page says only the Custom plan can be hosted on Odoo.sh or on-premise, and the Standard plan is Odoo Online only. Ask Odoo in writing which edition includes the Peppol capability you need, and whether that capability works on your hosting model. The Community edition has no access to Odoo's upgrade service, so factor that into the choice. Done when the licensing owner has a written confirmation of edition, hosting and Peppol availability on file.
Confirm country and format requirements
Next, confirm which country rules and document formats apply to your sales and purchasing. Your team, your tax adviser and your largest public-sector or enterprise customers should agree on the format you will send, such as the Peppol BIS Billing 3.0 specification or a national variant like XRechnung, and on whether you must also receive in that format. Confirm which Peppol access point or service provider your organization will use and what it requires. Done when a short requirements note names the country, the formats for sending and receiving, and the identifier scheme your counterparties use.
Register legal entities and identifiers
Register each legal entity that will issue or receive e-invoices and record the identifiers it needs. Each entity typically needs its own participant identifier on the Peppol network, and the legal name, registration number and VAT number on the invoice must match the records held by the registration authority. If you run several companies in one database, confirm with Odoo that the multi-company setup fits your plan. Done when a register lists every entity, its identifier, the party that holds the registration and the date each registration was confirmed.
Configure company data and taxes
Enter the legal data for each company in Odoo, including address, currency, VAT numbers and the fiscal localization for your country. Then configure the taxes, tax mappings and journals your invoices and bills will use, and check that the tax lines match what your tax adviser expects. Ask your partner or Odoo contact to confirm that the localization package supports the format you chose. Done when a draft test invoice for each entity shows the correct seller data, identifiers, tax lines and totals on the test database.
Configure sending of customer invoices
Enable outbound Peppol sending for each company and connect it to the access point or provider you confirmed earlier. Set the outbound format, attach the required identifiers to customer records and decide which documents are sent automatically and which need manual review. Generate sample invoices with the buyer details your customers use. Done when each sample invoice is generated in the chosen format and passes validation with an independent validator for that format, and your provider's test environment accepts the document without errors.
Configure receiving of vendor bills
Set up inbound reception so that Peppol documents from suppliers arrive as vendor bills. Map each supplier's identifier to the correct partner record, assign a purchase journal and define who approves bills before posting. Confirm with your provider how inbound documents are delivered and how failed or rejected documents are reported back. Done when a test document sent from a second test identity lands as a draft vendor bill with the correct partner, lines and taxes, and posts to the expected journal after approval.
Test in a non-production copy
Run the full send and receive cycle in a non-production copy of the database. Odoo documents database duplication with neutralization for test copies in its on-premise documentation, so use that method rather than copying production data into an unmanaged environment. Confirm which scheduled actions and outgoing connections neutralization disables in your version, and block the test environment from reaching the live Peppol network or using live identifiers. Done when test invoices and test bills pass validation, the round trip completes, and network logs show no connection from the test environment to production endpoints.
Sign off and enable production sending
Before enabling production, record the sign-off from finance, tax, the business owner and the security team. Review the test evidence, confirm the production identifiers and access point details, and agree who monitors rejected or failed documents in the first weeks of live use. Enable production sending and receiving in a controlled change, and check the first live documents by hand. Done when the sign-off record is filed, the first live invoice and first live received bill are reviewed and matched to the test results, and the monitoring owner has confirmed they can see rejections.
Confirming BIS Billing 3.0 and XRechnung for your countries
The format you must send depends on where the seller and buyer are, what kind of customer receives the invoice, and what the buyer's public sector or large corporate procurement rules require. Before you configure anything in Odoo, confirm the format per country and per customer type, not once for the whole company. A German public sector buyer may need XRechnung, while a commercial customer in another Peppol country may accept BIS Billing 3.0 through the network. The same seller can therefore need more than one format, and the mapping should be written down as a decision table that finance, tax and the platform team all sign off.
Start with the questions you take to your tax advisor and the national authority or Peppol authority for each country where you sell or buy. Ask whether e-invoicing is mandatory for B2B or only for public sector buyers, which format and syntax are accepted, whether Peppol is the permitted delivery channel, and what applies to cross-border invoices where the buyer sits in another country. Ask how long you must archive the structured file and the rendered PDF, and whether the buyer's identifier must be a specific scheme. Do not rely on a list of eligible countries from memory. Check Odoo's current list of supported Peppol countries and the Peppol authority list for your country, and record the date and version you checked.
Next, confirm that the Odoo localization for each country supports the format and the invoice types you need. Ask the Odoo partner or your own Odoo administrator to show which e-invoicing modules are installed for each fiscal localization, which document types they generate (customer invoices, credit notes, and any corrective or self-billing documents), and which fields are mandatory in the output. Check how tax rates, exemption reasons, unit codes and payment means are mapped, and whether the vendor bill import accepts the same formats you send. Where a localization does not cover a case, decide whether the gap is filled by a custom module, a manual process or a documented exclusion, and check whether that choice is safe to maintain across upgrades.
Test with real-format sample invoices before any production send. Build a set of illustrative cases that represent each country, customer type and tax situation: a domestic B2B invoice, a credit note, a cross-border invoice with reverse charge, a public sector invoice that needs a buyer reference, and an invoice with multiple tax rates. Validate each generated file against the official schematron rules for the format you selected, and send them to a test access point or the test environment of your Peppol provider. Keep the validation reports as evidence. Confirm that rejected messages reach a named person in operations, and that a resend does not create a duplicate invoice in the ledger. Repeat the tests after each Odoo upgrade and after any change to a localization or custom module.
How receiving vendor bills changes accounts payable
Outgoing customer invoices and credit notes are usually the first Peppol documents a finance team sends. Before the first send, finance needs to decide which customers receive documents over Peppol, which identifier each customer uses, and how credit notes reference the invoice they reverse. Those decisions determine whether the buyer can match a document without manual work.
Decisions to make:
- Customer routing: Decide which customers are reached over Peppol and which keep email or PDF delivery, then record the participant identifier on each customer record.
- Document format: Confirm which format the company sends, such as BIS Billing 3.0 or XRechnung where it applies, and check that the format meets the buyer's country rules.
- Credit notes: Agree how reversals cite the original invoice so the buyer's system can link the two documents.
- Eligibility: Confirm which countries and buyer types your Odoo version can send to before you promise dates to customers.
Roles: Accounts receivable staff create and post invoices and credit notes. A system administrator maintains the Peppol settings, sender credentials and access rights, and should be the only role that changes them.
Confirm with your Odoo version which outgoing document types and formats are supported for your country before you commit to a go-live date with customers.
Validation sits between posting and transmission. A document that passes posting can still fail the receiving side, so the finance team needs a defined rule for what happens to a document that is incomplete, inconsistent or rejected. Without that rule, errors surface only when a customer complains.
Decisions to make:
- Mandatory data: Decide which fields must be complete before dispatch, including tax identifiers, buyer identifiers, payment terms and line-level tax codes.
- Hold or send: Decide whether a failed document stays in draft until someone fixes it, or whether a warning-level issue may be sent with a recorded exception.
- Exception ownership: Name the accounts receivable reviewer who clears errors and the tax lead who approves any change to tax mapping.
Rejections and malformed documents: When a document is rejected, record the reason from the transmission status, correct the source data, and decide whether to reissue it under the same number or follow your policy for corrections. Keep the rejection record with the invoice so an auditor can trace the sequence.
Roles: The reviewer needs read and correct rights on drafts. The tax lead needs approval rights on mapping changes. Neither role should be able to dispatch a document it has not reviewed, so keep sending rights separate where your team size allows.
Test validation with a sample of each customer type in a test database, and confirm how your version logs transmission status before go-live.
Receiving vendor bills changes accounts payable from mailbox handling to a structured intake queue. Suppliers that send documents over Peppol deliver them into Odoo, and the team triages them alongside suppliers who still send PDFs. The decisions below set the size of that queue and how much manual work remains.
Decisions to make:
- Supplier coverage: List which suppliers will send over Peppol, which will keep PDF delivery, and which need outreach before the switch.
- Received document types: Confirm which received document types your Odoo version supports, including credit notes and format variants. Do not assume that every format a supplier can send will be parsed.
- Matching rules: Decide whether bills match to purchase orders and receipts, and set the tolerance the team will accept for price and quantity differences.
Roles: Accounts payable clerks triage the inbound queue and resolve matching differences. Purchasing confirms receipts and approves variances. A system administrator manages the Peppol endpoint and the access rights for each queue.
Exceptions: Malformed documents that fail parsing stay in a separate queue. Decide who contacts the supplier, who requests a corrected file, and how a duplicate bill is recorded and closed so it cannot be paid twice.
Before you commit to a supplier list, ask your partner or Odoo to show a sample inbound file for each supplier format and confirm the result in your own environment.
Once a bill is matched or accepted, approval rules decide who authorizes payment and who posts the entry to the ledger. This stage carries the control weight for accounts payable, because it is where a wrong bill becomes a payable. The finance team needs to set the rules before the first live bill arrives.
Decisions to make:
- Approval thresholds: Set approval levels by amount, cost center or supplier, and confirm which of these conditions your version can enforce.
- Separation of duties: Decide that the person who triages an exception cannot also approve the bill that resulted from it.
- Posting mode: Decide whether posting happens automatically after approval or requires a controller to post manually. Set the default accounts and tax mapping for each expense type.
Roles: Approvers authorize bills within their limits. A controller posts entries and owns the default accounts. Auditors need read-only access to the bill, its matching record and its approval history.
Exceptions: A disputed bill stays parked and is not posted until the dispute closes. If a bill is posted in error, reverse it with a credit document that keeps the original in the audit trail rather than deleting it.
Run the full path, from intake through posting, in a test database with the real role assignments before go-live, and confirm that each approval step is recorded.
Security and data transfer checks before you send invoices
Before any invoice leaves your Odoo database, these checks cover who can send and approve documents, how identifiers and credentials are protected, what is logged and kept, and where personal data travels. The first four checks are configuration and operating decisions you make in Odoo and with your access point provider. The last two involve personal data and cross-border access, so they need input from your data protection lead and counsel.
Access control for sending and approval
Decide who can create, send and approve outgoing e-invoices, and keep those rights separate from the rights to change customer master data or tax settings. In a self-hosted Odoo database, review the group assignments on the invoicing and accounting apps, because a user with broad accounting rights may reach invoice sending without an explicit e-invoicing role. Confirm in your Odoo version which access rights govern sending, and test each role on a non-production database before go-live. Repeat the review after every staff change.
Protection of identifiers and credentials
Your Peppol participant identifier, the access point account credentials and any certificates used to authenticate transmissions allow someone to send invoices as your company. Restrict who can view or change these values in Odoo and in the server configuration, and record who holds the access point account. Plan rotation and revocation before go-live, including what happens when an employee leaves or a certificate expires. Confirm with your access point provider where credentials are issued and how you can revoke them.
Logging of sent and received documents
Keep a record of every outgoing and incoming e-invoice, including the document, the timestamp, the user who sent it, the transmission status and any error returned by the network. Check what Odoo records in the invoice history and what the access point stores separately, and confirm that the two can be matched during a dispute or audit. Forward application and proxy logs to a central store that the invoicing team cannot edit. Test a failed transmission to confirm that the error reaches someone who can act on it.
Retention of e-invoice records
Set how long sent and received e-invoices, their XML files and the transmission evidence are kept, and align the period with the record-keeping rules that apply in each country where you invoice. Confirm whether the access point keeps its own copies and for how long, because your retention period may need to cover those copies too. Include the e-invoice files in your backups and test a restore. Document who may delete records and under what approval, so that deletion does not depend on a single administrator.
Personal data in invoices
Invoices to sole traders and individual buyers often contain personal data, such as a name, a private address or a personal tax number, and that data is covered by the GDPR. Decide which fields the format requires, which optional fields you populate, and keep personal data out of free-text notes and attachments unless it is needed. Check whether test databases contain copies of real invoices, and anonymize them if they do. Ask your data protection lead to confirm the lawful basis and retention period for these records.
GDPR rules for third-country transfers
Under the GDPR, a transfer to a third country includes remote access from outside the EEA, even when a person only views data on a screen, and storage in a cloud outside the EEA. The EDPB Guidelines 05/2021 explain this scope, and the CJEU judgment in Case C-311/18 (Schrems II) explains why each transfer needs a safeguard. Treat an access point or support provider outside the EU as a transfer that needs a documented transfer assessment. Map where the Odoo application, database backups, the access point and any support staff access personal data, then have legal counsel review that data flow before go-live.
What self-hosted Odoo deployments need to check
Self-hosting changes the network path first. On Odoo Online or Odoo.sh, the platform operator manages the connections a Peppol integration depends on. In your own cloud, data center or on-premise network, your firewall, proxy and DNS team must allow the Odoo servers to reach the Peppol access point and any country service the invoice flow calls. Ask your access point provider for the exact hostnames, ports and any requirement for fixed outbound addresses or client certificates, then test from the same network zone and service account that runs Odoo, not from a workstation. Also confirm where each country service stores data and who can reach it remotely. The EDPB's guidelines treat remote access from a third country, even only displaying data for support, as a transfer, so this is a data protection question as well as a connectivity one.
Certificates, credentials and secrets are the second group to plan. A Peppol setup usually depends on access point credentials, signing certificates and the database and mail passwords that the server uses. Confirm with Odoo and the module documentation where each secret is stored, which processes and administrators can read it, and how rotation is performed without a service outage. Keep these values out of shared repositories, chat threads and test copies, and record an owner and expiry date for every certificate. Store them in your organization's approved secret management service, and make sure the platform team can restore them during a disaster recovery exercise.
Backups must include the e-invoice documents, not only the database. Confirm which models, attachments and filestore paths hold sent and received invoices, the XML files and the transmission status records, and make sure your backup job captures all of them. Then perform a restore into an isolated environment and check that a received vendor bill and a sent invoice are both intact. Retention periods for these records are set by your tax and records rules, so confirm them with your tax adviser. For test copies, Odoo documents database duplication with neutralization. Verify that neutralization stops the module from transmitting to Peppol, so a copy of production never sends real invoices from a test environment.
The version lifecycle sets the schedule for all of this work. Odoo's standard support covers three years after a major release, and security patches are provided only during that window. Odoo 17.0 standard support ended in September 2026, Odoo 18.0 runs until September 2027, Odoo 19.0 until September 2028 and Odoo 20.0 until September 2029. On Odoo Online and Odoo.sh, major upgrades are mandatory every two years, so a Peppol integration must be tested again on each upgrade. On-premise upgrades require an Enterprise subscription, and the Community edition has no access to the upgrade service. Build each upgrade around the upgraded test database, rerun send and receive tests with a neutralized copy, and confirm with Odoo whether the Peppol module's upgrade path changes its data models or access point configuration.
Limits to confirm in your environment before you commit
Odoo Peppol e-invoicing depends on choices outside the Odoo code: edition, plan, country coverage, access point and the Odoo version you run. Treat each item below as a question to answer with Odoo, your provider or your advisers before the written scope is agreed.
Peppol availability by edition and plan
Confirm that Peppol sending and receiving is included in the Odoo edition and plan you will run, because the answer depends on that choice. Odoo's pricing page lists One App Free, Standard and Custom plans, and only Custom can be hosted on Odoo.sh or on-premise. Check whether a self-hosted Peppol setup needs an Enterprise subscription, and get that confirmed in writing before the build starts.
Countries and formats for each entity
List every legal entity that will issue or receive e-invoices, with its country and the document format that country requires, such as BIS Billing 3.0 or XRechnung where they apply. Eligibility differs by country, so confirm the supported list for each entity against current Odoo documentation. Entities in several countries may need separate identifiers and configuration, so record that mapping before scoping the work.
Access point and provider support
Confirm that your chosen Peppol access point or service provider works with the Odoo version, edition and hosting type you will run. Ask whether it supports both sending and receiving, the identifiers and document types your entities need, and a connection to a self-hosted Odoo instance. Do not assume support from a general Peppol listing. Request written confirmation and a test plan that runs against your own database.
Odoo version support end dates
Check the support end date of your Odoo version before you choose it. Odoo 17.0 standard support ended in September 2026, Odoo 18.0 runs until September 2027, Odoo 19.0 until September 2028 and Odoo 20.0 until September 2029. Security patches arrive only during standard support, and SaaS releases cannot use extended support. Plan the upgrade path so a supported version carries the Peppol integration through your planned operating life.
Industry and tax localization needs
Decide whether your industry, tax setup or chart of accounts needs localization work beyond standard Odoo configuration. Peppol invoices carry the tax, unit and party data that local rules require, so gaps in the tax model tend to surface at send time. Ask for a written gap list covering taxes, rounding, partner data and any custom modules, and scope that work separately from the Peppol configuration.
Tax and legal sign-off
DeployOpen plans, configures, tests and documents the Odoo setup, but it does not issue compliance certification, audit reports or attestations. Your tax advisers and legal counsel must confirm that your invoices meet the rules that apply to each entity, and your access point or provider may carry its own obligations. Agree in advance which tests and evidence the implementation will produce for that sign-off.
What drives the cost and effort of Odoo Peppol e-invoicing?
What drives the cost of Odoo Peppol e-invoicing?
The main drivers are the number of legal entities and identifiers, the number of countries and document formats, monthly invoice volume, how far the invoice layout changes from the standard, how many ERP and accounting systems connect, and how much testing the rules require. Each one adds configuration, data mapping and test cases. Who is paid for what: DeployOpen is paid under a fixed scope for planning, configuration, integration and testing, while network or access point fees go to the provider you choose and your own staff time is an internal cost. Ask for a figure that follows from the written scope, with each line split this way.
Which Odoo Peppol costs are one-time and which recur?
One-time costs cover scoping, configuration, data mapping, integration work, testing and go-live. Recurring costs include identifier maintenance, provider or network fees, a support retainer if you choose one, and re-testing after each Odoo upgrade. Re-testing is easy to overlook. Odoo documents that major version upgrades are mandatory every two years on Odoo Online and Odoo.sh, so each upgrade can change invoice output and needs a fresh test pass. Ask the quote to state which items are included in the first year and which are priced as ongoing.
What does our finance and tax team need to provide?
The work needs named owners on the finance and tax side who can confirm which invoice rules apply to each legal entity and country. They should also approve the invoice layout, the treatment of credit notes and the handling of incoming vendor bills. The project also needs access to a test environment, a set of sample invoices for each document type and country, and the registration details for each identifier. When these inputs arrive late, testing stalls, so ask the quote to list them as client responsibilities with dates set in the written scope.
Can our internal team set up Odoo Peppol e-invoicing without a partner?
Often yes, if the team already knows Odoo configuration and has someone who understands the tax rules for each country in scope. The harder parts are usually the data mapping between Odoo and any other accounting system, the test cases that cover edge cases such as credit notes and rejected documents, and keeping the setup working through upgrades. Estimate internal effort by listing those tasks, then compare that list with the written scope from a provider. Confirm first whether the Peppol features are available in your Odoo edition and hosting plan.
What should a written quote for Odoo Peppol e-invoicing include?
A useful quote states the legal entities, identifiers, countries and document formats in scope, along with the expected invoice volume used for sizing. It should name each integration, describe any layout changes, and define the test scope and acceptance criteria. It should also split one-time work from recurring items, list the client responsibilities, and state what is excluded. Ask how upgrade re-testing is priced and what happens if the scope changes. The duration should come from the same written scope, so compare timelines only when the assumptions match.
Does the Odoo hosting plan change the cost of e-invoicing?
Yes, because hosting determines what you can run and who maintains it. Odoo's pricing page states that only the Custom plan can be hosted on Odoo.sh or on-premise, and that only Custom includes custom modules and external API access. Integrations that need custom code or API connections often depend on those features. The Community edition has no access to Odoo's upgrade service, so its upgrade work falls to your team or a partner. Confirm the plan and hosting type before the quote is written, since they change the scope.
How does testing with a copy of production data affect effort?
Testing usually runs on a copy of the production database, and Odoo documents database duplication with neutralization for test copies, which helps keep live data from being used in a test environment. Effort rises when the copy needs refreshing for each test cycle or when sample invoices must be prepared from real customers and suppliers. Ask your provider which Peppol test endpoints and test sequence they support, and confirm with your own privacy team how test data is handled. Include the cost of repeating these tests after each upgrade in the quote.
How DeployOpen scopes, builds and supports Odoo Peppol e-invoicing
DeployOpen plans, implements, tests, documents and supports Odoo Peppol e-invoicing inside the infrastructure you control. We start from a written scope that names the Odoo edition, hosting type, countries, document formats and Peppol identifiers involved, then build and hand over against that scope.
How we scope
- Confirm the Odoo edition and hosting type, since Peppol work depends on whether you run Enterprise or Community.
- Map which legal entities, countries and document formats such as BIS Billing 3.0 or XRechnung apply.
- Record the written scope, deliverables and timeline before any build work begins, as engagements are fixed-scope.
How we build
- Set up Peppol registration, participant identifiers and access point connectivity for each sending and receiving entity.
- Configure outgoing invoice templates, validation and transmission, and incoming vendor bill handling in a test database first.
- Test sending and receiving with sample documents, including rejected and malformed cases, before production cut-over.
How we hand over
- Document the configuration, identifiers, credentials ownership and the steps your finance team follows for daily use.
- Walk your finance and IT staff through receiving, error handling and reconciliation of transmitted documents.
- Leave a checklist for changes to Odoo versions, Peppol format updates and new countries so the setup stays current.
How we support
- Ongoing support, upgrades and testing are available as a retainer after handover, based on the agreed scope.
- Plan Odoo major upgrades on a test copy first, since Online and Odoo.sh upgrades are mandatory every two years.
- Confirm with your team how e-invoicing settings are re-tested after each upgrade and before the next production release.

