Panoramica
L’API di Dodo Payments utilizza codici di stato HTTP standard e codici di errore personalizzati per indicare il successo o il fallimento delle richieste API. Quando si verifica un errore, l’API restituisce un codice di stato HTTP appropriato e una risposta JSON contenente informazioni dettagliate sull’errore.
Ogni risposta di errore include:
- Un codice di stato HTTP che indica la categoria generale dell’errore
- Un codice di errore specifico che identifica la natura esatta dell’errore
- Un messaggio di errore leggibile dall’uomo che spiega cosa è andato storto
- Dettagli aggiuntivi sull’errore quando applicabile
Comprendere questi codici di errore e i loro significati è fondamentale per:
- Risolvere problemi di integrazione
- Implementare una corretta gestione degli errori nella tua applicazione
- Fornire feedback significativi agli utenti finali
- Mantenere un sistema di elaborazione dei pagamenti robusto
Le sezioni seguenti forniscono informazioni dettagliate sui codici di stato HTTP standard e sui codici di errore specifici che potresti incontrare utilizzando l’API di Dodo Payments.
Codici di Errore API Standard
| Codice di errore | Stato HTTP | Descrizione |
|---|
| 400 | Richiesta non valida | La richiesta era malformata o conteneva parametri non validi |
| 401 | Non autorizzato | L’autenticazione è fallita o la chiave API non è valida |
| 403 | Vietato | La chiave API non ha il permesso di accedere alla risorsa richiesta |
| 404 | Non trovato | La risorsa richiesta non esiste |
| 405 | Metodo non consentito | Il metodo HTTP non è supportato per questo endpoint |
| 409 | Conflitto | La richiesta è in conflitto con lo stato attuale della risorsa |
| 422 | Entità non elaborabile | La richiesta era ben formata ma conteneva errori semantici |
| 429 | Troppe richieste | Limite di frequenza superato |
| 500 | Errore interno del server | Si è verificato un errore imprevisto sui nostri server |
| 502 | Bad Gateway | Il server ha ricevuto una risposta non valida da un server a monte |
| 503 | Servizio non disponibile | Il servizio è temporaneamente non disponibile |
| 504 | Timeout del gateway | Il server ha superato il tempo di attesa per una risposta a monte |
Formato della Risposta di Errore
Quando si verifica un errore, l’API restituisce una risposta JSON con la seguente struttura:
{
"code": "UNSUPPORTED_COUNTRY",
"message": "Country AI currently not supported"
}
Riferimento ai Codici di Errore
-
ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT
- Trigger: Attivazioni della chiave di licenza: nuovo limite < numero di istanze esistente
- Message: Il nuovo limite di attivazioni non può essere inferiore al numero di istanze corrente
-
ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED
- Trigger: Tentativo di aggiungere componenti aggiuntivi a sottoscrizioni con fatturazione basata sull’utilizzo
- Message: I componenti aggiuntivi nelle sottoscrizioni non sono supportati per la fatturazione basata sull’utilizzo
-
ADDONS_NOT_ALLOWED_FOR_ON_DEMAND
- Trigger: Tentativo di aggiungere componenti aggiuntivi a sottoscrizioni on demand
- Message: I componenti aggiuntivi non sono consentiti per le sottoscrizioni on demand
-
BRAND_MISMATCH
- Trigger: Gli articoli del carrello appartengono a marchi diversi
- Message: Tutti gli articoli nel carrello devono appartenere allo stesso marchio
-
BRAND_NOT_ENABLED
- Trigger: Il marchio è disabilitato o non attivo
- Message: Il marchio fornito non è abilitato
-
BRAND_SUBMISSION_NOT_ENABLED
- Trigger: Funzione di reinvio della verifica del marchio non abilitata
- Message: Il reinvio della verifica del marchio non è abilitato
-
CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
- Trigger: Tentativo di addebitare una sottoscrizione programmata per la cancellazione
- Message: Sottoscrizione programmata per la cancellazione
-
CHECKOUT_SESSION_CONSUMED
- Trigger: La sessione di checkout ha già generato un pagamento
- Message: La sessione di checkout è già stata utilizzata
-
DISCOUNT_CODE_ALREADY_EXISTS
- Trigger: Creazione di codice sconto duplicato
- Message: Il codice sconto esiste già
-
DISCOUNT_CODE_EXPIRED
- Trigger: Il codice sconto ha superato la data
expires_at
- Message: Il codice sconto è scaduto
-
DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
- Trigger: Il codice sconto è stato riutilizzato dopo che
usage_limit è stato raggiunto
- Message: Il limite di utilizzo non può essere inferiore a times_used / Il codice sconto ha raggiunto il limite di utilizzo
-
DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND
- Trigger: Codice applicato a una sottoscrizione on demand
- Message: Il coupon sconto non è disponibile per le sottoscrizioni on demand
-
DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT
- Trigger: Codice applicato a prodotto/i non correlati
- Message: Il coupon sconto non è disponibile per questo prodotto
-
DUPLICATE_LINE_ITEMS_IN_REQUEST
- Trigger: Lo stesso
item_id appare due volte in items[]
- Message: Sono stati specificati item_id duplicati nell’array items
-
DUPLICATE_METER_IDS_IN_REQUEST
- Trigger: Lo stesso meter ID appare più volte nella richiesta
- Message: Non sono consentiti ID contatore duplicati
-
EXCHANGE_RATE_NOT_FOUND
- Trigger: Nessun tasso di cambio per la coppia di valute
from → to
- Message: Impossibile trovare il tasso di cambio per convertire da Currency a Currency
-
EXISTING_REFUND_REQUEST_PROCESSING
- Trigger: La precedente richiesta di rimborso è ancora in elaborazione
- Message: Una richiesta di rimborso con stato “Pending” è ancora in elaborazione
-
INACTIVE_LICENSE_KEY
- Trigger: Lo stato della chiave ≠
ACTIVE
- Message: La chiave di licenza non è attiva
-
INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED
- Trigger: Cambio piano su sottoscrizione inattiva
- Message: Il cambio piano non è supportato per sottoscrizioni inattive
-
INSUFFICIENT_WALLET_FUNDS
- Trigger: Il saldo del wallet è inferiore all’importo da addebitare
- Message: Fondi insufficienti nel wallet
-
INTEGER_CONVERSION_FAILURE
- Trigger: Qualsiasi conversione intero ↔ stringa/decimale che fallisce lato server
- Message: Errore di conversione dell’intero
-
INTERNAL_SERVER_ERROR
- Trigger: Eccezioni non gestite; dovresti registrare i dettagli lato server
- Message: Nessun messaggio pubblico (errore 500 generico)
-
INVALID_DISCOUNT_CODE
- Trigger: Il codice non esiste / non è applicabile
- Message: Codice sconto non valido / Il codice sconto non può essere applicato a nessun prodotto nel carrello
-
INVALID_PERCENTAGE
- Trigger: Importo percentuale > 100% (o 10.000 punti base)
- Message: L’importo percentuale non può superare 10000 / L’importo del codice sconto non può superare il 100%
-
INVALID_QUANTITY
- Trigger: Quantità non valida specificata per il pricing basato sull’utilizzo
- Message: È consentita solo una quantità per i prodotti con prezzo basato sull’utilizzo
-
INVALID_QUERY_PARAMS
- Trigger: Parametri di query mutuamente esclusivi / malformati
- Message: I parametri di query devono contenere solo time_frame oppure (start, end)
-
INVALID_REQUEST_BODY
- Trigger: JSON malformato o violazione dello schema
- Message: Il corpo della richiesta non è valido. Controlla le intestazioni e l’oggetto della richiesta.
-
INVALID_REQUEST_PARAMETERS
- Trigger: Semantica errata (es. data nel passato)
- Message: Impossibile impostare next_billing_date in un momento passato
-
INVALID_SUGGESTED_PRICE
- Trigger: Il prezzo PWYW è inferiore al prezzo minimo consentito
- Message: Il prezzo suggerito non può essere inferiore al prezzo minimo. Nel caso di pay what you want, il prezzo è considerato come importo minimo accettato
-
INVALID_TAX_ID
- Trigger: La validazione di VAT/GST/TIN è fallita
- Message: L’ID fiscale non è valido
-
LICENSE_KEY_LIMIT_REACHED
- Trigger: Attivazioni = limite
- Message: È stato raggiunto il limite di attivazioni della chiave di licenza
-
LICENSE_KEY_NOT_FOUND
- Trigger: ID istanza o ID chiave non valido
- Message: Istanza della chiave di licenza non trovata o non appartiene a questa chiave
-
LINE_ITEM_FULLY_REFUNDED
- Trigger: Tentativo di rimborsare una voce già completamente rimborsata
- Message: La voce è già stata completamente rimborsata e non può essere rimborsata ulteriormente.
-
LINE_ITEM_NOT_FOUND
- Trigger: L’ID dell’articolo non fa parte del pagamento indicato
- Message: La voce non è stata trovata nel pagamento
-
LINE_ITEM_PRORATED
- Trigger: Tentativo di rimborso o aggiornamento su una voce proporzionata
- Message: La voce non può essere rimborsata perché è proporzionata
-
LINE_ITEM_REFUND_AMOUNT_TOO_HIGH
- Trigger: L’importo del rimborso è superiore all’importo pagato (incluse tasse)
- Message: La voce ha richiesto un rimborso di incluse tasse, superiore all’importo pagato
-
LINE_ITEM_REFUND_AMOUNT_TOO_LOW
- Trigger: L’importo del rimborso è inferiore alla soglia minima
- Message: La voce ha richiesto un rimborso di che è troppo basso
-
MAXIMUM_KEYS_REACHED
- Trigger: I metadata / campi personalizzati hanno superato 50 coppie
- Message: Supera le 50 coppie chiave-valore
-
MERCHANT_NOT_LIVE
- Trigger: L’azienda è ancora in modalità di test/sandbox
- Message: Il commerciante non è attivo
-
METER_IS_DELETED
- Trigger: Tentativo di utilizzare un contatore eliminato
- Message: Il contatore è già stato eliminato
-
MISSING_ADDON_IDS
- Trigger: La lista
addon_id è vuota o contiene ID sconosciuti
- Message: Uno o più ID prodotto non esistono:
-
MISSING_METER_IDS
- Trigger: L’elenco degli ID contatore è vuoto o contiene ID non validi
- Message: Uno o più ID contatore non esistono:
-
MISSING_PRODUCT_INFORMATION
- Trigger: Il prodotto esiste ma mancano informazioni obbligatorie
- Message: Il prodotto esiste ma altre informazioni obbligatorie sono mancanti o non valide
-
NEGATIVE_BALANCE_ADJUSTMENT
- Trigger: Tentativo di rendere negativo il saldo del wallet
- Message: Non è consentito rendere negativo il saldo del wallet
-
NO_ELIGIBLE_PAYMENT_METHODS
- Trigger: Dopo il filtraggio, non rimane nulla
- Message: Nessun metodo di pagamento idoneo trovato
-
NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS
- Trigger: Tentativo di impostare una data di scadenza su una chiave basata su sottoscrizione
- Message: Non è possibile impostare una data di scadenza per una chiave di licenza basata su sottoscrizione
-
NOT_FOUND
- Trigger: 404 generico per qualsiasi risorsa mancante
- Message: Voce non trovata (o più specifica)
-
ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED
- Trigger: Il cambio piano non è consentito per on-demand
- Message: Il cambio piano non è supportato per le sottoscrizioni on demand
-
ON_DEMAND_SUBSCRIPTIONS_NOT_ENABLED
- Trigger: L’azienda ha la feature flag disattivata
- Message: Le sottoscrizioni on demand non sono abilitate per questa azienda
-
ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED
- Trigger: Tentativo di usare on-demand con fatturazione basata sull’utilizzo
- Message: Le sottoscrizioni on demand non sono supportate per la fatturazione basata sull’utilizzo
-
PAY_AS_YOU_WANT_AMOUNT_REQUIRED
- Trigger: Mancanza del prezzo per un prodotto PWYW
- Message: L’importo è obbligatorio per un prodotto pay as you want
-
PAYMENT_ALREADY_REFUNDED
- Trigger: Rimborso duplicato
- Message: Questo pagamento è già stato rimborsato
-
PAYMENT_HAS_BEEN_REFUNDED
- Trigger: Il pagamento è stato completamente rimborsato
- Message: L’ID pagamento è stato completamente rimborsato.
-
PAYMENT_NOT_SUCCEEDED
- Trigger: Tentativo di rimborsare/elaborare un pagamento non riuscito
- Message: Il pagamento fornito non è stato completato con successo
-
PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
- Trigger: Tentativo di cambio piano su una sottoscrizione programmata per la cancellazione
- Message: Sottoscrizione programmata per la cancellazione
-
PREVIOUS_PAYMENT_PENDING
- Trigger: Tentativo di creare un addebito mentre il precedente è in uno stato non terminale
- Message: Impossibile creare un nuovo addebito poiché il pagamento precedente non è ancora riuscito
-
PRODUCT_CART_EMPTY
- Trigger: Carrello prodotti vuoto inviato
- Message: product_cart è vuoto
-
PRODUCT_IS_DELETED
- Trigger: Prodotto eliminato in modo soft
- Message: Nessun messaggio
-
REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT
- Trigger: L’importo totale del rimborso è superiore all’importo pagato
- Message: L’importo del rimborso calcolato è maggiore dell’importo pagato
-
REFUND_WINDOW_EXPIRED
- Trigger: Fuori dalla finestra di rimborso consentita
- Message: I rimborsi non possono essere avviati giorni dopo la creazione del pagamento. Contatta support@dodopayments.com.
-
REQUEST_AMOUNT_BELOW_MINIMUM
- Trigger: Importo < minimo del prodotto
- Message: L’importo non può essere inferiore al minimo specificato per il prodotto
-
SUBSCRIPTION_EXPIRED
- Trigger: La fatturazione è passata oltre
ends_at
- Message: La sottoscrizione è scaduta, impossibile creare nuovi addebiti
-
SUBSCRIPTION_INACTIVE
- Trigger: Lo stato ≠
ACTIVE
- Message: La sottoscrizione non è attiva
-
SUBSCRIPTION_NOT_ON_DEMAND
- Trigger: Era previsto on-demand ma è arrivato un intervallo fisso
- Message: La sottoscrizione non è già on demand
-
SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED
- Trigger: I tentativi di pagamento della sottoscrizione hanno superato il numero massimo di tentativi
- Message: È stato superato il limite massimo di 10 tentativi per questa sottoscrizione
-
TOO_MANY_REQUESTS
- Trigger: Limite di velocità 429
- Message: Nessun messaggio
-
TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT
- Trigger: Il totale combinato del carrello è inferiore al minimo del gateway
- Message: È richiesto un importo minimo di per elaborare il pagamento
-
UNABLE_TO_EDIT_PRIMARY_BRAND
- Trigger: Tentativo di aggiornare il marchio primario tramite l’API normale
- Message: Il marchio primario non può essere aggiornato tramite questo endpoint API.
-
UNAUTHORIZED
- Trigger: Nessuna chiave API o token/scope non valido
- Message: Non sei autorizzato a eseguire questa azione
-
UNSUPPORTED_ACTION
- Trigger: Azione non supportata per il tipo di risorsa
- Message: Il cambio piano per le sottoscrizioni basate sull’utilizzo non è supportato
-
UNSUPPORTED_BILLING_CURRENCY
- Trigger: Sottoscrizioni limitate al USD
- Message: Le valute di fatturazione non USD non sono supportate per le sottoscrizioni
-
UNSUPPORTED_COUNTRY
- Trigger: Geolocalizzazione non ancora supportata
- Message: Il paese non è attualmente supportato
-
UNSUPPORTED_CURRENCY
- Trigger: Valuta del prodotto o dell’addon non valida
- Message: La valuta non è attualmente supportata / Attualmente sono supportati solo prodotti in USD e INR / Solo USD e INR supportati per il prezzo degli addon / È possibile richiedere solo USD o INR per billing_currency / Valuta non supportata / Valuta imprevista per sottoscrizioni con carta indiana
-
UNSUPPORTED_DISCOUNT_TYPE
- Trigger: Sconti a importo fisso, ecc., non ancora disponibili
- Message: Per ora sono supportati solo i codici sconto percentuali
-
UNSUPPORTED_PAYMENT_CURRENCY
- Trigger: La valuta di pagamento è bloccata per il connettore
- Message: Le transazioni INR non sono supportate per questa transazione
-
UNSUPPORTED_TAX_CATEGORY
- Trigger: La stringa della categoria fiscale non è nell’enumerazione
- Message: La categoria non è attualmente supportata
-
UNSUCCESSFUL_PAYMENT_ID
- Trigger: L’ID pagamento fa riferimento a un pagamento non riuscito
- Message: L’ID pagamento ha uno stato non riuscito.
-
ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED
- Trigger: Tentativo di rimborsare un pagamento con importo zero
- Message: Impossibile rimborsare un pagamento con importo zero
Migliori Pratiche
- Gestisci sempre gli errori in modo elegante nella tua applicazione
- Implementa una corretta registrazione degli errori
- Usa messaggi di errore appropriati per gli utenti finali
- Implementa la logica di ripetizione per errori transitori
- Contatta il supporto per problemi irrisolti
Supporto
Per ulteriore aiuto con i codici di errore o problemi di integrazione, contatta il nostro team di supporto all’indirizzo support@dodopayments.com.Last modified on February 27, 2026