Come Abilitare i Campi Codice Destinatario SDI e PEC nel Checkout di WooCommerce

Gestire un e-commerce in Italia richiede una precisa conformità fiscale. La fatturazione elettronica è ormai un requisito imprescindibile per ogni attività commerciale. Di fabbrica, la piattaforma WooCommerce non integra i campi fiscali previsti dallo standard italiano.

Mancano il Codice Destinatario per il Sistema di Interscambio e la Posta Elettronica Certificata. Senza questi elementi, generare le fatture elettroniche diventa un processo manuale estenuante. Rischi inoltre di commettere errori nell’invio dei documenti all’Agenzia delle Entrate.

In questa guida vedremo come configurare correttamente i campi SDI e PEC WooCommerce per automatizzare la fatturazione. Se hai già letto la nostra guida su Codice Fiscale e Partita IVA in WooCommerce, questo tutorial completa il flusso di cassa del tuo shop.

Perché integrare Codice Destinatario SDI e PEC nel Checkout

L’acquisto da parte di aziende e liberi professionisti richiede l’emissione tempestiva della fattura. Raccogliere i dati fiscali a posteriori rallenta le spedizioni e irrita i clienti professionali.

La normativa italiana sulla fatturazione elettronica

La legge italiana impone la trasmissione telematica delle fatture tramite il Sistema di Interscambio. Le imprese e i professionisti possiedono un codice alfanumerico di 7 caratteri. Questo codice identifica univocamente il canale telematico del destinatario.

I soggetti titolari di Partita IVA possono ricevere le fatture anche tramite PEC. Raccogliere questo dato offre un canale alternativo sicuro in caso di codice SDI assente. Se il cliente non specifica nulla, si applica il codice convenzionale di sette zeri.

I benefici per la contabilità del tuo negozio online

L’acquisizione automatica dei dati durante la cassa riduce a zero gli errori di digitazione. I dati vengono salvati direttamente nei metadati dell’ordine di WooCommerce.

I gestionali e i connettori di fatturazione possono leggere queste informazioni via API. In questo modo crei i documenti contabili con un semplice clic. Il risparmio di tempo per il reparto amministrativo è enorme.

Metodo 1: Abilitare i campi con i migliori plugin dedicati

L’uso di plugin specializzati rappresenta il metodo più veloce per gestire i campi SDI e PEC WooCommerce senza rischiare errori nel codice. I moduli pronti gestiscono anche gli aggiornamenti futuri del core di WordPress.

Configurazione con WooCommerce Italian Add-on

Il plugin gratuito “WooCommerce Italian Add-on” è la soluzione più diffusa e collaudata. Aggiunge i campi fiscali italiani alla pagina di cassa in pochi passaggi.

  1. Accedi alla bacheca di WordPress e clicca su Plugin > Aggiungi nuovo.
  2. Cerca nella barra di ricerca WooCommerce Italian Add-on.
  3. Installa e attiva l’estensione sviluppata dalla community italiana.
  4. Vai nel menu WooCommerce > Impostazioni > Fatturazione Italiana.
  5. Spunta le opzioni per mostrare il Codice Destinatario SDI e l’indirizzo PEC.
  6. Salva le modifiche in fondo alla schermata.

Il modulo aggiunge la logica condizionale di base. I campi compariranno automaticamente nella sezione dei dettagli di fatturazione del cliente.

Integrazioni avanzate con i gestionali di fatturazione

Se utilizzi servizi come Fatture in Cloud, Aruba o Danea Easyfatt, puoi usare i rispettivi plugin ufficiali. Questi plugin integrano già i campi SDI e PEC nel checkout.

Questi strumenti offrono un vantaggio competitivo notevole. Essi inviano l’ordine direttamente al software di fatturazione. La fattura elettronica viene generata e recapitata all’SDI in tempo reale.

Suggerimento pratico: Se scegli un plugin tutto-in-uno per il tuo gestionale, disattiva altri plugin per i campi fiscali. Eviterai la duplicazione disordinata dei campi nella cassa.

Metodo 2: Aggiungere i campi SDI e PEC via codice (functions.php)

Se preferisci un controllo totale senza sovraccaricare il database, puoi registrare i campi SDI e PEC WooCommerce manualmente tramite snippet PHP. Questo approccio garantisce la massima velocità di caricamento delle pagine.

Creazione dei campi personalizzati nel checkout

Per creare i campi, utilizzeremo il filtro nativo woocommerce_checkout_fields. Aggiungi il seguente snippet nel file functions.php del tuo tema child o tramite un plugin dedicato.

add_filter( 'woocommerce_checkout_fields', 'nc_aggiungi_campi_sdi_pec' );
function nc_aggiungi_campi_sdi_pec( $fields ) {
    $fields['billing']['billing_sdi'] = array(
        'type'        => 'text',
        'label'       => 'Codice Destinatario (SDI)',
        'placeholder' => '7 caratteri alfanumerici',
        'required'    => false,
        'class'       => array( 'form-row-wide' ),
        'clear'       => true,
        'priority'    => 120,
    );

    $fields['billing']['billing_pec'] = array(
        'type'        => 'email',
        'label'       => 'Indirizzo PEC',
        'placeholder' => 'latuamail@pec.it',
        'required'    => false,
        'class'       => array( 'form-row-wide' ),
        'clear'       => true,
        'priority'    => 121,
    );

    return $fields;
}

