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. Om du vill ersätta en väntande ändring av betalningslänken anger du cancel_older_payment_link: true.
    • Meddelande: Det finns redan en väntande planändring för denna prenumeration. Vänta tills den aktuella betalningen har slutförts.
  • 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_LINK_CANCEL_FAILED
    • Utlösare: En planändring med cancel_older_payment_link: true kunde inte avbryta den tidigare betalningslänken. Inget ändrades, så du kan försöka igen.
    • Meddelande: Den tidigare betalningslänken kunde inte avbrytas. Försök igen.
  • PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Utlösare: En planändring av en prenumeration som är schemalagd för annullering
    • Meddelande: Prenumerationen är schemalagd för annullering
  • PLAN_CHANGE_PAYMENT_ALREADY_COMPLETED
    • Utlösare: En planändring med cancel_older_payment_link: true medan kunden redan har betalat den tidigare planändringen. Den ändringen tillämpas, så försök inte igen.
    • Meddelande: Kunden har redan betalat den tidigare planändringen. Den tillämpas snart.
  • PLAN_CHANGE_PAYMENT_IN_PROGRESS
    • Utlösare: En planändring med cancel_older_payment_link: true medan kunden betalar den tidigare planändringen, till exempel under 3D Secure. Försök igen när betalningen har slutförts eller misslyckats.
    • Meddelande: Kunden betalar den tidigare planändringen just nu. Försök igen senare.
  • SCHEDULE_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Utlösare: Schemaläggning av en planändring via Customer Portal medan företaget har inaktiverat funktionen
    • Meddelande: Schemaläggning av planändringar är inaktiverad för detta företag.
  • SCHEDULED_PLAN_CHANGE_EXISTS
    • Utlösare: En schemalagd planändring skapas när en sådan redan finns
    • Meddelande: Det finns redan en schemalagd planändring för denna prenumeration. 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 denna prenumeration.
  • 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: Manuell omprövning av en prenumeration som saknar en sparad betalningsmetod för debitering off-session
    • Meddelande: Den här prenumerationen har ingen sparad betalningsmetod att debitera
  • SUBSCRIPTION_INACTIVE
    • Utlösare: Prenumerationsstatusen är inte active
    • Meddelande: Prenumerationen är inte aktiv (eller) Den här prenumerationen är inte aktiv, så en annullering 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 betalningsförsök för prenumerationen överskred det maximala antalet försök
    • Meddelande: Den maximala gränsen på 10 försök överskreds för denna prenumeration

Kunder och blocklista

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

