Skip to main content

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
Questi sono errori di API e logica aziendale. Per i motivi di rifiuto della carta restituiti su un pagamento non riuscito (come INSUFFICIENT_FUNDS o CARD_DECLINED), consulta invece il riferimento Fallimenti delle Transazioni.

Codici di Errore API Standard

Formato della Risposta di Errore

Quando si verifica un errore, l’API restituisce una risposta JSON con la seguente struttura:

Riferimento ai Codici di Errore

I codici di errore riportati di seguito sono raggruppati per area API a cui si riferiscono. Ogni voce elenca la condizione che lo attiva e il messaggio che l’API restituisce.

Autenticazione & Account

  • UNAUTHORIZED
    • Trigger: Nessuna chiave API o token / ambito non valido
    • Messaggio: Non sei autorizzato a eseguire questa azione
  • MERCHANT_NOT_LIVE
    • Trigger: L’attività è ancora in Test Mode
    • Message: L’esercente non è ancora live
  • BUSINESS_ARCHIVED
    • Trigger: Qualsiasi richiesta rivolta al cliente (checkout, payment link, storefront, Customer Portal o license key) per un’attività che è stata archiviata
    • Message: Questa attività è archiviata e non accetta più richieste

Pagamenti e checkout

  • CHECKOUT_SESSION_CONSUMED
    • Trigger: La sessione di checkout ha già generato un pagamento
    • Message: La sessione di checkout è già stata utilizzata
  • NO_ELIGIBLE_PAYMENT_METHODS
    • Trigger: Dopo il filtraggio, non è rimasto nulla
    • Message: Non sono stati trovati metodi di pagamento idonei
  • PAYMENT_NOT_SUCCEEDED
    • Trigger: Tentativo di rimborsare/elaborare un pagamento non riuscito
    • Message: Il pagamento fornito non è andato a buon fine
  • PREVIOUS_PAYMENT_PENDING
    • Trigger: Tentativo di creare un addebito mentre quello precedente si trova in uno stato non terminale
    • Message: Impossibile creare un nuovo addebito perché il pagamento precedente non è ancora andato a buon fine
  • UNSUCCESSFUL_PAYMENT_ID
    • Trigger: Il Payment ID fa riferimento a un pagamento non riuscito
    • Message: Il Payment ID ha uno stato non riuscito.

Connector e BYOP

Questi errori riguardano i connector di pagamento di proprietà del merchant (Bring Your Own Processor).
  • BYOP_CONNECTOR_DISABLED
    • Trigger: Aggiornamento di un metodo di pagamento su una subscription instradata tramite un connector BYOP disabilitato
    • Message: La subscription è instradata tramite il connector del merchant (BYOP), attualmente disabilitato
  • BYOP_CUSTOM_INVOICE_ADDRESS_MISSING
    • Trigger: Un pagamento instradato dal merchant (BYOP) non contiene l’indirizzo di fatturazione personalizzato richiesto
    • Message: L’indirizzo di fatturazione personalizzato BYOP è obbligatorio quando un pagamento viene instradato tramite il connector del merchant
  • CONNECTOR_LABEL_ALREADY_EXISTS
    • Trigger: Creazione di un connector con un’etichetta già esistente
    • Message: Esiste già un connector con questa etichetta. Scegli un’etichetta diversa.

