Skip to main content

Översikt

När en begäran misslyckas returnerar Dodo Payments API en HTTP-statuskod och en JSON-body som anger felet. Använd den här sidan för att hitta orsaken till ett fel och hur det kan lösas. Varje felsvar innehåller:
  • En HTTP-statuskod som anger felets allmänna kategori.
  • En code som identifierar det exakta felet, till exempel UNSUPPORTED_COUNTRY.
  • En message som förklarar felet på ett lättförståeligt språk. message kan vara null, till exempel vid interna serverfel.
Basera felhanteringen på code, inte på message. Flera koder returnerar mer än ett meddelande beroende på orsaken. Använd dessa felkoder för att:
  • Felsöka integrationsproblem.
  • Hantera fel korrekt i applikationen.
  • Visa meningsfull återkoppling till kunderna.
  • Hålla betalningshanteringen tillförlitlig.
Det här är API- och affärslogikfel. För orsaker till kortnekningar som returneras för en misslyckad betalning (till exempel INSUFFICIENT_FUNDS eller CARD_DECLINED), se referensen Transaction Failures i stället.

Standardfelkoder för API

API:et använder följande HTTP-statuskoder för fel:

Format för felsvar

En felsvars-body innehåller två fält, code och message:

Referens för felkoder

Felkoderna nedan är grupperade efter det område i API:et som de gäller. Varje post anger villkoret som utlöser felet och meddelandet som API:et returnerar. Platshållare som {id} representerar värden som API:et fyller i.

Autentisering och konto

  • UNAUTHORIZED
    • Utlösare: Begäran saknar en API-nyckel eller innehåller en ogiltig nyckel (HTTP 401), eller så saknar API-nyckeln den roll som åtgärden kräver (HTTP 403)
    • Meddelande: Du har inte behörighet att utföra den här åtgärden
  • MERCHANT_NOT_LIVE
    • Utlösare: En begäran i live-läge för ett företag som inte har aktiverat livebetalningar (HTTP 403). Detta gäller ett företag som endast har använt testläge samt ett företag vars livebetalningar ännu inte är aktiverade eftersom verifieringen inte är slutförd. Begäranden i testläge påverkas inte.
    • Meddelande: Livebetalningar är inte aktiverade för handlaren
  • BUSINESS_ARCHIVED
    • Utlösare: En kundinriktad begäran för ett arkiverat företag (HTTP 403). Detta gäller checkout, betalningslänkar, storefront, Customer Portal och aktivering av licensnycklar.
    • Meddelande: Det här företaget är arkiverat och tar inte längre emot begäranden