Produkter, kundvagn och varumärken

  • BRAND_ALREADY_ARCHIVED
    • Utlösare: Ett varumärke arkiveras trots att det redan är arkiverat
    • 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 trots att 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 koppla om dem. Meddelandet nämner i stället aktiva prenumerationer eller produktkollektioner när dessa hindrar arkiveringen.
  • BRAND_MISMATCH
    • Utlösare: Kundvagnens artiklar tillhör olika varumärken
    • Meddelande: Alla artiklar i produktkundvagnen 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 på nytt är inte aktiverad
    • Meddelande: Brand verificatin resubmission is not enabled (stavas exakt som API:et returnerar det)
  • CANNOT_ARCHIVE_PRIMARY_BRAND
    • Utlösare: Det primära varumärket arkiveras, vars 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 behörigheter fortfarande refererar till den
    • Meddelande: Den digitala filen refereras av aktiva behörigheter
  • INVALID_BRAND_ARCHIVE_TARGET
    • Utlösare: move_products_to anger varumärket som arkiveras, ett arkiverat varumärke eller ett varumärke från ett annat företag
    • Meddelande: move_products_to måste vara ett icke-arkiverat varumärke för detta företag (eller) move_products_to kan inte vara det varumärke du arkiverar
  • INVALID_SUGGESTED_PRICE
    • Utlösare: Ett föreslaget pris för Pay What You Want är lägre än minimipriset
    • Meddelande: Suggested Price kan inte vara lägre än minimum price. Vid Pay What You Want betraktas priset som det lägsta accepterade beloppet
  • LOCALIZED_PRICE_ALREADY_EXISTS
    • Utlösare: Det finns redan ett lokaliserat pris för denna produkt och detta land eller denna valuta
    • Meddelande: Det finns redan ett lokaliserat pris för denna produkt och detta land/denna valuta
  • LOCALIZED_PRICE_DUPLICATES_BASE
    • Utlösare: Det lokaliserade priset duplicerar produktens basvaluta eller basland
    • Meddelande: Det lokaliserade priset duplicerar produktens basvaluta/basland
  • LOCALIZED_PRICE_SHAPE_MISMATCH
    • Utlösare: Det lokaliserade prisets struktur överensstämmer inte med pricing_mode för produkten
    • Meddelande: Det lokaliserade prisets struktur överensstämmer inte med 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 What You Want-produkt
  • PRODUCT_CART_EMTPY
    • Utlösare: En tom produktkundvagn skickas in
    • Meddelande: product_cart är tom (felkoden stavas avsiktligt EMTPY för att matcha det exakta värdet som API:et returnerar)
  • PRODUCT_COLLECTION_IS_DELETED
    • Utlösare: En åtgärd utförs på en borttagen produktkollektion
    • 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 i stället kollektionen. (eller) Den sista gruppen med produkter kan inte tas bort. Arkivera i stället kollektionen.
  • PRODUCT_IS_DELETED
    • Utlösare: Produkten har tagits bort
    • Meddelande: Inget meddelande
  • PRODUCT_PRICING_MODE_REQUIRED
    • Utlösare: Lokaliserade priser läggs till innan pricing_mode för produkten har angetts
    • Meddelande: Produktens pricing_mode måste anges innan lokaliserade priser läggs till
  • SLUG_ALREADY_TAKEN
    • Utlösare: Den begärda produktsluggen 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 denna API-endpoint.

