Invoice Attachment Rules
Purpose
Invoice Attachment Rules checks classified supporting files when invoices, vendor bills, credit notes and receipts are posted. A rule can warn, block posting, or require an Accounting manager exception. The app extends accounting screens; it does not create a separate top-level application.
Uploading a file is only the first step. The file must be classified as the document type required by the effective rule. Posting creates a retained audit of the rule, accepted evidence metadata and any approved exception.
Before you start
Install the package matching your Odoo major version, with native Invoicing/Accounting (account). The base manifest declares no Enterprise-only dependency. Optional PO, receipt and Documents integrations are separate add-ons.
This guide is based on the 19.0 source workflow. Other listed releases received limited source comparison; no runtime test was performed for this guide.
Access and roles
Invoice users (account.group_account_invoice) can inspect checklists, classify readable evidence on writable draft documents, request exceptions and schedule reminders. Accounting managers (account.group_account_manager) configure document classes and rules, decide exceptions and export compliance information. Company rules restrict the app’s records to allowed companies. Ask your administrator to assign the appropriate accounting access; the app does not grant access to invoices or attachments you cannot otherwise read.
Setup and menu
An Accounting manager opens Evidence Document Classes and creates the required classes, such as Supplier Invoice and Approval Memo, for the correct company. Codes and names must be unique within that company. Archive a class already used by a posting rule instead of deleting it.
Open Posting Attachment Rules in accounting configuration. Choose the company and an action: Warning, Hard Block, or Manager Exception. Narrow the scope with a journal, document type, partner or tags, payment term, fiscal position, date range, or exact currency and amount range. Amount ranges require a currency.
Under Required Documents, add each class with a minimum count. Optional checks include MIME types, extensions, filename pattern, maximum age and minimum size. Set shared evidence deliberately: otherwise one accepted file cannot satisfy multiple classes. One rule wins: highest priority, then greatest number of populated scope fields, then lowest sequence and record order. Requirements from multiple matching rules are not combined.
Workflow
- Create or open a draft invoice or bill. Upload the original supporting file to that document using its native attachment control.
- Open Attachment Compliance and select Classify Attachment. Choose the file, document class and reason, then Classify Evidence. The classification records who classified it and its source.
- Select Refresh Checklist or open Attachment Checklist. Review the effective rule, missing counts and invalid-file explanations. A document without a matching rule is allowed by this guard; it has no attachment requirement.
- Supply and classify missing evidence. For a Manager Exception rule, use Request Exception with an operational reason when evidence remains incomplete. A manager reviews Attachment Exceptions and supplies a decision reason. Self-approval is disabled unless the rule explicitly permits it.
- Post through Odoo’s normal posting action. The guard recalculates compliance at posting: a hard block stops incomplete documents; a warning permits posting and records that result; an exception rule requires a current approval.
- Open Attachment Audits on the document to inspect the retained posting evidence. Managers can also use Attachment Compliance Audit and Export Attachment Compliance. Use Attachment Compliance Queue for draft follow-up, with Refresh Checklist and Schedule Reminder actions.
The queue’s reminder action schedules an activity for the evidence owner, falling back to the current user. Treat it as an operational follow-up action, not a file upload.
Practice scenario
In an authorised test database, fictional Cedar Office Supplies sends a bill for 250 in the company currency. Configure a vendor-bill hard-block rule requiring one Supplier Invoice PDF. Refresh the empty bill’s checklist: the source-derived expected result is one missing document. Upload a sample original PDF, classify it as Supplier Invoice and refresh. With all configured checks satisfied, the expected result is readiness to post and an audit after posting. This practice case was not executed for this guide.
For a second case, choose a Manager Exception rule and leave the evidence absent. Request approval, then change the bill amount. The prior request or approval no longer covers the changed checklist; review and request a new exception.
Troubleshooting and limitations
- A file is present but still missing: confirm its classification and exact source link. URL attachments, generated invoice PDF/UBL/CII files, report caches and recognised inline email images are excluded. The app checks metadata and classification, not the truth of a document’s contents.
- Duplicate PDFs do not increase the count: duplicate checksums are not counted twice within a class. Sharing a file across classes also requires the corresponding rule option.
- Needs Refresh: relevant document, rule or evidence changes invalidate the saved preview. Refresh it; posting also performs its own evaluation.
- Exception no longer current: changes to the bill, rule or evidence invalidate its fingerprint. Obtain a new decision for the current facts.
- Cannot edit a classification: remove and recreate it while the document is draft. Posted classifications and posting audits are retained; they are not editable history.
- Cannot schedule a large batch: the reminder action allows at most 200 invoices at once.
Versions and useful links
Packages are catalogued for 15.0, 16.0, 18.0, 19.0 and 20.0. A 17.0 source version exists but is not a qualified live-demo pair in this documentation batch. Older forms use their native version’s layout. The 20.0 source uses a revised access-policy format and rejects caller-supplied compliance fields on creation; these differences do not establish runtime equivalence.
Live Test — Odoo 19.0 · Choose the exact version in the Corvus catalogue.
Related guides: Invoice PO Attachments, Invoice Receipt Evidence, and Invoice Documents Link.