GoFactoX E-Invoicing for WooCommerce

Descripción

GoFactoX E-Invoicing for WooCommerce automatically generates legally compliant electronic invoices from your WooCommerce orders. Supports Factur-X (PDF/A-3 with embedded XML), CII and UBL formats, the three formats accepted by the French e-invoicing reform.

Why You Need This

The French reform makes electronic invoicing mandatory: reception for all VAT-liable businesses from September 2026, emission for small businesses from September 2027. GoFactoX handles the part that lives inside your store: it turns every WooCommerce order and refund into a compliant Factur-X invoice or credit note automatically, so your invoicing is reform-ready and runs by itself. Transmission to a Plateforme Agreee is done with your own PA account; GoFactoX produces the compliant file it accepts.

Key Features

  • Manual Factur-X generation (free): Generate PDF/A-3 invoices with embedded XML on demand, Basic and Comfort (EN 16931) profiles
  • PDF/A-3 compliant: Real PDF/A-3b archivable format with embedded structured XML
  • 3 output formats: Factur-X (PDF+XML), CII (XML only), UBL (XML only)
  • French legal compliance: SIRET, VAT, full set of legal mentions, late payment penalties, recovery indemnity (40 €), article 293 B for VAT-exempt sellers
  • Sequential numbering: Legal, gap-free, configurable prefix and format
  • Company logo on PDF: Upload via the WordPress media library
  • IBAN/BIC on PDF + payment terms: Configurable (immediate, net 15/30/45/60 days). Wire transfer block shown on every invoice
  • Seller and buyer electronic addresses (EN 16931 BT-34/BT-49): Required by Plateformes Agréées (PA, ex PDP) such as Iopole, Pennylane, SuperPDP, Chorus Pro
  • B2B checkout fields: SIREN, SIRET, VAT number, Purchase Order number (BT-10), classic and block-based checkout
  • WooCommerce coupons as structured allowances (EN 16931 BG-20) in the XML
  • WC Subscriptions compatibility: Billing period (BT-73/74) on recurring invoices
  • Customer self-service: Download invoice from My Account and Thank You page
  • WPML and Polylang: Multilingual ready
  • HPOS and Checkout Blocks: Compatible with WooCommerce modern stack
  • GDPR exporter and eraser: Customer invoices included in WordPress personal data export
  • Developer hooks: gofactox_invoice_data, gofactox_xml_output, gofactox_pdf_template_path, gofactox_pdf_filename

Pro plan adds

  • Automatic generation on order completion and on refund (Factur-X credit notes type 381)
  • SEPA QR code (scan-to-pay) on EUR invoices
  • Structured SEPA Credit Transfer mapping in XML (BG-17)
  • AVOIR watermark on credit note PDFs and distinct credit note numbering
  • End-of-month and custom payment terms
  • Email auto-attachment for invoices and credit notes
  • Admin dashboard with monthly statistics
  • Bulk generation, ZIP export, retroactive generation
  • Transmission to your Plateforme Agréée (SUPER PDP): each invoice and credit note is pushed to your own SUPER PDP account (PA immatriculée). B2B invoices are routed to your customers’ platforms and reported to the tax administration (e-invoicing), B2C invoices feed your e-reporting automatically. Lifecycle statuses (received, accepted, refused, paid…) are shown on the order and in the dashboard. You keep your PA account, GoFactoX takes no commission.
  • REST API and webhooks (gofactox.invoice.created, gofactox.credit_note.created, gofactox.document.pa_status_changed, …)
  • Priority email support

Business plan adds

  • Everything in Pro, plus 5-site licence
  • FEC export (Fichier des Écritures Comptables, article A47 A-1 LPF): VAT split per rate, continuous entry numbering, one auxiliary account per customer
  • 24-hour support

Perfect For

  • French e-commerce businesses preparing for the 2026/2027 e-invoicing mandate
  • B2B WooCommerce stores that need compliant invoices with buyer SIRET/VAT
  • Accountants and bookkeepers managing WooCommerce client invoices
  • Any EU business using WooCommerce that needs structured invoice data

Learn more about Pro and Business plans

External Services

This plugin connects to two external services: Freemius (licensing and updates, always) and SUPER PDP (only when you enable the Plateforme Agréée transmission in the Pro plan and enter your own credentials).

