Stripe carte salvate (saved cards)

Stripe carte salvate (saved cards)

Salvare le carte dei clienti permette di abilitare acquisti one-click, rinnovi automatici e MOTO payments. Stripe gestisce tutto il PCI-DSS scope tramite oggetti PaymentMethod salvati sul Customer, mantenendo l'integrazione semplice ma compliant.

SetupIntent vs PaymentIntent

PaymentIntent gestisce un pagamento immediato; SetupIntent gestisce il setup di un PaymentMethod per addebiti futuri (off_session). Quando vuoi salvare una carta senza addebitare subito, crea un SetupIntent. Quando vuoi addebitare e salvare contemporaneamente, usa PaymentIntent con setup_future_usage='off_session'.

Off-session payments e SCA

I pagamenti off_session sono quelli iniziati dal merchant senza il cliente presente (rinnovi subscription, MOTO). Per essere SCA-compliant Stripe richiede che il primo setup avvenga 'on_session' con autenticazione 3DS2 esplicita. I rinnovi successivi sono tipicamente esenti SCA come MIT (Merchant Initiated Transaction).

Card Account Updater e network token

Card Account Updater (CAU) è un servizio Visa/Mastercard che notifica al merchant quando una carta salvata viene rinnovata (nuova scadenza, nuova PAN per furto). Stripe lo include nativamente: i PaymentMethod salvati vengono aggiornati automaticamente, riducendo drasticamente i 'card expired' decline. Network Token è un'ulteriore step: la PAN viene sostituita da un token network-issued che resta valido anche se la carta fisica cambia. Stripe usa network token automaticamente per Apple/Google Pay e progressivamente per tutte le saved card. Risultato: -20% involuntary churn per subscription business.

Customer object e PaymentMethod default

Ogni Customer può avere multiple PaymentMethod attached. Imposta uno come default via customer.invoice_settings.default_payment_method per subscription billing (Stripe usa questo per rinnovi). Esponi al cliente UI per: vedere lista carte, aggiungere nuove (via SetupIntent), rimuovere (stripe.paymentMethods.detach), cambiare default. Best practice UX: maschera PAN mostrando solo last4 e brand, mostra expiry date, evidenzia quella default. Per saved card multiple, lascia che il cliente scelga al checkout (selettore) o usi la default. Cleanup periodico: detach card non usate da > 24 mesi.

Off-session e MIT classification

Pagamenti off_session richiedono classification corretta: MIT (Merchant Initiated Transaction) per subscription rinnovi e standing order; CIT (Customer Initiated) per checkout normale. Stripe espone payment_intent.confirmation_method e setup_future_usage per controllare. MIT su Stripe: 1) Setup intent con usage='off_session'; 2) Save PaymentMethod su Customer; 3) Future charge con payment_method=pm_X, customer=cus_Y, off_session=true. Network rules su MIT: liability shift differ vs CIT, exemption SCA, decline reason diversi. Misclassification può triggerare authentication required errors o higher decline rate.

Customer experience flow saved card

UX best practice saved card su web app: 1) Onboarding - chiedi di salvare carta solo dopo primo successful payment (no premature ask); 2) Profile area - lista carte salvate con last4, brand, expiry, default flag, action delete; 3) Checkout - dropdown saved cards con 'Use a different card' option; 4) Update card - SetupIntent flow standalone per add new card senza purchase; 5) Notification - email cliente quando carta scade (use customer.subscription.trial_will_end o similar logic). UI library helper: react-stripe-elements gestisce questi pattern out-of-box.

3DS2 e exemption su saved card

Pagamenti su saved card off_session possono richiedere SCA in alcuni casi: 1) Primo charge dopo SetupIntent non SCA-compliant; 2) Cambio significativo amount vs trend (es. da 9,99 a 999 EUR); 3) Cambio merchant/geography rispetto pattern. Stripe gestisce automaticamente: se off_session richiede SCA, payment_intent va in 'requires_action' invece di 'succeeded'. Soluzione: invia email cliente con link al checkout per autenticare. Stripe espone 'recovery URL' per questo scenario. Per minimizzare frequency, fai sempre primo charge on_session con SCA challenge - questo 'autentica' la combo customer+payment_method per future off_session.

Cards rules e BIN-based decisioni

BIN (Bank Identification Number) - prime 6-8 cifre PAN - identifica issuer banca. Stripe espone BIN data via PaymentMethod.card.country, card.brand, card.funding (debit/credit/prepaid). Per business logic: 1) Restrict prepaid card per subscription (risk recurring failure alto); 2) Higher 3DS rule su BIN-issuer specific (es. banche con storico chargeback alto); 3) Geo-routing: route a acquirer locale se card UE per migliore approval rate; 4) BIN-based fraud signal (alcune BIN più target frode). Stripe espone questi data, ma BIN-based logic richiede care - non discriminare illegalmente (es. blocco BIN paese specifico potrebbe violare anti-discrimination law).

Procedura passo-passo

  1. Crea il Customer: stripe.customers.create({ email }).
  2. Genera SetupIntent: stripe.setupIntents.create({ customer, payment_method_types: ['card'] }).
  3. Frontend: usa Payment Element + stripe.confirmSetup(client_secret) per salvare carta.
  4. Stripe completa eventuale 3DS2 challenge in fase di setup.
  5. Il PaymentMethod risultante è salvato sul Customer come default.
  6. Per addebito futuro: PaymentIntent con customer + payment_method + off_session=true.
  7. Gestisci eventuale requires_action (raro per off_session ma possibile).
  8. Esponi al cliente la lista carte salvate via stripe.paymentMethods.list.

Errori comuni e come risolverli

  • Salvataggio senza SCA iniziale: futuri addebiti possono fallire per SCA non valida.
  • Off_session su carta nuova: fallisce se l'emittente richiede challenge; gestisci requires_action.
  • PCI scope errato: non salvare PAN sul tuo server; usa solo payment_method_id.
  • Mancata gestione card expired: carte scadono; gestisci payment_method.updated webhook.

Domande frequenti

D: E' PCI-DSS compliant?
R: Sì, Stripe gestisce il PAN; tu salvi solo l'ID PaymentMethod.

D: Posso usare la stessa carta per più Customer?
R: Sì, ma di norma è 1 PaymentMethod per Customer.

D: La carta scaduta viene aggiornata automaticamente?
R: Con Card Account Updater (CAU) molte carte vengono refresh automaticamente.

D: Posso revocare l'autorizzazione lato cliente?
R: Sì, esponi UI per detach PaymentMethod via API.

Hai bisogno di aiuto?

Se vuoi integrare Stripe con il team di G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?