
Stripe in Italia: guida agli abbonamenti SaaS
Il pagamento è dove i SaaS italiani si bloccano più spesso. La combinazione di carte di credito, SEPA Direct Debit, fattura elettronica obbligatoria, Satispay e le specificità del mercato locale crea una complessità che ritarda i lanci, aumenta il churn involontario e consuma tempo di ingegneria che dovrebbe essere dedicato al prodotto. Stripe è entrata nel mercato italiano con la promessa di semplificare questo scenario — ma l'implementazione corretta richiede di capire cosa è disponibile, cosa ha limitazioni e dove altre piattaforme locali hanno ancora un vantaggio.
Questa guida copre ciò che serve sapere per implementare la fatturazione in un SaaS italiano usando Stripe come piattaforma principale.
Stripe Billing: Piani, Prezzi e Upgrade
Stripe Billing è il modulo di gestione degli abbonamenti di Stripe — ed è qui che risiede il maggior valore per i SaaS. Gestisce l'intero ciclo di vita di un abbonamento: creazione, fatturazione ricorrente, upgrade, downgrade, periodi di prova, addebiti proporzionali (prorazione) e cancellazioni.
Il modello di dati centrale di Stripe Billing si basa su tre concetti:
- Product: Cosa si sta vendendo (es: "Piano Pro")
- Price: Le condizioni di fatturazione di un prodotto (es: €199/mese, addebitato il 1° di ogni mese)
- Subscription: Il legame tra un Customer e un Price
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
// 1. Creare prodotto e prezzo (di solito nel dashboard, non nel codice)
const product = await stripe.products.create({
name: 'Piano Pro',
description: 'Accesso completo con fino a 20 utenti',
});
const price = await stripe.prices.create({
product: product.id,
unit_amount: 19900, // €199,00 in centesimi
currency: 'eur',
recurring: { interval: 'month' },
});
// 2. Creare abbonamento per un cliente esistente
const subscription = await stripe.subscriptions.create({
customer: 'cus_XXXXXXXXXX',
items: [{ price: price.id }],
trial_period_days: 14,
payment_settings: {
payment_method_types: ['card', 'sepa_debit'],
save_default_payment_method: 'on_subscription',
},
expand: ['latest_invoice.payment_intent'],
});
Gli upgrade e i downgrade sono gestiti tramite subscription.update con il parametro proration_behavior. Stripe calcola automaticamente il valore proporzionale dei giorni rimanenti nel ciclo e addebita o accredita nella prossima fattura.
SEPA Direct Debit: Il Metodo Ricorrente Preferito in Europa
Per i SaaS europei con clienti business, il SEPA Direct Debit è il metodo di pagamento ricorrente più efficiente. Rispetto alla carta di credito ha costi più bassi (Stripe addebita €0,35 per transazione riuscita + 0,5% per SEPA DD vs 1,5% + €0,25 per carte EU) e il tasso di chargeback è molto più basso.
Il flusso SEPA Direct Debit richiede che il cliente firmi un mandato SEPA, che autorizza gli addebiti futuri:
// Setup SEPA Direct Debit per abbonamento ricorrente
async function setupSEPAMandate(customerId: string): Promise<string> {
// 1. Creare un SetupIntent per raccogliere il mandato
const setupIntent = await stripe.setupIntents.create({
customer: customerId,
payment_method_types: ['sepa_debit'],
usage: 'off_session', // Per addebiti futuri senza la presenza del cliente
});
// Il client_secret viene passato al frontend per raccogliere l'IBAN
return setupIntent.client_secret!;
}
// Frontend (React) — raccogliere IBAN con Stripe Elements
// import { IbanElement, useStripe, useElements } from '@stripe/react-stripe-js';
// async function confirmSEPASetup(clientSecret: string, iban: string) {
// const { error } = await stripe.confirmSepaDebitSetup(clientSecret, {
// payment_method: {
// sepa_debit: elements.getElement(IbanElement),
// billing_details: {
// name: customerName,
// email: customerEmail,
// },
// },
// });
// }
Limitazione SEPA: i pagamenti SEPA richiedono 3-5 giorni lavorativi per la conferma (non sono istantanei). Per gli abbonamenti, questo significa che non potete attivare immediatamente il piano dopo la creazione dell'abbonamento — dovete aspettare la conferma o gestire uno stato "in attesa di conferma".
Fatturazione Elettronica: Stripe + SDI
Emettere fattura elettronica per ogni addebito di abbonamento è un obbligo fiscale in Italia — e questo è il punto dove la maggior parte dei SaaS soffre di più. Stripe Tax gestisce l'IVA per le transazioni internazionali, ma non risolve l'emissione della fattura elettronica verso lo SDI per il mercato italiano.
Per la fattura elettronica in Italia, le opzioni più comuni sono:
1. Integrazione con piattaforme di fatturazione via webhook:
Stripe attiva un webhook all'evento invoice.payment_succeeded. L'applicazione riceve l'evento, estrae i dati e li invia a un'API di emissione fattura elettronica (Fattura24, EasyFatt, FattureInCloud, Aruba).
// Webhook handler per emissione automatica fattura elettronica
app.post('/webhooks/stripe', express.raw({ type: 'application/json' }), async (req, res) => {
const event = stripe.webhooks.constructEvent(
req.body,
req.headers['stripe-signature'],
process.env.STRIPE_WEBHOOK_SECRET
);
if (event.type === 'invoice.payment_succeeded') {
const invoice = event.data.object;
const customerTaxId = invoice.customer_tax_ids?.[0]?.value; // P.IVA del cliente B2B
await emettiFatturaElettronicaSDI({
importo: invoice.amount_paid / 100,
descrizione: invoice.lines.data[0]?.description ?? 'Servizio SaaS',
partitaIvaCliente: customerTaxId,
emailCliente: invoice.customer_email,
periodoFattura: {
da: new Date(invoice.period_start * 1000),
a: new Date(invoice.period_end * 1000),
},
});
}
res.json({ received: true });
});
2. Stripe Tax + Stripe Invoicing per clienti internazionali: Per clienti non italiani (mercato EU o globale), Stripe Tax gestisce automaticamente il calcolo dell'IVA con le regole del paese del cliente. Questo è particolarmente utile per SaaS con ambizioni internazionali — evita la registrazione IVA in ogni paese UE tramite il meccanismo OSS (One-Stop Shop).
Confronto: Stripe vs Paddle vs Lemonsqueezy per SaaS Europeo
Per i SaaS che vendono principalmente in Europa e cercano di semplificare la compliance fiscale, esistono alternative a Stripe che fungono da Merchant of Record (MoR):
| Criterio | Stripe | Paddle | LemonSqueezy |
|---|---|---|---|
| Merchant of Record | No (sei tu) | Sì | Sì |
| IVA UE gestita | Tramite Stripe Tax | Automatica | Automatica |
| Fattura elettronica IT | No (serve integrazione) | Sì (MoR) | Sì (MoR) |
| Costo transazione | 1,4% + €0,25 (EU card) | 5% + $0,50 | 8% + $0,50 |
| Personalizzazione | Massima | Media | Limitata |
| Webhook e API | Eccellente | Buona | Buona |
Quando scegliere Paddle o LemonSqueezy: se il vostro SaaS vende principalmente a privati o a piccole imprese internazionali e volete eliminare completamente la gestione dell'IVA e della fatturazione fiscale, il costo più alto per transazione può essere giustificato dalla riduzione della complessità operativa.
Quando scegliere Stripe: se vendete principalmente a clienti B2B italiani, avete bisogno di un controllo granulare sui pagamenti, integrate SEPA DD o avete piani di internazionalizzazione complessi.
Dunning: Ridurre il Churn Involontario
Il churn involontario — abbonati che si perdono non perché vogliono cancellare ma perché il pagamento fallisce — è uno dei problemi più sottovalutati del SaaS. In media, il 20-30% del churn è involontario.
Stripe Billing ha un sistema di dunning configurabile: ritenta automaticamente gli addebiti falliti dopo 3, 5 e 7 giorni (configurabile), invia email al cliente con link per aggiornare il metodo di pagamento, e sospende o cancella l'abbonamento dopo N tentativi falliti.
// Configurazione dunning in Stripe Billing
const subscription = await stripe.subscriptions.create({
customer: 'cus_XXXXXXXXXX',
items: [{ price: price.id }],
collection_method: 'charge_automatically',
payment_settings: {
payment_method_types: ['card', 'sepa_debit'],
},
// Configurato nel dashboard: retry schedule, smart retries, email automatiche
});
// Webhook per gestire i pagamenti falliti nel proprio sistema
// 'invoice.payment_failed' -> segnalare nel dashboard del cliente
// 'customer.subscription.deleted' -> disattivare l'accesso
L'attivazione di Smart Retries di Stripe (che usa ML per ottimizzare il momento del retry) riduce il churn involontario fino al 38% rispetto ai retry fissi, secondo i dati di Stripe.
Conclusione
La fatturazione in un SaaS italiano non è un problema risolto con un unico strumento. Stripe Billing risolve la gestione degli abbonamenti con eccellenza, ma la combinazione con SEPA DD, fattura elettronica verso lo SDI, IVA europea e gestione del dunning richiede un'integrazione attenta di più servizi.
Farlo correttamente fin dall'inizio — con webhook robusti, trattamento dell'inadempienza, retry automatico degli addebiti falliti e fattura elettronica integrata — evita mesi di refactoring e problemi fiscali che emergono troppo tardi.
Nella SystemForge, la componente di billing è uno dei deliverable standard nei SaaS che costruiamo: Stripe Billing con supporto a SEPA e carta, webhook per la fattura elettronica configurati e logica di dunning per ridurre il churn involontario. Parlate con il nostro team per vedere come strutturiamo questo nel vostro prodotto.
Hai bisogno di Sviluppo SaaS?
SystemForge costruisce piattaforme SaaS scalabili da zero al deploy.
Scopri di più →Hai bisogno di aiuto?

