PDF e fatture WooCommerce: invio automatico, conformità italiana e archiviazione

Inviare fatture in PDF allegate agli ordini non è solo comodità: in Italia è obbligo normativo con conservazione sostitutiva. Come automatizzare la generazione e l'invio senza appesantire WooCommerce.
L'invio automatico delle fatture in PDF allegato agli ordini WooCommerce è una di quelle funzionalità che sembra un optional di UX — 'comodo per il cliente' — e in realtà è un obbligo normativo con conseguenze legali e fiscali. In Italia, la conservazione sostitutiva dei documenti fiscali è regolata dall'Agenzia delle Entrate e dalla normativa digitale, e un e-commerce che non genera o non archivia correttamente le fatture si trova esposto non a una penalità di Google ma a sanzioni tributarie. La differenza tra 'inviare una conferma d'ordine in PDF' e 'emettere fattura elettronica a norma' è sostanziale e dipende dal tipo di cliente e dal volume.
Il punto di partenza è distinguere cosa è obbligatorio da cosa è conveniente. La conferma d'ordine via email non è una fattura. La ricevuta o fattura per clienti finali (B2C) sotto la soglia dei 77,47€ (regime forfettario o minimi) può non richiedere fattura elettronica, ma richiede comunque ricevuta o documento commerciale. Per i clienti business (B2B) e sopra certe soglie, la fattura elettronica via SDI (Sistema di Interscambio) è obbligatoria. Un WooCommerce italiano non gestisce questa complessità in modo nativo — serve un plugin dedicato o un'integrazione con un software di fatturazione.
Generare la fattura PDF con WooCommerce PDF Invoices
Il plugin più diffuso per la generazione di fatture PDF in WooCommerce è WooCommerce PDF Invoices & Packing Slips (o la versione Pro per funzioni avanzate). Genera il PDF della fattura per ogni ordine e lo allega all'email di conferma, in modo automatico. La configurazione di base richiede attenzione a un dettaglio: la numerazione progressiva delle fatture. In Italia le fatture devono avere un numero progressivo per anno fiscale, non il numero d'ordine WooCommerce (che è progressivo ma non per anno fiscale e non ha requisiti di non modificabilità):
// Configurazione numerazione fatture conforme (da aggiungere al plugin o functions.php)
// Usa un post type dedicato per la numerazione progressiva delle fatture
add_action( 'woocommerce_order_status_completed', 'wpplanet_emetti_fattura' );
function wpplanet_emetti_fattura( $order_id ) {
$order = wc_get_order( $order_id );
if ( ! $order ) return;
// Evita duplicati: se l'ordine ha già una fattura, esci
$fattura_id = $order->get_meta( '_numero_fattura' );
if ( $fattura_id ) return;
// Numero progressivo per anno (conservato in wp_options, incrementato per ogni fattura)
$anno = date( 'Y' );
$key = "wpplanet_numero_fattura_{$anno}";
$numero = (int) get_option( $key, 0 ) + 1;
update_option( $key, $numero, false );
// Formato: 2026/0001
$numero_formattato = sprintf( '%d/%04d', $anno, $numero );
$order->update_meta_data( '_numero_fattura', $numero_formattato );
$order->save();
}Allegare la fattura all'email di conferma ordine
Una volta generata, la fattura PDF va allegata all'email di conferma ordine che WooCommerce invia al cliente. Il plugin PDF Invoices lo fa in automatico se configurato, ma se vuoi personalizzare l'email o usare un'integrazione custom, l'hook da usare è woocommerce_email_attachments:
// Allega la fattura PDF all'email di conferma ordine
add_filter( 'woocommerce_email_attachments', function( $attachments, $email_id, $order ) {
// Solo sull'email di completamento ordine (customer_completed_order)
if ( $email_id !== 'customer_completed_order' || ! $order ) {
return $attachments;
}
// Percorso del PDF generato (dipende dal plugin)
$invoice_path = WP_CONTENT_DIR . '/uploads/fatture/fattura-' . $order->get_id() . '.pdf';
if ( file_exists( $invoice_path ) ) {
$attachments[] = $invoice_path;
}
return $attachments;
}, 10, 3 );Conservazione sostitutiva: archiviazione a norma
La conservazione sostitutiva è l'obbligo di mantenere le fatture elettroniche in formato non modificabile per 10 anni. WooCommerce PDF Invoices non gestisce questo aspetto — genera il PDF ma non lo archivia a norma. Per la conformità italiana serve un'integrazione con un servizio di conservazione sostitutiva (Aruba, InfoCert, Namirial) che applica una marca temporale e una firma digitale al PDF e lo conserva in un ambiente conforme. La pratica comune è di esportare i PDF via API o webhook verso il sistema di conservazione, subito dopo l'emissione:
// Invia il PDF della fattura al sistema di conservazione sostitutiva (esempio generico)
add_action( 'wpplanet_fattura_emessa', function( $order_id, $invoice_path ) {
$api_url = 'https://api.conservazione.it/upload';
$api_key = get_option( 'wpplanet_conservazione_api_key' );
$response = wp_remote_post( $api_url, array(
'timeout' => 30,
'headers' => array(
'Authorization' => 'Bearer ' . $api_key,
'Content-Type' => 'multipart/form-data',
),
'body' => array(
'file' => file_get_contents( $invoice_path ),
'filename' => basename( $invoice_path ),
'tipo' => 'fattura',
'partita_iva' => 'IT01234567890',
),
) );
if ( ! is_wp_error( $response ) && wp_remote_retrieve_response_code( $response ) === 200 ) {
$body = json_decode( wp_remote_retrieve_body( $response ), true );
$conservazione_id = $body['id'] ?? null;
if ( $conservazione_id ) {
$order = wc_get_order( $order_id );
$order->update_meta_data( '_id_conservazione', $conservazione_id );
$order->save();
}
} else {
// Log dell'errore per retry manuale
error_log( 'Errore conservazione sostitutiva per ordine ' . $order_id );
}
}, 10, 2 );Fattura elettronica e SDI: quando serve davvero l'integrazione
Per i clienti business (B2B) o sopra le soglie del regime, l'obbligo è la fattura elettronica via SDI. WooCommerce non ha una funzione nativa per l'invio allo SDI — serve un'integrazione con un software gestionale (Fatture in Cloud, Danea, TeamSystem) o un plugin specializzato. Il flusso tipico: WooCommerce emette l'ordine, un webhook o un'API invia i dati dell'ordine al gestionale, il gestionale genera la fattura XML in formato FatturaPA, la invia a SDI, e restituisce a WooCommerce l'esito. È un'integrazione che non puoi fare a mano — i formati e gli obblighi normativi cambiano troppo spesso per costruirli in autonomia.
// Webhook per inviare i dati ordine al gestionale fatturazione (Fatture in Cloud / Danea / TeamSystem)
add_action( 'woocommerce_order_status_completed', function( $order_id ) {
$order = wc_get_order( $order_id );
$fatturazione_api = 'https://api.fattureincloud.it/v1';
$api_key = getenv( 'FATTURE_API_KEY' ); // da variabile d'ambiente, non nel codice
$payload = array(
'numero_ordine' => $order->get_id(),
'data' => $order->get_date_completed()->format( 'Y-m-d' ),
'cliente' => array(
'ragione_sociale' => $order->get_billing_company() ?: $order->get_formatted_billing_full_name(),
'partita_iva' => get_post_meta( $order_id, '_billing_vat', true ),
'email' => $order->get_billing_email(),
),
'totale' => $order->get_total(),
'valuta' => $order->get_currency(),
);
wp_remote_post( $fatturazione_api . '/fatture', array(
'headers' => array(
'Authorization' => 'Bearer ' . $api_key,
'Content-Type' => 'application/json',
),
'body' => json_encode( $payload ),
'timeout' => 30,
) );
}, 5 );L'audit della conformità fiscale di un WooCommerce
Un e-commerce WooCommerce che fattura in Italia ha bisogno di un audit fiscale-periodico che verifichi: numerazione progressiva delle fatture, conservazione sostitutiva attiva, invio a SDI per i clienti business, e correttezza dei dati fiscali esposti (partita IVA del cliente, codice fiscale, natura dell'operazione). Senza questo, un'e-commerce può andare benissimo per anni e scoprire al primo controllo di non essere conforme — con sanzioni che si sommato per ogni fattura non corretta.
Il punto pratico è che la conformità fiscale di un WooCommerce italiano non è un'opzione, ma va costruita con le integrazioni giuste fin dall'inizio. Generare PDF senza numerarli correttamente, o inviarli senza archiviarli a norma, sono errori che costano sanzioni reali. Un check-up WooCommerce che include la verifica della conformità fiscale è il modo più rapido di capire se il tuo store è a posto o se hai un problema fiscale che non sai di avere.
Fatture, conformità fiscale e conservazione del tuo e-commerce a norma.
Verifica tecnica del tuo store WooCommerce: generazione fatture PDF, numerazione, conservazione sostitutiva e integrazione con SDI per la conformità fiscale italiana.
Articoli correlati

Abbonamenti ricorrenti WooCommerce: subscription, trial e fallimenti dei rinnovi
Leggi
Caching e pagine dinamiche: perché il carrello WooCommerce non si può (e non si deve) cachare
Leggi