Betalningar och checkout

  • CHECKOUT_SESSION_CONSUMED
    • Utlösare: Checkout-sessionen har redan genererat en betalning (HTTP 403). Skapa en ny checkout-session i stället.
    • Meddelande: En betalning med den angivna checkout-sessionen har redan genererats.
  • MANUAL_RETRY_ALREADY_PAID
    • Utlösare: Manuellt återförsök av en förnyelsefaktura där en betalning redan har lyckats. Om den skickas igen debiteras kunden två gånger.
    • Meddelande: En betalning för den här fakturan har redan lyckats
  • MANUAL_RETRY_HARD_DECLINE
    • Utlösare: Manuellt återförsök när det senaste felet på fakturan är en definitiv nekning eller saknar klassificerad felkod. En ny debitering på samma kort kan inte lyckas, så uppdatera betalningsmetoden i stället.
    • Meddelande: Det senaste felet på den här fakturan är en definitiv nekning, så ett återförsök kan inte lyckas (eller) Det senaste felet på den här fakturan kan inte klassificeras och kan därför inte återförsökas
  • MANUAL_RETRY_IN_FLIGHT
    • Utlösare: Manuellt återförsök medan en betalning på fakturan är processing eller ännu inte har någon registrerad status. Vänta på resultatet av betalningen i stället för att skicka den igen.
    • Meddelande: En betalning på den här fakturan pågår fortfarande
  • MANUAL_RETRY_LIMIT_REACHED
    • Utlösare: Manuellt återförsök efter att alla tre försök för fakturan har använts, eller innan väntetiden har löpt ut (HTTP 429). Det andra försöket väntar 1 timme efter det första och det tredje väntar 3 timmar efter det andra. Body:n innehåller endast code och message. Läs retry_available_at från GET /payments/{payment_id}/retry för att se när nästa försök tillåts.
    • Meddelande: Alla manuella återförsök för den här fakturan är använda (eller) Återförsök nu är ännu inte tillgängligt för den här fakturan
  • NO_ELIGIBLE_PAYMENT_METHODS
    • Utlösare: Ingen betalningsmetod finns kvar för betalningen efter filtrering (HTTP 422)
    • Meddelande: Inga behöriga betalningsmetoder hittades
  • PAYMENT_NOT_PERMITTED
    • Utlösare: En checkout- eller betalningsbegäran från en kund på handlarens blocklista (HTTP 403). Koden och meddelandet anger medvetet ingen orsak.
    • Meddelande: Den här betalningen kan inte behandlas.
  • PAYMENT_NOT_RETRYABLE
    • Utlösare: Manuellt återförsök av en betalning som inte omfattas av manuella återförsök. Betalningen saknar faktura, fakturan är inte en öppen förnyelse av en prenumeration, ingen betalning på fakturan har ännu misslyckats, prenumerationen har ingen konfigurerad återkommande debitering (till exempel en on-demand-prenumeration), eller så finns kunden på blocklistan.
    • Meddelande: Varierar beroende på orsaken, till exempel: Endast betalningar för förnyelse av prenumerationer kan återförsökas
  • PAYMENT_NOT_SUCCEEDED
    • Utlösare: Ett försök att återbetala eller behandla en betalning som inte har lyckats
    • Meddelande: Den angivna betalningen har inte lyckats
  • PREVIOUS_PAYMENT_PENDING
    • Utlösare: Ett försök att skapa en debitering medan den föregående betalningen har ett icke-slutgiltigt tillstånd. Returneras även för ett manuellt återförsök när den senaste betalningen på fakturan varken är failed eller pågående, till exempel requires_customer_action eller cancelled.
    • Meddelande: Kan inte skapa en ny debitering eftersom den föregående betalningen ännu inte är slutförd (eller) Den senaste betalningen på den här fakturan har inte misslyckats
  • UNSUCCESSFUL_PAYMENT_ID
    • Utlösare: Betalnings-ID:t hänvisar till en betalning som inte har lyckats
    • Meddelande: Payment ID har en status som visar att betalningen misslyckades.

Connectors och BYOP

Dessa fel gäller betalningsconnectors som ägs av handlaren (Bring Your Own Processor, eller BYOP).
  • BYOP_CONNECTOR_DISABLED
    • Utlösare: Betalningsmetoden för en prenumeration som dirigeras via en inaktiverad BYOP-connector uppdateras. Dodo Payments använder inte sina egna connectors som reserv, så aktivera connectorn igen först.
    • Meddelande: Prenumerationen dirigeras via handlarens egen BYOP-connector, som för närvarande är inaktiverad
  • BYOP_CUSTOM_INVOICE_ADDRESS_MISSING
    • Utlösare: En betalning som dirigeras via handlarens connector (BYOP) saknar en anpassad fakturaadress
    • Meddelande: En anpassad BYOP-fakturaadress krävs när en betalning dirigeras via handlarens connector
  • CONNECTOR_LABEL_ALREADY_EXISTS
    • Utlösare: En connector skapas med en etikett som redan finns
    • Meddelande: En connector med den här etiketten finns redan. Välj en annan etikett.

