PL/FACTUR — Factur-X & ZUGFeRD for Oracle PL/SQL
Create, import, validate and package Factur-X / ZUGFeRD hybrid electronic invoices directly inside Oracle Database. Build EN 16931 invoice data in PL/SQL, work with CII XML and package it into an existing PDF/A-3B invoice.
E-invoicing where your Oracle data already lives
PL/FACTUR provides an Oracle-native programming model for structured electronic invoices. Invoice data, validation, XML generation and Factur-X PDF packaging remain inside the database and are exposed through a PL/SQL API.
Pure PL/SQL API
Create and process electronic invoice data directly from Oracle applications without introducing a separate application-tier invoice engine.
Factur-X / ZUGFeRD
Generate and import Cross Industry Invoice XML and package structured invoice data together with the human-readable PDF document.
Validation built in
Validate the canonical invoice model against supported profiles, business rules, arithmetic rules, invoice-type semantics and embedded code lists before output.
Factur-X profiles from MINIMUM to EXTENDED
Select the structured invoice profile required by your business process while using one consistent PL/SQL programming model.
MINIMUM
Core invoice information for reduced structured-data requirements.
BASIC WL
Basic invoice information without structured line-item serialization.
BASIC
Structured invoice data including invoice line information.
EN 16931
European semantic e-invoicing model and the default PL/FACTUR profile.
EXTENDED
Expanded business information for more complex invoicing scenarios.
Start with invoice data or existing XML
PL/FACTUR supports both application-driven invoice generation and processing of existing Factur-X / ZUGFeRD CII documents.
Data-first workflow
Initialize an invoice model, populate it from your Oracle application, validate the result and serialize standards-based CII XML or create the final hybrid invoice.
pl_factur.Init(
pl_factur.c_profile_en16931
);
pl_factur.SetInvoice(...);
pl_factur.SetSeller(...);
pl_factur.SetBuyer(...);
pl_factur.AddLine(...);
pl_factur.SetTotals(...);
pl_factur.Validate;
l_xml := pl_factur.GetXML;
XML-first workflow
Load an existing Factur-X / ZUGFeRD CII document into the canonical model, validate it and optionally inspect its invoice data before packaging it into the PDF carrier.
pl_factur.LoadXML(
l_facturx_xml_blob
);
l_invoice :=
pl_factur.GetInvoice;
pl_factur.PreparePDFCarrier(
p_pdf => l_pdfa3_invoice,
p_result => l_result_pdf
);
One canonical invoice model
PL/FACTUR keeps invoice information in a canonical session model used consistently for validation, XML serialization, PDF packaging and read-only inspection.
Invoice parties
- Seller and buyer identity
- Postal addresses
- VAT and registration identifiers
- Electronic addresses
- Contact information
Business data
- Invoice and credit-note types
- Order, contract and project references
- Payment information
- Invoice notes
- Preceding invoice references
Amounts and tax
- Invoice lines and prices
- Allowances and charges
- VAT categories and breakdowns
- Invoice totals
- Payment and due amounts
Turn an existing PDF/A-3B invoice into a hybrid Factur-X document
The visible invoice remains your application’s document. PL/FACTUR adds the structured Factur-X XML, associated-file information and required Factur-X XMP metadata to an existing PDF/A-3B carrier.
Preserve the visible invoice
The supplied PDF remains the base document. Existing pages, visible invoice content and existing PDF/A metadata are preserved.
Embed factur-x.xml
The CII invoice XML is embedded as factur-x.xml with the profile-specific associated-file relationship required by the hybrid invoice format.
Incremental PDF update
Carrier preparation uses an incremental PDF update rather than regenerating the visible invoice pages.
pl_factur.PreparePDFCarrier(
p_pdf => l_pdfa3_invoice,
p_result => l_facturx_pdf,
p_moddate => sysdate
);
Package first. Sign the completed invoice afterwards.
Factur-X carrier preparation changes the PDF by adding XMP metadata and the embedded invoice XML. Apply the final PDF digital signature only after PL/FACTUR has created the completed hybrid invoice.
For PAdES digital signatures and trusted timestamps directly from Oracle PL/SQL, use PL/SIGN after the Factur-X packaging stage.
Clear responsibility between invoice data and visual PDF
PL/FACTUR handles
- Canonical invoice data model
- Factur-X / ZUGFeRD CII XML
- Supported profile validation
- EN 16931 business rules and code lists
- Factur-X XMP metadata
- Embedded
factur-x.xml - Hybrid PDF packaging
- Existing CII XML import
The application supplies
- The visible invoice layout and pages
- An already valid PDF/A-3B carrier
- Required embedded fonts
- PDF/A output intent and ICC data
- Final external PDF/A acceptance testing
PL/FACTUR does not perform generic PDF-to-PDF/A conversion and does not claim PDF/A conformance for an arbitrary input PDF.
Built for Oracle business applications
Integrate structured e-invoicing into the same PL/SQL workflows that already manage your customers, orders, invoice data and PDF documents.
Oracle ERP applications
Create structured invoice data directly from existing Oracle business tables and PL/SQL processes.
Oracle APEX
Add Factur-X and ZUGFeRD invoice processing to applications whose business logic already runs in Oracle Database.
Invoice integration
Import external CII XML or create it from application data and package the result with your existing PDF/A invoice.
Try PL/FACTUR
Evaluate Factur-X / ZUGFeRD invoice processing directly in Oracle PL/SQL. Request access to a hosted sandbox or install PL/FACTUR in your own Oracle environment.
