Vai al contenuto principale

Panoramica

Dodo Payments restituisce un motivo dettagliato di fallimento ogni volta che un tentativo di pagamento non ha successo. Questi motivi sono standardizzati tra i vari metodi di pagamento e fornitori, così puoi implementare una gestione coerente nella tua applicazione. Quando un pagamento fallisce, il webhook payment.failed e l’oggetto di pagamento espongono:
  • error_code — un motivo di fallimento standardizzato dalla tabella sottostante.
  • error_message — una spiegazione comprensibile.
  • retry_attempt0 per l’addebito originale, 1 o superiore per ogni tentativo di rinnovo abbonamento programmato.
Comprendere questi motivi di fallimento ti consente di fornire un feedback chiaro ai clienti, decidere se vale la pena riprovare e recuperare più entrate.

Handle Payment Failures

Una guida passo-passo per gli sviluppatori per leggere questi codici dai webhook e dall’API, mostrarli ai clienti e decidere quando riprovare.

Rifiuti Soft vs. Rifiuti Hard

Ogni codice di fallimento rientra in una delle due categorie. Questa distinzione determina se dovresti riprovare con lo stesso metodo di pagamento o chiedere al cliente un nuovo metodo.
Tipo di rifiutoCosa significaCosa fareEsempi
Rifiuto softTemporaneo o correggibile — la stessa carta può avere successo in un tentativo successivo o se il cliente corregge il suo input.Sicuro da riprovare (dopo un ritardo, o una volta che il cliente corregge i suoi dettagli).INSUFFICIENT_FUNDS, GENERIC_DECLINE, CARD_VELOCITY_EXCEEDED, PROCESSING_ERROR, NETWORK_ERROR, NETWORK_TIMEOUT, TRY_AGAIN_LATER
Rifiuto hardTerminale — riprovare con la stessa carta non cambierà il risultato.Non riprovare la stessa carta. Chiedi al cliente di utilizzare un altro metodo di pagamento o contattare la sua banca.STOLEN_CARD, LOST_CARD, PICKUP_CARD, DO_NOT_HONOR, FRAUDULENT, INVALID_ACCOUNT
Per i rinnovi di abbonamento, Dodo Payments applica automaticamente questa distinzione: i rifiuti soft vengono ri-tentati da Ripetizioni Pagamento Abbonamento, mentre i rifiuti hard terminano immediatamente la catena di rifiuti e vengono gestiti al meglio con Gestione dei Solleciti di Abbonamento.
Non rivelare mai al cliente il vero motivo per STOLEN_CARD, LOST_CARD, PICKUP_CARD o FRAUDULENT. Mostrare questi motivi può avvisare un attore fraudolento. Mostrare sempre al cliente un messaggio di rifiuto generico (ad esempio, *“La tua carta è stata rifiutata. Si prega di contattare la banca o utilizzare un’altra carta.”) e registrare solo internamente il codice specifico.

Motivi di Fallimento delle Transazioni

