PMIS Federation Invoice
Posted seller invoices and credit notes become receiver-owned draft bills and refunds on Odoo 18 Community. This adapter builds on Exchange, Orders, and Stock and uses each receiver's approved journal, account, products, units, and local taxes.
Features
Explicit native Send after seller posting, frozen invoice PDF, and transactional delivery.
Automatic first application when routing, mappings, frozen files, and exact dependencies are resolved; unresolved documents remain in receiver review.
Explicit productless acceptance for standalone lines preserves source quantity, unit description, untaxed prices, and discounts without guessing conversions.
Reuse of complete matching draft bills created from native purchase orders or stock pickings, without changing their commercial values.
Permanent company-scoped invoice, bill-line, purchase-line, and delivery-move correspondence. Retries return the original bill, including after native posting or cancellation, and never reapply its contents.
Conflicting, posted, canceled, ambiguous, and already claimed candidates stay in review. Header-only dependencies and unresolved references cannot be discarded to create a standalone bill.
Native purchase invoiceability includes the accepted bill. When OCA stock invoicing is installed, exact stock links and invoicing states are retained.
Native bill creation also checks existing federation order/delivery claims. Explicitly disjoint deliveries remain separately invoiceable; uncertain overlap requires manual resolution. Locally canceled bills release their allocation for independent replacement accounting while preserving original exchange history.
Concurrent native and federation bill allocation uses the same operating-company lock and retry boundary. Accounting access and company isolation remain native.
Commercial changes after acceptance require explicit discrepancy acknowledgment before native posting. Approval retains the exact values and reviewer; later changes require renewed review. Local tax differences remain informational when the quoted untaxed values are preserved.
Consecutive revisions require explicit receiver review and update only untouched draft bills. Surviving lines keep their native identities; added and removed line correspondence remains in immutable application history. Posted and canceled accounting and receiver edits cannot be overwritten.
Explicit posted seller credit notes include frozen PDFs and exact original invoice references. Receiver review creates draft vendor refunds linked to the original local bill. Unknown originals remain in review.
Separate correction invoices retain replaces-references and original accounting correspondence. Replacements and credit notes always require receiver review.
Configuration
Install pmis_federation_invoice alongside Federation Stock. Its dependency on pmis_federation_stock includes Federation Orders and Exchange. No additional Python packages or external OCA addons are required.
In Federation > Document Routes, approve the exact operating company, instance pair, counterparty, and Invoices capability as described in the Exchange setup guide. Configure the route's Accounting Mappings with its reviewed purchase journal and default bill-line account. Approve commercial product and unit mappings for the invoice route separately from order and delivery routes.
Administrators need native accounting access and both operating company and Directory Owner access. Directory visibility alone grants no accounting use.
Usage
For credit notes, configure a separate Credit Notes route, connection, accounting approval, and commercial mappings. Post the seller's native credit note linked to its original invoice and use Send Federation Invoice with the Credit Notes connection. Send the original invoice first. The receiver uses Review Invoice to accept a draft vendor refund; posting, payment, and reconciliation remain local. Stock returns and credit notes never automatically create or send one another.
For a separate correction invoice, choose Replaces Invoice in the Send dialog. The receiver reviews the new document while retaining the original bill and its links. Invoice Exchange History shows original and replaced bills. Revisions of an existing identity update only untouched drafts after explicit review; posted accounting cannot be overwritten.
On the seller, configure an outgoing Invoices connection for the reviewed company and counterparty. Post the native customer invoice, select Send Federation Invoice, choose the connection and any supporting files, then select Queue Invoice. The invoice PDF is included automatically. Sending queues immutable content; the shared delivery service handles dispatch and retry. Send referenced orders and deliveries first. Standalone invoices need no artificial order link; consolidated invoices retain each source line's exact native order references.
On the receiver, resolved first invoices become drafts after all declared files arrive. No accounting record is posted automatically. For documents needing review:
Open Federation > Incoming Documents and select an invoice snapshot.
Inspect its invoice PDF, commercial values, and exact order and delivery references.
Resolve missing dependencies, commercial mappings, and accounting approvals.
Select Review Invoice and enter Review Evidence.
For unresolved standalone product/unit mappings, explicitly select Accept Unmapped Lines Without Products if appropriate. Lines linked to purchase orders or receipts require resolved product correspondence.
Select Accept Draft Bill to open the matching existing draft or newly created bill.
The receiver reuses one exact matching draft or creates one when no duplicate candidate exists. Posting, payment, and reconciliation remain manual. Source tax evidence and totals remain in the immutable snapshot; bill taxes are receiver-owned. The seller invoice date is retained; Odoo determines the local accounting date. If the accounting date is not permitted, the document stays in review. Source dates and original tax amounts remain in the immutable snapshot and frozen PDF.
Each accountant can cancel a local bill and create replacement accounting entries independently. Cancellation does not send a notice or require peer approval. Creating a replacement bill from the same order or delivery is allowed after local cancellation. Exchange correspondence continues to reference the original bill; replaying the received invoice does not recreate it or overwrite the replacement.
Receiver review
New invoice revisions always require Review Invoice. Compare Accepted Invoice and Incoming Invoice, then accept the revision against the exact bill state shown when opening the dialog. Receiver edits, intervening changes, missing predecessors, posted bills, and canceled bills require manual resolution. Historical bills without a recorded native baseline also require manual handling. Open Invoice Exchange History on a linked bill to trace accepted revisions, reviewers, snapshots, and the same native bill. Retries of accepted revisions return that bill without applying their contents again.
An order-generated or picking-generated bill must have the same quotation currency, purchase journal, invoice date, line accounts, products, units, quantities, prices, discounts, and untaxed amounts. Resolve local conflicts explicitly before retrying. Picking invoices with exact stock links can acquire a missing native purchase-line link without changing prices or quantities. A matching supplier name, amount, or native document number never establishes correspondence.
Before posting a changed accepted bill, select Review Invoice Discrepancies on its draft form. Compare Accepted Values and Current Values, including currency, products, units, quantities, untaxed unit prices, discounts, added or removed lines, and untaxed amounts. Source and receiver tax amounts are shown separately and do not by themselves require acknowledgment.
An administrator with operating company, Directory Owner, and native accounting access enters Review Evidence and selects Acknowledge Discrepancies. This records an immutable acknowledgment without posting or changing the bill. Native accounting users can then post it with their own accounting permissions; they need no Directory Owner grant. Editing the commercial values again requires another acknowledgment. A bill accepted before commercial baseline recording requires explicit review against its original snapshot and PDF before posting.
Optional stock invoicing
OCA stock_picking_invoicing and purchase_stock_picking_invoice_link are optional integrations. They are not required by the production manifest. When installed, acceptance preserves their invoice/move links and full-move billing status. Partial billing of an individual move and multiple source invoice lines claiming one move require review. Split receipts or explicitly disjoint deliveries can be invoiced separately.
Current boundaries
This adapter accepts seller invoices, seller credit notes, and separately identified correction invoices. Credit notes and replacements always require explicit receiver review. Stock returns belong to Federation Stock; optional cancellation notices and their acknowledgment belong to Exchange and do not cancel accounting records. Accounting revisions are reviewed individually; no automatic revision policy is enabled. Receiver posting, payments, and reconciliation remain manual. New incoming standalone invoices must retain the same sender document identity on retry; unknown manually entered standalone bills need independent receiver review.
Bug Tracker
Bugs are tracked on PMISuite Repository Issues.
Credits
Contributors
Matjaž Mozetič
Maintainers
Current maintainer:
Luxim is an independent R&D and deployment company focused on solving complex problems in the Odoo ecosystem.
Luxim is an active member of OCA (Odoo Community Association).