Freemius

The plugin uses the Freemius SDK for licensing, updates of the paid plans and optional usage tracking. On activation you are asked whether to opt in; if you do, Freemius receives your site URL, WordPress and PHP versions, the plugin version, and the administrator e-mail. If you skip, only license checks for paid plans and update requests are sent. Purchases are processed by Freemius.

SUPER PDP

SUPER PDP is a French Plateforme Agréée (PA, registered with the DGFiP) operated by SUPER G SAS. When the connector is configured, the plugin sends to SUPER PDP: the generated invoice or credit note file (Factur-X PDF/A-3, CII or UBL, which contains your company details, the customer’s billing details and the invoice lines), the document number, and lifecycle status messages (e.g. “paid”). It also reads back the transmission status of each document. The “Validate last document” tool sends the latest invoice file to the public SUPER PDP validator, without authentication. No data is sent unless you enable the connector and save your client ID and client secret; the secret is stored encrypted.

Capturas

Instalación

  1. Go to Plugins > Add New in your WordPress admin
  2. Search for GoFactoX E-Invoicing
  3. Click Install Now then Activate
  4. Go to WooCommerce > Settings > Factur-X to configure your company information
  5. Done! Invoices will be generated for new orders.

Preguntas frecuentes

Is this plugin ready for the French e-invoicing mandate (réforme de la facturation électronique) ?

Yes! This plugin generates invoices in all three formats accepted by the reform: Factur-X, CII, and UBL. It includes all mandatory French legal mentions (SIRET, VAT, penalties, recovery indemnity).

The free plan generates the compliant file, which you can deposit on any Plateforme Agréée with your own account. The Pro plan adds automatic transmission through SUPER PDP (a PA immatriculée with a self-service account and public API). Since October 2024, the PPF (Portail Public de Facturation) acts only as the central directory, so every transmission goes through a PA.

What is Factur-X?

Factur-X is a Franco-German electronic invoice standard. It’s a hybrid format: a PDF/A-3 document (human-readable) with an embedded XML file (machine-readable). It’s based on the European standard EN 16931 and the UN/CEFACT CII data model.

Which Factur-X profile is used?

The EN 16931 profile (formerly called “Comfort”) is the default: it is the only Factur-X profile accepted by the French reform and the Plateformes Agréées, and it is included in the free plan. The Basic profile remains available for local use only.

Does it work with WooCommerce HPOS (High-Performance Order Storage)?

Yes, the plugin is fully compatible with HPOS and declares compatibility with WooCommerce’s custom order tables.

Is the plugin compatible with WPML and Polylang (multilingual sites)?

Yes. All user-facing strings go through the WordPress text domain gofactox-e-invoicing-for-woocommerce, so WPML String Translation (and Polylang equivalent) picks them up automatically. The generated invoice PDF reflects the active WordPress locale at order creation time, which aligns with WPML’s per-language locale switching out of the box. The embedded Factur-X XML follows the EN 16931 standard and is language-agnostic.

Important legal note: for customers established in France, invoices must be in French (mandatory legal mentions, payment conditions). For customers established outside France, invoices can be issued in the customer’s language; the French version should be archived or made available to the tax administration on request.

Does it work with LearnDash or other WooCommerce-based sales?

Yes. The plugin hooks into standard WooCommerce orders, so any plugin that creates orders through WooCommerce (LearnDash, Subscriptions, Memberships, Bookings, etc.) triggers invoice generation automatically.

Can I generate invoices for past orders?

Yes! Use the bulk action “Generate Factur-X Invoices” in the orders list, or use the retroactive generation feature in the dashboard.

Does the plugin validate the generated Factur-X files?

The XML is validated against the XSD schema during generation, and the generated files are checked against the French schematron (EN 16931 + DGFiP Flux 2 rules) as part of our test suite. From the settings page (Pro), “Validate last document” sends your latest invoice to the public SUPER PDP validator and lists any rule violation. For PDF/A-3 checks you can also use the FNFE-MPE validator.

Mon WooCommerce est-il conforme à la réforme 2026 de la facturation électronique ?