Återbetalningar

  • EXISTING_REFUND_REQUEST_PROCESSING
    • Utlösare: En tidigare begäran om återbetalning behandlas fortfarande
    • Meddelande: En begäran om återbetalning med statusen “Pending” behandlas fortfarande
  • LINE_ITEM_FULLY_REFUNDED
    • Utlösare: Ett försök att återbetala en radartikel som redan är helt återbetald
    • Meddelande: Radartikeln {id} är helt återbetald och kan inte återbetalas ytterligare.
  • LINE_ITEM_NOT_FOUND
    • Utlösare: Artikel-ID:t ingår inte i den refererade betalningen
    • Meddelande: Radartikeln {id} hittades inte i betalningen
  • LINE_ITEM_PRORATED
    • Utlösare: En återbetalning eller uppdatering försöktes för en proportionellt beräknad radartikel
    • Meddelande: Radartikeln {id} kan inte återbetalas eftersom den är proportionellt beräknad
  • LINE_ITEM_REFUND_AMOUNT_TOO_HIGH
    • Utlösare: Återbetalningsbeloppet inklusive skatt är högre än det betalda beloppet
    • Meddelande: Det begärda återbetalningsbeloppet inklusive skatt för radartikeln {id} är {amount}, vilket överstiger det betalda beloppet {amount}
  • LINE_ITEM_REFUND_AMOUNT_TOO_LOW
    • Utlösare: Återbetalningsbeloppet ligger under minimigränsen
    • Meddelande: Det begärda återbetalningsbeloppet för radartikeln {id} är {amount}, vilket är för lågt
  • NOTHING_TO_REFUND
    • Utlösare: Inget återbetalningsbart belopp återstår eftersom alla positiva radartiklar redan är helt återbetalda
    • Meddelande: Inget återbetalningsbart belopp återstår. Alla positiva radartiklar har återbetalats helt.
  • PARTIAL_REFUND_NOT_ALLOWED
    • Utlösare: En partiell återbetalning försöktes med en betalningsmetod som endast stöder fullständiga återbetalningar
    • Meddelande: Partiella återbetalningar tillåts inte för den här betalningsmetoden
  • PAYMENT_ALREADY_REFUNDED
    • Utlösare: En dubblettåterbetalning
    • Meddelande: Den här betalningen har redan återbetalats
  • PAYMENT_HAS_BEEN_REFUNDED
    • Utlösare: Betalningen har återbetalats helt
    • Meddelande: Payment ID har återbetalats helt.
  • REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT
    • Utlösare: Det totala återbetalningsbeloppet är högre än det betalda beloppet
    • Meddelande: Det beräknade återbetalningsbeloppet är större än det betalda beloppet
  • REFUND_WINDOW_EXPIRED
    • Utlösare: Återbetalningen begärs utanför det tillåtna återbetalningsfönstret
    • Meddelande: Återbetalningar kan inte initieras {days} dagar efter att betalningen skapades. Kontakta support@dodopayments.com.
  • ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED
    • Utlösare: Ett försök att återbetala en betalning med beloppet noll
    • Meddelande: Kan inte återbetala en betalning med ett valutabelopp på noll

