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: Attività ancora in modalità test/sandbox
    • Messaggio: Il commerciante non è in modalità live

Pagamenti & Checkout

  • CHECKOUT_SESSION_CONSUMED
    • Trigger: La sessione di checkout ha già generato un pagamento
    • Messaggio: La sessione di checkout è già stata consumata
  • NO_ELIGIBLE_PAYMENT_METHODS
    • Trigger: Dopo il filtraggio, niente resta
    • Messaggio: Nessun metodo di pagamento idoneo trovato
  • PAYMENT_NOT_SUCCEEDED
    • Trigger: Tentativo di rimborso/elaborazione di pagamento non riuscito
    • Messaggio: Il pagamento fornito non è riuscito
  • PREVIOUS_PAYMENT_PENDING
    • Trigger: Tentativo di creare un addebito mentre il precedente è in stato non terminale
    • Messaggio: Impossibile creare un nuovo addebito poiché il pagamento precedente non è ancora riuscito
  • UNSUCCESSFUL_PAYMENT_ID
    • Trigger: ID pagamento riferisce a un pagamento non riuscito
    • Messaggio: L’ID pagamento ha uno stato non riuscito.

Connettori & BYOP

Questi errori riguardano i connettori di pagamento posseduti dal commerciante (Porta il Tuo Processore).
  • BYOP_CONNECTOR_DISABLED
    • Trigger: Aggiornamento di un metodo di pagamento su un abbonamento instradato tramite un connettore BYOP disabilitato
    • Messaggio: L’abbonamento è instradato tramite il connettore proprio del commerciante (BYOP) attualmente disabilitato
  • BYOP_CUSTOM_INVOICE_ADDRESS_MISSING
    • Trigger: Un pagamento instradato dal commerciante (BYOP) manca dell’indirizzo fattura personalizzato richiesto
    • Messaggio: Indirizzo fattura personalizzato BYOP richiesto quando un pagamento è instradato tramite il connettore del commerciante
  • CONNECTOR_LABEL_ALREADY_EXISTS
    • Trigger: Creazione di un connettore con un’etichetta già esistente
    • Messaggio: Esiste già un connettore con questa etichetta. Si prega di scegliere un’etichetta diversa.

Rimborsi

  • EXISTING_REFUND_REQUEST_PROCESSING
    • Trigger: La precedente richiesta di rimborso è ancora in elaborazione
    • Message: Una richiesta di rimborso con stato “Pending” è ancora in elaborazione
  • LINE_ITEM_FULLY_REFUNDED
    • Trigger: Tentativo di rimborso di un articolo già rimborsato completamente
    • Messaggio: Voce di fila è stata completamente rimborsata non può essere rimborsata ulteriormente.
  • LINE_ITEM_NOT_FOUND
    • Trigger: ID articolo non fa parte del pagamento di riferimento
    • Messaggio: Voce di fila non trovata nel pagamento
  • LINE_ITEM_PRORATED
    • Trigger: Tentativo di rimborso o aggiornamento su una linea prorata
    • Messaggio: Voce di fila non può essere rimborsata perché è prorata
  • LINE_ITEM_REFUND_AMOUNT_TOO_HIGH
    • Trigger: Importo del rimborso > importo pagato (tasse incluse)
    • Messaggio: La richiesta di rimborso della voce di fila inclusa di tasse è che è oltre l’importo pagato
  • LINE_ITEM_REFUND_AMOUNT_TOO_LOW
    • Trigger: Importo del rimborso sotto la soglia minima
    • Messaggio: La richiesta di rimborso della voce di fila è che è troppo bassa
  • NOTHING_TO_REFUND
    • Trigger: Nessun importo rimborsabile rimasto; tutte le voci di fila positive già completamente rimborsate
    • Messaggio: Nessun importo rimborsabile rimasto. Tutte le voci di fila positive sono state completamente rimborsate.
  • PARTIAL_REFUND_NOT_ALLOWED
    • Trigger: Tentativo di rimborso parziale su un metodo di pagamento che supporta solo rimborsi completi
    • Messaggio: I rimborsi parziali non sono consentiti per questo metodo di pagamento
  • PAYMENT_ALREADY_REFUNDED
    • Trigger: Rimborso duplicato
    • Messaggio: Questo pagamento è già stato rimborsato
  • PAYMENT_HAS_BEEN_REFUNDED
    • Trigger: Pagamento è stato completamente rimborsato
    • Messaggio: L’ID pagamento è stato completamente rimborsato.
  • REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT
    • Trigger: Importo aggregato del rimborso > importo pagato
    • Messaggio: L’importo calcolato del rimborso è maggiore dell’importo pagato
  • REFUND_WINDOW_EXPIRED
    • Trigger: Fuori dalla finestra temporale consentita per il rimborso
    • Messaggio: I rimborsi non possono essere iniziati giorni dopo la creazione del pagamento. Contatta support@dodopayments.com.
  • ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED
    • Trigger: Tentativo di rimborso di un pagamento di importo zero
    • Messaggio: Impossibile rimborsare un pagamento con importo valuta zero