Avec ce plugin, vos factures sont générées au format Factur-X conforme (profil EN 16931, mentions obligatoires, SIREN client, adresses électroniques, cadre de facturation). Le plan Pro transmet automatiquement chaque facture à votre compte SUPER PDP (Plateforme Agréée immatriculée) : e-invoicing B2B et e-reporting B2C sont couverts, et les statuts de cycle de vie remontent dans WooCommerce.

Comment générer une facture Factur-X avec WooCommerce ?

Installez ce plugin, configurez vos informations entreprise dans WooCommerce > Réglages > Factur-X, et les factures seront générées automatiquement à chaque commande.

Does the free plan transmit invoices to my Plateforme Agréée?

No. The free plan generates the compliant Factur-X file, which you deposit yourself on any Plateforme Agréée. Automatic transmission (SUPER PDP), status tracking and e-mail alerts are part of the Pro plan.

Does the plugin receive my suppliers’ invoices?

No. Receiving electronic invoices is done in your Plateforme Agréée account (or your accounting software if it is a PA), not in WooCommerce. The plugin covers the invoices you issue.

Does it produce delivery notes, packing slips, quotes or proforma invoices?

No. GoFactoX focuses on legally issued documents: invoices and credit notes. For packing slips, use a dedicated plugin alongside.

Why is the invoice number different from the order number?

Invoice numbers must form a continuous, chronological sequence without gaps (Code de commerce). Order numbers are not: cancelled or abandoned orders leave holes. The plugin keeps its own sequence, configurable prefix and start value.

What should I back up?

The generated PDF/A-3 and XML files live in wp-content/uploads/wfx-invoices/. Include this folder in your backups: invoices must be kept for 10 years. The database (invoice records, numbering counters, transmission statuses) is backed up with your usual WordPress backup.

How do I protect the invoice folder on nginx?

Apache is protected by the .htaccess the plugin writes. On nginx add: location ~* /wp-content/uploads/wfx-invoices/ { deny all; } to your server block. Downloads go through signed links served by WordPress, never through direct file URLs.

My site is a staging copy. Will it send invoices to my Plateforme Agréée?

No. Transmission is paused automatically when the site is declared as staging/development (WP_ENVIRONMENT_TYPE) or when the site URL differs from the one the connector was configured on, and an admin notice explains it. Define GOFACTOX_ALLOW_TRANSMISSION_ANYWHERE to override.

Reseñas

No hay reseñas para este plugin.

Colaboradores y desarrolladores

“GoFactoX E-Invoicing for WooCommerce” es un software de código abierto. Las siguientes personas han colaborado con este plugin.

Colaboradores

Traduce “GoFactoX E-Invoicing for WooCommerce” a tu idioma.

¿Interesado en el desarrollo?

Revisa el código , echa un vistazo al repositorio SVN , o suscríbete al log de desarrollo por RSS .

Registro de cambios