Rimborsi

  • EXISTING_REFUND_REQUEST_PROCESSING
    • Trigger: La richiesta di rimborso precedente è ancora in elaborazione
    • Message: Una richiesta di rimborso con stato “Pending” è ancora in elaborazione
  • LINE_ITEM_FULLY_REFUNDED
    • Trigger: Tentativo di rimborsare una voce già completamente rimborsata
    • Message: La voce è stata completamente rimborsata e non può essere rimborsata ulteriormente.
  • LINE_ITEM_NOT_FOUND
    • Trigger: L’ID dell’elemento non fa parte del pagamento indicato
    • Message: Voce non trovata nel pagamento
  • LINE_ITEM_PRORATED
    • Trigger: Tentativo di rimborso o aggiornamento su una voce soggetta a prorata
    • Message: La voce non può essere rimborsata perché è soggetta a prorata
  • LINE_ITEM_REFUND_AMOUNT_TOO_HIGH
    • Trigger: Importo del rimborso > importo pagato (tasse incluse)
    • Message: L’importo del rimborso richiesto per la voce , tasse incluse, è , superiore all’importo pagato
  • LINE_ITEM_REFUND_AMOUNT_TOO_LOW
    • Trigger: Importo del rimborso inferiore alla soglia minima
    • Message: L’importo del rimborso richiesto per la voce è , un importo troppo basso
  • NOTHING_TO_REFUND
    • Trigger: Non rimane alcun importo rimborsabile; tutte le voci positive sono già state completamente rimborsate
    • Message: Non rimane alcun importo rimborsabile. Tutte le voci positive sono state completamente rimborsate.
  • PARTIAL_REFUND_NOT_ALLOWED
    • Trigger: Tentativo di rimborso parziale su un metodo di pagamento che supporta solo rimborsi completi
    • Message: I rimborsi parziali non sono consentiti per questo metodo di pagamento
  • PAYMENT_ALREADY_REFUNDED
    • Trigger: Rimborso duplicato
    • Message: Questo pagamento è già stato rimborsato
  • PAYMENT_HAS_BEEN_REFUNDED
    • Trigger: Il pagamento è stato completamente rimborsato
    • Message: Il Payment ID è stato completamente rimborsato.
  • REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT
    • Trigger: Importo complessivo dei rimborsi > importo pagato
    • Message: L’importo del rimborso calcolato è superiore all’importo pagato
  • REFUND_WINDOW_EXPIRED
    • Trigger: Al di fuori del periodo di rimborso consentito
    • Message: I rimborsi non possono essere avviati dopo giorni dalla creazione del pagamento. Contatta support@dodopayments.com.
  • ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED
    • Trigger: Tentativo di rimborsare un pagamento di importo zero
    • Message: Impossibile rimborsare un pagamento con importo monetario pari a zero

Subscription e add-on

  • ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Trigger: Tentativo di aggiungere add-on a subscription con fatturazione basata sull’utilizzo
    • Message: Gli add-on nelle subscription non sono supportati per la fatturazione basata sull’utilizzo
  • ADDONS_NOT_ALLOWED_FOR_ON_DEMAND
    • Trigger: Tentativo di aggiungere add-on a subscription on-demand
    • Message: Gli add-on non sono consentiti per le subscription on-demand
  • CANCEL_SCHEDULED_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Trigger: Customer Portal tenta di annullare una modifica di piano pianificata mentre l’attività ha disabilitato questa azione
    • Message: L’annullamento della modifica di piano pianificata è disabilitato per il Customer Portal.
  • CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Trigger: Tentativo di addebitare una subscription pianificata per l’annullamento
    • Message: Subscription pianificata per l’annullamento
  • CUSTOMER_HAS_EXISTING_SUBSCRIPTION
    • Trigger: Creazione di una subscription per un cliente che ne possiede già una, quando non sono consentite più subscription per cliente
    • Message: Il cliente ha una subscription esistente. Per consentire più subscription per cliente, modifica le impostazioni dell’attività
  • DO_NOT_BILL_NOT_ALLOWED_IN_CUSTOMER_PORTAL
    • Trigger: Modalità di prorata do_not_bill utilizzata in una modifica di piano nel Customer Portal
    • Message: La modalità di prorata do_not_bill non è consentita nel Customer Portal
  • DUPLICATE_ADDON_IDS_IN_REQUEST
    • Trigger: Lo stesso addon_id compare più di una volta nella richiesta
    • Message: Gli ID degli add-on duplicati non sono consentiti
  • INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED
    • Trigger: Modifica di piano su una subscription inattiva
    • Message: La modifica dei piani non è supportata per le subscription inattive
  • INVALID_PRORATION_MODE_WITH_NEXT_BILLING_DATE
    • Trigger: Una modalità di prorata diversa da full_immediately utilizzata con effective_at: next_billing_date
    • Message: Con effective_at: next_billing_date è consentita solo la modalità di prorata full_immediately
  • MISSING_ADDON_IDS
    • Trigger: Elenco addon_id vuoto o con ID sconosciuti
    • Message: Uno o più product ID non esistono:
  • ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED
    • Trigger: Sostituzione del piano non consentita per le subscription on-demand
    • Message: La modifica dei piani non è supportata per le subscription on-demand
  • ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Trigger: Tentativo di utilizzare on-demand con la fatturazione basata sull’utilizzo
    • Message: Le subscription On Demand non sono supportate per la fatturazione basata sull’utilizzo
  • ONE_TIME_PRODUCTS_NOT_ALLOWED_FOR_ON_DEMAND
    • Trigger: Prodotto una tantum aggiunto a una subscription on-demand
    • Message: I prodotti una tantum non sono consentiti per le subscription on-demand
  • PENDING_PLAN_CHANGE_EXISTS
    • Trigger: Richiesta di una nuova modifica di piano mentre una precedente è ancora in attesa di pagamento
    • Message: Esiste già una modifica di piano in sospeso per questa subscription. Attendi il completamento del pagamento corrente.
  • PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Trigger: Modifica del piano tramite Customer Portal mentre l’attività l’ha disabilitata
    • Message: La modifica del piano della subscription per il Customer Portal è disabilitata.
  • PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Trigger: Tentativo di modifica del piano su una subscription pianificata per l’annullamento
    • Message: Subscription pianificata per l’annullamento
  • SCHEDULE_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Trigger: Pianificazione di una modifica del piano tramite Customer Portal mentre l’attività l’ha disabilitata
    • Message: La pianificazione delle modifiche di piano è disabilitata per questa attività.
  • SCHEDULED_PLAN_CHANGE_EXISTS
    • Trigger: Creazione di una modifica di piano pianificata quando ne esiste già una
    • Message: Esiste già una modifica di piano pianificata per questa subscription. Annulla la modifica pianificata esistente prima di crearne una nuova.
  • SCHEDULED_PLAN_CHANGE_NOT_FOUND
    • Trigger: Riferimento o annullamento di una modifica di piano pianificata che non esiste
    • Message: Nessuna modifica di piano pianificata trovata per questa subscription.
  • SUBSCRIPTION_EXPIRED
    • Trigger: Fatturazione oltre expires_at
    • Message: La subscription è scaduta; non è possibile creare nuovi addebiti
  • SUBSCRIPTION_INACTIVE
    • Trigger: Status ≠ active
    • Message: La subscription non è attiva
  • SUBSCRIPTION_NOT_ON_DEMAND
    • Trigger: Previsto on-demand, ma ricevuto un intervallo fisso
    • Message: La subscription non è più on-demand
  • SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED
    • Trigger: I tentativi di pagamento della subscription hanno superato il numero massimo di tentativi
    • Message: Il limite massimo di 10 tentativi è stato superato per questa subscription