Prenumerationer och tillägg

  • ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Utlösare: Ett försök att lägga till tillägg i en prenumeration med användningsbaserad debitering
    • Meddelande: Tillägg i prenumerationer stöds inte för användningsbaserad debitering
  • ADDONS_NOT_ALLOWED_FOR_ON_DEMAND
    • Utlösare: Ett försök att lägga till tillägg i en on-demand-prenumeration
    • Meddelande: Tillägg tillåts inte för on-demand-prenumerationer
  • CANCEL_SCHEDULED_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Utlösare: Customer Portal försöker avbryta en schemalagd planändring medan företaget har inaktiverat åtgärden
    • Meddelande: Avbrytande av schemalagd planändring är inaktiverat för Customer Portal.
  • CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Utlösare: Ett försök att debitera en prenumeration som är schemalagd för avslut
    • Meddelande: Prenumerationen är schemalagd för avslut
  • CUSTOMER_HAS_EXISTING_SUBSCRIPTION
    • Utlösare: En prenumeration skapas för en kund som redan har en, när företaget inte tillåter flera prenumerationer per kund
    • Meddelande: Kunden {id} har redan en prenumeration. Ändra företagsinställningarna för att tillåta flera prenumerationer per kund
  • DO_NOT_BILL_NOT_ALLOWED_IN_CUSTOMER_PORTAL
    • Utlösare: Prorateringsläget do_not_bill används i en planändring i Customer Portal
    • Meddelande: Prorateringsläget do_not_bill tillåts inte i Customer Portal
  • DUPLICATE_ADDON_IDS_IN_REQUEST
    • Utlösare: Samma addon_id förekommer mer än en gång i begäran
    • Meddelande: Dubbletter av addon-ID:n tillåts inte
  • INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED
    • Utlösare: En planändring på en inaktiv prenumeration
    • Meddelande: Det går inte att ändra planer för inaktiva prenumerationer
  • INVALID_PRORATION_MODE_WITH_NEXT_BILLING_DATE
    • Utlösare: Ett annat prorateringsläge än full_immediately används med effective_at: next_billing_date
    • Meddelande: Endast prorateringsläget full_immediately tillåts med effective_at: next_billing_date
  • MISSING_ADDON_IDS
    • Utlösare: Listan med addon_id är tom eller innehåller okända ID:n
    • Meddelande: Ett eller flera produkt-ID:n finns inte: {id}
  • ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED
    • Utlösare: En planändring på en on-demand-prenumeration
    • Meddelande: Det går inte att ändra planer för on-demand-prenumerationer
  • ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Utlösare: Ett försök att använda en on-demand-prenumeration med användningsbaserad debitering
    • Meddelande: On-demand-prenumerationer stöds inte för användningsbaserad debitering
  • ONE_TIME_PRODUCTS_NOT_ALLOWED_FOR_ON_DEMAND
    • Utlösare: En engångsprodukt läggs till i en on-demand-prenumeration
    • Meddelande: Engångsprodukter tillåts inte för on-demand-prenumerationer
  • PENDING_PLAN_CHANGE_EXISTS
    • Utlösare: En ny planändring begärs medan en tidigare fortfarande väntar på betalning
    • Meddelande: En väntande planändring finns redan för den här prenumerationen. Vänta tills den aktuella betalningen är slutförd.
  • PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Utlösare: En planändring via Customer Portal medan företaget har inaktiverat den
    • Meddelande: Planändring för prenumeration via Customer Portal är inaktiverad.
  • PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Utlösare: En planändring på en prenumeration som är schemalagd för avslut
    • Meddelande: Prenumerationen är schemalagd för avslut
  • SCHEDULE_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Utlösare: En planändring schemaläggs via Customer Portal medan företaget har inaktiverat detta
    • Meddelande: Schemaläggning av planändringar är inaktiverad för det här företaget.
  • SCHEDULED_PLAN_CHANGE_EXISTS
    • Utlösare: En schemalagd planändring skapas när en redan finns
    • Meddelande: En schemalagd planändring finns redan för den här prenumerationen. Avbryt den befintliga schemalagda ändringen innan du skapar en ny.
  • SCHEDULED_PLAN_CHANGE_NOT_FOUND
    • Utlösare: En schemalagd planändring som inte finns refereras till eller avbryts
    • Meddelande: Ingen schemalagd planändring hittades för den här prenumerationen.
  • SUBSCRIPTION_EXPIRED
    • Utlösare: En prenumeration debiteras efter dess expires_at-datum
    • Meddelande: Prenumerationen har löpt ut och nya debiteringar kan inte skapas
  • SUBSCRIPTION_HAS_NO_PAYMENT_METHOD
    • Utlösare: Manuellt återförsök av en prenumeration som saknar en sparad betalningsmetod för off-session-debitering
    • Meddelande: Den här prenumerationen saknar en sparad betalningsmetod att debitera
  • SUBSCRIPTION_INACTIVE
    • Utlösare: Prenumerationens status är inte active
    • Meddelande: Prenumerationen är inte aktiv (eller) Den här prenumerationen är inte live, så ett avslut kan inte schemaläggas
  • SUBSCRIPTION_NOT_ON_DEMAND
    • Utlösare: En on-demand-åtgärd på en prenumeration som debiteras med ett fast intervall
    • Meddelande: Prenumerationen är redan inte on-demand
  • SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED
    • Utlösare: Antalet återförsök av prenumerationsbetalningen överskred det maximala antalet försök
    • Meddelande: Den maximala återförsöksgränsen på 10 försök överskreds för den här prenumerationen

Kunder och blocklista

  • CUSTOMER_ALREADY_BLOCKED
    • Utlösare: En kund blockeras trots att kunden redan finns på blocklistan och inte har några aktiva prenumerationer kvar att avsluta (HTTP 409)
    • Meddelande: Den här kunden finns redan på blocklistan
  • PORTAL_ACTION_NOT_PERMITTED
    • Utlösare: En blockerad kund anropar en skrivåtgärd i Customer Portal: avsluta, pausa, återuppta, ändra plan eller uppdatera betalningsmetod (HTTP 403). Läsåtgärder förblir öppna. Koden och meddelandet anger medvetet ingen orsak.
    • Meddelande: Den här åtgärden är inte tillgänglig.