1.5.1

  • Fix: fatal error on PHP 8.0 (a PHP 8.1 keyword slipped into 1.5.0). The plugin runs on PHP 8.0 to 8.5 again.
  • Fix: invoice and credit note numbers are now reserved with an atomic database increment, and document creation is locked per order, so two simultaneous triggers (payment gateway notification + status change, bulk + webhook) can no longer produce duplicate numbers or duplicate documents.
  • Fix: “Regenerate” keeps the document and its number and rebuilds the PDF/XML in place; it is refused, with an explanation, once the document has been transmitted to the Plateforme Agréée (issue a credit note instead). A confirmation is asked before regenerating.
  • Fix: guest customers (no account) can download their invoice from the signed link on the thank-you page and in e-mails; they used to get a 403.
  • Security: updated dompdf (3.1.6), FPDI (2.6.8), symfony/yaml and horstoeko/zugferd (1.0.132); composer audit is clean.
  • Compliance: EU business customers identified by an intra-community VAT number are now invoiced with reverse charge (category AE, VATEX-EU-AE) and transmitted as B2B; exports outside the EU carry the VATEX-EU-G exemption; negative fees keep a consistent VAT rate; the delivery address (BG-15) is emitted when address line 2 or the company differs; credit notes carry their reason as a coded note; the early payment discount mention (AAB) is configurable.
  • New (Pro): e-mail alert when a document is rejected by the Plateforme Agréée or fails to be transmitted (one per document), persistent admin notice while documents are in error, “Failed” filter in the dashboard, “Copy diagnostic” button for support.
  • New (Pro): transmission is paused on staging/development sites and on cloned sites (URL changed), documents transmitted with a previous PA account are flagged, an unreadable client secret (site keys changed) is reported instead of silently failing.
  • Improved: SIRET and IBAN are validated (Luhn, mod 97) in the settings, SIREN/SIRET typed at checkout get a notice when the check digit is wrong, the next invoice number can no longer be lowered below numbers already issued.
  • Improved: status polling is locked against overlapping runs and processes 20 documents per pass; “paid” (fr:212) is now a terminal status; temporary files are purged daily; a notice appears when WP-Cron is disabled and no status check ran for two hours.
  • Improved: dashboard statistics come from one aggregated query (cached 5 minutes), FEC export reads documents in pages of 500, ZIP export is capped at 200 orders per action, spreadsheet formulas are neutralised in FEC text cells, invoice folder protected with Require all denied (Apache 2.4).
  • Improved: settings and menus renamed “GoFactoX (Factur-X)”, late payment section renamed, backup reminder, B2C e-reporting hint on the transmission scope, French translations completed.
  • Dev: unit tests for numbering, downloads, identifiers, alerts, polling locks, staging guard; GitHub Actions matrix PHP 8.0/8.2/8.4; release build refuses vulnerable dependencies and PHP 8.1 syntax.

1.5.0

  • New (Pro): transmission to your Plateforme Agréée through SUPER PDP. Enter the client ID and secret of your own SUPER PDP application; every invoice and credit note is then pushed automatically (or manually from the order screen). B2B invoices are routed to the customer’s platform and reported to the DGFiP, B2C invoices feed e-reporting automatically, and the “paid” lifecycle status is sent for paid orders. Transmission scope (B2B only or all documents), sandbox/production environment (in the sandbox a copy of the document issued by the SUPER PDP test company is sent, the archived document is untouched), deferred “paid” status until the PA has processed the invoice, no duplicate upload of a document the PA already holds, “Test connection” and “Validate last document” tools, status badge on the order and in the dashboard, automatic retries with backoff, hourly retry and 15-minute status polling, new webhook topic gofactox.document.pa_status_changed and pa_* fields in the REST API.
  • Fix (compliance): the seller SIRET is now written with the ISO 6523 scheme 0009 (0002 designates a SIREN); the seller SIREN (BT-30) is always written, no longer only when an RCS city is set; the buyer SIREN captured at checkout is now written as legal registration identifier (BT-47), the buyer SIRET as BT-46 with scheme 0009. These identifiers are mandatory for domestic B2B invoices and were rejected by Plateformes Agréées.
  • Fix (compliance): electronic addresses. French sellers and B2B buyers are now addressed with scheme 0225 (e-invoicing address = SIREN, or a suffixed address set in the new “E-invoicing address” setting), which makes the invoice routable through the PA network. B2C buyers keep the email (EM) address and carry the BAR/B2C note.
  • Fix (compliance): the “cadre de facturation” (BT-23) now uses the DGFiP codes B1/S1/M1 (goods/services/mixed) derived from the operation category, with an option for “invoice already paid” (B2/S2/M2, which also fills the prepaid amount). The Chorus Pro A-codes remain available for B2G deposits. A1 was rejected by the French schematron for B2B invoices.
  • Fix (compliance): the three coded legal mentions required by rule BR-FR-05 are now carried as notes in the XML: late payment penalties (PMD), fixed recovery indemnity (PMT) and early payment discount (AAB).
  • Change: the default Factur-X profile is now EN 16931. The Basic profile is not accepted by the French reform (“no validator for this format”) and is kept as an explicit legacy choice.
  • Improved (Business): FEC export now splits VAT collected per rate (one 445710 line per rate), assigns a continuous and stable EcritureNum to each document (re-exports keep the same numbers), and uses one auxiliary account per customer (SIREN, else customer id). The VAT breakdown and buyer identity are persisted at generation time.
  • Improved: SIREN, SIRET and VAT numbers typed at checkout are normalized (spaces removed, length checked), the SIREN is derived from the SIRET when missing, and cleared fields no longer keep a stale value. The buyer SIREN is printed on the PDF.
  • Removed: the Chorus Pro B2B scaffold (never functional). Its options are cleaned up on update.
  • Compatibility: tested up to WordPress 7.1 and WooCommerce 11.1 (HPOS).
  • Dev: PHPUnit test suite (unit tests with WordPress stubs, live schematron validation against the public SUPER PDP validator, optional sandbox end-to-end test), Composer scripts composer test and composer test:live.

