Übersicht
Wenn eine Anfrage fehlschlägt, gibt die Dodo Payments API einen HTTP-Statuscode und einen JSON-Body zurück, der den Fehler benennt. Auf dieser Seite erfahren Sie, wodurch ein Fehler verursacht wurde und wie Sie ihn beheben können. Jede Fehlerantwort enthält:- Einen HTTP-Statuscode, der die allgemeine Fehlerkategorie angibt.
- Einen
code, der den genauen Fehler identifiziert, zum BeispielUNSUPPORTED_COUNTRY. - Einen
message, der den Fehler in verständlicher Sprache erklärt. Dermessagekannnullsein, zum Beispiel bei internen Serverfehlern.
code und nicht nach dem message. Mehrere Codes geben je nach Ursache mehr als eine Meldung zurück.
Verwenden Sie diese Fehlercodes, um:
- Integrationsprobleme zu debuggen.
- Fehler in Ihrer Anwendung korrekt zu behandeln.
- Ihren Kunden verständliches Feedback anzuzeigen.
- Ihre Zahlungsabwicklung zuverlässig zu halten.
Dies sind API- und Geschäftslogikfehler. Informationen zu Gründen für Kartenablehnungen, die bei einer fehlgeschlagenen Zahlung zurückgegeben werden (z. B.
INSUFFICIENT_FUNDS oder CARD_DECLINED), finden Sie in der Referenz zu Transaktionsfehlern.Standard-API-Fehlercodes
Die API verwendet bei Fehlern die folgenden HTTP-Statuscodes:Format der Fehlerantwort
Der Body einer Fehlerantwort enthält zwei Felder:code und message:
Referenz der Fehlercodes
Die folgenden Fehlercodes sind nach dem API-Bereich gruppiert, auf den sie sich beziehen. Jeder Eintrag enthält die Bedingung, die den Fehler auslöst, sowie die von der API zurückgegebene Meldung. Platzhalter wie{id} stehen für Werte, die von der API eingefügt werden.
Authentifizierung und Konto
-
UNAUTHORIZED- Auslöser: Die Anfrage enthält keinen API-Schlüssel oder einen ungültigen API-Schlüssel (HTTP 401), oder der API-Schlüssel verfügt nicht über die für die Aktion erforderliche Rolle (HTTP 403)
- Meldung: Sie sind nicht berechtigt, diese Aktion auszuführen
-
MERCHANT_NOT_LIVE- Auslöser: Eine Anfrage im Live-Modus für ein Unternehmen, für das Live-Zahlungen nicht aktiviert sind (HTTP 403). Dies betrifft Unternehmen, die bisher nur den Testmodus verwendet haben, sowie Unternehmen, deren Live-Zahlungen noch nicht aktiviert sind, weil die Verifizierung noch nicht abgeschlossen ist. Anfragen im Testmodus sind davon nicht betroffen.
- Meldung: Live-Zahlungen für den Händler nicht aktiviert
-
BUSINESS_ARCHIVED- Auslöser: Jede kundenorientierte Anfrage für ein archiviertes Unternehmen (HTTP 403). Dies betrifft Checkout, Zahlungslinks, den Storefront, das Customer Portal und die Aktivierung von Lizenzschlüsseln.
- Meldung: Dieses Unternehmen ist archiviert und akzeptiert keine Anfragen mehr
Zahlungen und Checkout
-
CHECKOUT_SESSION_CONSUMED- Auslöser: Die Checkout-Sitzung hat bereits eine Zahlung erzeugt (HTTP 403). Erstellen Sie stattdessen eine neue Checkout-Sitzung.
- Meldung: Für die angegebene Checkout-Sitzung wurde bereits eine Zahlung erzeugt.
-
MANUAL_RETRY_ALREADY_PAID- Auslöser: Manueller Retry einer Verlängerungsrechnung, für die eine Zahlung bereits erfolgreich war. Ein erneutes Senden würde den Kunden doppelt belasten.
- Meldung: Eine Zahlung für diese Rechnung war bereits erfolgreich
-
MANUAL_RETRY_HARD_DECLINE- Auslöser: Manueller Retry, wenn der letzte Fehler der Rechnung eine endgültige Ablehnung ist oder keinen klassifizierten Fehlercode enthält. Eine weitere Belastung derselben Karte kann nicht erfolgreich sein. Aktualisieren Sie stattdessen die Zahlungsmethode.
- Meldung: Der letzte Fehler dieser Rechnung ist eine endgültige Ablehnung, daher kann der Retry nicht erfolgreich sein (oder) Der letzte Fehler dieser Rechnung kann nicht klassifiziert werden, daher ist kein Retry möglich
-
MANUAL_RETRY_IN_FLIGHT- Auslöser: Manueller Retry, während eine Zahlung der Rechnung
processingist oder noch keinen aufgezeichneten Status besitzt. Warten Sie stattdessen das Ergebnis dieser Zahlung ab, anstatt sie erneut zu senden. - Meldung: Eine Zahlung für diese Rechnung ist noch nicht abgeschlossen
- Auslöser: Manueller Retry, während eine Zahlung der Rechnung
-
MANUAL_RETRY_LIMIT_REACHED- Auslöser: Manueller Retry, nachdem alle drei Sendungen für die Rechnung verbraucht wurden, oder bevor die Abkühlzeit abgelaufen ist (HTTP 429). Die zweite Sendung ist 1 Stunde nach der ersten möglich, die dritte 3 Stunden nach der zweiten. Der Body enthält nur
codeundmessage. Um festzustellen, wann die nächste Sendung zulässig ist, lesen Sieretry_available_atausGET /payments/{payment_id}/retry. - Meldung: Alle manuellen Retries für diese Rechnung sind verbraucht (oder) Ein Retry ist für diese Rechnung derzeit noch nicht verfügbar
- Auslöser: Manueller Retry, nachdem alle drei Sendungen für die Rechnung verbraucht wurden, oder bevor die Abkühlzeit abgelaufen ist (HTTP 429). Die zweite Sendung ist 1 Stunde nach der ersten möglich, die dritte 3 Stunden nach der zweiten. Der Body enthält nur
-
NO_ELIGIBLE_PAYMENT_METHODS- Auslöser: Nach der Filterung ist keine Zahlungsmethode für die Zahlung verfügbar (HTTP 422)
- Meldung: Keine geeigneten Zahlungsmethoden gefunden
-
PAYMENT_NOT_PERMITTED- Auslöser: Ein Checkout- oder Zahlungsversuch eines Kunden auf der Blockierliste des Händlers (HTTP 403). Der Code und die Meldung nennen absichtlich keine Ursache.
- Meldung: Diese Zahlung kann nicht verarbeitet werden.
-
PAYMENT_NOT_RETRYABLE- Auslöser: Manueller Retry einer Zahlung, für die manueller Retry nicht vorgesehen ist. Die Zahlung hat keine Rechnung, die Rechnung ist keine offene Verlängerung eines Abonnements, für die Rechnung ist noch keine Zahlung fehlgeschlagen, für das Abonnement ist keine wiederkehrende Abrechnung konfiguriert (z. B. ein On-Demand-Abonnement), oder der Kunde steht auf der Blockierliste.
- Meldung: Variiert je nach Grund, zum Beispiel: Nur Zahlungen für Abonnementverlängerungen können wiederholt werden
-
PAYMENT_NOT_SUCCEEDED- Auslöser: Der Versuch, eine nicht erfolgreiche Zahlung zu erstatten oder zu verarbeiten
- Meldung: Die angegebene Zahlung war nicht erfolgreich
-
PREVIOUS_PAYMENT_PENDING- Auslöser: Der Versuch, eine Belastung zu erstellen, während sich die vorherige Zahlung in einem nicht abgeschlossenen Status befindet. Wird auch bei einem manuellen Retry zurückgegeben, wenn die neueste Zahlung der Rechnung weder
failednoch in Bearbeitung ist, zum Beispielrequires_customer_actionodercancelled. - Meldung: Neue Belastung kann nicht erstellt werden, da die vorherige Zahlung noch nicht erfolgreich war (oder) Die letzte Zahlung dieser Rechnung ist nicht fehlgeschlagen
- Auslöser: Der Versuch, eine Belastung zu erstellen, während sich die vorherige Zahlung in einem nicht abgeschlossenen Status befindet. Wird auch bei einem manuellen Retry zurückgegeben, wenn die neueste Zahlung der Rechnung weder
-
UNSUCCESSFUL_PAYMENT_ID- Auslöser: Die Zahlungs-ID verweist auf eine nicht erfolgreiche Zahlung
- Meldung: Die Zahlungs-ID besitzt einen nicht erfolgreichen Status.
Konnektoren und BYOP
Diese Fehler beziehen sich auf Zahlungskonnektoren im Besitz des Händlers (Bring Your Own Processor oder BYOP).-
BYOP_CONNECTOR_DISABLED- Auslöser: Die Zahlungsmethode eines Abonnements aktualisieren, das über einen deaktivierten BYOP-Konnektor geleitet wird. Dodo Payments weicht nicht auf eigene Konnektoren aus. Aktivieren Sie daher zuerst den Konnektor wieder.
- Meldung: Das Abonnement wird über den eigenen Konnektor des Händlers (BYOP) geleitet, der derzeit deaktiviert ist
-
BYOP_CUSTOM_INVOICE_ADDRESS_MISSING- Auslöser: Eine über den Konnektor des Händlers (BYOP) geleitete Zahlung besitzt keine benutzerdefinierte Rechnungsadresse
- Meldung: Eine benutzerdefinierte BYOP-Rechnungsadresse ist erforderlich, wenn eine Zahlung über den Konnektor des Händlers geleitet wird
-
CONNECTOR_LABEL_ALREADY_EXISTS- Auslöser: Einen Konnektor mit einer bereits vorhandenen Bezeichnung erstellen
- Meldung: Ein Konnektor mit dieser Bezeichnung existiert bereits. Wählen Sie eine andere Bezeichnung.
Rückerstattungen
-
EXISTING_REFUND_REQUEST_PROCESSING- Auslöser: Eine vorherige Rückerstattungsanfrage wird noch verarbeitet
- Meldung: Eine Rückerstattungsanfrage mit dem Status “Pending” wird noch verarbeitet
-
LINE_ITEM_FULLY_REFUNDED- Auslöser: Der Versuch, eine bereits vollständig erstattete Position zu erstatten
- Meldung: Die Position
{id}wurde vollständig erstattet und kann nicht weiter erstattet werden.
-
LINE_ITEM_NOT_FOUND- Auslöser: Die Artikel-ID ist nicht Teil der angegebenen Zahlung
- Meldung: Position
{id}in der Zahlung nicht gefunden
-
LINE_ITEM_PRORATED- Auslöser: Eine Rückerstattung oder Aktualisierung für eine anteilig berechnete Position
- Meldung: Position
{id}kann nicht erstattet werden, da sie anteilig berechnet wurde
-
LINE_ITEM_REFUND_AMOUNT_TOO_HIGH- Auslöser: Der Rückerstattungsbetrag einschließlich Steuern ist höher als der bezahlte Betrag
- Meldung: Der für Position
{id}angeforderte Rückerstattungsbetrag einschließlich Steuern beträgt{amount}und liegt damit über dem bezahlten Betrag{amount}
-
LINE_ITEM_REFUND_AMOUNT_TOO_LOW- Auslöser: Der Rückerstattungsbetrag liegt unter dem Mindestschwellenwert
- Meldung: Der für Position
{id}angeforderte Rückerstattungsbetrag beträgt{amount}und ist zu niedrig
-
NOTHING_TO_REFUND- Auslöser: Es ist kein erstattungsfähiger Betrag mehr vorhanden, da alle positiven Positionen bereits vollständig erstattet wurden
- Meldung: Kein erstattungsfähiger Betrag mehr vorhanden. Alle positiven Positionen wurden vollständig erstattet.
-
PARTIAL_REFUND_NOT_ALLOWED- Auslöser: Eine teilweise Rückerstattung für eine Zahlungsmethode, die nur vollständige Rückerstattungen unterstützt
- Meldung: Teilweise Rückerstattungen sind für diese Zahlungsmethode nicht zulässig
-
PAYMENT_ALREADY_REFUNDED- Auslöser: Eine doppelte Rückerstattung
- Meldung: Diese Zahlung wurde bereits erstattet
-
PAYMENT_HAS_BEEN_REFUNDED- Auslöser: Die Zahlung wurde vollständig erstattet
- Meldung: Die Zahlungs-ID wurde vollständig erstattet.
-
REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT- Auslöser: Der gesamte Rückerstattungsbetrag ist höher als der bezahlte Betrag
- Meldung: Der berechnete Rückerstattungsbetrag ist höher als der bezahlte Betrag
-
REFUND_WINDOW_EXPIRED- Auslöser: Die Rückerstattung wird außerhalb des zulässigen Rückerstattungszeitraums angefordert
- Meldung: Rückerstattungen können
{days}Tage nach der Erstellung der Zahlung nicht eingeleitet werden. Wenden Sie sich an support@dodopayments.com.
-
ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED- Auslöser: Der Versuch, eine Zahlung mit einem Währungsbetrag von null zu erstatten
- Meldung: Eine Zahlung mit einem Währungsbetrag von null kann nicht erstattet werden
Abonnements und Add-ons
-
ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED- Auslöser: Der Versuch, Add-ons zu einem verbrauchsbasierten Abrechnungsabonnement hinzuzufügen
- Meldung: Add-ons werden bei verbrauchsbasierter Abrechnung in Abonnements nicht unterstützt
-
ADDONS_NOT_ALLOWED_FOR_ON_DEMAND- Auslöser: Der Versuch, Add-ons zu einem On-Demand-Abonnement hinzuzufügen
- Meldung: Add-ons sind für On-Demand-Abonnements nicht zulässig
-
CANCEL_SCHEDULED_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Auslöser: Das Customer Portal versucht, eine geplante Planänderung abzubrechen, während das Unternehmen diese Aktion deaktiviert hat
- Meldung: Das Abbrechen geplanter Planänderungen ist im Customer Portal deaktiviert.
-
CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Auslöser: Der Versuch, ein zur Kündigung vorgemerktes Abonnement zu belasten
- Meldung: Abonnement zur Kündigung vorgemerkt
-
CUSTOMER_HAS_EXISTING_SUBSCRIPTION- Auslöser: Ein Abonnement für einen Kunden erstellen, der bereits eines besitzt, wenn das Unternehmen nicht mehrere Abonnements pro Kunde zulässt
- Meldung: Kunde
{id}besitzt bereits ein Abonnement. Um mehrere Abonnements pro Kunde zuzulassen, ändern Sie die Unternehmenseinstellungen
-
DO_NOT_BILL_NOT_ALLOWED_IN_CUSTOMER_PORTAL- Auslöser: Der Prorationsmodus
do_not_billwird bei einer Planänderung im Customer Portal verwendet - Meldung: Der Prorationsmodus do_not_bill ist im Customer Portal nicht zulässig
- Auslöser: Der Prorationsmodus
-
DUPLICATE_ADDON_IDS_IN_REQUEST- Auslöser: Dieselbe
addon_iderscheint mehr als einmal in der Anfrage - Meldung: Doppelte Add-on-IDs sind nicht zulässig
- Auslöser: Dieselbe
-
INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED- Auslöser: Eine Planänderung bei einem inaktiven Abonnement
- Meldung: Planänderungen werden für inaktive Abonnements nicht unterstützt
-
INVALID_PRORATION_MODE_WITH_NEXT_BILLING_DATE- Auslöser: Ein anderer Prorationsmodus als
full_immediatelywird miteffective_at: next_billing_dateverwendet - Meldung: Mit effective_at: next_billing_date ist nur der Prorationsmodus full_immediately zulässig
- Auslöser: Ein anderer Prorationsmodus als
-
MISSING_ADDON_IDS- Auslöser: Die
addon_id-Liste ist leer oder enthält unbekannte IDs - Meldung: Eine oder mehrere Produkt-IDs existieren nicht:
{id}
- Auslöser: Die
-
ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED- Auslöser: Eine Planänderung bei einem On-Demand-Abonnement
- Meldung: Planänderungen werden für On-Demand-Abonnements nicht unterstützt
-
ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED- Auslöser: Der Versuch, ein On-Demand-Abonnement mit verbrauchsbasierter Abrechnung zu verwenden
- Meldung: On-Demand-Abonnements werden bei verbrauchsbasierter Abrechnung nicht unterstützt
-
ONE_TIME_PRODUCTS_NOT_ALLOWED_FOR_ON_DEMAND- Auslöser: Ein einmaliges Produkt wurde zu einem On-Demand-Abonnement hinzugefügt
- Meldung: Einmalige Produkte sind für On-Demand-Abonnements nicht zulässig
-
PENDING_PLAN_CHANGE_EXISTS- Auslöser: Eine neue Planänderung wird angefordert, während eine vorherige noch auf die Zahlung wartet
- Meldung: Für dieses Abonnement existiert bereits eine ausstehende Planänderung. Warten Sie, bis die aktuelle Zahlung abgeschlossen ist.
-
PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Auslöser: Eine Planänderung über das Customer Portal, während das Unternehmen diese deaktiviert hat
- Meldung: Planänderungen für Abonnements im Customer Portal sind deaktiviert.
-
PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Auslöser: Eine Planänderung bei einem zur Kündigung vorgemerkten Abonnement
- Meldung: Abonnement zur Kündigung vorgemerkt
-
SCHEDULE_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Auslöser: Eine Planänderung über das Customer Portal planen, während das Unternehmen diese deaktiviert hat
- Meldung: Das Planen von Planänderungen ist für dieses Unternehmen deaktiviert.
-
SCHEDULED_PLAN_CHANGE_EXISTS- Auslöser: Eine geplante Planänderung erstellen, obwohl bereits eine existiert
- Meldung: Für dieses Abonnement existiert bereits eine geplante Planänderung. Brechen Sie die bestehende geplante Änderung ab, bevor Sie eine neue erstellen.
-
SCHEDULED_PLAN_CHANGE_NOT_FOUND- Auslöser: Auf eine nicht vorhandene geplante Planänderung verweisen oder diese abbrechen
- Meldung: Keine geplante Planänderung für dieses Abonnement gefunden.
-
SUBSCRIPTION_EXPIRED- Auslöser: Ein Abonnement nach seinem
expires_at-Datum abrechnen - Meldung: Abonnement abgelaufen; es können keine neuen Belastungen erstellt werden
- Auslöser: Ein Abonnement nach seinem
-
SUBSCRIPTION_HAS_NO_PAYMENT_METHOD- Auslöser: Manueller Retry eines Abonnements ohne gespeicherte Zahlungsmethode für eine Off-Session-Belastung
- Meldung: Für dieses Abonnement ist keine gespeicherte Zahlungsmethode zur Belastung vorhanden
-
SUBSCRIPTION_INACTIVE- Auslöser: Der Abonnementstatus ist nicht
active - Meldung: Abonnement ist nicht aktiv (oder) Dieses Abonnement ist nicht live, daher kann keine Kündigung geplant werden
- Auslöser: Der Abonnementstatus ist nicht
-
SUBSCRIPTION_NOT_ON_DEMAND- Auslöser: Eine On-Demand-Aktion für ein Abonnement, das in einem festen Intervall abgerechnet wird
- Meldung: Das Abonnement ist bereits kein On-Demand-Abonnement
-
SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED- Auslöser: Die Zahlungs-Retries des Abonnements haben die maximale Anzahl von Versuchen überschritten
- Meldung: Das maximale Retry-Limit von 10 Versuchen für dieses Abonnement wurde überschritten
Kunden und Blockierliste
-
CUSTOMER_ALREADY_BLOCKED- Auslöser: Einen Kunden blockieren, der bereits auf der Blockierliste steht und keine aktiven Abonnements mehr besitzt, die gekündigt werden könnten (HTTP 409)
- Meldung: Dieser Kunde steht bereits auf der Blockierliste
-
PORTAL_ACTION_NOT_PERMITTED- Auslöser: Ein blockierter Kunde ruft eine schreibende Route des Customer Portal auf: kündigen, pausieren, fortsetzen, Plan ändern oder Zahlungsmethode aktualisieren (HTTP 403). Lesende Routen bleiben geöffnet. Der Code und die Meldung nennen absichtlich keine Ursache.
- Meldung: Diese Aktion ist nicht verfügbar.
Produkte, Warenkorb und Marken
-
BRAND_ALREADY_ARCHIVED- Auslöser: Eine bereits archivierte Marke archivieren
- Meldung: Marke ist bereits archiviert
-
BRAND_ARCHIVED- Auslöser: Eine archivierte Marke aktualisieren, sie zur Verifizierung einreichen oder ein neues Produkt, eine neue Produktkollektion oder ein neues Abonnement mit ihr verknüpfen
- Meldung: Marke ist archiviert (oder) Marke ist archiviert und kann nicht aktualisiert werden (oder) Marke ist archiviert und kann nicht zur Verifizierung eingereicht werden
-
BRAND_ARCHIVE_TARGET_REQUIRED- Auslöser: Eine Marke archivieren, die noch Produkte, aktive Abonnements oder Produktkollektionen enthält, ohne ein Ziel
move_products_toanzugeben - Meldung: Die Marke enthält
{count}Produkt(e). Setzen Sie move_products_to auf eine Zielmarke, um sie neu zu verknüpfen. Wenn aktive Abonnements oder Produktkollektionen die Archivierung verhindern, nennt die Meldung stattdessen diese.
- Auslöser: Eine Marke archivieren, die noch Produkte, aktive Abonnements oder Produktkollektionen enthält, ohne ein Ziel
-
BRAND_MISMATCH- Auslöser: Die Warenkorbartikel gehören zu unterschiedlichen Marken
- Meldung: Alle Artikel im Produktwarenkorb müssen derselben Marke angehören
-
BRAND_NOT_ENABLED- Auslöser: Die Marke ist deaktiviert oder nicht aktiv
- Meldung: Die angegebene Marke ist nicht aktiviert
-
BRAND_SUBMISSION_NOT_ENABLED- Auslöser: Die Funktion zum erneuten Einreichen einer Markenverifizierung ist nicht aktiviert
- Meldung:
Brand verificatin resubmission is not enabled(genau so geschrieben, wie die API ihn zurückgibt)
-
CANNOT_ARCHIVE_PRIMARY_BRAND- Auslöser: Die primäre Marke archivieren, deren Marken-ID der Unternehmens-ID entspricht
- Meldung: Die primäre Marke kann nicht archiviert werden
-
FILE_IN_USE- Auslöser: Eine Datei eines digitalen Produkts löschen, auf die noch aktive Berechtigungen verweisen
- Meldung: Auf die digitale Datei wird von aktiven Berechtigungen verwiesen
-
INVALID_BRAND_ARCHIVE_TARGET- Auslöser:
move_products_tobenennt die zu archivierende Marke, eine archivierte Marke oder eine Marke eines anderen Unternehmens - Meldung: move_products_to muss eine nicht archivierte Marke dieses Unternehmens sein (oder) move_products_to darf nicht die zu archivierende Marke sein
- Auslöser:
-
INVALID_SUGGESTED_PRICE- Auslöser: Ein vorgeschlagener Preis für Pay What You Want liegt unter dem Mindestpreis
- Meldung: Der vorgeschlagene Preis darf nicht unter dem Mindestpreis liegen. Bei Pay What You Want gilt der Preis als akzeptierter Mindestbetrag
-
LOCALIZED_PRICE_ALREADY_EXISTS- Auslöser: Für dieses Produkt und dieses Land oder diese Währung existiert bereits ein lokalisierter Preis
- Meldung: Für dieses Produkt und dieses Land/diese Währung existiert bereits ein lokalisierter Preis
-
LOCALIZED_PRICE_DUPLICATES_BASE- Auslöser: Der lokalisierte Preis dupliziert die Basiswährung oder das Basisland des Produkts
- Meldung: Der lokalisierte Preis dupliziert die Basiswährung bzw. das Basisland des Produkts
-
LOCALIZED_PRICE_SHAPE_MISMATCH- Auslöser: Die Struktur des lokalisierten Preises entspricht nicht dem
pricing_modedes Produkts - Meldung: Die Struktur des lokalisierten Preises entspricht nicht dem pricing_mode des Produkts
- Auslöser: Die Struktur des lokalisierten Preises entspricht nicht dem
-
MISSING_PRODUCT_INFORMATION- Auslöser: Das Produkt existiert, aber erforderliche Informationen fehlen
- Meldung: Produkt
{id}existiert, aber andere erforderliche Informationen fehlen oder sind ungültig
-
PAY_AS_YOU_WANT_AMOUNT_REQUIRED- Auslöser: Für ein Pay-What-You-Want-Produkt fehlt der Betrag
- Meldung: Für ein Pay-as-you-want-Produkt ist ein Betrag erforderlich
-
PRODUCT_CART_EMTPY- Auslöser: Ein leerer Produktwarenkorb wird übermittelt
- Meldung: product_cart ist leer (der Fehlercode wird absichtlich als
EMTPYgeschrieben, um dem exakten von der API zurückgegebenen Wert zu entsprechen)
-
PRODUCT_COLLECTION_IS_DELETED- Auslöser: Eine Produktkollektion bearbeiten, die gelöscht wurde
- Meldung: Keine Meldung
-
PRODUCT_COLLECTION_MUST_HAVE_PRODUCTS- Auslöser: Das letzte Produkt oder die letzte Gruppe mit Produkten aus einer Kollektion entfernen
- Meldung: Das letzte Produkt einer Kollektion kann nicht gelöscht werden. Archivieren Sie stattdessen die Kollektion. (oder) Die letzte Gruppe mit Produkten kann nicht gelöscht werden. Archivieren Sie stattdessen die Kollektion.
-
PRODUCT_IS_DELETED- Auslöser: Das Produkt wurde gelöscht
- Meldung: Keine Meldung
-
PRODUCT_PRICING_MODE_REQUIRED- Auslöser: Lokalisierte Preise hinzufügen, bevor der
pricing_modedes Produkts festgelegt wurde - Meldung: Der pricing_mode des Produkts muss festgelegt werden, bevor lokalisierte Preise hinzugefügt werden
- Auslöser: Lokalisierte Preise hinzufügen, bevor der
-
SLUG_ALREADY_TAKEN- Auslöser: Der angeforderte Produkt-Slug oder die Kurz-URL wird bereits verwendet
- Meldung: Der Slug ist bereits vergeben
-
UNABLE_TO_EDIT_PRIMARY_BRAND- Auslöser: Der Versuch, die primäre Marke über die reguläre Marken-API zu aktualisieren
- Meldung: Die primäre Marke kann über diesen API-Endpunkt nicht aktualisiert werden.
Rabatte
-
DISCOUNT_ALREADY_USED_ON_SUBSCRIPTION- Auslöser: Einen Rabatt erneut anwenden, der bereits für dieses Abonnement verwendet wurde
- Meldung: Dieser Rabatt wurde bereits für dieses Abonnement verwendet
-
DISCOUNT_CODE_ALREADY_EXISTS- Auslöser: Einen bereits vorhandenen Rabattcode erstellen
- Meldung: Rabattcode existiert bereits
-
DISCOUNT_CODE_EXPIRED- Auslöser: Das
expires_at-Datum des Rabattcodes ist abgelaufen - Meldung: Rabattcode abgelaufen
- Auslöser: Das
-
DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED- Auslöser: Der Rabattcode wird verwendet, nachdem sein
usage_limiterreicht wurde - Meldung: Das Nutzungslimit darf nicht unter times_used liegen (oder) Das Nutzungslimit des Rabattcodes wurde erreicht
- Hinweis: Endgültig. Der Code ist aufgebraucht. Führen Sie keinen Retry durch.
- Auslöser: Der Rabattcode wird verwendet, nachdem sein
-
DISCOUNT_CONCURRENT_REDEMPTION- Auslöser: Eine andere Einlösung desselben Codes hielt die Sperre für das Nutzungslimit zu lange (HTTP 503)
- Meldung: Der Rabatt wird gleichzeitig eingelöst. Versuchen Sie es erneut
- Hinweis: Vorübergehend. Der Code kann noch verfügbar sein, daher kann die Anfrage sicher wiederholt werden. Zeigen Sie dem Kunden nicht an, dass der Code aufgebraucht ist.
-
DISCOUNT_CURRENCY_OPTION_INVALID- Auslöser: Ungültiger
currency_optionsbeim Erstellen oder Aktualisieren - Meldung: Ein Pauschalrabatt erfordert mindestens eine Währungsoption mit auflösbarem Standardwert (oder) Doppelte Währungsoptionen sind nicht zulässig (oder) Nur eine Währungsoption darf als Standardwert markiert sein
- Auslöser: Ungültiger
-
DISCOUNT_CUSTOMER_NOT_ELIGIBLE- Auslöser: Der Kunde erfüllt die
customer_eligibilitydes Codes nicht (first_time,existingoder nicht auf der Allowlist einesspecific-Codes) - Meldung: Der Kunde ist für diesen Rabattcode nicht berechtigt
- Auslöser: Der Kunde erfüllt die
-
DISCOUNT_MINIMUM_SUBTOTAL_NOT_MET- Auslöser: Die Zwischensumme des Warenkorbs liegt unter dem für die Checkout-Währung konfigurierten
minimum_subtotal - Meldung: Die Zwischensumme des Warenkorbs liegt unter der für den Rabatt erforderlichen Mindestzwischensumme
- Auslöser: Die Zwischensumme des Warenkorbs liegt unter dem für die Checkout-Währung konfigurierten
-
DISCOUNT_NOT_YET_ACTIVE- Auslöser: Der Code wird vor seinem
starts_at-Datum verwendet - Meldung: Rabattcode ist noch nicht aktiv (starts_at liegt in der Zukunft)
- Auslöser: Der Code wird vor seinem
-
DISCOUNT_PER_CUSTOMER_USAGE_LIMIT_EXCEEDED- Auslöser: Der Kunde hat den Code bereits
per_customer_usage_limit-mal eingelöst - Meldung: Pro-Kunde-Nutzungslimit für diesen Rabattcode überschritten
- Auslöser: Der Kunde hat den Code bereits
-
DISCOUNT_NOT_APPLICABLE_TO_NEW_PRODUCT- Auslöser: Eine Planänderung zu einem Produkt, für das der bestehende Rabatt nicht gilt
- Meldung: Rabatt gilt nicht für das Produkt des neuen Plans
-
DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND- Auslöser: Der Code wird auf ein On-Demand-Abonnement angewendet
- Meldung: Rabattgutschein ist für On-Demand-Abonnements nicht verfügbar
-
DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT- Auslöser: Der Code wird auf Produkte angewendet, für die er nicht gilt
- Meldung: Rabattgutschein ist für dieses Produkt nicht verfügbar
-
INVALID_DISCOUNT_CODE- Auslöser: Der Code existiert nicht oder gilt für kein Produkt im Warenkorb
- Meldung: Ungültiger Rabattcode (oder) Rabattcode kann auf kein Produkt im Warenkorb angewendet werden
-
INVALID_PERCENTAGE- Auslöser: Der Prozentsatz ist höher als 100 % (10.000 Basispunkte)
- Meldung: Der Prozentbetrag darf nicht mehr als 10000 betragen (oder) Der Rabattcodebetrag darf nicht mehr als 100 % betragen
-
UNSUPPORTED_DISCOUNT_TYPE- Auslöser: Ein nicht unterstützter Rabatttyp.
percentageundflatwerden beide unterstützt; Rabatte mit einem Betrag pro Einheit werden nicht unterstützt. - Meldung: Nur prozentuale und pauschale Rabattcodes werden unterstützt (oder) Derzeit werden nur prozentuale Rabattcodes unterstützt
- Auslöser: Ein nicht unterstützter Rabatttyp.
Lizenzschlüssel
-
ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT- Auslöser: Das neue Aktivierungslimit eines Lizenzschlüssels ist niedriger als die aktuelle Anzahl seiner Instanzen
- Meldung: Das neue Aktivierungslimit darf nicht niedriger sein als die aktuelle Instanzanzahl
-
INACTIVE_LICENSE_KEY- Auslöser: Der Status des Lizenzschlüssels ist nicht
active - Meldung: Lizenzschlüssel ist nicht aktiv
- Auslöser: Der Status des Lizenzschlüssels ist nicht
-
LICENSE_KEY_LIMIT_REACHED- Auslöser: Die Anzahl der Aktivierungen hat das Aktivierungslimit erreicht
- Meldung: Aktivierungslimit des Lizenzschlüssels erreicht
-
LICENSE_KEY_NOT_FOUND- Auslöser: Die Instanz-ID oder die Lizenzschlüssel-ID ist ungültig
- Meldung: Instanz des Lizenzschlüssels nicht gefunden oder gehört nicht zu diesem Lizenzschlüssel
-
NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS- Auslöser: Der Versuch, ein Ablaufdatum für einen abonnementbasierten Lizenzschlüssel festzulegen
- Meldung: Für einen abonnementbasierten Lizenzschlüssel kann kein Ablaufdatum festgelegt werden
Verbrauchsbasierte Abrechnung und Zähler
-
DUPLICATE_METER_IDS_IN_REQUEST- Auslöser: Dieselbe Zähler-ID erscheint mehr als einmal in der Anfrage
- Meldung: Doppelte Zähler-IDs sind nicht zulässig
-
INVALID_QUANTITY- Auslöser: Eine andere Menge als 1 für ein Produkt mit verbrauchsbasierter Preisgestaltung
- Meldung: Bei Produkten mit verbrauchsbasierter Preisgestaltung ist nur die Menge 1 zulässig
-
METER_IS_DELETED- Auslöser: Der Versuch, einen gelöschten Zähler zu verwenden
- Meldung: Der Zähler wurde bereits gelöscht
-
MISSING_METER_IDS- Auslöser: Die Liste der Zähler-IDs ist leer oder enthält ungültige IDs
- Meldung: Eine oder mehrere Zähler-IDs existieren nicht:
{id}
Guthabenbasierte Abrechnung
-
CREDIT_ENTITLEMENT_IS_DELETED- Auslöser: Eine gelöschte Guthabenberechtigung bearbeiten
- Meldung: Die Guthabenberechtigung wurde bereits gelöscht
-
CREDIT_ENTITLEMENT_NAME_ALREADY_EXISTS- Auslöser: Eine Guthabenberechtigung mit einem bereits vorhandenen Namen erstellen
- Meldung: Eine Guthabenberechtigung mit diesem Namen existiert bereits
-
OVERAGE_LIMIT_EXCEEDED- Auslöser: Eine Nutzung oder Guthabenabbuchung würde das konfigurierte Überziehungslimit überschreiten
- Meldung: Überziehungslimit überschritten
Wallet
-
INSUFFICIENT_WALLET_FUNDS- Auslöser: Das Wallet-Guthaben ist niedriger als der Abbuchungsbetrag
- Meldung: Unzureichendes Guthaben im Wallet
-
NEGATIVE_BALANCE_ADJUSTMENT- Auslöser: Der Versuch, das Wallet-Guthaben negativ werden zu lassen
- Meldung: Das Wallet-Guthaben darf nicht negativ werden
Währung, Steuern und Region
-
EXCHANGE_RATE_NOT_FOUND- Auslöser: Für das Währungspaar existiert kein Wechselkurs
- Meldung: Wechselkurs für die Umrechnung von
{currency}in{currency}nicht gefunden
-
INVALID_TAX_ID- Auslöser: Die Validierung von VAT, GST oder TIN ist fehlgeschlagen
- Meldung: Steuer-ID ist ungültig
-
REQUEST_AMOUNT_BELOW_MINIMUM- Auslöser: Der Betrag liegt unter dem für das Produkt festgelegten Mindestbetrag
- Meldung: Der Betrag darf nicht unter dem für das Produkt angegebenen Mindestbetrag liegen
-
TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT- Auslöser: Die kombinierte Warenkorbsumme liegt unter dem für die Verarbeitung einer Zahlung erforderlichen Mindestbetrag
- Meldung: Für die Verarbeitung der Zahlung ist ein Mindestbetrag von
{display_str}erforderlich
-
UNSUPPORTED_BILLING_CURRENCY- Auslöser: Die angeforderte Abrechnungswährung wird für dieses Abonnement nicht unterstützt
- Meldung: Eine Abrechnung in einer anderen Währung als USD wird für Abonnements nicht unterstützt
-
UNSUPPORTED_COUNTRY- Auslöser: Das Land wird nicht unterstützt
- Meldung: Land
{country_name}wird derzeit nicht unterstützt
-
UNSUPPORTED_CURRENCY- Auslöser: Die Währung des Produkts oder Add-ons ist keine Währung, in der Dodo Payments abrechnen kann. Basispreise können in jeder abrechenbaren Währung festgelegt werden. Dieser Fehler bedeutet daher meist, dass der Währungscode ungültig oder nicht unterstützt ist.
- Meldung: Währung wird derzeit nicht unterstützt (oder) Derzeit werden nur Produkte in USD und INR unterstützt (oder) Für Add-on-Preise werden derzeit nur USD und INR unterstützt (oder) Für billing_currency kann nur USD oder INR angefordert werden (oder) Währung nicht unterstützt (oder) Unerwartete Währung für indische Kartenabonnements
-
UNSUPPORTED_TAX_CATEGORY- Auslöser: Die Steuerkategorie gehört nicht zu den unterstützten Werten
- Meldung: Kategorie
{category}wird derzeit nicht unterstützt
Validierung und Anfragen
-
DUPLICATE_LINE_ITEMS_IN_REQUEST- Auslöser: Dieselbe
item_iderscheint mehr als einmal initems[] - Meldung: Doppelte item_ids im items-Array angegeben
- Auslöser: Dieselbe
-
INVALID_QUERY_PARAMS- Auslöser: Query-Parameter, die sich gegenseitig ausschließen oder fehlerhaft formatiert sind
- Meldung: Query-Parameter dürfen entweder nur time_frame oder (start, end) enthalten (oder) Der Beginn des Bereichs darf nicht nach dessen Ende liegen
-
INVALID_REQUEST_BODY- Auslöser: Fehlerhaft formatiertes JSON oder eine Verletzung des Schemas
- Meldung: Ihr Anfrage-Body ist ungültig. Überprüfen Sie Ihre Anfrage-Header und Ihr Objekt.
-
INVALID_REQUEST_PARAMETERS- Auslöser: Parameterwerte, die formal gültig, aber inhaltlich ungültig sind, zum Beispiel ein Datum in der Vergangenheit
- Meldung: next_billing_date kann nicht auf einen vergangenen Zeitpunkt geändert werden
-
MAXIMUM_KEYS_REACHED- Auslöser: Metadaten oder benutzerdefinierte Felder überschreiten 50 Schlüssel-Wert-Paare
- Meldung: Mehr als 50 Schlüssel-Wert-Paare
Allgemein und System
-
INTEGER_CONVERSION_FAILURE- Auslöser: Eine serverseitige Konvertierung zwischen einer Ganzzahl und einem String oder einer Dezimalzahl schlägt fehl, zum Beispiel wenn eine Warenkorbsumme zu groß für die Verarbeitung ist
- Meldung: Fehler bei der Ganzzahlkonvertierung (oder) Warenkorbsumme ist zu groß für die Verarbeitung. Verringern Sie die Menge oder wählen Sie eine andere Abrechnungswährung.
-
INTERNAL_SERVER_ERROR- Auslöser: Ein unerwarteter Serverfehler. Protokollieren Sie die Details der Anfrage auf Ihrer Seite.
- Meldung: Keine öffentliche Meldung (generischer 500-Fehler,
messageist normalerweisenull)
-
NOT_FOUND- Auslöser: Generischer 404-Fehler für jede fehlende Ressource
- Meldung: Element nicht gefunden (oder eine spezifischere Meldung, die das fehlende Element benennt)
-
TOO_MANY_REQUESTS- Auslöser: Ein Rate-Limit wurde überschritten (HTTP 429)
- Meldung: Keine Meldung
-
UNSUPPORTED_ACTION- Auslöser: Eine Aktion, die der Ressourcentyp nicht unterstützt
- Meldung: Planänderungen für verbrauchsbasierte Abonnements werden nicht unterstützt
Best Practices
Befolgen Sie bei der Behandlung von API-Fehlern die folgenden Empfehlungen:- Behandeln Sie jede Fehlerantwort in Ihrer Anwendung und richten Sie Ihre Logik nach
codestatt nachmessage. - Protokollieren Sie bei jeder fehlgeschlagenen Anfrage den HTTP-Status,
codeundmessage. - Zeigen Sie Endnutzern eine für sie formulierte Meldung anstelle des rohen API-
message. - Wiederholen Sie nur vorübergehende Fehler, z. B. Antworten mit
429und5xxoderDISCOUNT_CONCURRENT_REDEMPTION, und zwar nach einer Verzögerung. - Wenden Sie sich bei Fehlern, die Sie nicht beheben können, an den Support.