Produkter, varukorg och varumärken

  • BRAND_ALREADY_ARCHIVED
    • Utlösare: Ett varumärke som redan är arkiverat arkiveras
    • Meddelande: Varumärket är redan arkiverat
  • BRAND_ARCHIVED
    • Utlösare: Ett arkiverat varumärke uppdateras, skickas in för verifiering eller kopplas till en ny produkt, produktkollektion eller prenumeration
    • Meddelande: Varumärket är arkiverat (eller) Varumärket är arkiverat och kan inte uppdateras (eller) Varumärket är arkiverat och kan inte skickas in för verifiering
  • BRAND_ARCHIVE_TARGET_REQUIRED
    • Utlösare: Ett varumärke arkiveras medan det fortfarande innehåller produkter, aktiva prenumerationer eller produktkollektioner utan ett move_products_to-mål
    • Meddelande: Varumärket har {count} produkt(er). Ange move_products_to till ett målvarumärke för att märka om dem. Meddelandet nämner i stället aktiva prenumerationer eller produktkollektioner när dessa hindrar arkiveringen.
  • BRAND_MISMATCH
    • Utlösare: Varukorgens artiklar tillhör olika varumärken
    • Meddelande: Alla artiklar i produktvarukorgen måste tillhöra samma varumärke
  • BRAND_NOT_ENABLED
    • Utlösare: Varumärket är inaktiverat eller inte aktivt
    • Meddelande: Det angivna varumärket är inte aktiverat
  • BRAND_SUBMISSION_NOT_ENABLED
    • Utlösare: Funktionen för att skicka in varumärkesverifiering igen är inte aktiverad
    • Meddelande: Brand verificatin resubmission is not enabled (stavat exakt som API:et returnerar det)
  • CANNOT_ARCHIVE_PRIMARY_BRAND
    • Utlösare: Det primära varumärket arkiveras; dess varumärkes-ID är företags-ID:t
    • Meddelande: Det primära varumärket kan inte arkiveras
  • FILE_IN_USE
    • Utlösare: En digital produktfil tas bort trots att aktiva åtkomstbeviljanden fortfarande hänvisar till den
    • Meddelande: Den digitala filen refereras av aktiva åtkomstbeviljanden
  • INVALID_BRAND_ARCHIVE_TARGET
    • Utlösare: move_products_to anger varumärket som arkiveras, ett arkiverat varumärke eller ett varumärke som tillhör ett annat företag
    • Meddelande: move_products_to måste vara ett icke-arkiverat varumärke i det här företaget (eller) move_products_to kan inte vara det varumärke som arkiveras
  • INVALID_SUGGESTED_PRICE
    • Utlösare: Ett föreslaget pris för Pay What You Want är lägre än minimipriset
    • Meddelande: Föreslaget pris kan inte vara lägre än minimipriset. Vid Pay What You Want betraktas priset som det lägsta accepterade beloppet
  • LOCALIZED_PRICE_ALREADY_EXISTS
    • Utlösare: Ett lokaliserat pris finns redan för den här produkten och det här landet eller den här valutan
    • Meddelande: Ett lokaliserat pris för den här produkten och det här landet/den här valutan finns redan
  • LOCALIZED_PRICE_DUPLICATES_BASE
    • Utlösare: Det lokaliserade priset duplicerar produktens basvaluta eller basland
    • Meddelande: Det lokaliserade priset duplicerar produktens basvaluta eller basland
  • LOCALIZED_PRICE_SHAPE_MISMATCH
    • Utlösare: Formen på det lokaliserade priset matchar inte produktens pricing_mode
    • Meddelande: Formen på det lokaliserade priset matchar inte produktens pricing_mode
  • MISSING_PRODUCT_INFORMATION
    • Utlösare: Produkten finns, men obligatorisk information saknas
    • Meddelande: Produkten {id} finns, men annan obligatorisk information saknas eller är ogiltig
  • PAY_AS_YOU_WANT_AMOUNT_REQUIRED
    • Utlösare: Beloppet saknas för en Pay What You Want-produkt
    • Meddelande: Belopp är obligatoriskt för en pay-as-you-want-produkt
  • PRODUCT_CART_EMTPY
    • Utlösare: En tom produktvarukorg skickas
    • Meddelande: product_cart är tom (felkoden stavas medvetet EMTPY för att matcha det exakta värdet som API:et returnerar)
  • PRODUCT_COLLECTION_IS_DELETED
    • Utlösare: En produktkollektion som har tagits bort används
    • Meddelande: Inget meddelande
  • PRODUCT_COLLECTION_MUST_HAVE_PRODUCTS
    • Utlösare: Den sista produkten, eller den sista gruppen med produkter, tas bort från en kollektion
    • Meddelande: Den sista produkten i en kollektion kan inte tas bort. Arkivera kollektionen i stället. (eller) Den sista gruppen med produkter kan inte tas bort. Arkivera kollektionen i stället.
  • PRODUCT_IS_DELETED
    • Utlösare: Produkten har tagits bort
    • Meddelande: Inget meddelande
  • PRODUCT_PRICING_MODE_REQUIRED
    • Utlösare: Lokaliserade priser läggs till innan produktens pricing_mode har angetts
    • Meddelande: Produktens pricing_mode måste anges innan lokaliserade priser läggs till
  • SLUG_ALREADY_TAKEN
    • Utlösare: Den begärda produktslugen eller korta URL:en används redan
    • Meddelande: Sluggen används redan
  • UNABLE_TO_EDIT_PRIMARY_BRAND
    • Utlösare: Ett försök att uppdatera det primära varumärket via det vanliga varumärkes-API:et
    • Meddelande: Det primära varumärket kan inte uppdateras via den här API-slutpunkten.