1.4.2

  • New: operation category (catégorie de l’opération: supply of goods, supply of services, or mixed), one of the new mandatory mentions of the French e-invoicing reform. It is auto-detected from the order (virtual or downloadable products count as services, shippable products as goods, a mix is reported as “mixte”) or can be set manually in the settings. The mention appears on the invoice and credit note PDF and is carried in the Factur-X XML.
  • New: “cadre de facturation” (Chorus Pro invoicing framework, EN 16931 BT-23). Every invoice now carries the safe default A1 (standard supplier invoice); A2, A9 and A12 are also selectable, and emission can be turned off. This value is required when depositing an invoice to a public administration (B2G) through Chorus Pro, and is harmless for ordinary B2B/B2C sales.
  • New: delivery address (EN 16931 BG-15) on the invoice and credit note PDF and in the Factur-X XML, shown only when the shipping address differs from the billing address. Another new mandatory mention of the French e-invoicing reform.
  • New: optional “VAT paid on debits” legal mention (option pour le paiement de la TVA d’après les débits), toggled in the settings for sellers who have opted to pay VAT on debits. Shown on the PDF and carried in the XML.

1.4.1

  • Tested up to WordPress 7.0 (released May 20, 2026).
  • Compliance: passes WordPress Plugin Check with zero errors. Hardened output escaping, input sanitization, and inline script injection patterns.
  • Fix: the “Late Payment Interest Rate” placeholder was hardcoded in French; it now respects the active site locale (translatable string).
  • Fix: in the Factur-X dashboard table, clicking the PDF action on a credit note row used to open the underlying invoice instead. The link now routes correctly to the credit note PDF.
  • Improved: credit notes in the dashboard table now show a small “AVOIR” badge next to the number for quick visual distinction.
  • Fix: several French translations were missing or incorrect (Net 60 days, 45 days end of month, Net 15 days). All payment terms strings are now fully translated.
  • Improved: end-of-month payment terms (30/45 days EOM) now follow the French majority calculation method (end of current month + N days, instead of date + N days then end of month) and carry the legally precise “à compter de la date d’émission de la facture” wording on the PDF, in line with Code de commerce L441-10.