Abbonamenti & Add-on

  • ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Trigger: Tentativo di aggiungere add-on agli abbonamenti basati sull’uso
    • Messaggio: Gli add-on negli abbonamenti non sono supportati per la fatturazione basata sull’uso
  • ADDONS_NOT_ALLOWED_FOR_ON_DEMAND
    • Trigger: Tentativo di aggiungere add-on agli abbonamenti su richiesta
    • Messaggio: Gli add-on non sono consentiti per gli abbonamenti su richiesta
  • CANCEL_SCHEDULED_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Trigger: Il portale clienti tenta di annullare un cambio piano programmato mentre l’azienda ha disabilitato tale azione
    • Messaggio: L’annullamento del cambio piano programmato è disabilitato per il portale clienti.
  • CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Trigger: Tentativo di addebitare un abbonamento programmato per l’annullamento
    • Messaggio: Abbonamento programmato per l’annullamento
  • CUSTOMER_HAS_EXISTING_SUBSCRIPTION
    • Trigger: Creazione di un abbonamento per un cliente che ne ha già uno, quando più abbonamenti per cliente non sono consentiti
    • Messaggio: Il cliente ha già un abbonamento esistente. Per consentire più abbonamenti per cliente, modifica le impostazioni aziendali
  • DO_NOT_BILL_NOT_ALLOWED_IN_CUSTOMER_PORTAL
    • Trigger: Modalità di proratazione do_not_bill utilizzata in un cambio piano del portale clienti
    • Messaggio: La modalità di proratazione do_not_bill non è consentita nel portale clienti
  • DUPLICATE_ADDON_IDS_IN_REQUEST
    • Trigger: Lo stesso addon_id appare più di una volta nella richiesta
    • Messaggio: ID degli add-on duplicati non sono consentiti
  • INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED
    • Trigger: Cambio piano su abbonamento inattivo
    • Messaggio: Cambiare piani non è supportato per gli abbonamenti inattivi
  • INVALID_PRORATION_MODE_WITH_NEXT_BILLING_DATE
    • Trigger: Una modalità di proratazione diversa da full_immediately utilizzata con effective_at: next_billing_date
    • Messaggio: Solo la modalità di proratazione full_immediately è consentita con effective_at: next_billing_date
  • MISSING_ADDON_IDS
    • Trigger: Lista di addon_id vuota o ID sconosciuti
    • Messaggio: Uno o più ID prodotto non esistono:
  • ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED
    • Trigger: Cambio piano non consentito per su richiesta
    • Messaggio: Cambiare piani non è supportato per gli abbonamenti su richiesta
  • ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Trigger: Tentativo di utilizzare con fatturazione basata sull’uso
    • Messaggio: Gli abbonamenti su richiesta non sono supportati per la fatturazione basata sull’uso
  • ONE_TIME_PRODUCTS_NOT_ALLOWED_FOR_ON_DEMAND
    • Trigger: Prodotto una tantum aggiunto a un abbonamento su richiesta
    • Messaggio: I prodotti una tantum non sono consentiti per gli abbonamenti su richiesta
  • PENDING_PLAN_CHANGE_EXISTS
    • Trigger: Nuovo cambio piano richiesto mentre uno precedente è ancora in attesa di pagamento
    • Messaggio: Esiste già un cambio piano pendente per questo abbonamento. Si prega di attendere il completamento del pagamento corrente.
  • PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Trigger: Cambio piano tramite il Portale Clienti mentre l’azienda lo ha disabilitato
    • Messaggio: Il cambio del piano di abbonamento per il portale clienti è disabilitato.
  • PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Trigger: Tentativo di cambio piano su abbonamento programmato per l’annullamento
    • Messaggio: Abbonamento programmato per l’annullamento
  • SCHEDULE_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Trigger: Programmazione di un cambio piano tramite il Portale Clienti mentre l’azienda lo ha disabilitato
    • Messaggio: La programmazione dei cambiamenti di piano è disabilitata per questa azienda.
  • SCHEDULED_PLAN_CHANGE_EXISTS
    • Trigger: Creazione di un cambio piano programmato quando uno è già esistente
    • Messaggio: Esiste già un cambio piano programmato per questo abbonamento. Si prega di annullare l’esistente cambiamento programmato prima di crearne uno nuovo.
  • SCHEDULED_PLAN_CHANGE_NOT_FOUND
    • Trigger: Riferimento o cancellazione di un cambio piano programmato che non esiste
    • Messaggio: Nessun cambio piano programmato trovato per questo abbonamento.
  • SUBSCRIPTION_EXPIRED
    • Trigger: Fatturazione oltre ends_at
    • Messaggio: Abbonamento scaduto impossibile creare nuovi addebiti
  • SUBSCRIPTION_INACTIVE
    • Trigger: Stato ≠ ACTIVE
    • Messaggio: Abbonamento non attivo
  • SUBSCRIPTION_NOT_ON_DEMAND
    • Trigger: Previsto su richiesta ma ottenuto intervallo fisso
    • Messaggio: L’abbonamento non è già su richiesta
  • SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED
    • Trigger: Tentativi di pagamento d’abbonamento ripetuti hanno superato il massimo numero di tentativi
    • Messaggio: Limite massimo di 10 tentativi superato per questo abbonamento