Prodotti, carrello e brand

  • BRAND_ALREADY_ARCHIVED
    • Trigger: Archiviazione di un brand già archiviato
    • Message: Il brand è già archiviato
  • BRAND_ARCHIVED
    • Trigger: Aggiornamento di un brand archiviato, invio per la verifica o associazione di un nuovo prodotto, raccolta di prodotti o subscription
    • Message: Il brand è archiviato e non può essere aggiornato
  • BRAND_ARCHIVE_TARGET_REQUIRED
    • Trigger: Archiviazione di un brand che contiene ancora prodotti, subscription attive o raccolte di prodotti senza una destinazione move_products_to
    • Message: Il brand contiene 12 prodotto/i. Imposta move_products_to su un brand di destinazione per riassegnarli.
  • BRAND_MISMATCH
    • Trigger: Gli articoli del carrello appartengono a brand diversi
    • Message: Tutti gli articoli nel carrello dei prodotti devono appartenere allo stesso brand
  • BRAND_NOT_ENABLED
    • Trigger: Il brand è disabilitato o non attivo
    • Message: Il brand fornito non è abilitato
  • BRAND_SUBMISSION_NOT_ENABLED
    • Trigger: La funzionalità di reinvio della verifica del brand non è abilitata
    • Message: Il reinvio della verifica del brand non è abilitato
  • CANNOT_ARCHIVE_PRIMARY_BRAND
    • Trigger: Archiviazione del brand principale, il cui brand ID corrisponde al business ID
    • Message: Il brand principale non può essere archiviato
  • FILE_IN_USE
    • Trigger: Eliminazione di un file di prodotto digitale ancora referenziato da concessioni di entitlement attive
    • Message: Il file digitale è referenziato da concessioni attive
  • INVALID_BRAND_ARCHIVE_TARGET
    • Trigger: move_products_to indica il brand da archiviare, un brand archiviato o un brand di un’altra attività
    • Message: move_products_to deve essere un brand di questa attività che non sia archiviato
  • INVALID_SUGGESTED_PRICE
    • Trigger: Prezzo PWYW < prezzo minimo consentito
    • Message: Il prezzo suggerito non può essere inferiore al prezzo minimo. Nel caso di pay what you want, il prezzo è considerato l’importo minimo accettato
  • LOCALIZED_PRICE_ALREADY_EXISTS
    • Trigger: Esiste già un prezzo localizzato per questo prodotto e paese/valuta
    • Message: Esiste già un prezzo localizzato per questo prodotto e paese/valuta
  • LOCALIZED_PRICE_DUPLICATES_BASE
    • Trigger: Il prezzo localizzato duplica la valuta/il paese di base del prodotto
    • Message: Il prezzo localizzato duplica la valuta/il paese di base del prodotto
  • LOCALIZED_PRICE_SHAPE_MISMATCH
    • Trigger: La struttura del prezzo localizzato non corrisponde a pricing_mode del prodotto
    • Message: La struttura del prezzo localizzato non corrisponde a pricing_mode del prodotto
  • MISSING_PRODUCT_INFORMATION
    • Trigger: Il prodotto esiste, ma mancano informazioni obbligatorie
    • Message: Il prodotto esiste, ma altre informazioni obbligatorie mancano o non sono valide
  • PAY_AS_YOU_WANT_AMOUNT_REQUIRED
    • Trigger: Prezzo mancante per il prodotto PWYW
    • Message: L’importo è obbligatorio per un prodotto pay as you want
  • PRODUCT_CART_EMTPY
    • Trigger: Carrello dei prodotti vuoto inviato
    • Message: product_cart è vuoto (il codice errore è scritto intenzionalmente EMTPY per corrispondere al valore esatto restituito dall’API)
  • PRODUCT_COLLECTION_IS_DELETED
    • Trigger: Operazione su una raccolta di prodotti che è stata eliminata
    • Message: Nessun messaggio
  • PRODUCT_COLLECTION_MUST_HAVE_PRODUCTS
    • Trigger: Rimozione dell’ultimo prodotto (o dell’ultimo gruppo contenente prodotti) da una raccolta
    • Message: Impossibile eliminare l’ultimo prodotto di una raccolta. Archivia invece la raccolta.
  • PRODUCT_IS_DELETED
    • Trigger: Prodotto eliminato logicamente
    • Message: Nessun messaggio
  • PRODUCT_PRICING_MODE_REQUIRED
    • Trigger: Aggiunta di prezzi localizzati prima che pricing_mode del prodotto sia impostato
    • Message: pricing_mode del prodotto deve essere impostato prima di aggiungere prezzi localizzati
  • SLUG_ALREADY_TAKEN
    • Trigger: Lo slug / short URL del prodotto richiesto è già in uso
    • Message: Lo slug è già utilizzato
  • UNABLE_TO_EDIT_PRIMARY_BRAND
    • Trigger: Tentativo di aggiornare il brand principale tramite l’API standard
    • Message: Il brand principale non può essere aggiornato tramite questo endpoint API.

