CII Inbound to Vendor Bills
Parse UN/CEFACT Cross Industry Invoice (CII) supplier e-invoices - Factur-X, ZUGFeRD, XRechnung (CII) and Peppol BIS (CII) - with full allowance/charge and multi-tax breakdown, straight into draft vendor bills.
What this module does
Your suppliers increasingly send you structured electronic invoices in the UN/CEFACT Cross Industry Invoice (CII) syntax - the XML at the heart of Factur-X and ZUGFeRD (Franco-German hybrid PDF/A-3), the CII flavour of XRechnung, and Peppol BIS Billing 3.0. This connector reads those documents and turns each one into a ready-to-review draft vendor bill, reproducing the supplier's exact line detail, allowances, charges and VAT split.
It is an inbound parser only: it reads and books the XML you already received. It does not transmit anything and does not act as a certified access point or PDP.
Real CII D16B parser
A genuine lxml reader for the UN/CEFACT
CrossIndustryInvoice D16B structure: the
ExchangedDocument header (id, UNTDID 1001 type code,
issue and due dates, notes), the conformance profile guideline,
the seller and buyer parties (VAT id, legal/company id, Peppol
GlobalID and postal address), every
IncludedSupplyChainTradeLineItem and the header
settlement totals.
Allowance & charge aware
Most ad-hoc importers drop discounts and surcharges. This one
reads every SpecifiedTradeAllowanceCharge at both
document header level (EN 16931 BG-20 / BG-21) and
line level (BG-27 / BG-28), using the
ChargeIndicator to tell an allowance (discount) from
a charge (surcharge), and carries each one's own VAT category and
rate so it lands in the correct tax bucket.
Multi-tax breakdown mapping
A CII invoice can declare several VAT
(category, rate) pairs - standard, reduced, zero-rated,
exempt, reverse-charge, intra-community, export. The parser keeps
every ApplicableTradeTax block as its own subtotal
and maps each line, allowance and charge to the matching bucket,
so the resulting vendor bill reproduces the supplier's exact VAT
split rather than collapsing everything into one rate.
Draft vendor bill creation
Each parsed document becomes a draft in_invoice (or
in_refund for a credit note). The supplier is
matched by VAT - or auto-created as a draft vendor - one move
line is produced per invoice line, document allowances and
charges become their own signed lines, and purchase taxes are
resolved (or created) from the parsed VAT category and rate.
Non-recoverable categories (reverse charge, exempt, zero, export,
intra-EU) correctly carry no input-VAT line.
Coherence cross-check
Before booking, the document is cross-validated: the sum of line nets against the declared line total, the declared allowance and charge totals against the parsed entities, tax-exclusive + tax against the grand total, and - following the EN 16931 BR-CO-10 family - the recomputed taxable base per VAT category against the supplier's declared breakdown. Any mismatch is recorded as a warning on the document so you can review before posting.
Audit register & de-duplication
Every received document is stored with its raw XML, parse status, supplier identity, the full VAT breakdown and a link to the generated bill - a clean audit log. A duplicate guard keyed on supplier VAT + document number + type prevents the same supplier invoice from being booked twice.
Standards & references
| Area | Standard |
|---|---|
| Syntax | UN/CEFACT Cross Industry Invoice (CII) D16B |
| Semantic model | EN 16931-1:2017 (business terms BT-xx, groups BG-xx) |
| Profiles read | Factur-X / ZUGFeRD MINIMUM, BASIC WL, BASIC, EN 16931 (COMFORT), EXTENDED; XRechnung (CII); Peppol BIS Billing 3.0 (CII) |
| Document type codes | UNTDID 1001 (380 invoice, 381 credit note, 384 corrected) |
| VAT categories | UNTDID 5305 (S, Z, E, AE, K, G, O, L, M) |
| Allowance / charge reasons | UNTDID 5189 (allowance), UNTDID 7161 (charge) |
Feature summary
- UN/CEFACT CII D16B inbound parser (Factur-X / ZUGFeRD / XRechnung CII / Peppol BIS CII).
- Document-level and line-level allowance and charge extraction with per-entity VAT category and rate.
- Multi-category VAT breakdown read and mapped bucket by bucket.
- Draft vendor bill creation with supplier matching or auto-creation by VAT.
- Purchase-tax resolution from the parsed VAT category and rate; non-recoverable categories handled correctly.
- EN 16931 coherence cross-check with per-category taxable base reconciliation.
- Inbound register with raw XML, VAT breakdown table and a duplicate guard.
- One-click XML upload wizard and a vendor-bill back-link.
Scope & disclosure
This module is an inbound XML parser. It reads the CII
e-invoices you receive and creates draft vendor bills inside your
own Odoo database. It performs no transmission, is not a
certified access point, PDP or clearance platform, and sends your
data nowhere. Community base only - it builds on
account and mail with no Enterprise
dependency.
Screenshots
Inbound Documents
Import E Invoice Cii
Update date: 2026-07-02