Prodotti, Carrello & Marchi

  • BRAND_MISMATCH
    • Trigger: Gli articoli del carrello appartengono a marchi diversi
    • Messaggio: Tutti gli articoli nel carrello del prodotto devono appartenere allo stesso marchio
  • BRAND_NOT_ENABLED
    • Trigger: Marchio è disabilitato o non attivo
    • Messaggio: Il marchio fornito non è abilitato
  • BRAND_SUBMISSION_NOT_ENABLED
    • Trigger: Funzione di reinvio della verifica del marchio non abilitata
    • Messaggio: Il reinvio della verifica del marchio non è abilitato
  • FILE_IN_USE
    • Trigger: Eliminazione di un file di prodotto digitale ancora referenziato da assegnazioni attive
    • Message: Il file digitale è referenziato da assegnazioni attive
  • INVALID_SUGGESTED_PRICE
    • Trigger: Prezzo PWYW < prezzo minimo consentito
    • Messaggio: Il prezzo suggerito non può essere inferiore al prezzo minimo. In caso di paga quello che vuoi, il prezzo è considerato l’importo minimo accettato
  • LOCALIZED_PRICE_ALREADY_EXISTS
    • Trigger: Esiste già un prezzo localizzato per questo prodotto e paese/valuta
    • Messaggio: Esiste già un prezzo localizzato per questo prodotto e paese/valuta
  • LOCALIZED_PRICE_DUPLICATES_BASE
    • Trigger: Il prezzo localizzato duplica la valuta/paese base del prodotto
    • Messaggio: Il prezzo localizzato duplica la valuta/paese base del prodotto
  • LOCALIZED_PRICE_SHAPE_MISMATCH
    • Trigger: La forma del prezzo localizzato non corrisponde all’pricing_mode del prodotto
    • Messaggio: La forma del prezzo localizzato non corrisponde al pricing_mode del prodotto
  • MISSING_PRODUCT_INFORMATION
    • Trigger: Il prodotto esiste ma manca info obbligatorie
    • Messaggio: Prodotto esiste ma altre informazioni obbligatorie mancano o sono non valide
  • PAY_AS_YOU_WANT_AMOUNT_REQUIRED
    • Trigger: Prezzo mancante per prodotto PWYW
    • Messaggio: L’importo è obbligatorio per il prodotto paga come vuoi
  • PRODUCT_CART_EMTPY
    • Trigger: Carrello del prodotto vuoto inviato
    • Messaggio: il product_cart è vuoto (il codice di errore è intenzionalmente scritto EMTPY per corrispondere al valore esatto che l’API restituisce)
  • PRODUCT_COLLECTION_IS_DELETED
    • Trigger: Operazione su una collezione di prodotti che è stata eliminata
    • Messaggio: Nessun messaggio
  • PRODUCT_COLLECTION_MUST_HAVE_PRODUCTS
    • Trigger: Rimozione dell’ultimo prodotto (o ultimo gruppo con prodotti) da una collezione
    • Messaggio: Impossibile eliminare l’ultimo prodotto in una collezione. Archivia invece la collezione.
  • PRODUCT_IS_DELETED
    • Trigger: Prodotto cancellato morbido
    • Messaggio: Nessun messaggio
  • PRODUCT_PRICING_MODE_REQUIRED
    • Trigger: Aggiunta di prezzi localizzati prima che l’pricing_mode del prodotto sia impostato
    • Messaggio: Il pricing_mode del prodotto deve essere impostato prima di aggiungere prezzi localizzati
  • SLUG_ALREADY_TAKEN
    • Trigger: Lo slug del prodotto richiesto / URL corto è già in uso
    • Messaggio: Lo slug è già preso
  • UNABLE_TO_EDIT_PRIMARY_BRAND
    • Trigger: Tentativo di aggiornare il marchio primario tramite API regolare
    • Messaggio: Il marchio primario non può essere aggiornato tramite questo endpoint API.