Sconti

  • DISCOUNT_ALREADY_USED_ON_SUBSCRIPTION
    • Trigger: Riapplicazione di uno sconto già utilizzato su questa subscription
    • Message: Questo sconto è già stato utilizzato su questa subscription
  • DISCOUNT_CODE_ALREADY_EXISTS
    • Trigger: Creazione di un 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: Riutilizzo dello sconto dopo il raggiungimento di usage_limit
    • Message: Il limite di utilizzo non può essere inferiore a times_used / Il codice sconto ha raggiunto il limite di utilizzo
    • Note: Terminale — il codice è esaurito. Non riprovare.
  • DISCOUNT_CONCURRENT_REDEMPTION
    • Trigger: Un’altra applicazione dello stesso codice ha mantenuto troppo a lungo il lock della riga del limite di utilizzo
    • Message: Lo sconto è in fase di applicazione simultanea; riprova
    • Note: Temporaneo. Il codice potrebbe avere ancora disponibilità, quindi è sicuro riprovare la richiesta. Non mostrare al cliente il messaggio “codice esaurito”.
  • DISCOUNT_CURRENCY_OPTION_INVALID
    • Trigger: currency_options non valido durante la creazione o l’aggiornamento
    • Message: Uno sconto fisso richiede almeno un’opzione di valuta con un valore predefinito risolvibile / Non sono consentite opzioni di valuta duplicate / È possibile contrassegnare come predefinita una sola opzione di valuta
  • DISCOUNT_CUSTOMER_NOT_ELIGIBLE
    • Trigger: Il cliente non soddisfa customer_eligibility del codice (first_time, existing o non è incluso nell’elenco dei codici consentiti specific)
    • Message: Il cliente non è idoneo per questo codice sconto
  • DISCOUNT_MINIMUM_SUBTOTAL_NOT_MET
    • Trigger: Il subtotale del carrello è inferiore a minimum_subtotal configurato per la valuta di checkout
    • Message: Il subtotale del carrello è inferiore al subtotale minimo richiesto dallo sconto
  • DISCOUNT_NOT_YET_ACTIVE
    • Trigger: Codice utilizzato prima della data starts_at
    • Message: Il codice sconto non è ancora attivo (starts_at è nel futuro)
  • DISCOUNT_PER_CUSTOMER_USAGE_LIMIT_EXCEEDED
    • Trigger: Il cliente ha già utilizzato il codice per_customer_usage_limit volte
    • Message: Il limite di utilizzo per cliente è stato superato per questo codice sconto
  • DISCOUNT_NOT_APPLICABLE_TO_NEW_PRODUCT
    • Trigger: Modifica del piano a un prodotto a cui lo sconto esistente non si applica
    • Message: Lo sconto non è applicabile al prodotto del nuovo piano
  • DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND
    • Trigger: Codice applicato a una subscription on-demand
    • Message: Il coupon sconto non è disponibile per le subscription on-demand
  • DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT
    • Trigger: Codice applicato a prodotti non correlati
    • Message: Il coupon sconto non è disponibile per questo prodotto
  • INVALID_DISCOUNT_CODE
    • Trigger: Il codice non esiste o non è applicabile
    • Message: Codice sconto non valido / Il codice sconto non può essere applicato ad alcun prodotto nel carrello
  • INVALID_PERCENTAGE
    • Trigger: 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%
  • UNSUPPORTED_DISCOUNT_TYPE
    • Trigger: Tipo di sconto non supportato. percentage e flat sono entrambi supportati; gli sconti con importo per unità non lo sono.
    • Message: Sono supportati solo i codici sconto percentuali e fissi

