개요
Dodo Payments API는 API 요청의 성공 또는 실패를 나타내기 위해 표준 HTTP 상태 코드와 사용자 정의 오류 코드를 사용합니다. 오류가 발생하면 API는 적절한 HTTP 상태 코드와 오류에 대한 자세한 정보를 포함하는 JSON 응답을 반환합니다. 각 오류 응답에는 다음이 포함됩니다:- 오류의 일반적인 범주를 나타내는 HTTP 상태 코드
- 오류의 정확한 성격을 식별하는 특정 오류 코드
- 무엇이 잘못되었는지 설명하는 사람이 읽을 수 있는 오류 메시지
- 해당하는 경우 오류에 대한 추가 세부정보
- 통합 문제 디버깅
- 애플리케이션에서 적절한 오류 처리 구현
- 최종 사용자에게 의미 있는 피드백 제공
- 강력한 결제 처리 시스템 유지
이것들은 API 및 비즈니스 로직 오류입니다. 실패한 결제 시 반환되는 카드 거절 사유(예:
INSUFFICIENT_FUNDS 또는 CARD_DECLINED)는 거래 실패 참조를 대신 참조하세요.표준 API 오류 코드
오류 응답 형식
오류가 발생하면 API는 다음 구조의 JSON 응답을 반환합니다:오류 코드 참조
아래의 오류 코드는 관련된 API 영역별로 그룹화되어 있습니다. 각 항목은 트리거 조건과 API 반환 메시지를 나열합니다.인증 및 계정
-
UNAUTHORIZED- Trigger: API 키 없음 또는 잘못된 토큰 / 범위
- Message: 이 작업을 수행할 권한이 없습니다
-
MERCHANT_NOT_LIVE- Trigger: 비즈니스가 테스트/샌드박스 모드
- Message: 상점이 라이브 상태가 아님
결제 및 체크아웃
-
CHECKOUT_SESSION_CONSUMED- Trigger: 체크아웃 세션에서 이미 결제가 발생
- Message: 체크아웃 세션이 이미 소모되었습니다
-
NO_ELIGIBLE_PAYMENT_METHODS- Trigger: 필터링 후 남은 것이 없음
- Message: 적격 결제 수단을 찾을 수 없습니다
-
PAYMENT_NOT_SUCCEEDED- Trigger: 환불/처리되지 않은 결제를 시도
- Message: 제공된 결제가 성공하지 않았습니다
-
PREVIOUS_PAYMENT_PENDING- Trigger: 이전 결제가 비종료 상태일 때 요금 발생 시도
- Message: 이전 결제가 아직 성공하지 않아 새 요금을 생성할 수 없습니다
-
UNSUCCESSFUL_PAYMENT_ID- Trigger: 결제 ID가 실패한 결제를 참조
- Message: 결제 ID의 상태가 성공적이지 않습니다.
커넥터 및 BYOP
이 오류는 상점 소유의 결제 커넥터(Bring Your Own Processor)와 관련됩니다.-
BYOP_CONNECTOR_DISABLED- Trigger: 비활성화된 BYOP 커넥터를 통해 라우팅된 구독에서 결제 수단 업데이트 시도
- Message: 구독은 현재 비활성화된 상점 소유(BYOP) 커넥터를 통해 라우팅됩니다
-
BYOP_CUSTOM_INVOICE_ADDRESS_MISSING- Trigger: 상점 라우팅(BYOP) 결제에 필요한 사용자 정의 청구 주소 없음
- Message: 결제가 상점의 커넥터를 통해 라우팅될 때 BYOP 사용자 정의 청구 주소가 필요합니다
-
CONNECTOR_LABEL_ALREADY_EXISTS- Trigger: 이미 있는 라벨로 커넥터 생성 시도
- Message: 이 라벨의 커넥터가 이미 존재합니다. 다른 라벨을 선택하세요.
환불
-
EXISTING_REFUND_REQUEST_PROCESSING- Trigger: 이전 환불 요청이 여전히 처리 중
- Message: 상태가 “Pending”인 환불 요청이 아직 처리 중입니다
-
LINE_ITEM_FULLY_REFUNDED- Trigger: 이미 전액 환불된 항목에 대한 환불 시도
- Message: 항목 는 이미 전액 환불되어 추가 환불이 불가능합니다.
-
LINE_ITEM_NOT_FOUND- Trigger: 항목 ID가 참조된 결제에 포함되지 않음
- Message: 결제에서 항목 를 찾을 수 없습니다
-
LINE_ITEM_PRORATED- Trigger: 비율적용 항목에 대한 환불 또는 업데이트 시도
- Message: 항목 는 비율적용되어 환불 불가능합니다
-
LINE_ITEM_REFUND_AMOUNT_TOO_HIGH- Trigger: 환불 금액 > 지급 금액(세금 포함)
- Message: 항목 요청된 환불 금액(세금 포함)이 로 지급 금액 보다 높습니다
-
LINE_ITEM_REFUND_AMOUNT_TOO_LOW- Trigger: 환불 금액이 최소 임계값 이하
- Message: 항목 요청된 환불 금액이 로 너무 낮습니다
-
NOTHING_TO_REFUND- Trigger: 모든 긍정적인 항목이 이미 전액 환불된 상태에서 환불 금액이 남아있지 않음
- Message: 환불 가능한 금액이 남아있지 않습니다. 모든 긍정적인 항목이 이미 전액 환불되었습니다.
-
PARTIAL_REFUND_NOT_ALLOWED- Trigger: 부분 환불이 지원되지 않는 결제 수단에 대한 부분 환불 시도
- Message: 이 결제 수단에 대한 부분 환불은 허용되지 않습니다
-
PAYMENT_ALREADY_REFUNDED- Trigger: 중복 환불
- Message: 이 결제는 이미 환불되었습니다
-
PAYMENT_HAS_BEEN_REFUNDED- Trigger: 결제가 전액 환불되었습니다
- Message: 결제 ID가 이미 전액 환불되었습니다.
-
REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT- Trigger: 집계된 환불 금액 > 지급 금액
- Message: 계산된 환불 금액이 지급 금액보다 큽니다
-
REFUND_WINDOW_EXPIRED- Trigger: 허용된 환불 기간을 초과
- Message: 결제 생성 후 일 이후에는 환불을 시작할 수 없습니다. support@dodopayments.com으로 문의하세요.
-
ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED- Trigger: 0 금액 결제에 대한 환불 시도
- Message: 통화 금액이 0인 결제는 환불할 수 없습니다
구독 및 애드온
-
ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: 사용 기반 과금 구독에 애드온 추가 시도
- Message: 사용 기반 과금에 대한 구독은 애드온을 지원하지 않습니다
-
ADDONS_NOT_ALLOWED_FOR_ON_DEMAND- Trigger: 주문형 구독에 애드온 추가 시도
- Message: 주문형 구독에 애드온을 추가할 수 없습니다
-
CANCEL_SCHEDULED_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Trigger: 비즈니스에서 그 행동을 비활성화 상태일 때 고객 포털에서 예약된 계획 변경 취소 시도
- Message: 고객 포털에서 예약된 계획 변경 취소가 비활성화되었습니다.
-
CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: 취소 예정인 구독 요금 청구 시도
- Message: 취소 예정인 구독
-
CUSTOMER_HAS_EXISTING_SUBSCRIPTION- Trigger: 고객 당 여러 구독이 허용되지 않을 때 이미 구독이 있는 고객에 대한 구독 생성
- Message: 고객 에게 기존 구독이 있습니다. 고객 당 여러 구독을 허용하려면 비즈니스 설정을 변경하세요
-
DO_NOT_BILL_NOT_ALLOWED_IN_CUSTOMER_PORTAL- Trigger: 고객 포털에서 플랜 변경에
do_not_bill비례 모드를 사용 - Message: do_not_bill 비례 모드는 고객 포털에서 허용되지 않습니다
- Trigger: 고객 포털에서 플랜 변경에
-
DUPLICATE_ADDON_IDS_IN_REQUEST- Trigger: 요청에서
addon_id이 두 번 이상 나타남 - Message: 중복된 애드온 ID는 허용되지 않습니다
- Trigger: 요청에서
-
INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED- Trigger: 비활성 구독에서 플랜 변경 시도
- Message: 비활성 구독에 대한 플랜 변경은 지원되지 않습니다
-
INVALID_PRORATION_MODE_WITH_NEXT_BILLING_DATE- Trigger:
effective_at: next_billing_date와 함께full_immediately이외의 비례 모드 사용 - Message: effective_at: next_billing_date와 함께 full_immediately 비례 모드만 허용됩니다
- Trigger:
-
MISSING_ADDON_IDS- Trigger:
addon_id목록이 비어 있거나 알 수 없는 ID가 포함됨 - Message: 하나 이상의 제품 ID가 존재하지 않음:
- Trigger:
-
ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED- Trigger: 주문형에 대한 플랜 교환이 허용되지 않음
- Message: 주문형 구독의 플랜 변경은 지원되지 않습니다
-
ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: 사용 기반 청구와 함께 주문형 사용 시도
- Message: 사용 기반 청구에 대한 주문형 구독은 지원되지 않습니다
-
ONE_TIME_PRODUCTS_NOT_ALLOWED_FOR_ON_DEMAND- Trigger: 주문형 구독에 일회성 제품 추가
- Message: 주문형 구독에 일회성 제품은 허용되지 않습니다
-
PENDING_PLAN_CHANGE_EXISTS- Trigger: 이전 플랜 변경이 결제를 기다리는 동안 새로운 플랜 변경 요청
- Message: 이 구독에 대해 대기 중인 계획 변경이 이미 존재합니다. 현재 결제가 완료될 때까지 기다리세요.
-
PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Trigger: 비즈니스에서 비활성화된 고객 포털을 통한 플랜 변경 시도
- Message: 고객 포털의 구독 플랜 변경이 비활성화되었습니다.
-
PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: 취소 예정인 구독에서 플랜 변경 시도
- Message: 취소 예정인 구독
-
SCHEDULE_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Trigger: 비즈니스가 비활성화된 상태에서 고객 포털을 통한 플랜 변경 예약
- Message: 이 비즈니스에 대한 계획 변경 예약이 비활성화되었습니다.
-
SCHEDULED_PLAN_CHANGE_EXISTS- Trigger: 예약된 플랜 변경이 이미 존재할 때 생성 시도
- Message: 이 구독에 대한 예약된 플랜 변경이 이미 존재합니다. 새 계획을 생성하기 전에 기존 예약된 변경을 취소하세요.
-
SCHEDULED_PLAN_CHANGE_NOT_FOUND- Trigger: 존재하지 않는 예약된 플랜 변경 참조 또는 취소
- Message: 이 구독에 대한 예약된 계획 변경을 찾을 수 없습니다.
-
SUBSCRIPTION_EXPIRED- Trigger:
ends_at를 초과하여 청구 - Message: 구독 만료로 인해 새 요금을 생성할 수 없습니다
- Trigger:
-
SUBSCRIPTION_INACTIVE- Trigger: 상태 ≠
ACTIVE - Message: 구독이 활성 상태가 아닙니다
- Trigger: 상태 ≠
-
SUBSCRIPTION_NOT_ON_DEMAND- Trigger: 주문형이지만 고정 간격이 있음
- Message: 구독이 이미 주문형이 아닙니다
-
SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED- Trigger: 구독 결제 재시도가 최대 시도를 초과함
- Message: 이 구독에 대해 최대 재시도 10회 제한을 초과했습니다
제품, 장바구니 및 브랜드
-
BRAND_MISMATCH- Trigger: 장바구니 품목이 다른 브랜드에 속함
- Message: 제품 장바구니의 모든 항목은 동일한 브랜드에 속해야 합니다
-
BRAND_NOT_ENABLED- Trigger: 브랜드가 비활성화되었거나 활성 상태가 아님
- Message: 제공된 브랜드가 활성화되어 있지 않습니다
-
BRAND_SUBMISSION_NOT_ENABLED- Trigger: 브랜드 확인 재제출 기능이 활성화되지 않음
- Message: 브랜드 확인 재제출이 활성화되어 있지 않습니다
-
FILE_IN_USE- Trigger: 활성 entitlement grant에서 여전히 참조하는 digital product file 삭제
- Message: Digital file is referenced by active grants
-
INVALID_SUGGESTED_PRICE- Trigger: PWYW 가격이 허용된 최소 가격보다 낮음
- Message: 제안된 가격은 최소 가격보다 낮을 수 없습니다. 사용자가 원하는 경우 지불 금액은 최소 허용액으로 간주됩니다
-
LOCALIZED_PRICE_ALREADY_EXISTS- Trigger: 이 제품 및 국가/통화에 대해 지역화된 가격이 이미 존재함
- Message: 이 제품 및 국가/통화에 대한 지역화된 가격이 이미 존재합니다
-
LOCALIZED_PRICE_DUPLICATES_BASE- Trigger: 지역화된 가격이 제품의 기본 통화/국가와 중복됨
- Message: 지역화된 가격이 제품의 기본 통화/국가와 중복됩니다
-
LOCALIZED_PRICE_SHAPE_MISMATCH- Trigger: 지역화된 가격 모양이 제품의
pricing_mode과 일치하지 않음 - Message: 제품의 pricing_mode와 지역화된 가격 모양이 일치하지 않습니다
- Trigger: 지역화된 가격 모양이 제품의
-
MISSING_PRODUCT_INFORMATION- Trigger: 제품은 존재하지만 필수 정보가 누락됨
- Message: 제품 는 존재하지만 다른 필수 정보가 누락되었거나 잘못되었습니다
-
PAY_AS_YOU_WANT_AMOUNT_REQUIRED- Trigger: PWYW 제품에 대한 가격 누락
- Message: pay as you want 제품에 대한 금액은 필수입니다
-
PRODUCT_CART_EMTPY- Trigger: 빈 제품 장바구니 제출
- Message: product_cart가 비어 있습니다(API가 반환하는 정확한 값을 일치시키기 위해 오류 코드가 의도적으로
EMTPY로 철자가 명시됨)
-
PRODUCT_COLLECTION_IS_DELETED- Trigger: 삭제된 제품 컬렉션에서 작업
- Message: 메시지 없음
-
PRODUCT_COLLECTION_MUST_HAVE_PRODUCTS- Trigger: 컬렉션에서 마지막 제품(또는 제품이 포함된 마지막 그룹) 제거
- Message: 컬렉션에서 마지막 제품을 삭제할 수 없습니다. 대신 컬렉션을 보관하세요.
-
PRODUCT_IS_DELETED- Trigger: 제품이 소프트 삭제되었음
- Message: 메시지 없음
-
PRODUCT_PRICING_MODE_REQUIRED- Trigger: 제품의
pricing_mode가 설정되기 전에 지역화된 가격 추가 - Message: 지역화된 가격을 추가하기 전에 제품 pricing_mode를 설정해야 합니다
- Trigger: 제품의
-
SLUG_ALREADY_TAKEN- Trigger: 요청된 제품 슬러그 / 단축 URL이 이미 사용 중
- Message: 슬러그가 이미 사용 중입니다
-
UNABLE_TO_EDIT_PRIMARY_BRAND- Trigger: 정규 API를 통해 기본 브랜드 업데이트 시도
- Message: 기본 브랜드는 이 API 엔드포인트를 통해 업데이트할 수 없습니다.
할인
-
DISCOUNT_ALREADY_USED_ON_SUBSCRIPTION- Trigger: 이 구독에서 이미 사용된 할인을 다시 적용 시도
- Message: 이 할인은 이 구독에서 이미 사용되었습니다
-
DISCOUNT_CODE_ALREADY_EXISTS- Trigger: 중복 할인 코드 생성
- Message: 할인 코드가 이미 존재합니다
-
DISCOUNT_CODE_EXPIRED- Trigger: 할인 코드가
expires_at날짜를 초과함 - Message: 할인 코드가 만료되었습니다
- Trigger: 할인 코드가
-
DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED- Trigger:
usage_limit에 도달한 후 Discount 재사용 - Message: Usage limit cannot be less than times_used / Discount code hit usage limit
- Note: Terminal — code가 소진되었습니다. 재시도하지 마세요.
- Trigger:
-
DISCOUNT_CONCURRENT_REDEMPTION- Trigger: 동일한 code를 다른 redemption에서 사용하면서 usage-limit row lock을 너무 오래 보유함 (HTTP 503)
- Message: Discount is being redeemed concurrently; please retry
- Note: 일시적인 오류입니다. code에 아직 사용 가능 횟수가 남아 있을 수 있으므로 요청을 안전하게 재시도할 수 있습니다. 고객에게 이를 “code exhausted”로 표시하지 마세요.
-
DISCOUNT_CURRENCY_OPTION_INVALID- Trigger: 생성 또는 업데이트 시 잘못된
currency_options - Message: A flat discount requires at least one currency option with a resolvable default / Duplicate currency options are not allowed / Only one currency option may be marked as default
- Trigger: 생성 또는 업데이트 시 잘못된
-
DISCOUNT_CUSTOMER_NOT_ELIGIBLE- Trigger: Customer가 code의
customer_eligibility을 충족하지 않음 (first_time,existing또는specificcode의 allow list에 없음) - Message: Customer is not eligible for this discount code
- Trigger: Customer가 code의
-
DISCOUNT_MINIMUM_SUBTOTAL_NOT_MET- Trigger: Cart subtotal이 checkout currency에 대해 구성된
minimum_subtotal보다 낮음 - Message: Cart subtotal is below the discount’s minimum required subtotal
- Trigger: Cart subtotal이 checkout currency에 대해 구성된
-
DISCOUNT_NOT_YET_ACTIVE- Trigger:
starts_atdate 이전에 code 사용 - Message: Discount code is not yet active (starts_at is in the future)
- Trigger:
-
DISCOUNT_PER_CUSTOMER_USAGE_LIMIT_EXCEEDED- Trigger: Customer가 이미 code를
per_customer_usage_limit회 사용함 - Message: Per-customer usage limit exceeded for this discount code
- Trigger: Customer가 이미 code를
-
DISCOUNT_NOT_APPLICABLE_TO_NEW_PRODUCT- Trigger: 기존 discount가 적용되지 않는 product로 plan 변경
- Message: Discount not applicable to the new plan’s product
-
DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND- Trigger: On-demand subscription에 code 적용
- Message: Discount coupon not available for on demand subscriptions
-
DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT- Trigger: 관련 없는 product에 code 적용
- Message: Discount coupon not available for this product
-
INVALID_DISCOUNT_CODE- Trigger: Code가 존재하지 않거나 적용할 수 없음
- Message: Invalid Discount Code / Discount Code cannot be applied to any product in the cart
-
INVALID_PERCENTAGE- Trigger: Percent amount > 100% (또는 10,000 basis points)
- Message: Percentage amount cannot be more than 10000 / Discount code amount cannot be more than 100%
-
UNSUPPORTED_DISCOUNT_TYPE- Trigger: 지원되지 않는 discount type.
percentage및flat은 모두 지원되지만, per-unit amount discount는 지원되지 않습니다. - Message: Only percentage and flat discount codes are supported
- Trigger: 지원되지 않는 discount type.
License Keys
-
ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT- Trigger: License-key activations: new limit < existing instance count
- Message: New activation limit cannot be less than current instances count
-
INACTIVE_LICENSE_KEY- Trigger: Key status ≠
ACTIVE - Message: License key is not active
- Trigger: Key status ≠
-
LICENSE_KEY_LIMIT_REACHED- Trigger: Activations = limit
- Message: License key activation limit reached
-
LICENSE_KEY_NOT_FOUND- Trigger: Instance ID 또는 key ID가 유효하지 않음
- Message: License key instance not found or does not belong to this license key
-
NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS- Trigger: Sub-based key에 expiry 설정 시도
- Message: Cannot set expiry date for subscription-based license key
Usage-Based Billing & Meters
-
DUPLICATE_METER_IDS_IN_REQUEST- Trigger: 동일한 meter ID가 요청에 여러 번 나타남
- Message: Duplicate Meter Ids are not allowed
-
INVALID_QUANTITY- Trigger: Usage-based pricing에 유효하지 않은 quantity 지정
- Message: Only 1 quantity allowed in usage based price products
-
METER_IS_DELETED- Trigger: 삭제된 meter 사용 시도
- Message: The Meter is already been deleted
-
MISSING_METER_IDS- Trigger: Meter ID list가 비어 있거나 유효하지 않은 ID를 포함함
- Message: One or more meter IDs do not exist:
Credit-Based Billing
-
CREDIT_ENTITLEMENT_IS_DELETED- Trigger: 삭제된 credit entitlement에 대한 작업
- Message: The credit entitlement has already been deleted
-
CREDIT_ENTITLEMENT_NAME_ALREADY_EXISTS- Trigger: 이미 존재하는 name으로 credit entitlement 생성
- Message: A credit entitlement with this name already exists
-
OVERAGE_LIMIT_EXCEEDED- Trigger: 사용량 또는 credit deduction이 구성된 overage limit을 초과함
- Message: Overage limit exceeded
Wallet
-
INSUFFICIENT_WALLET_FUNDS- Trigger: Wallet balance < debit amount
- Message: Insufficient funds in wallet
-
NEGATIVE_BALANCE_ADJUSTMENT- Trigger: Wallet balance를 음수로 설정하려고 함
- Message: Wallet balance is not allowed to be made negative
Currency, Tax & Region
-
EXCHANGE_RATE_NOT_FOUND- Trigger:
from → tocurrency pair에 대한 FX rate가 없음 - Message: Exchange rate not found to convert from Currency to Currency
- Trigger:
-
INVALID_TAX_ID- Trigger: VAT/GST/TIN validation 실패
- Message: Tax Id is invalid
-
REQUEST_AMOUNT_BELOW_MINIMUM- Trigger: Amount < product minimum
- Message: Amount cannot be less than minimum amount specified for the product
-
TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT- Trigger: Combined cart total < gateway minimum
- Message: Minimum amount of is required to process payment
-
UNSUPPORTED_BILLING_CURRENCY- Trigger: 요청된 billing currency가 이 subscription에서 지원되지 않음
- Message: Non USD billing currency is not supported for subscriptions
-
UNSUPPORTED_COUNTRY- Trigger: Geo가 아직 지원되지 않음
- Message: Country currently not supported
-
UNSUPPORTED_CURRENCY- Trigger: Product 또는 addon currency가 Dodo Payments에서 charge할 수 있는 currency가 아님. Base prices는 charge 가능한 모든 currency로 설정할 수 있으므로, 일반적으로 currency code가 유효하지 않거나 아직 지원되지 않는 경우를 의미합니다.
- Message: Currency is not currently supported / Only USD and INR products supported currently / Only USD and INR supported for addon price / Can only request USD or INR for billing_currency / Currency Not Supported / Unexpected currency for Indian card subscriptions
-
UNSUPPORTED_TAX_CATEGORY- Trigger: Tax category string이 enum에 없음
- Message: Category currently not supported
Validation & Requests
-
DUPLICATE_LINE_ITEMS_IN_REQUEST- Trigger: 동일한
item_id이items[]에 두 번 나타남 - Message: Duplicate item_ids specified in items array
- Trigger: 동일한
-
INVALID_QUERY_PARAMS- Trigger: 상호 배타적이거나 형식이 잘못된 query parameters
- Message: Query params should only contain either time_frame or (start, end)
-
INVALID_REQUEST_BODY- Trigger: 잘못된 JSON 또는 schema 위반
- Message: Your request body is invalid. Please check your request headers and object.
-
INVALID_REQUEST_PARAMETERS- Trigger: 의미가 잘못됨 (예: 과거 날짜)
- Message: Cannot change next_billing_date to past time
-
MAXIMUM_KEYS_REACHED- Trigger: Metadata / custom-fields가 50개 쌍을 초과함
- Message: Exceeds 50 key-value pairs
General & System
-
INTEGER_CONVERSION_FAILURE- Trigger: 서버 측에서 실패한 모든 integer ↔ string/decimal 변환
- Message: Integer Conversion Failure
-
INTERNAL_SERVER_ERROR- Trigger: 처리되지 않은 예외; 서버 측에서 세부 정보를 기록해야 합니다
- Message: No public message (generic 500)
-
NOT_FOUND- Trigger: 누락된 모든 resource에 대한 일반적인 404
- Message: Item not found (or more specific)
-
TOO_MANY_REQUESTS- Trigger: 429 rate-limit
- Message: No messages
-
UNSUPPORTED_ACTION- Trigger: Resource type에 지원되지 않는 action
- Message: Changing plans for usage based subscriptions is not supported
모범 사례
- 애플리케이션에서 항상 오류를 적절히 처리하세요
- 적절한 오류 로깅을 구현하세요
- 최종 사용자에게 적절한 오류 메시지를 사용하세요
- 일시적인 오류에 대한 retry logic을 구현하세요
- 해결되지 않는 문제는 support에 문의하세요