Sconti

  • DISCOUNT_ALREADY_USED_ON_SUBSCRIPTION
    • Trigger: Riapplicazione di uno sconto già utilizzato su questo abbonamento
    • Messaggio: Questo sconto è già stato utilizzato su questo abbonamento
  • DISCOUNT_CODE_ALREADY_EXISTS
    • Trigger: Creazione di un codice sconto duplicato
    • Messaggio: Il Codice Sconto esiste già
  • DISCOUNT_CODE_EXPIRED
    • Trigger: Codice sconto oltre la sua expires_at data
    • Messaggio: Codice sconto scaduto
  • DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
    • Trigger: Sconto riutilizzato 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 riscossione dello stesso codice ha mantenuto troppo a lungo il lock della riga del limite di utilizzo (HTTP 503)
    • Message: Lo sconto è in fase di riscossione contemporaneamente; riprova
    • Note: Temporaneo. Il codice potrebbe avere ancora disponibilità, quindi è sicuro riprovare la richiesta. Non mostrare questo errore al cliente come “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 oppure non è presente nell’elenco di autorizzazione del codice 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 del checkout
    • Message: Il subtotale del carrello è inferiore al subtotale minimo richiesto dallo sconto
  • DISCOUNT_NOT_YET_ACTIVE
    • Trigger: Codice utilizzato prima della relativa 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à riscattato il codice per_customer_usage_limit volte
    • Message: Limite di utilizzo per cliente superato per questo codice sconto
  • DISCOUNT_NOT_APPLICABLE_TO_NEW_PRODUCT
    • Trigger: Cambio di piano verso 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 un abbonamento on-demand
    • Message: Il coupon sconto non è disponibile per gli abbonamenti 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: La percentuale non può essere superiore a 10000 / L’importo del codice sconto non può essere superiore al 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