License key

  • ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT
    • Trigger: Attivazioni della license key: nuovo limite < numero di istanze esistenti
    • Message: Il nuovo limite di attivazione non può essere inferiore al numero attuale di istanze
  • INACTIVE_LICENSE_KEY
    • Trigger: Stato della key ≠ active
    • Message: La license key non è attiva
  • LICENSE_KEY_LIMIT_REACHED
    • Trigger: Attivazioni = limite
    • Message: Il limite di attivazione della license key è stato raggiunto
  • LICENSE_KEY_NOT_FOUND
    • Trigger: Instance ID o key ID non valido
    • Message: L’istanza della license key non è stata trovata o non appartiene a questa license key
  • NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS
    • Trigger: Tentativo di impostare la scadenza su una key basata su subscription
    • Message: Impossibile impostare la data di scadenza per una license key basata su subscription

Fatturazione basata sull’utilizzo e meter

  • DUPLICATE_METER_IDS_IN_REQUEST
    • Trigger: Lo stesso meter ID compare più volte nella richiesta
    • Message: Non sono consentiti Meter ID duplicati
  • INVALID_QUANTITY
    • Trigger: Quantità non valida specificata per il pricing basato sull’utilizzo
    • Message: È consentita una sola quantità nei prodotti con prezzo basato sull’utilizzo
  • METER_IS_DELETED
    • Trigger: Tentativo di utilizzare un meter eliminato
    • Message: Il meter è già stato eliminato
  • MISSING_METER_IDS
    • Trigger: Elenco di Meter ID vuoto o contenente ID non validi
    • Message: Uno o più Meter ID non esistono:

Fatturazione basata sui crediti

  • CREDIT_ENTITLEMENT_IS_DELETED
    • Trigger: Operazione su un entitlement di crediti che è stato eliminato
    • Message: L’entitlement di crediti è già stato eliminato
  • CREDIT_ENTITLEMENT_NAME_ALREADY_EXISTS
    • Trigger: Creazione di un entitlement di crediti con un nome già esistente
    • Message: Esiste già un entitlement di crediti con questo nome
  • OVERAGE_LIMIT_EXCEEDED
    • Trigger: Un utilizzo o una detrazione di crediti supererebbe il limite di overage configurato
    • Message: Limite di overage superato

Wallet

  • INSUFFICIENT_WALLET_FUNDS
    • Trigger: Saldo del wallet < importo dell’addebito
    • Message: Fondi insufficienti nel wallet
  • NEGATIVE_BALANCE_ADJUSTMENT
    • Trigger: Tentativo di rendere negativo il saldo del wallet
    • Message: Non è consentito rendere negativo il saldo del wallet

Valuta, imposte e area geografica

  • EXCHANGE_RATE_NOT_FOUND
    • Trigger: Nessun tasso FX per la coppia di valute from → to
    • Message: Tasso di cambio non trovato per la conversione da Currency a Currency
  • INVALID_TAX_ID
    • Trigger: Validazione di VAT/GST/TIN non riuscita
    • Message: Il Tax Id non è valido
  • REQUEST_AMOUNT_BELOW_MINIMUM
    • Trigger: Importo < minimo del prodotto
    • Message: L’importo non può essere inferiore all’importo minimo specificato per il prodotto
  • TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT
    • Trigger: Totale combinato del carrello < minimo del gateway
    • Message: È richiesto un importo minimo di per elaborare il pagamento
  • UNSUPPORTED_BILLING_CURRENCY
    • Trigger: La valuta di fatturazione richiesta non è supportata per questa subscription
    • Message: La valuta di fatturazione diversa da USD non è supportata per le subscription
  • UNSUPPORTED_COUNTRY
    • Trigger: L’area geografica non è ancora supportata
    • Message: Il paese non è attualmente supportato
  • UNSUPPORTED_CURRENCY
    • Trigger: La valuta del prodotto o dell’add-on non è una valuta in cui Dodo Payments può addebitare. I prezzi di base possono essere impostati in qualsiasi valuta addebitabile; ciò significa generalmente che il codice valuta non è valido o non è ancora supportato.
    • Message: La valuta non è attualmente supportata / Attualmente sono supportati solo prodotti in USD e INR / Per il prezzo dell’add-on sono attualmente supportati solo USD e INR / È possibile richiedere USD o INR per billing_currency / Valuta non supportata / Valuta imprevista per le subscription con carta indiana
  • UNSUPPORTED_TAX_CATEGORY
    • Trigger: La stringa della categoria fiscale non è inclusa nell’enum
    • Message: La categoria non è attualmente supportata

Validazione e richieste

  • DUPLICATE_LINE_ITEMS_IN_REQUEST
    • Trigger: Lo stesso item_id compare due volte in items[]
    • Message: item_ids duplicati specificati nell’array items
  • INVALID_QUERY_PARAMS
    • Trigger: Parametri di query mutuamente esclusivi o non validi
    • Message: I parametri di query devono contenere solo time_frame oppure (start, end)
  • INVALID_REQUEST_BODY
    • Trigger: JSON non valido o violazione dello schema
    • Message: Il corpo della richiesta non è valido. Controlla gli header della richiesta e l’oggetto.
  • INVALID_REQUEST_PARAMETERS
    • Trigger: Semantica errata (ad esempio, una data nel passato)
    • Message: Impossibile modificare next_billing_date impostandolo su un orario passato
  • MAXIMUM_KEYS_REACHED
    • Trigger: Metadata / custom-fields oltre 50 coppie
    • Message: Sono state superate 50 coppie chiave-valore

Generale e sistema

  • INTEGER_CONVERSION_FAILURE
    • Trigger: Qualsiasi conversione da intero a stringa/decimale che non riesce lato server
    • Message: Errore di conversione da intero
  • INTERNAL_SERVER_ERROR
    • Trigger: Eccezioni non gestite; è necessario registrare i dettagli lato server
    • Message: Nessun messaggio pubblico (500 generico)
  • NOT_FOUND
    • Trigger: 404 generico per qualsiasi risorsa mancante
    • Message: Elemento non trovato (o più specifico)
  • TOO_MANY_REQUESTS
    • Trigger: Limite di frequenza 429
    • Message: Nessun messaggio
  • UNSUPPORTED_ACTION
    • Trigger: Azione non supportata per il tipo di risorsa
    • Message: La modifica dei piani per le subscription basate sull’utilizzo non è supportata

Best practice

  1. Gestisci sempre gli errori in modo appropriato nella tua applicazione
  2. Implementa una registrazione corretta degli errori
  3. Utilizza messaggi di errore appropriati per gli utenti finali
  4. Implementa una logica di retry per gli errori temporanei
  5. Contatta il supporto per i problemi irrisolti

Supporto

Per ulteriore assistenza con i codici di errore o i problemi di integrazione, contatta il nostro team di supporto all’indirizzo support@dodopayments.com.
Ultima modifica il 21 agosto 2026