Rabatter

  • DISCOUNT_ALREADY_USED_ON_SUBSCRIPTION
    • Utlösare: En rabatt tillämpas igen efter att den redan har använts på den här prenumerationen
    • Meddelande: Den här rabatten har redan använts på den här prenumerationen
  • DISCOUNT_CODE_ALREADY_EXISTS
    • Utlösare: En rabattkod skapas trots att den redan finns
    • Meddelande: Rabattkoden finns redan
  • DISCOUNT_CODE_EXPIRED
    • Utlösare: Rabattkoden har passerat sitt expires_at-datum
    • Meddelande: Rabattkoden har löpt ut
  • DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
    • Utlösare: Rabattkoden används efter att dess usage_limit har nåtts
    • Meddelande: Användningsgränsen kan inte vara lägre än times_used (eller) Rabattkoden har nått användningsgränsen
    • Obs: Slutgiltigt. Koden är förbrukad, så försök inte igen.
  • DISCOUNT_CONCURRENT_REDEMPTION
    • Utlösare: En annan inlösen av samma kod höll låset för användningsgränsen för länge (HTTP 503)
    • Meddelande: Rabatten löses in samtidigt; försök igen
    • Obs: Tillfälligt. Koden kan fortfarande ha kapacitet, så begäran kan tryggt försöka igen. Visa inte kunden att koden är förbrukad.
  • DISCOUNT_CURRENCY_OPTION_INVALID
    • Utlösare: Ogiltig currency_options vid skapande eller uppdatering
    • Meddelande: En fast rabatt kräver minst ett valutaalternativ med ett lösligt standardvärde (eller) Dubbletter av valutaalternativ tillåts inte (eller) Endast ett valutaalternativ får markeras som standard
  • DISCOUNT_CUSTOMER_NOT_ELIGIBLE
    • Utlösare: Kunden uppfyller inte customer_eligibility för koden (first_time, existing eller finns inte på tillåtelselistan för en specific-kod)
    • Meddelande: Kunden är inte berättigad till den här rabattkoden
  • DISCOUNT_MINIMUM_SUBTOTAL_NOT_MET
    • Utlösare: Varukorgens delsumma ligger under minimum_subtotal som har konfigurerats för checkout-valutan
    • Meddelande: Varukorgens delsumma ligger under rabattens minsta erforderliga delsumma
  • DISCOUNT_NOT_YET_ACTIVE
    • Utlösare: Koden används innan dess starts_at-datum
    • Meddelande: Rabattkoden är ännu inte aktiv (starts_at ligger i framtiden)
  • DISCOUNT_PER_CUSTOMER_USAGE_LIMIT_EXCEEDED
    • Utlösare: Kunden har redan löst in koden per_customer_usage_limit gånger
    • Meddelande: Gränsen för användning per kund har överskridits för den här rabattkoden
  • DISCOUNT_NOT_APPLICABLE_TO_NEW_PRODUCT
    • Utlösare: En planändring till en produkt som den befintliga rabatten inte gäller för
    • Meddelande: Rabatten gäller inte för den nya planens produkt
  • DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND
    • Utlösare: Koden tillämpas på en on-demand-prenumeration
    • Meddelande: Rabattkupongen är inte tillgänglig för on-demand-prenumerationer
  • DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT
    • Utlösare: Koden tillämpas på produkter som den inte omfattar
    • Meddelande: Rabattkupongen är inte tillgänglig för den här produkten
  • INVALID_DISCOUNT_CODE
    • Utlösare: Koden finns inte eller gäller inte för någon produkt i varukorgen
    • Meddelande: Ogiltig rabattkod (eller) Rabattkoden kan inte tillämpas på någon produkt i varukorgen
  • INVALID_PERCENTAGE
    • Utlösare: Procentandelen är högre än 100 % (10 000 baspunkter)
    • Meddelande: Procentbeloppet kan inte överstiga 10 000 (eller) Rabattkodens belopp kan inte överstiga 100 %
  • UNSUPPORTED_DISCOUNT_TYPE
    • Utlösare: En rabattyp som inte stöds. percentage och flat stöds båda; rabatter med belopp per enhet stöds inte.
    • Meddelande: Endast procentuella och fasta rabattkoder stöds (eller) För närvarande stöds endast procentuella rabattkoder