Chiavi di licenza

  • ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT
    • Trigger: Attivazioni delle chiavi di licenza: nuovo limite < conteggio delle istanze esistenti
    • Message: Il nuovo limite di attivazione non può essere inferiore al conteggio delle istanze correnti
  • INACTIVE_LICENSE_KEY
    • Trigger: Stato della chiave ≠ ACTIVE
    • Message: La chiave di licenza non è attiva
  • LICENSE_KEY_LIMIT_REACHED
    • Trigger: Attivazioni = limite
    • Message: Limite di attivazione della chiave di licenza raggiunto
  • LICENSE_KEY_NOT_FOUND
    • Trigger: ID dell’istanza o ID della chiave non valido
    • Message: L’istanza della chiave di licenza non è stata trovata o non appartiene a questa chiave di licenza
  • NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS
    • Trigger: Tentativo di impostare la scadenza su una chiave basata su abbonamento
    • Message: Non è possibile impostare una data di scadenza per una chiave di licenza basata su abbonamento

Fatturazione basata sull’utilizzo e Meter

  • DUPLICATE_METER_IDS_IN_REQUEST
    • Trigger: Lo stesso ID Meter compare più volte nella richiesta
    • Message: Non sono consentiti ID Meter duplicati
  • INVALID_QUANTITY
    • Trigger: Quantità non valida specificata per la tariffazione basata 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: L’elenco degli ID Meter è vuoto o contiene ID non validi
    • Message: Uno o più ID Meter non esistono:

Fatturazione basata sui crediti

  • CREDIT_ENTITLEMENT_IS_DELETED
    • Trigger: Operazione su un’entitlement di credito che è stata eliminata
    • Message: L’entitlement di credito è già stata eliminata
  • CREDIT_ENTITLEMENT_NAME_ALREADY_EXISTS
    • Trigger: Creazione di un’entitlement di credito con un nome già esistente
    • Message: Esiste già un’entitlement di credito con questo nome
  • OVERAGE_LIMIT_EXCEEDED
    • Trigger: Un utilizzo o una detrazione di credito 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: La validazione di VAT/GST/TIN non è riuscita
    • Message: L’ID fiscale 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 questo abbonamento
    • Message: La valuta di fatturazione non USD non è supportata per gli abbonamenti
  • UNSUPPORTED_COUNTRY
    • Trigger: Area geografica non ancora supportata
    • Message: Il paese non è attualmente supportato
  • UNSUPPORTED_CURRENCY
    • Trigger: La valuta del prodotto o dell’addon non è una valuta in cui Dodo Payments può effettuare addebiti. I prezzi di base possono essere impostati in qualsiasi valuta addebitabile; ciò significa solitamente 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’addon sono supportati solo USD e INR / È possibile richiedere USD o INR per billing_currency / Valuta non supportata / Valuta imprevista per gli abbonamenti 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 reciprocamente esclusivi o 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 gli header della richiesta e l’oggetto.
  • INVALID_REQUEST_PARAMETERS
    • Trigger: Semantica errata (ad esempio, data nel passato)
    • Message: Non è possibile modificare next_billing_date impostandola su un momento passato
  • MAXIMUM_KEYS_REACHED
    • Trigger: Metadata / custom-fields hanno superato 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 riesca lato server
    • Message: Errore di conversione dell’intero
  • INTERNAL_SERVER_ERROR
    • Trigger: Eccezioni non intercettate; devi 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 gli abbonamenti basati 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 6 agosto 2026