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.
Total price, VAT included: €120.78
✓ 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
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)
auth.json file at
the root of your Magento project:
{
"http-basic": {
"repo.codingrow.com": {
"username": "your-username",
"password": "your-password"
}
}
}
composer.json:
composer config repositories.codingrow composer https://repo.codingrow.com
composer require codingrow/module-b2bfatturazione
bin/magento module:enable Codingrow_B2bFatturazione
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush
bin/magento cache:flush.
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):
{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}{{depend firstname}}<br />{{/depend}}
{{depend company}}{{var company}}<br />{{/depend}}
{{if street1}}{{var street1}}<br />{{/if}}
{{depend street2}}{{var street2}}<br />{{/depend}}
{{depend street3}}{{var street3}}<br />{{/depend}}
{{depend street4}}{{var street4}}<br />{{/depend}}
{{if city}}{{var city}}, {{/if}}{{if region}}{{var region}}, {{/if}}{{if postcode}}{{var postcode}}{{/if}}<br />
{{var country}}<br />
{{depend telephone}}T: <a href="tel:{{var telephone}}">{{var telephone}}</a>{{/depend}}
{{depend fax}}<br />F: {{var fax}}{{/depend}}<br />
{{depend vat_id}}VAT: {{var vat_id}}{{/depend}}<br />
{{depend sdi}}SDI: {{var sdi}}{{/depend}}<br />
{{depend pec}}PEC: {{var pec}}{{/depend}}<br />
{{depend codice_fiscale}}Fiscal Code: {{var codice_fiscale}}{{/depend}}<br />
{{depend fattura_richiesta}}Invoice Requested: Yes{{/depend}}<br />
Example, PDF format (same logic, the line separator is | instead of <br />):
{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}|
{{depend company}}{{var company}}|{{/depend}}
{{if street1}}{{var street1}}|{{/if}}
{{depend street2}}{{var street2}}|{{/depend}}
{{depend street3}}{{var street3}}|{{/depend}}
{{depend street4}}{{var street4}}|{{/depend}}
{{if city}}{{var city}}, {{/if}}{{if region}}{{var region}}, {{/if}}{{if postcode}}{{var postcode}}{{/if}}|
{{var country}}|
{{depend telephone}}T: {{var telephone}}|{{/depend}}
{{depend fax}}F: {{var fax}}|{{/depend}}|
{{depend vat_id}}VAT: {{var vat_id}} | {{/depend}}
{{depend sdi}}SDI: {{var sdi}} | {{/depend}}
{{depend pec}}PEC: {{var pec}} | {{/depend}}
{{depend codice_fiscale}}Fiscal Code: {{var codice_fiscale}} | {{/depend}}
{{depend fattura_richiesta}}Invoice Requested: Yes | {{/depend}}
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.
bin/magento module:uninstall Codingrow_B2bFatturazione
This disables the module, automatically runs composer remove
codingrow/module-b2bfatturazione, and runs setup:upgrade.
If you'd rather do it step by step:
bin/magento module:disable Codingrow_B2bFatturazione
composer remove codingrow/module-b2bfatturazione
bin/magento setup:upgrade
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.
Current version: v1.2.1 — released on July 6, 2026
The module was developed and refined through a closed beta starting in June 2026, before the public release.
Fix on the Luma theme: in some configurations the "Edit address" page returned an error. Fixed and verified with real end-to-end tests.
Added support for the default Luma theme (previously the Hyvä theme was required): the module now detects the active theme and uses the correct address book UI in either case.
Online license revocation check (24h cache, fails open if the server doesn't respond), supporting the money-back guarantee.
First public release. Full support for VAT number (Italy and foreign EU), SDI recipient code, PEC and Fiscal Code, with an "Invoice Requested" checkbox available to both individuals and companies. Format validation and cross-requirement logic, automatic cart → order sync, compatibility with the Hyvä (Luma) checkout. Per-domain license system.
Fix: B2B data (VAT number, SDI, PEC, Fiscal Code) could be lost when moving from cart to order and address book. Validation extended to the server side as well, so it still applies when an address is edited from admin.
Fix: from admin it was possible to enable "Invoice Requested" for an individual without a Fiscal Code. Fixed the SDI/PEC cross-requirement logic, differentiated between Italian companies, foreign companies and individuals.
Fix: customer type (individual/company) in admin was free text instead of a locked dropdown, which could lead to inconsistent values.
Closed beta kickoff: basic VAT number and Fiscal Code support in the address book and checkout.
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: