अवलोकन
जब कोई request विफल होती है, तो Dodo Payments API एक HTTP status code और error का नाम बताने वाला JSON body लौटाती है। Error का कारण जानने और उसे हल करने का तरीका खोजने के लिए इस पेज का उपयोग करें। हर error response में शामिल होते हैं:- एक HTTP status code, जो error की सामान्य श्रेणी बताता है।
- एक
code, जो सटीक error की पहचान करता है, जैसेUNSUPPORTED_COUNTRY। - एक
message, जो error को सरल भाषा में समझाता है।messagenullहो सकता है, जैसे internal server errors के लिए।
code के आधार पर करें, message के आधार पर नहीं। Cause के आधार पर कई codes एक से अधिक messages लौटा सकते हैं।
इन error codes का उपयोग करें:
- Integration issues को debug करने के लिए।
- अपने application में errors को सही ढंग से handle करने के लिए।
- अपने customers को सार्थक feedback दिखाने के लिए।
- अपनी payment processing को reliable बनाए रखने के लिए।
ये API और business-logic errors हैं। Failed payment पर लौटाए गए card decline reasons (जैसे
INSUFFICIENT_FUNDS या CARD_DECLINED) के लिए इसके बजाय Transaction Failures reference देखें।Standard API Error Codes
API errors के लिए इन HTTP status codes का उपयोग करती है:Error Response Format
Error response body में दो fields होती हैं,code और message:
Error Codes Reference
नीचे दिए गए error codes को API के संबंधित area के अनुसार group किया गया है। हर entry में error trigger करने वाली condition और API द्वारा लौटाया गया message दिया गया है।{id} जैसे placeholders उन values के लिए हैं जिन्हें API भरती है।
Authentication & Account
-
UNAUTHORIZED- Trigger: Request में API key नहीं है या invalid API key है (HTTP 401), या API key में action के लिए आवश्यक role नहीं है (HTTP 403)
- Message: आप यह action करने के लिए authorised नहीं हैं
-
MERCHANT_NOT_LIVE- Trigger: ऐसे business के लिए live mode request जिसका live payments enabled नहीं है (HTTP 403)। इसमें वह business शामिल है जिसने केवल test mode का उपयोग किया है, और वह business भी जिसका live payments अभी enabled नहीं है क्योंकि verification अधूरी है। Test mode requests प्रभावित नहीं होतीं।
- Message: Merchant के लिए live payments enabled नहीं हैं
-
BUSINESS_ARCHIVED- Trigger: Archived business के लिए कोई भी customer-facing request (HTTP 403)। इसमें checkout, payment links, storefront, Customer Portal और license key activation शामिल हैं।
- Message: यह business archived है और अब requests स्वीकार नहीं करता
Payments & Checkout
-
CHECKOUT_SESSION_CONSUMED- Trigger: Checkout session पहले ही payment generate कर चुका है (HTTP 403)। इसके बजाय नया checkout session बनाएँ।
- Message: दी गई checkout session के साथ payment पहले ही generate किया जा चुका है।
-
MANUAL_RETRY_ALREADY_PAID- Trigger: ऐसी renewal invoice का Manual retry जिस पर payment पहले ही सफल हो चुका है। दोबारा भेजने पर customer से दो बार charge होगा।
- Message: इस invoice पर payment पहले ही सफल हो चुका है
-
MANUAL_RETRY_HARD_DECLINE- Trigger: Manual retry तब जब invoice की latest failure hard decline हो या उसमें classified error code न हो। उसी card पर दूसरा charge सफल नहीं हो सकता, इसलिए payment method update करें।
- Message: इस invoice की last failure hard decline है, इसलिए retry सफल नहीं हो सकता (या) इस invoice की last failure classify नहीं की जा सकती, इसलिए इसे retry नहीं किया जा सकता
-
MANUAL_RETRY_IN_FLIGHT- Trigger: Manual retry के दौरान invoice पर payment
processingहो या उसका recorded status अभी न हो। दोबारा भेजने के बजाय उस payment के outcome की प्रतीक्षा करें। - Message: इस invoice पर payment अभी भी progress में है
- Trigger: Manual retry के दौरान invoice पर payment
-
MANUAL_RETRY_LIMIT_REACHED- Trigger: Invoice पर सभी 3 sends समाप्त हो जाने के बाद, या cooldown पूरा होने से पहले manual retry (HTTP 429)। दूसरा send पहले के 1 घंटे बाद और तीसरा दूसरे के 3 घंटे बाद होता है। Body में केवल
codeऔरmessageहोते हैं। अगला send कब allowed है, यह जानने के लिएGET /payments/{payment_id}/retryसेretry_available_atपढ़ें। - Message: इस invoice के लिए हर manual retry समाप्त हो चुका है (या) इस invoice के लिए Retry now अभी उपलब्ध नहीं है
- Trigger: Invoice पर सभी 3 sends समाप्त हो जाने के बाद, या cooldown पूरा होने से पहले manual retry (HTTP 429)। दूसरा send पहले के 1 घंटे बाद और तीसरा दूसरे के 3 घंटे बाद होता है। Body में केवल
-
NO_ELIGIBLE_PAYMENT_METHODS- Trigger: Filtering के बाद payment के लिए कोई payment method उपलब्ध नहीं बचा (HTTP 422)
- Message: कोई eligible payment methods नहीं मिला
-
PAYMENT_NOT_PERMITTED- Trigger: Merchant की blocklist पर मौजूद customer द्वारा checkout या payment attempt (HTTP 403)। Code और message जानबूझकर कोई cause नहीं बताते।
- Message: यह payment process नहीं की जा सकती।
-
PAYMENT_NOT_RETRYABLE- Trigger: ऐसे payment का manual retry जिसे manual retry cover नहीं करता। Payment की कोई invoice नहीं है, उसकी invoice open subscription renewal नहीं है, invoice पर कोई payment अभी तक failed नहीं हुआ है, subscription में recurring billing configured नहीं है (जैसे on-demand subscription), या customer blocklist पर है।
- Message: Reason के अनुसार बदलता है, उदाहरण के लिए: केवल subscription renewal payments को retry किया जा सकता है
-
PAYMENT_NOT_SUCCEEDED- Trigger: ऐसे payment को refund या process करने का प्रयास जो सफल नहीं हुआ है
- Message: दिया गया payment सफल नहीं हुआ है
-
PREVIOUS_PAYMENT_PENDING- Trigger: Previous payment non-terminal state में होने पर charge create करने का प्रयास। यह manual retry पर भी लौटाया जाता है जब invoice का newest payment न तो
failedहो और न ही in flight, जैसेrequires_customer_actionयाcancelled। - Message: Previous payment अभी successful नहीं है, इसलिए नया charge create नहीं किया जा सकता (या) इस invoice का most recent payment failed नहीं हुआ है
- Trigger: Previous payment non-terminal state में होने पर charge create करने का प्रयास। यह manual retry पर भी लौटाया जाता है जब invoice का newest payment न तो
-
UNSUCCESSFUL_PAYMENT_ID- Trigger: Payment ID ऐसे payment को reference करता है जो सफल नहीं हुआ है
- Message: Payment ID का status unsuccessful है।
Connectors & BYOP
ये errors merchant-owned payment connectors (Bring Your Own Processor, या BYOP) से संबंधित हैं।-
BYOP_CONNECTOR_DISABLED- Trigger: Disabled BYOP connector से routed subscription का payment method update करना। Dodo Payments अपने connectors पर fallback नहीं करता, इसलिए पहले connector को फिर से enable करें।
- Message: Subscription merchant के अपने (BYOP) connector से routed है, जो अभी disabled है
-
BYOP_CUSTOM_INVOICE_ADDRESS_MISSING- Trigger: Merchant के connector (BYOP) से routed payment में custom invoice address नहीं है
- Message: Merchant के connector से payment routed होने पर BYOP custom invoice address आवश्यक है
-
CONNECTOR_LABEL_ALREADY_EXISTS- Trigger: पहले से मौजूद label वाले connector को create करना
- Message: इस label वाला connector पहले से मौजूद है। कृपया अलग label चुनें।
Refunds
-
EXISTING_REFUND_REQUEST_PROCESSING- Trigger: Previous refund request अभी process हो रही है
- Message: “Pending” status वाली refund request अभी process हो रही है
-
LINE_ITEM_FULLY_REFUNDED- Trigger: ऐसे line item को refund करने का प्रयास जो पहले ही पूरी तरह refunded है
- Message: Line item
{id}पूरी तरह refunded है और इसे आगे refund नहीं किया जा सकता।
-
LINE_ITEM_NOT_FOUND- Trigger: Item ID referenced payment का हिस्सा नहीं है
- Message: Payment में line item
{id}नहीं मिला
-
LINE_ITEM_PRORATED- Trigger: Prorated line item पर refund या update का प्रयास
- Message: Line item
{id}को refund नहीं किया जा सकता क्योंकि यह prorated है
-
LINE_ITEM_REFUND_AMOUNT_TOO_HIGH- Trigger: Tax सहित refund amount paid amount से अधिक है
- Message: Line item
{id}का requested refund amount tax सहित{amount}है, जो paid amount{amount}से अधिक है
-
LINE_ITEM_REFUND_AMOUNT_TOO_LOW- Trigger: Refund amount minimum threshold से कम है
- Message: Line item
{id}का requested refund amount{amount}है, जो बहुत कम है
-
NOTHING_TO_REFUND- Trigger: कोई refundable amount शेष नहीं है क्योंकि सभी positive line items पहले ही पूरी तरह refunded हैं
- Message: कोई refundable amount शेष नहीं है। सभी positive line items पूरी तरह refunded हो चुके हैं।
-
PARTIAL_REFUND_NOT_ALLOWED- Trigger: ऐसे payment method पर partial refund का प्रयास जो केवल full refunds support करता है
- Message: इस payment method के लिए partial refunds allowed नहीं हैं
-
PAYMENT_ALREADY_REFUNDED- Trigger: Duplicate refund
- Message: यह payment पहले ही refunded हो चुका है
-
PAYMENT_HAS_BEEN_REFUNDED- Trigger: Payment पूरी तरह refunded है
- Message: Payment ID पूरी तरह refunded हो चुका है।
-
REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT- Trigger: Total refund amount paid amount से अधिक है
- Message: Calculated refund amount paid amount से अधिक है
-
REFUND_WINDOW_EXPIRED- Trigger: Refund allowed refund window के बाहर request किया गया है
- Message: Payment creation के
{days}दिनों बाद refunds शुरू नहीं किए जा सकते। support@dodopayments.com से संपर्क करें।
-
ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED- Trigger: Zero-amount payment को refund करने का प्रयास
- Message: Zero currency amount वाले payment को refund नहीं किया जा सकता
Subscriptions & Add-ons
-
ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: Usage-based billing subscription में add-ons जोड़ने का प्रयास
- Message: Usage Based Billing के लिए Subscriptions में Addons supported नहीं हैं
-
ADDONS_NOT_ALLOWED_FOR_ON_DEMAND- Trigger: On-demand subscription में add-ons जोड़ने का प्रयास
- Message: On demand subscriptions के लिए Addons allowed नहीं हैं
-
CANCEL_SCHEDULED_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Trigger: Customer Portal scheduled plan change cancel करने का प्रयास करता है, जबकि business ने यह action disabled किया है
- Message: Customer portal के लिए scheduled plan change cancel करना disabled है।
-
CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: Cancellation के लिए scheduled subscription को charge करने का प्रयास
- Message: Subscription cancellation के लिए scheduled है
-
CUSTOMER_HAS_EXISTING_SUBSCRIPTION- Trigger: ऐसे customer के लिए subscription create करना जिसके पास पहले से एक subscription है, जब business प्रति customer multiple subscriptions allow नहीं करता
- Message: Customer
{id}के पास existing subscription है। प्रति customer multiple subscriptions allow करने के लिए business settings बदलें
-
DO_NOT_BILL_NOT_ALLOWED_IN_CUSTOMER_PORTAL- Trigger: Customer Portal plan change में
do_not_billproration mode का उपयोग - Message: Customer portal में do_not_bill proration mode allowed नहीं है
- Trigger: Customer Portal plan change में
-
DUPLICATE_ADDON_IDS_IN_REQUEST- Trigger: वही
addon_idrequest में एक से अधिक बार दिखाई देता है - Message: Duplicate addon IDs allowed नहीं हैं
- Trigger: वही
-
INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED- Trigger: Inactive subscription पर plan change
- Message: Inactive subscriptions के लिए plans बदलना supported नहीं है
-
INVALID_PRORATION_MODE_WITH_NEXT_BILLING_DATE- Trigger:
full_immediatelyके अलावा कोई proration mode,effective_at: next_billing_dateके साथ उपयोग किया गया - Message: effective_at: next_billing_date के साथ केवल full_immediately proration mode allowed है
- Trigger:
-
MISSING_ADDON_IDS- Trigger:
addon_idlist empty है या उसमें unknown IDs हैं - Message: एक या अधिक product IDs मौजूद नहीं हैं:
{id}
- Trigger:
-
ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED- Trigger: On-demand subscription पर plan change
- Message: On demand subscriptions के लिए plans बदलना supported नहीं है
-
ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: Usage-based billing के साथ on-demand subscription का उपयोग करने का प्रयास
- Message: Usage Based Billing के लिए On Demand Subscriptions supported नहीं हैं
-
ONE_TIME_PRODUCTS_NOT_ALLOWED_FOR_ON_DEMAND- Trigger: On-demand subscription में one-time product जोड़ा गया
- Message: On demand subscriptions के लिए one-time products allowed नहीं हैं
-
PENDING_PLAN_CHANGE_EXISTS- Trigger: Previous plan change के payment की प्रतीक्षा के दौरान नया plan change request किया गया
- Message: इस subscription के लिए pending plan change पहले से मौजूद है। Current payment पूरा होने तक प्रतीक्षा करें।
-
PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Trigger: Customer Portal के माध्यम से plan change, जबकि business ने इसे disabled किया है
- Message: Customer portal के लिए subscription plan change disabled है।
-
PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: Cancellation के लिए scheduled subscription पर plan change
- Message: Subscription cancellation के लिए scheduled है
-
SCHEDULE_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Trigger: Customer Portal के माध्यम से plan change schedule करना, जबकि business ने इसे disabled किया है
- Message: इस business के लिए plan changes schedule करना disabled है।
-
SCHEDULED_PLAN_CHANGE_EXISTS- Trigger: जब scheduled plan change पहले से मौजूद हो, तब नया scheduled plan change create करना
- Message: इस subscription के लिए scheduled plan change पहले से मौजूद है। नया बनाने से पहले existing scheduled change cancel करें।
-
SCHEDULED_PLAN_CHANGE_NOT_FOUND- Trigger: ऐसे scheduled plan change को reference या cancel करना जो मौजूद नहीं है
- Message: इस subscription के लिए कोई scheduled plan change नहीं मिला।
-
SUBSCRIPTION_EXPIRED- Trigger: Subscription की
expires_atdate के बाद billing - Message: Subscription expired है, नए charges create नहीं किए जा सकते
- Trigger: Subscription की
-
SUBSCRIPTION_HAS_NO_PAYMENT_METHOD- Trigger: ऐसी subscription का manual retry जिसमें off-session charge करने के लिए saved payment method नहीं है
- Message: इस subscription में charge करने के लिए कोई saved payment method नहीं है
-
SUBSCRIPTION_INACTIVE- Trigger: Subscription status
activeनहीं है - Message: Subscription active नहीं है (या) यह subscription live नहीं है, इसलिए cancellation schedule नहीं की जा सकती
- Trigger: Subscription status
-
SUBSCRIPTION_NOT_ON_DEMAND- Trigger: Fixed interval पर bill होने वाली subscription पर on-demand action
- Message: Subscription पहले से on demand नहीं है
-
SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED- Trigger: Subscription payment retries ने maximum attempts की संख्या पार कर ली
- Message: इस subscription के लिए 10 attempts की maximum retry limit पार हो गई
Customers & Blocklist
-
CUSTOMER_ALREADY_BLOCKED- Trigger: ऐसे customer को block करना जो पहले से blocklist पर है और जिसके cancel करने के लिए कोई live subscriptions शेष नहीं है (HTTP 409)
- Message: यह customer पहले से blocklist पर है
-
PORTAL_ACTION_NOT_PERMITTED- Trigger: Blocked customer Customer Portal write route को call करता है: cancel, pause, resume, change plan या update payment method (HTTP 403)। Read routes खुले रहते हैं। Code और message जानबूझकर कोई cause नहीं बताते।
- Message: यह action उपलब्ध नहीं है।
Products, Cart & Brands
-
BRAND_ALREADY_ARCHIVED- Trigger: पहले से archived brand को archive करना
- Message: Brand पहले से archived है
-
BRAND_ARCHIVED- Trigger: Archived brand को update करना, उसे verification के लिए submit करना, या उसमें नया product, product collection या subscription tag करना
- Message: Brand archived है (या) Brand archived है और update नहीं किया जा सकता (या) Brand archived है और verification के लिए submit नहीं किया जा सकता
-
BRAND_ARCHIVE_TARGET_REQUIRED- Trigger: ऐसे brand को archive करना जिसमें products, live subscriptions या product collections अभी भी हैं और कोई
move_products_totarget नहीं है - Message: Brand में
{count}product(s) हैं। उन्हें re-tag करने के लिए move_products_to को target brand पर set करें। जब archive को live subscriptions या product collections रोकते हैं, तो message में उनके बजाय उनका नाम दिया जाता है।
- Trigger: ऐसे brand को archive करना जिसमें products, live subscriptions या product collections अभी भी हैं और कोई
-
BRAND_MISMATCH- Trigger: Cart items अलग-अलग brands से संबंधित हैं
- Message: Product cart के सभी items एक ही brand से संबंधित होने चाहिए
-
BRAND_NOT_ENABLED- Trigger: Brand disabled या active नहीं है
- Message: दिया गया brand enabled नहीं है
-
BRAND_SUBMISSION_NOT_ENABLED- Trigger: Brand verification resubmission feature enabled नहीं है
- Message:
Brand verificatin resubmission is not enabled(API द्वारा लौटाए गए exact spelling में)
-
CANNOT_ARCHIVE_PRIMARY_BRAND- Trigger: Primary brand को archive करना, जिसका brand ID business ID है
- Message: Primary brand archive नहीं किया जा सकता
-
FILE_IN_USE- Trigger: ऐसे digital product file को delete करना जिसे active entitlement grants अभी reference करते हैं
- Message: Digital file active grants द्वारा referenced है
-
INVALID_BRAND_ARCHIVE_TARGET- Trigger:
move_products_toउस brand को name करता है जिसे archive किया जा रहा है, किसी archived brand को, या किसी अन्य business के brand को - Message: move_products_to इस business का ऐसा brand होना चाहिए जो archived न हो (या) move_products_to वह brand नहीं हो सकता जिसे आप archive कर रहे हैं
- Trigger:
-
INVALID_SUGGESTED_PRICE- Trigger: Pay What You Want suggested price minimum price से कम है
- Message: Suggested Price minimum price से कम नहीं हो सकती। Pay what you want के मामले में price को minimum accepted amount माना जाता है
-
LOCALIZED_PRICE_ALREADY_EXISTS- Trigger: इस product और country या currency के लिए localized price पहले से मौजूद है
- Message: इस product और country/currency के लिए localized price पहले से मौजूद है
-
LOCALIZED_PRICE_DUPLICATES_BASE- Trigger: Localized price product की base currency या country से duplicate होती है
- Message: Localized price product की base currency/country को duplicate करती है
-
LOCALIZED_PRICE_SHAPE_MISMATCH- Trigger: Localized price shape product के
pricing_modeसे match नहीं करती - Message: Localized price shape product के pricing_mode से match नहीं करती
- Trigger: Localized price shape product के
-
MISSING_PRODUCT_INFORMATION- Trigger: Product मौजूद है, लेकिन mandatory information missing है
- Message: Product
{id}मौजूद है, लेकिन अन्य mandatory information missing या invalid है
-
PAY_AS_YOU_WANT_AMOUNT_REQUIRED- Trigger: Pay What You Want product के लिए amount missing है
- Message: Pay as you want product के लिए amount mandatory है
-
PRODUCT_CART_EMTPY- Trigger: Empty product cart submit किया गया
- Message: product_cart empty है (error code को API द्वारा लौटाए गए exact value से match करने के लिए जानबूझकर
EMTPYलिखा गया है)
-
PRODUCT_COLLECTION_IS_DELETED- Trigger: ऐसी product collection पर operation जो delete की जा चुकी है
- Message: कोई message नहीं
-
PRODUCT_COLLECTION_MUST_HAVE_PRODUCTS- Trigger: Collection से last product, या products वाले last group को हटाना
- Message: Collection में last product delete नहीं किया जा सकता। इसके बजाय collection archive करें। (या) Products वाले last group को delete नहीं किया जा सकता। इसके बजाय collection archive करें।
-
PRODUCT_IS_DELETED- Trigger: Product delete किया जा चुका है
- Message: कोई message नहीं
-
PRODUCT_PRICING_MODE_REQUIRED- Trigger: Product का
pricing_modeset होने से पहले localized prices जोड़ना - Message: Localized prices जोड़ने से पहले product pricing_mode set करना आवश्यक है
- Trigger: Product का
-
SLUG_ALREADY_TAKEN- Trigger: Requested product slug या short URL पहले से उपयोग में है
- Message: Slug पहले से लिया जा चुका है
-
UNABLE_TO_EDIT_PRIMARY_BRAND- Trigger: Regular brand API के माध्यम से primary brand update करने का प्रयास
- Message: इस API endpoint के माध्यम से primary brand update नहीं किया जा सकता।
Discounts
-
DISCOUNT_ALREADY_USED_ON_SUBSCRIPTION- Trigger: इस subscription पर पहले उपयोग किए जा चुके discount को फिर से apply करना
- Message: यह discount इस subscription पर पहले ही उपयोग किया जा चुका है
-
DISCOUNT_CODE_ALREADY_EXISTS- Trigger: पहले से मौजूद discount code create करना
- Message: Discount Code पहले से मौजूद है
-
DISCOUNT_CODE_EXPIRED- Trigger: Discount code अपनी
expires_atdate पार कर चुका है - Message: Discount code expired है
- Trigger: Discount code अपनी
-
DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED- Trigger: Discount code का उपयोग तब किया जाता है जब उसका
usage_limitपहुँच चुका हो - Message: Usage limit, times_used से कम नहीं हो सकती (या) Discount code ने usage limit पूरी कर ली
- Note: Terminal। Code exhausted है, इसलिए retry न करें।
- Trigger: Discount code का उपयोग तब किया जाता है जब उसका
-
DISCOUNT_CONCURRENT_REDEMPTION- Trigger: उसी code का कोई अन्य redemption usage-limit lock को बहुत देर तक hold करता है (HTTP 503)
- Message: Discount concurrent रूप से redeem किया जा रहा है; कृपया retry करें
- Note: Transient। Code में अभी capacity हो सकती है, इसलिए request को retry करना सुरक्षित है। Customer को इसे exhausted code के रूप में न दिखाएँ।
-
DISCOUNT_CURRENCY_OPTION_INVALID- Trigger: Create या update पर invalid
currency_options - Message: Flat discount के लिए resolvable default वाला कम-से-कम एक currency option आवश्यक है (या) Duplicate currency options allowed नहीं हैं (या) केवल एक currency option को default के रूप में mark किया जा सकता है
- Trigger: Create या update पर invalid
-
DISCOUNT_CUSTOMER_NOT_ELIGIBLE- Trigger: Customer code की
customer_eligibilityपूरी नहीं करता (first_time,existing, याspecificcode की allow list में नहीं है) - Message: Customer इस discount code के लिए eligible नहीं है
- Trigger: Customer code की
-
DISCOUNT_MINIMUM_SUBTOTAL_NOT_MET- Trigger: Cart subtotal checkout currency के लिए configured
minimum_subtotalसे कम है - Message: Cart subtotal discount के minimum required subtotal से कम है
- Trigger: Cart subtotal checkout currency के लिए configured
-
DISCOUNT_NOT_YET_ACTIVE- Trigger: Code का उपयोग उसकी
starts_atdate से पहले किया जाता है - Message: Discount code अभी active नहीं है (starts_at future में है)
- Trigger: Code का उपयोग उसकी
-
DISCOUNT_PER_CUSTOMER_USAGE_LIMIT_EXCEEDED- Trigger: Customer ने code को पहले ही
per_customer_usage_limitबार redeem किया है - Message: इस discount code के लिए per-customer usage limit पार हो गई
- Trigger: Customer ने code को पहले ही
-
DISCOUNT_NOT_APPLICABLE_TO_NEW_PRODUCT- Trigger: ऐसे product पर plan change जिस पर existing discount लागू नहीं होता
- Message: Discount नए plan के product पर applicable नहीं है
-
DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND- Trigger: Code को on-demand subscription पर apply किया जाता है
- Message: On demand subscriptions के लिए discount coupon उपलब्ध नहीं है
-
DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT- Trigger: Code को ऐसे products पर apply किया जाता है जिन्हें वह cover नहीं करता
- Message: इस product के लिए discount coupon उपलब्ध नहीं है
-
INVALID_DISCOUNT_CODE- Trigger: Code मौजूद नहीं है, या cart में किसी product पर लागू नहीं होता
- Message: Invalid Discount Code (या) Discount Code cart के किसी product पर apply नहीं किया जा सकता
-
INVALID_PERCENTAGE- Trigger: Percentage 100% (10,000 basis points) से अधिक है
- Message: Percentage amount 10000 से अधिक नहीं हो सकती (या) Discount code amount 100% से अधिक नहीं हो सकता
-
UNSUPPORTED_DISCOUNT_TYPE- Trigger: ऐसा discount type जो supported नहीं है।
percentageऔरflatदोनों supported हैं; per-unit amount discounts supported नहीं हैं। - Message: केवल percentage और flat discount codes supported हैं (या) अभी केवल percentage discount codes supported हैं
- Trigger: ऐसा discount type जो supported नहीं है।
License Keys
-
ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT- Trigger: License key की नई activation limit उसके current instances count से कम है
- Message: New activation limit current instances count से कम नहीं हो सकती
-
INACTIVE_LICENSE_KEY- Trigger: License key status
activeनहीं है - Message: License key active नहीं है
- Trigger: License key status
-
LICENSE_KEY_LIMIT_REACHED- Trigger: Activations की संख्या activation limit तक पहुँच गई है
- Message: License key activation limit पहुँच गई
-
LICENSE_KEY_NOT_FOUND- Trigger: Instance ID या license key ID invalid है
- Message: License key instance नहीं मिला या यह इस license key से संबंधित नहीं है
-
NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS- Trigger: Subscription-based license key पर expiry date set करने का प्रयास
- Message: Subscription-based license key के लिए expiry date set नहीं की जा सकती
Usage-Based Billing & Meters
-
DUPLICATE_METER_IDS_IN_REQUEST- Trigger: वही meter ID request में एक से अधिक बार दिखाई देती है
- Message: Duplicate Meter Ids allowed नहीं हैं
-
INVALID_QUANTITY- Trigger: Usage-based pricing वाले product के लिए 1 के अलावा कोई quantity
- Message: Usage based price products में केवल 1 quantity allowed है
-
METER_IS_DELETED- Trigger: Deleted meter का उपयोग करने का प्रयास
- Message: Meter पहले ही delete हो चुका है
-
MISSING_METER_IDS- Trigger: Meter ID list empty है या उसमें invalid IDs हैं
- Message: एक या अधिक meter IDs मौजूद नहीं हैं:
{id}
Credit-Based Billing
-
CREDIT_ENTITLEMENT_IS_DELETED- Trigger: Deleted credit entitlement पर operation
- Message: Credit entitlement पहले ही delete किया जा चुका है
-
CREDIT_ENTITLEMENT_NAME_ALREADY_EXISTS- Trigger: पहले से मौजूद name वाला credit entitlement create करना
- Message: इस name वाला credit entitlement पहले से मौजूद है
-
OVERAGE_LIMIT_EXCEEDED- Trigger: Usage या credit deduction configured overage limit से अधिक हो जाएगा
- Message: Overage limit पार हो गई
Wallet
-
INSUFFICIENT_WALLET_FUNDS- Trigger: Wallet balance debit amount से कम है
- Message: Wallet में insufficient funds हैं
-
NEGATIVE_BALANCE_ADJUSTMENT- Trigger: Wallet balance को negative करने का प्रयास
- Message: Wallet balance को negative करना allowed नहीं है
Currency, Tax & Region
-
EXCHANGE_RATE_NOT_FOUND- Trigger: Currency pair के लिए कोई exchange rate मौजूद नहीं है
- Message:
{currency}से{currency}में convert करने के लिए exchange rate नहीं मिला
-
INVALID_TAX_ID- Trigger: VAT, GST या TIN validation में विफल रहा
- Message: Tax Id invalid है
-
REQUEST_AMOUNT_BELOW_MINIMUM- Trigger: Amount product के लिए set minimum से कम है
- Message: Amount product के लिए specified minimum amount से कम नहीं हो सकता
-
TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT- Trigger: Combined cart total payment process करने के लिए आवश्यक minimum amount से कम है
- Message: Payment process करने के लिए
{display_str}का minimum amount आवश्यक है
-
UNSUPPORTED_BILLING_CURRENCY- Trigger: Requested billing currency इस subscription के लिए supported नहीं है
- Message: Subscriptions के लिए non USD billing currency supported नहीं है
-
UNSUPPORTED_COUNTRY- Trigger: Country supported नहीं है
- Message: Country
{country_name}अभी supported नहीं है
-
UNSUPPORTED_CURRENCY- Trigger: Product या add-on currency ऐसी currency नहीं है जिसमें Dodo Payments charge कर सकता है। Base prices किसी भी chargeable currency में set किए जा सकते हैं, इसलिए इस error का सामान्य अर्थ है कि currency code invalid या unsupported है।
- Message: Currency अभी supported नहीं है (या) अभी केवल USD और INR products supported हैं (या) Addon price के लिए अभी केवल USD और INR supported हैं (या) billing_currency के लिए केवल USD या INR request कर सकते हैं (या) Currency Not Supported (या) Indian card subscriptions के लिए unexpected currency
-
UNSUPPORTED_TAX_CATEGORY- Trigger: Tax category supported values में से एक नहीं है
- Message: Category
{category}अभी supported नहीं है
Validation & Requests
-
DUPLICATE_LINE_ITEMS_IN_REQUEST- Trigger: वही
item_iditems[]में एक से अधिक बार दिखाई देता है - Message: items array में duplicate item_ids specified हैं
- Trigger: वही
-
INVALID_QUERY_PARAMS- Trigger: Mutually exclusive या malformed query parameters
- Message: Query params में केवल time_frame या (start, end) होना चाहिए (या) Range का start, end के बाद नहीं होना चाहिए
-
INVALID_REQUEST_BODY- Trigger: Malformed JSON या schema violation
- Message: आपका request body invalid है। अपने request headers और object की जाँच करें।
-
INVALID_REQUEST_PARAMETERS- Trigger: ऐसे parameter values जो format में valid हैं लेकिन meaning में valid नहीं हैं, जैसे past की date
- Message: next_billing_date को past time पर change नहीं किया जा सकता
-
MAXIMUM_KEYS_REACHED- Trigger: Metadata या custom fields 50 key-value pairs से अधिक हैं
- Message: 50 key-value pairs की सीमा पार हो गई
General & System
-
INTEGER_CONVERSION_FAILURE- Trigger: Integer और string या decimal के बीच server-side conversion विफल होता है, जैसे cart total process करने के लिए बहुत बड़ा हो
- Message: Integer Conversion Failure (या) Cart total process करने के लिए बहुत बड़ा है। Quantity कम करें या अलग billing currency चुनें।
-
INTERNAL_SERVER_ERROR- Trigger: Unexpected server error। अपनी तरफ request details log करें।
- Message: कोई public message नहीं (generic 500,
messageसामान्यतःnullहोता है)
-
NOT_FOUND- Trigger: किसी भी missing resource के लिए generic 404
- Message: Item नहीं मिला (या missing item का नाम बताने वाला अधिक specific message)
-
TOO_MANY_REQUESTS- Trigger: Rate limit पार हो गई (HTTP 429)
- Message: कोई message नहीं
-
UNSUPPORTED_ACTION- Trigger: ऐसा action जिसे resource type support नहीं करता
- Message: Usage based subscriptions के लिए plans बदलना supported नहीं है
Best Practices
API errors handle करते समय इन practices का पालन करें:- अपने application में हर error response handle करें और
messageके बजायcodeके आधार पर branch करें। - हर failed request का HTTP status,
codeऔरmessagelog करें। - End users को raw API
messageके बजाय उनके लिए लिखा हुआ message दिखाएँ। - केवल transient errors, जैसे
429और5xxresponses याDISCOUNT_CONCURRENT_REDEMPTIONको delay के बाद retry करें। - जिन errors को आप resolve नहीं कर सकते, उनके लिए support से संपर्क करें।