La seguente tabella elenca ogni codice di fallimento, il tipo di rifiuto, se il cliente può risolverlo, una descrizione e l’azione consigliata.
Codice di FallimentoTipoErrore UtenteDescrizioneAzione Consigliata
AUTHENTICATION_FAILURESoftL’autenticazione non è riuscita durante la transazioneChiedi al cliente di riprovare e completare l’autenticazione 3DS, o utilizzare un’altra carta
AUTHENTICATION_REQUIREDSoftÈ necessaria un’ulteriore autenticazione per completare la transazioneSollecita il cliente a completare l’autenticazione 3DS. Per i rinnovi di abbonamento, chiedi al cliente di tornare e autenticarsi
AUTHENTICATION_TIMEOUTSoftIl processo di autenticazione è scadutoChiedi al cliente di riprovare e completare prontamente l’autenticazione
CARD_DECLINEDSoftNoLa carta è stata rifiutata dalla banca emittente senza un motivo specifico (rifiuto generico)Chiedi al cliente di riprovare, contattare la banca, o utilizzare un’altra carta
CARD_NOT_ACTIVATEDSoftLa carta non è stata attivata dal titolare della cartaChiedi al cliente di attivare la carta con la sua banca, poi riprovare
CARD_VELOCITY_EXCEEDEDSoftTroppi tentativi di transazioni in un breve periodoChiedi al cliente di attendere e riprovare più tardi, o contattare la banca riguardo ai limiti
CUSTOMER_CANCELLEDSoftIl cliente ha annullato la transazioneConsenti al cliente di ricominciare il checkout quando è pronto
DO_NOT_HONORHardNoLa banca emittente ha rifiutato esplicitamente la transazione (codice ISO 8583 05 — non onorare); le reti lo trattano come terminaleChiedi al cliente di contattare la sua banca; non riprovare la stessa carta
EXPIRED_CARDHardLa carta è scadutaChiedi al cliente di utilizzare una carta con una data di scadenza valida
FRAUDULENTHardLa transazione è stata segnalata come potenzialmente fraudolentaMostra al cliente un messaggio di rifiuto generico — non rivelare il motivo. Chiedi loro di utilizzare un’altra carta
GENERIC_DECLINESoftNoLa transazione è stata rifiutata per un motivo non specificatoChiedi al cliente di contattare la sua banca o provare un’altra carta
INCORRECT_CVCSoftIl codice CVC fornito era erratoChiedi al cliente di inserire nuovamente il CVC corretto
INCORRECT_NUMBERSoftIl numero della carta è stato inserito in modo erratoChiedi al cliente di inserire nuovamente il numero corretto della carta
INSUFFICIENT_FUNDSSoftIl conto non ha fondi sufficienti per completare la transazioneChiedi al cliente di utilizzare un altro metodo di pagamento o riprovare una volta che i fondi sono disponibili
INVALID_ACCOUNTHardI dettagli del conto forniti sono non validiChiedi al cliente di contattare la banca o utilizzare un’altra carta
INVALID_AMOUNTSoftL’importo della transazione non è validoVerifica l’importo e eventuali limiti di acquisto con il cliente
INVALID_CARD_NUMBERSoftIl formato del numero di carta è non validoChiedi al cliente di inserire nuovamente un numero di carta valido
INVALID_CARD_OWNERSoftLe informazioni del titolare della carta non sono valideChiedi al cliente di correggere il nome del titolare della carta
INVALID_CVCSoftIl formato del CVC è non validoChiedi al cliente di inserire nuovamente un CVC valido
INVALID_EXPIRY_YEARSoftL’anno di scadenza della carta è non validoChiedi al cliente di inserire una data di scadenza valida
INVALID_PINSoftIl PIN fornito è erratoChiedi al cliente di inserire nuovamente il PIN corretto
INVALID_REQUESTSoftLa richiesta di transazione contiene dati non validiControlla i campi della richiesta di pagamento e invia nuovamente con dati validi
INVALID_UPI_IDSoftL’ID UPI fornito è non validoChiedi al cliente di inserire un ID UPI valido
LIMIT_EXCEEDEDSoftLa transazione supera il limite della carta o del contoChiedi al cliente di contattare la banca riguardo ai limiti, o utilizzare un altro metodo
LIVE_MODE_TEST_CARDHardÈ stata usata una carta di test in modalità liveUsa una carta reale — riprovare la carta di test fallirà sempre in modalità live
LOST_CARDHardLa carta è stata segnalata come persaMostra al cliente un messaggio di rifiuto generico — non rivelare il motivo. Chiedi loro di utilizzare un’altra carta
MANDATE_INVALIDSoftIl mandato di pagamento è non validoChiedi al cliente di configurare nuovamente il mandato di pagamento
MANDATE_REQUIREDSoftÈ richiesto un mandato per questa transazioneConfigura un mandato e chiedi al cliente di autorizzarlo prima dell’addebito
MANDATE_REQUIRED_SYSTEMHardNoIl sistema richiede un mandato per questo tipo di transazioneAssicurati che il flusso di configurazione del mandato sia completato prima dell’addebito
NETWORK_ERRORSoftNoSi è verificato un errore di rete durante la transazioneTransitorio — riprovare il pagamento dopo un breve ritardo
NETWORK_TIMEOUTSoftNoLa richiesta di rete è scadutaTransitorio — riprovare il pagamento dopo un breve ritardo
ORDER_ALREADY_EXISTSSoftNoUn ordine esiste già per questa transazione (creazione ordine duplicata)Verifica lo stato dell’ordine esistente prima di riprovare; contatta il supporto se persiste
ORDER_CREATION_FAILEDSoftNoImpossibile creare l’ordine per la transazioneErrore transitorio/sistema — riprovare il pagamento; contatta il supporto se persiste
PAYMENT_METHOD_PROVIDER_DECLINEDHardIl fornitore del metodo di pagamento ha rifiutato la transazioneChiedi al cliente di contattare il fornitore o utilizzare un altro metodo di pagamento
PAYMENT_METHOD_UNSUPPORTEDHardIl metodo di pagamento non è supportato per questa transazioneChiedi al cliente di utilizzare un metodo di pagamento supportato
PICKUP_CARDHardLa carta è stata segnalata come persa o rubata e contrassegnata per il ritiroMostra al cliente un messaggio di rifiuto generico — non rivelare il motivo. Chiedi loro di utilizzare un’altra carta
PROCESSING_ERRORSoftNoSi è verificato un errore durante l’elaborazione della transazioneTransitorio — riprovare il pagamento; se persiste, chiedi al cliente di contattare la banca
PROVIDER_UNSUPPORTEDHardNoIl fornitore di pagamento non supporta questo tipo di transazioneChiedi al cliente di utilizzare un altro metodo di pagamento
REENTER_TRANSACTIONSoftÈ necessario reinserire la transazioneChiedi al cliente di riprovare il pagamento
REVOCATION_OF_AUTHORIZATIONHardL’autorizzazione per la transazione è stata revocataChiedi al cliente di utilizzare un altro metodo di pagamento
STOLEN_CARDHardLa carta è stata segnalata come rubataMostra al cliente un messaggio di rifiuto generico — non rivelare il motivo. Chiedi loro di utilizzare un’altra carta
SUBSCRIPTION_NOT_ACTIVEHardNoL’abbonamento non è attivo, quindi l’addebito ricorrente non è stato possibileRiattiva l’abbonamento (ad esempio, aggiornando il metodo di pagamento) prima di tentare nuovamente l’addebito
TRANSACTION_NOT_ALLOWEDHardLa transazione non è consentita per questa carta o contoChiedi al cliente di contattare la sua banca per consentire questo tipo di transazione, o utilizzare un’altra carta
TRANSACTION_NOT_APPROVEDHardLa transazione non è stata approvataChiedi al cliente di contattare la sua banca o provare un’altra carta
TRY_AGAIN_LATERSoftNoLa transazione dovrebbe essere ritentata più tardiTransitorio — riprovare il pagamento più tardi
UNKNOWN_ERRORSoftNoSi è verificato un errore sconosciutoRiprovare il pagamento; se persiste, contatta il supporto
Errore Utente indica se il rifiuto del pagamento può essere risolto dal cliente. Quando Yes, il cliente può agire per risolvere il problema (ad esempio, inserire i dettagli della carta corretti). Quando No, il rifiuto è dovuto a problemi a livello di sistema o restrizioni bancarie che il cliente non può risolvere direttamente.

Gestione dei Fallimenti in Modo Programmatico

Leggi error_code dal webhook payment.failed o dall’oggetto di pagamento, mappalo con l’azione consigliata sopra, e decidi se riprovare. Per i rinnovi di abbonamento, i rifiuti soft sono riprovati automaticamente per te — vedi Ripetizioni Pagamento Abbonamento. Per errori a livello di API e di logica aziendale (come PAYMENT_NOT_SUCCEEDED o REFUND_WINDOW_EXPIRED) che non sono rifiuti di carta, vedi il riferimento Error Codes.

Correlati

Handle Payment Failures

Guida completa per rilevare, mostrare e riprovare i pagamenti falliti.

Error Codes

Codici di errore di API e logica aziendale per fallimenti non di rifiuto.

Subscription Payment Retries

Ripetizioni automatiche che recuperano i rifiuti soft sui rinnovi di abbonamento.

Subscription Dunning

Sequenze email che recuperano i rifiuti hard sollecitando un aggiornamento del metodo di pagamento.

Supporto

Per ulteriore aiuto con fallimenti di transazione o problemi di integrazione, contatta il nostro team di supporto a support@dodopayments.com.
Ultima modifica il 18 giugno 2026