Licensnycklar

  • ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT
    • Utlösare: Den nya aktiveringsgränsen för en licensnyckel är lägre än det aktuella antalet instanser
    • Meddelande: Den nya aktiveringsgränsen kan inte vara lägre än det aktuella antalet instanser
  • INACTIVE_LICENSE_KEY
    • Utlösare: Licensnyckelns status är inte active
    • Meddelande: Licensnyckeln är inte aktiv
  • LICENSE_KEY_LIMIT_REACHED
    • Utlösare: Antalet aktiveringar har nått aktiveringsgränsen
    • Meddelande: Licensnyckelns aktiveringsgräns har nåtts
  • LICENSE_KEY_NOT_FOUND
    • Utlösare: Instans-ID:t eller licensnyckel-ID:t är ogiltigt
    • Meddelande: Licensnyckelinstansen hittades inte eller tillhör inte den här licensnyckeln
  • NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS
    • Utlösare: Ett försök att ange ett förfallodatum för en prenumerationsbaserad licensnyckel
    • Meddelande: Det går inte att ange ett förfallodatum för en prenumerationsbaserad licensnyckel

Användningsbaserad debitering och mätare

  • DUPLICATE_METER_IDS_IN_REQUEST
    • Utlösare: Samma mätar-ID förekommer mer än en gång i begäran
    • Meddelande: Dubbletter av mätar-ID:n tillåts inte
  • INVALID_QUANTITY
    • Utlösare: En annan kvantitet än 1 för en produkt med användningsbaserad prissättning
    • Meddelande: Endast kvantiteten 1 tillåts för produkter med användningsbaserat pris
  • METER_IS_DELETED
    • Utlösare: Ett försök att använda en borttagen mätare
    • Meddelande: Mätaren har redan tagits bort
  • MISSING_METER_IDS
    • Utlösare: Listan med mätar-ID:n är tom eller innehåller ogiltiga ID:n
    • Meddelande: Ett eller flera mätar-ID:n finns inte: {id}

Kreditbaserad debitering

  • CREDIT_ENTITLEMENT_IS_DELETED
    • Utlösare: En borttagen kreditberättighet används
    • Meddelande: Kreditberättigheten har redan tagits bort
  • CREDIT_ENTITLEMENT_NAME_ALREADY_EXISTS
    • Utlösare: En kreditberättighet skapas med ett namn som redan finns
    • Meddelande: En kreditberättighet med det här namnet finns redan
  • OVERAGE_LIMIT_EXCEEDED
    • Utlösare: Ett användnings- eller kreditavdrag skulle överskrida den konfigurerade övertrasseringsgränsen
    • Meddelande: Övertrasseringsgränsen har överskridits

Plånbok

  • INSUFFICIENT_WALLET_FUNDS
    • Utlösare: Plånbokens saldo är lägre än debiteringsbeloppet
    • Meddelande: Otillräckliga medel i plånboken
  • NEGATIVE_BALANCE_ADJUSTMENT
    • Utlösare: Ett försök att göra plånbokens saldo negativt
    • Meddelande: Plånbokens saldo får inte göras negativt

