The Magento plugin for Italian electronic invoicing
Italian B2B invoicing, done right
VAT number, SDI recipient code, PEC certified email and Fiscal Code — in the address book and checkout, with correct validation and automatic order sync. Handles both business customers (VAT number, SDI/PEC) and individuals (Fiscal Code), in one module.
€99.00 + VAT
Indicative total, incl. Italian VAT: €120.78 — the exact amount is calculated at checkout and is waived for EU business buyers with a valid VAT number (reverse charge).
one-time payment · one domain · perpetual license, 1 year of updates & support (renew at −35%)
✓ License active immediately after payment, sent by email
✓ Instant installation via Composer
✓ First domain change included and instant (handy for staging → production)
✓ 30-day money-back guarantee
What's included
Italian and foreign (EU) VAT number, with format validation
SDI recipient code and PEC, with correct cross-requirement logic
"Invoice Requested" checkbox available for companies too, if they prefer a receipt
Fiscal Code, required for individuals who request an invoice
Automatic cart → order synchronization
Compatible with the default Luma theme and with Hyvä
Ready for Hyvä React Checkout out of the box, including our own PHP 8.4/8.5 compatibility fix for it
The module in action
Tap to enlarge
Requirements
Magento 2.4.x (tested on 2.4.9) · PHP 8.1 - 8.5 (tested on PHP 8.5) · Default Luma theme, or Hyvä theme (optional — if present, an optimized address book UI is used, specifically tested on this theme)
Installation
Get your credentials — right after purchase you'll receive your license key and private Composer repository credentials by email, instantly.
Configure repository access in the auth.json file at the root of your Magento project:
Activate the license under Admin > Store > Configuration > Codingrow > B2bFatturazione, pasting the key you received by email into the "License Key" field. Save and run bin/magento cache:flush.
Customizing fields in addresses, emails and PDF
The collected data (VAT number, SDI recipient code, PEC, Fiscal Code, Invoice Requested) are standard address fields, so they fit into Magento's own Address Templates system: Admin > Stores > Settings > Configuration > Customers > Customer Configuration > Address Templates. Magento defines 4 formats here — Text, Text One Line, HTML, PDF — used respectively in the address book, orders, emails/exports, and in PDF documents (invoices, shipment notes).
If you already have a customized template (not the default one): don't overwrite it, just add the lines below to your existing template, so you don't lose your previous customizations. Uncheck "Use system value" only on the format you want to change.
Example, HTML format (also used in email templates, Admin > Marketing > Email Templates, same syntax):
Example, PDF format (same logic, the line separator is | instead of <br />):
These are example templates, meant to be adapted to the layout you prefer (or merged into yours, if already customized) — don't paste them blindly if you have other changes in progress.
This disables the module, automatically runs composer remove codingrow/module-b2bfatturazione, and runs setup:upgrade. If you'd rather do it step by step:
Note on data: the saved fields (VAT number, SDI, PEC, Fiscal Code, Customer Type) remain in the address book and order database even after uninstalling — they are not automatically deleted, to avoid losing historical data. If you want to remove them entirely, a manual database action is required.
Money-back guarantee
You have 30 days from purchase to request a full refund, no questions asked: just sign in to your account area (codingrow.com/login) and click "Request refund". The refund is processed instantly, automatically. Once the refund is confirmed, the license is deactivated.
Changelog
Current version: v1.3.8 — released on 25 September 2026
The module was developed and refined through a closed beta starting in June 2026, before the public release.
v1.3.8MaintenanceSeptember 25, 2026
At checkout the “Request Invoice” checkbox appeared unstyled and stuck to the field below it: fixed.
v1.3.6NewAugust 15, 2026
It accepts the subscription key: one subscription activates this module along with the others.
Single-module licences keep working exactly as before.
v1.3.1 – v1.3.5MaintenanceAugust 4–5, 2026
The B2B fields now show on the shipping address, on an address picked from the address book, and in the admin summaries.
v1.3.0NewAugust 3, 2026
Full GraphQL support: the B2B fields are available on the cart addresses.
Needed by any checkout that goes through it, such as Hyvä's React Checkout.
v1.2.2 – v1.2.3MaintenanceJuly 23, 2026
Touches to the configuration page: a heading with the version number, and one needless divider gone.
v1.2.1MaintenanceJuly 6, 2026
Fix on the Luma theme: in some configurations the "Edit address" page returned an error. Fixed and verified with real end-to-end tests.
v1.2.0NewJuly 6, 2026
Support for the Luma theme; before, Hyvä was required.
The module detects the active theme and uses the right address book.
v1.1.0MaintenanceJuly 6, 2026
In support of the money-back guarantee.
v1.0.0NewJuly 6, 2026
First public version: VAT number (Italy and EU), recipient code, certified mail and tax code.
An Invoice requested checkbox for private customers and companies alike.
Format and cross-required checks, and the data travels from cart to order.
v0.4.0-betaMaintenanceJune 29, 2026
The B2B data no longer gets lost going from cart to order and address book, and the checks hold when an address is edited in the admin too.
v0.3.0-betaMaintenanceJune 22, 2026
You can no longer tick "Invoice requested" for a private customer with no tax code, and the requirement tells Italian firms, foreign firms and private customers apart.
v0.2.0-betaMaintenanceJune 15, 2026
Fix: customer type (individual/company) in admin was free text instead of a locked dropdown, which could lead to inconsistent values.
v0.1.0-betaNewJune 8, 2026
Closed beta begins: basic handling of VAT number and tax code.
Available in the address book and at checkout.
Testing and reliability
Before the public release, the module was tested against all the relevant combinations of customer type, address and invoicing. Some of the cases addressed and fixed:
Customer type (individual/company) locked to a dropdown, no longer free text
Server-side block of "Invoice Requested" for an individual without a Fiscal Code, even from admin
Correct cross-requirement logic for SDI/PEC across Italian companies, foreign companies and individuals
Italian and foreign (EU) VAT number with distinct format rules
Consistent data between cart, order and address book at every checkout step
Validation enforced server-side too, not just at checkout: still applies if an address is edited from admin
Frequently asked questions
Which fields does it add at checkout?
Italian e-invoicing fields — VAT number, tax code, SDI code and PEC — with private/company logic.
Does it validate the data?
Yes, it validates VAT, tax code, SDI and PEC and asks only for what that customer type needs.
Is it compatible with Hyvä and Luma?
Yes, it works on both Hyvä and Luma.
I installed the module but only some fields show at checkout. Why?
In production mode the module files must be published with setup:static-content:deploy -f: until they are, the browser cannot find them and the checkout stops halfway. After the deploy and a cache flush every field is back.
New guides, when they go live
One hands-on Magento 2 guide per email, only when we publish one. Nothing else.
Articles are written in English. One click to unsubscribe, in every email. · privacy