
Pagamenti istantanei nell'e-commerce: Satispay e SEPA Instant
I pagamenti istantanei hanno trasformato l'e-commerce italiano negli ultimi anni. Satispay ha superato i 4 milioni di utenti attivi, il Bonifico Istantaneo SEPA (SCT Inst) è disponibile in quasi tutte le banche italiane e la nuova direttiva europea sui Request-to-Pay (RTP) sta aprendo scenari inediti per il checkout. Per i merchant che ancora non hanno implementato questi metodi in modo professionale, c'è conversione che si perde ogni giorno.
Ma "aggiungere Satispay" va molto oltre l'inserire un bottone al checkout. Un'implementazione professionale prevede codici di pagamento dinamici per ordine, webhook per la conferma automatica, logica di scadenza con UX adeguata e gestione dei casi limite come pagamenti duplicati o pagamenti tardivi.
QR Code Dinamico: Come Generare e Validare
Existono due approcci ai pagamenti con QR code: statici e dinamici. Un QR code statico punta a un indirizzo fisso — qualsiasi importo può essere pagato verso quell'identificativo. È utile per donazioni o punti vendita fisici, ma inadatto all'e-commerce perché non collega il pagamento a un ordine specifico.
Il QR code dinamico è generato per singola transazione, contiene l'importo esatto, un identificativo univoco e può avere una scadenza. Quando il cliente paga, l'app del provider consulta i dati del pagamento sul server e li conferma prima di procedere.
Satispay Business API consente di generare richieste di pagamento con QR code dinamico:
interface SatispayPaymentRequest {
flow: 'MATCH_CODE' | 'MATCH_USER';
amount_unit: number; // Importo in centesimi
currency: 'EUR';
callback_url: string; // Webhook URL per conferma
expiration_date?: string; // ISO 8601
metadata?: {
order_id: string;
[key: string]: string;
};
}
async function createSatispayPayment(order: Order): Promise<SatispayPayment> {
const payload: SatispayPaymentRequest = {
flow: 'MATCH_CODE',
amount_unit: Math.round(order.total * 100),
currency: 'EUR',
callback_url: `${process.env.BASE_URL}/webhooks/satispay`,
expiration_date: new Date(Date.now() + 3600 * 1000).toISOString(),
metadata: { order_id: String(order.id) },
};
const response = await satispayClient.post('/g_business/v1/payment-requests', payload);
return {
paymentId: response.data.id,
qrCodeUrl: response.data.redirect_url, // URL per generare QR
expiresAt: new Date(response.data.expiration_date),
};
}
Una buona UX mostra sia il QR code per la scansione sia il link per chi usa Satispay su smartphone — la maggior parte degli utenti mobile paga aprendo l'app Satispay e scansionando, non aprendo un link.
Bonifico Istantaneo SEPA: Implementazione RTP
Il Bonifico Istantaneo SEPA (SCT Inst) consente trasferimenti in meno di 10 secondi, 24 ore su 24, 365 giorni l'anno. Con il Regolamento UE sui pagamenti istantanei (entrato in vigore nel 2024), le banche europee sono obbligate ad offrirlo senza sovrapprezzo rispetto al bonifico ordinario.
Per l'e-commerce, il flusso più efficiente è il Request-to-Pay (RTP): il merchant invia una richiesta di pagamento al cliente, che la approva direttamente nell'app della propria banca.
Provider come Nexi, SumUp e aggregatori come Stripe (tramite l'integrazione con le banche europee) offrono API per generare richieste RTP:
// Esempio con Nexi XPay per pagamenti istantanei
async function createInstantPayment(order: Order): Promise<InstantPaymentResult> {
const payload = {
order: {
orderId: `ORD-${order.id}`,
amount: Math.round(order.total * 100).toString(),
currency: 'EUR',
description: `Ordine #${order.id}`,
},
paymentSession: {
actionType: 'PAY',
amount: Math.round(order.total * 100).toString(),
currency: 'EUR',
recurrence: { action: 'NO_RECURRENCE' },
},
notificationURL: `${process.env.BASE_URL}/webhooks/nexi`,
};
const response = await nexiClient.post('/orders/hpp', payload);
return {
paymentUrl: response.data.hostedPage,
orderId: response.data.securityToken,
};
}
Webhook di Conferma: Pagamenti in Tempo Reale
La conferma via webhook è ciò che rende i pagamenti istantanei davvero istantanei per il flusso dell'e-commerce. Quando il pagamento viene liquidato (in pochi secondi), il provider invia una notifica HTTP POST al vostro server. L'applicazione elabora la notifica e aggiorna lo stato dell'ordine.
Il processamento del webhook deve essere idempotente: se lo stesso evento arriva due volte (il che accade per garantire la consegna), l'ordine non deve essere confermato due volte.
// Endpoint webhook Satispay
app.post('/webhooks/satispay', async (req, res) => {
// 1. Validare la firma (HMAC-SHA256)
const signature = req.headers['x-satispay-signature'];
if (!validateHmacSignature(req.body, signature, process.env.SATISPAY_SECRET)) {
return res.status(401).send('Firma non valida');
}
// 2. Rispondere immediatamente per evitare timeout
res.status(200).send('OK');
// 3. Processare in background
await queue.push({
type: 'payment_confirmed',
payload: req.body,
});
});
async function processPaymentWebhook(event: SatispayWebhookEvent): Promise<void> {
const paymentId = event.resource.id;
// Idempotenza: verificare se già processato
const alreadyProcessed = await db.payments.exists({ externalId: paymentId });
if (alreadyProcessed) return;
// Recuperare l'ordine tramite metadata
const orderId = event.resource.metadata?.order_id;
const order = await db.orders.findById(orderId);
if (!order) return;
if (event.resource.status !== 'ACCEPTED') return;
await db.transaction(async (trx) => {
await order.confirm(trx);
await db.payments.create({ externalId: paymentId, orderId: order.id, amount: event.resource.amount_unit / 100 }, trx);
await inventory.reserve(order.items, trx);
});
await notifyCustomer(order, 'payment_confirmed');
}
Scadenza e UX: Bilanciare Urgenza e Conversione
Il QR code dinamico scade. Definire il tempo giusto di scadenza implica un trade-off: un tempo breve riduce il rischio di ordini "bloccati" (prodotto riservato ma non pagato), ma mette pressione sul cliente; un tempo lungo migliora l'esperienza ma aumenta il tempo di indisponibilità dello stock.
Per prodotti fisici con stock limitato, 30-60 minuti è lo standard più comune. Per prodotti digitali o con stock abbondante, 24 ore è ragionevole.
L'UX di scadenza merita attenzione: un conto alla rovescia visibile al checkout crea urgenza legittima. Quando il codice scade, la pagina deve offrire un pulsante "Genera nuovo codice" senza perdere i dati dell'ordine. Costringere il cliente a rifare il checkout da zero per una scadenza del pagamento è un abbandono evitabile.
Impatto sulle Conversioni per Segmento
I pagamenti istantanei non impattano la conversione in modo uniforme. L'effetto varia significativamente per ticket medio, pubblico e categoria:
| Segmento | Impatto sulla conversione | Motivo principale |
|---|---|---|
| Elettronica (ticket alto) | Alto (+7-12%) | Evita limiti del credito; approvazione immediata |
| Moda e abbigliamento | Medio (+3-7%) | Pubblico giovane preferisce Satispay |
| Alimentari e acquisto rapido | Basso (+1-3%) | Il bonifico era già marginale; carta dominava |
| B2B / aziende | Alto (+8-15%) | Le aziende preferiscono non usare carte aziendali |
| Infoprodotti e corsi | Molto alto (+12-20%) | Decisione impulsiva; pagamento istantaneo elimina la barriera |
Offrire uno sconto per pagamenti istantanei (generalmente 1-2%, equivalente alla commissione del gateway) è una pratica che aumenta l'adozione del metodo e migliora il margine del merchant.
Conclusione
I pagamenti istantanei ben implementati non sono semplicemente un metodo di pagamento in più — sono un vantaggio operativo. L'approvazione immediata riduce il ciclo dell'ordine, l'assenza di chargeback (nel caso di bonifici) semplifica la gestione finanziaria e il costo di transazione inferiore migliora il margine su ogni vendita.
L'implementazione tecnica — QR code dinamici, webhook idempotenti, gestione della scadenza e logica di validazione del valore — richiede attenzione a dettagli che la documentazione dei provider non sempre chiarisce. Nella SystemForge implementiamo flussi di pagamento completi per l'e-commerce italiano, inclusi i casi limite che la maggior parte delle integrazioni ignora. Contatta il nostro team per discutere del tuo progetto.
Vuoi creare il tuo E-commerce?
Sviluppiamo negozi online completi, dal catalogo al checkout.
Scopri di più →Hai bisogno di aiuto?