Valuta, skatt och region

  • EXCHANGE_RATE_NOT_FOUND
    • Utlösare: Ingen växelkurs finns för valutaparet
    • Meddelande: Växelkurs hittades inte för konvertering från {currency} till {currency}
  • INVALID_TAX_ID
    • Utlösare: VAT, GST eller TIN kunde inte valideras
    • Meddelande: Skatte-ID:t är ogiltigt
  • REQUEST_AMOUNT_BELOW_MINIMUM
    • Utlösare: Beloppet är lägre än det minimum som angetts för produkten
    • Meddelande: Beloppet kan inte vara lägre än det minimibelopp som angetts för produkten
  • TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT
    • Utlösare: Varukorgens sammanlagda totalsumma är lägre än minimibeloppet som krävs för att behandla en betalning
    • Meddelande: Ett minimibelopp på {display_str} krävs för att behandla betalningen
  • UNSUPPORTED_BILLING_CURRENCY
    • Utlösare: Den begärda debiteringsvalutan stöds inte för den här prenumerationen
    • Meddelande: Debitering i annan valuta än USD stöds inte för prenumerationer
  • UNSUPPORTED_COUNTRY
    • Utlösare: Landet stöds inte
    • Meddelande: Landet {country_name} stöds för närvarande inte
  • UNSUPPORTED_CURRENCY
    • Utlösare: Produktens eller tilläggets valuta är inte en valuta som Dodo Payments kan debitera i. Baspriser kan anges i valfri debiteringsbar valuta, så detta fel betyder vanligtvis att valutakoden är ogiltig eller inte stöds.
    • Meddelande: Valutan stöds inte för närvarande (eller) För närvarande stöds endast produkter i USD och INR (eller) För närvarande stöds endast USD och INR för tilläggspriser (eller) billing_currency kan endast begäras som USD eller INR (eller) Valutan stöds inte (eller) Oväntad valuta för indiska kortprenumerationer
  • UNSUPPORTED_TAX_CATEGORY
    • Utlösare: Skattekategorin är inte ett av de värden som stöds
    • Meddelande: Kategorin {category} stöds för närvarande inte

Validering och begäranden

  • DUPLICATE_LINE_ITEMS_IN_REQUEST
    • Utlösare: Samma item_id förekommer mer än en gång i items[]
    • Meddelande: Dubbletter av item_ids har angetts i items-arrayen
  • INVALID_QUERY_PARAMS
    • Utlösare: Frågeparametrar som utesluter varandra eller är felaktigt formaterade
    • Meddelande: Query-parametrar får endast innehålla antingen time_frame eller (start, end) (eller) Intervallets start får inte ligga efter dess slut
  • INVALID_REQUEST_BODY
    • Utlösare: Felaktigt formaterad JSON eller en schemaöverträdelse
    • Meddelande: Begärans body är ogiltig. Kontrollera begärans headers och objekt.
  • INVALID_REQUEST_PARAMETERS
    • Utlösare: Parametervärden som är giltiga till formatet men inte till betydelsen, till exempel ett datum i det förflutna
    • Meddelande: Kan inte ändra next_billing_date till en tidpunkt i det förflutna
  • MAXIMUM_KEYS_REACHED
    • Utlösare: Metadata eller anpassade fält överskrider 50 nyckel-värde-par
    • Meddelande: Överskrider 50 nyckel-värde-par

Allmänt och system

  • INTEGER_CONVERSION_FAILURE
    • Utlösare: En konvertering på serversidan mellan ett heltal och en sträng eller decimal misslyckas, till exempel när en varukorgs totalsumma är för stor att behandla
    • Meddelande: Heltalskonverteringen misslyckades (eller) Varukorgens totalsumma är för stor att behandla. Minska kvantiteten eller välj en annan debiteringsvaluta.
  • INTERNAL_SERVER_ERROR
    • Utlösare: Ett oväntat serverfel. Logga begärans uppgifter på din sida.
    • Meddelande: Inget offentligt meddelande (generiskt 500, message är vanligtvis null)
  • NOT_FOUND
    • Utlösare: Generiskt 404 för en resurs som saknas
    • Meddelande: Artikeln hittades inte (eller ett mer specifikt meddelande som anger vad som saknas)
  • TOO_MANY_REQUESTS
    • Utlösare: En hastighetsgräns överskreds (HTTP 429)
    • Meddelande: Inget meddelande
  • UNSUPPORTED_ACTION
    • Utlösare: En åtgärd som resurstypen inte stöder
    • Meddelande: Det går inte att ändra planer för användningsbaserade prenumerationer

Bästa praxis

Följ dessa rutiner när du hanterar API-fel:
  1. Hantera varje felsvar i applikationen och basera logiken på code i stället för message.
  2. Logga HTTP-statusen, code och message för varje misslyckad begäran.
  3. Visa slutanvändare ett meddelande som är skrivet för dem i stället för den råa API-message.
  4. Försök endast igen vid tillfälliga fel, till exempel svar med 429 och 5xx eller DISCOUNT_CONCURRENT_REDEMPTION, efter en fördröjning.
  5. Kontakta supporten för fel som du inte kan lösa.

Support

Kontakta supportteamet på support@dodopayments.com om du behöver mer hjälp med felkoder eller integrationsproblem.
Senast ändrad 26 september 2026