1.4.0

  • Plan alignment: credit notes (Factur-X type 381) on refunds, SEPA QR code, structured SEPA Credit Transfer mapping in the XML (BG-17), AVOIR watermark, end-of-month payment terms, and REST API are now part of the Pro plan. FEC export and PA (ex PDP) transmission remain on Business. Manual Factur-X invoice generation (Basic and Comfort profiles), the full set of French legal mentions, B2B checkout fields, payment terms (immediate to net 60), IBAN/BIC display on the PDF, GDPR exporter, WC Subscriptions compatibility, and all developer hooks remain free.
  • New: B2B checkout fields (SIREN, SIRET, VAT, PO number) now also work with the modern Checkout Blocks (React-based checkout). Until 1.4.0 they only appeared on the classic checkout.
  • New: seller electronic address field (EN 16931 BT-34) and buyer electronic address (BT-49) in the XML. Required by several Plateformes Agréées (PA, ex PDP) such as Chorus Pro, SuperPDP, Pennylane to send back receipt acknowledgments and rejection notices.
  • New: company logo upload via the WordPress media library. The logo is rendered at the top of every invoice and credit note PDF.
  • New: SEPA EPC QR code on invoices. Customers scan the QR with their banking app and the wire transfer is pre-filled (IBAN, amount, invoice number reference). Toggleable.
  • New: configurable payment terms (immediate, net 15/30/45/60, end-of-month 30/45, custom). Due date is computed and propagated to PDF + Factur-X XML.
  • New: IBAN/BIC/Bank Name fields in settings. Wire transfer block on the invoice PDF + structured SEPA payment means in the XML (UNTDID code 58, EN 16931 BG-17).
  • New: optional “Purchase Order Number” (PO ref) field at B2B checkout. Stored on the order, rendered on the PDF, and exposed in the XML (BT-10).
  • New: WooCommerce coupons applied on an order are now exported as structured document-level allowances (EN 16931 BG-20) in the XML. The PDF shows the discount lines + net before VAT.
  • New: Factur-X “Comfort / EN 16931” output format option, in addition to the existing Basic profile.
  • New: FEC export (Fichier des Écritures Comptables, article A47 A-1 LPF) downloadable from the Factur-X dashboard with a date-range selector. Each invoice and credit note produces an accounting entry split across customer (411), sales (707), and VAT collected (44571) accounts.
  • New: REST API at /wp-json/gofactox/v1/ (invoices, credit-notes, PDF download) and WooCommerce webhook topics (gofactox.invoice.created, gofactox.credit_note.created, and their regenerated variants).
  • New: “Download my Factur-X invoice” button on the WooCommerce order-received (Thank You) page.
  • New: WooCommerce Subscriptions compatibility. Subscription orders carry the billing period (EN 16931 BT-73/BT-74) on the invoice PDF and XML.
  • New: GDPR / RGPD personal data exporter and eraser. Customer invoices and credit notes are included in WordPress’s standard personal data export, with a note that documents are legally retained for 10 years (Code de commerce L123-22).
  • New: extensibility filters for third-party developers: gofactox_invoice_data, gofactox_credit_note_data, gofactox_xml_output, gofactox_pdf_template_path, gofactox_pdf_filename.
  • Improved: invoice and credit note PDFs now display the buyer’s PO number when provided.

1.3.0

  • New: credit notes (avoirs) support for WooCommerce refunds. Generates a Factur-X credit note (UN/CEFACT type 381) with a reference to the original invoice (EN 16931 BT-25/BT-26), legal mentions and dedicated PDF template.
  • New: separate sequential numbering for credit notes (default prefix “AV-“, configurable).
  • New: “AVOIR” PDF watermark, toggle in WooCommerce > Settings > Factur-X.
  • New: auto-generation of credit notes on refund creation (Pro plan).
  • New: manual “Generate Credit Note” button per refund in the order edit screen (Starter+).
  • New: secure /wfx-credit-note/ download endpoint with per-document token, same permission model as invoices.
  • Improved: clear error panel in the order meta box when the company configuration is incomplete, listing the missing fields with a link to the settings page (no more silent fail on click).
  • Improved: AJAX errors now surface the underlying exception message instead of a generic “Invoice generation failed” banner.

1.2.1

  • Fixed “Sorry, you are not allowed to access this page” error during plugin registration on installs where the administrator lacked the manage_woocommerce capability (multisite site admins, custom role managers, certain security plugins). The Freemius opt-in and account pages now run as a top-level admin menu under manage_options.
  • Improved B2B checkout fields position: SIREN, SIRET and VAT number now appear higher in the checkout form for better visibility.

1.2.0

  • Introduced Pro plan with automation features
  • Improved WooCommerce 10.x compatibility

1.1.1

  • Added French (fr_FR) translation
  • WPML and Polylang compatibility
  • LearnDash compatibility
  • Cleaner invoice layout

1.1.0

  • Renamed to GoFactoX E-Invoicing for WooCommerce
  • Updated dompdf to 3.1.5
  • Added Requires Plugins header for WooCommerce
  • Added External Services documentation for Chorus Pro
  • Improved code prefixing (gofactox_ prefix)
  • Replaced inline scripts with wp_add_inline_script()

1.0.0

  • Initial release
  • Factur-X (PDF/A-3), CII, and UBL invoice generation
  • Automatic generation on order completion
  • French legal compliance (SIRET, VAT, penalties, recovery indemnity)
  • B2B checkout fields (SIREN, SIRET, VAT number)
  • Sequential numbering with configurable prefix
  • Admin dashboard with statistics
  • Bulk generation and ZIP export
  • Retroactive invoice generation
  • Email attachment
  • HPOS and Checkout Blocks compatibility