Rabatter

  • DISCOUNT_ALREADY_USED_ON_SUBSCRIPTION
    • Utlösare: En rabatt tillämpas igen trots att den redan har använts för denna prenumeration
    • Meddelande: Den här rabatten har redan använts för denna prenumeration
  • DISCOUNT_CODE_ALREADY_EXISTS
    • Utlösare: En rabattkod skapas trots att den redan finns
    • Meddelande: Rabattkoden finns redan
  • DISCOUNT_CODE_EXPIRED
    • Utlösare: Rabattkoden används efter dess 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 mindre ä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 skickas igen. Visa inte detta för kunden som en förbrukad kod.
  • DISCOUNT_CURRENCY_OPTION_INVALID
    • Utlösare: Ogiltig currency_options vid skapande eller uppdatering
    • Meddelande: En fast rabatt kräver minst ett valutaalternativ med en lösbar standardinställning (eller) Duplicerade valutaalternativ är inte tillåtna (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 denna rabattkod
  • DISCOUNT_MINIMUM_SUBTOTAL_NOT_MET
    • Utlösare: Kundvagnens delsumma understiger minimum_subtotal som har konfigurerats för checkout-valutan
    • Meddelande: Kundvagnens delsumma understiger rabattens minsta obligatoriska delsumma
  • DISCOUNT_NOT_YET_ACTIVE
    • Utlösare: Koden används före dess starts_at-datum
    • Meddelande: Rabattkoden är inte aktiv ännu (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 denna rabattkod
  • 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 denna produkt
  • INVALID_DISCOUNT_CODE
    • Utlösare: Koden finns inte eller gäller inte för någon produkt i kundvagnen
    • Meddelande: Ogiltig rabattkod (eller) Rabattkoden kan inte tillämpas på någon produkt i kundvagnen
  • INVALID_PERCENTAGE
    • Utlösare: Procentandelen är högre än 100 % (10 000 baspunkter)
    • Meddelande: Procentbeloppet kan inte överstiga 10000 (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 procentbaserade och fasta rabattkoder stöds (eller) För närvarande stöds endast procentbaserade 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 denna licensnyckel
  • NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS
    • Utlösare: Ett försök att ange ett utgångsdatum för en prenumerationsbaserad licensnyckel
    • Meddelande: Det går inte att ange ett utgångsdatum 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 är inte tillåtna
  • INVALID_QUANTITY
    • Utlösare: En annan kvantitet än 1 för en produkt med användningsbaserad prissättning
    • Meddelande: Endast kvantiteten 1 är tillåten 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 över 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 kreditbehörighet som har tagits bort används
    • Meddelande: Kreditbehörigheten har redan tagits bort
  • CREDIT_ENTITLEMENT_NAME_ALREADY_EXISTS
    • Utlösare: En kreditbehörighet skapas med ett namn som redan finns
    • Meddelande: Det finns redan en kreditbehörighet med detta namn
  • OVERAGE_LIMIT_EXCEEDED
    • Utlösare: En användning eller kreditminskning skulle överskrida den konfigurerade övertrasseringsgränsen
    • Meddelande: Övertrasseringsgränsen har överskridits

Plånbok

  • INSUFFICIENT_WALLET_FUNDS
    • Utlösare: Plånbokssaldot ä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ånbokssaldot negativt
    • Meddelande: Plånbokssaldot 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: Den sammanlagda totalsumman för kundvagnen, inklusive skatt, är lägre än det minimibelopp som krävs för att behandla en betalning. Minimum beror på debiteringsvalutan och på om betalningen är en engångsbetalning eller en prenumeration. För andra valutor än USD, EUR och GBP kontrolleras totalsumman även mot minimibeloppet i USD. Se Minimibelopp
    • Meddelande: Ett minimibelopp på {display_str} krävs för att behandla betalningen, till exempel Minimum amount of 1.00 USD is required to process payment
  • UNSUPPORTED_BILLING_CURRENCY
    • Utlösare: Den begärda debiteringsvalutan stöds inte för denna prenumeration
    • 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 innebär 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äggspris (eller) Du kan endast begära USD eller INR för billing_currency (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 inte för närvarande

Validering och begäranden

  • DUPLICATE_LINE_ITEMS_IN_REQUEST
    • Utlösare: Samma item_id förekommer mer än en gång i items[]
    • Meddelande: Duplicerade item_ids har angetts i items-arrayen
  • INVALID_QUERY_PARAMS
    • Utlösare: Frågeparametrar som utesluter varandra eller är felaktigt formaterade
    • Meddelande: Frågeparametrar 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 ett schemafel
    • Meddelande: Begärandekroppen är ogiltig. Kontrollera dina begärandeheaders och ditt objekt.
  • INVALID_REQUEST_PARAMETERS
    • Utlösare: Parametervärden som är giltiga till formatet men inte till innebörden, till exempel ett datum i det förflutna
    • Meddelande: next_billing_date kan inte ändras till en tidpunkt i det förflutna (eller) En checkout med mer än en prenumerationsprodukt kan inte innehålla engångsprodukter (eller) Alla produkt-ID:n måste vara unika (eller) On-demand-prenumerationer kan inte innehålla mer än en produkt (eller) En checkout kan innehålla högst 20 prenumerationsprodukter (eller) Duplicerade prenumerationsprodukter i samma checkout är inte tillåtna
  • MAXIMUM_KEYS_REACHED
    • Utlösare: Metadata eller anpassade fält överskrider 50 nyckel-värdepar
    • Meddelande: Överskrider 50 nyckel-värdepar

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 kundvagnstotal är för stor för att behandlas
    • Meddelande: Heltalskonverteringen misslyckades (eller) Kundvagnens totalsumma är för stor för att behandlas. Minska kvantiteten eller välj en annan debiteringsvaluta.
  • INTERNAL_SERVER_ERROR
    • Utlösare: Ett oväntat serverfel. Logga begärandedetaljerna på din sida.
    • Meddelande: Inget offentligt meddelande (generell 500, message är vanligtvis null)
  • NOT_FOUND
    • Utlösare: Generell 404 för en resurs som saknas
    • Meddelande: Objektet hittades inte (eller ett mer specifikt meddelande som anger vad som saknas)
  • TOO_MANY_REQUESTS
    • Utlösare: En hastighetsbegränsning ö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 metoder när du hanterar API-fel:
  1. Hantera varje felsvar i din applikation och använd code som grund för förgrening 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 det råa API-värdet 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 8 oktober 2026