Questo codice registra due caselle di testo nell’indirizzo di fatturazione. I campi sono impostati come facoltativi per non bloccare i clienti privati.

Validazione dei formati inseriti

I dati contabili devono essere formalmente corretti. Il codice SDI deve contenere esattamente 7 caratteri per le aziende italiane. La casella PEC deve presentare la sintassi standard di un’email.

add_action( 'woocommerce_checkout_process', 'nc_valida_campi_sdi_pec' );
function nc_valida_campi_sdi_pec() {
    if ( ! empty( $_POST['billing_sdi'] ) ) {
        $sdi = sanitize_text_field( $_POST['billing_sdi'] );
        if ( strlen( $sdi ) !== 7 ) {
            wc_add_notice( 'Il Codice SDI deve essere composto da 7 caratteri esatti.', 'error' );
        }
    }

    if ( ! empty( $_POST['billing_pec'] ) && ! is_email( $_POST['billing_pec'] ) ) {
        wc_add_notice( 'L\'indirizzo PEC inserito non è valido.', 'error' );
    }
}

La funzione controlla l’input prima di autorizzare la transazione economica. Se un valore è errato, il checkout mostra un avviso chiaro in alto.

Salvataggio e visualizzazione dei dati negli ordini

I dati compilati devono essere salvati nei metadati dell’ordine. Devono poi essere leggibili sia dall’amministratore che dal cliente nelle email di riepilogo.

add_action( 'woocommerce_checkout_update_order_meta', 'nc_salva_campi_sdi_pec' );
function nc_salva_campi_sdi_pec( $order_id ) {
    if ( ! empty( $_POST['billing_sdi'] ) ) {
        update_post_meta( $order_id, '_billing_sdi', sanitize_text_field( $_POST['billing_sdi'] ) );
    }
    if ( ! empty( $_POST['billing_pec'] ) ) {
        update_post_meta( $order_id, '_billing_pec', sanitize_email( $_POST['billing_pec'] ) );
    }
}

add_action( 'woocommerce_admin_order_data_after_billing_address', 'nc_mostra_campi_sdi_pec_admin', 10, 1 );
function nc_mostra_campi_sdi_pec_admin( $order ){
    $sdi = $order->get_meta( '_billing_sdi' );
    $pec = $order->get_meta( '_billing_pec' );
    if ( $sdi ) echo '<p><strong>Codice SDI:</strong> ' . esc_html( $sdi ) . '</p>';
    if ( $pec ) echo '<p><strong>PEC:</strong> ' . esc_html( $pec ) . '</p>';
}

Con queste istruzioni hai una gestione completa e autonoma. I dati saranno sempre disponibili nella scheda ordine del pannello di WordPress.

Attenzione: Non modificare mai direttamente i file del tema genitore. Utilizza sempre un tema child oppure il plugin Code Snippets per proteggere il codice dai futuri aggiornamenti.

Best practice per l’esperienza utente nel Checkout

Ottimizzare l’esperienza utente significa mostrare i campi SDI e PEC WooCommerce solo quando il cliente richiede esplicitamente la fattura. Troppi campi visibili possono confondere i visitatori e abbassare il tasso di conversione.

Campi condizionali per acquirenti privati e business

I clienti privati che acquistano beni non necessitano quasi mai della fattura elettronica. Per loro lo scontrino o la ricevuta fiscale sono sufficienti. Mostrare SDI e PEC a un privato genera solo dubbi inutili.

Inserisci una casella di spunta preliminare denominata “Desidero ricevere fattura”. Mostra i campi fiscali soltanto se l’utente seleziona questa casella o se compila il nome azienda. Puoi gestire questo comportamento tramite poche righe di JavaScript o con plugin dedicati ai campi condizionali.

Messaggi di aiuto chiari e istruzioni visive

Non tutti i professionisti conoscono la differenza tra SDI e PEC al momento dell’acquisto. Fornisci un testo esplicativo sotto l’etichetta del campo.

  • Specifica che i privati privi di SDI possono lasciare il campo vuoto.
  • Indica che il codice convenzionale per chi non possiede un canale dedicato è composto da sette zeri (0000000).
  • Segnala che la PEC rappresenta un canale valido alternativo al codice alfanumerico.

Domande Frequenti (FAQ)

Cosa succede se il cliente inserisce sia il Codice SDI sia la PEC?

In base alle specifiche dell’Agenzia delle Entrate, il Codice Destinatario ha la priorità sulla PEC. Il Sistema di Interscambio consegnerà la fattura al canale identificato dal codice alfanumerico. L’indirizzo PEC rimarrà comunque archiviato nei dati dell’ordine come recapito secondario.

Cosa accade se un cliente con Partita IVA non inserisce né SDI né PEC?

Se il cliente non possiede un canale telematico accreditato, la fattura va indirizzata al codice convenzionale standard “0000000”. Il documento verrà recapitato nel cassetto fiscale del cliente sul portale web dell’Agenzia delle Entrate. Sarà poi compito del cliente scaricarlo autonomamente.

Posso rendere obbligatori i campi fiscali solo per le aziende?

Sì, è possibile tramite una funzione personalizzata in PHP o via plugin avanzati. Il controllo verifica se il campo “Azienda” o il campo “Partita IVA” è stato compilato dall’utente. Solo in quel caso la cassa richiederà obbligatoriamente l’inserimento del Codice SDI o dell’indirizzo PEC.

Articoli simili