Skip to main content

Visão Geral

Quando uma solicitação falha, a API do Dodo Payments retorna um código de status HTTP e um corpo JSON que identifica o erro. Use esta página para descobrir o que causou um erro e como resolvê-lo. Cada resposta de erro inclui:
  • Um código de status HTTP que indica a categoria geral do erro.
  • Um code que identifica o erro exato, por exemplo UNSUPPORTED_COUNTRY.
  • Um message que explica o erro em linguagem simples. O message pode ser null, por exemplo, para erros internos do servidor.
Baseie o tratamento de erros em code, não em message. Vários códigos retornam mais de uma mensagem, dependendo da causa. Use estes códigos de erro para:
  • Depurar problemas de integração.
  • Tratar erros corretamente na sua aplicação.
  • Exibir feedback relevante aos seus clientes.
  • Manter o processamento de pagamentos confiável.
Estes são erros de API e lógica de negócios. Para motivos de recusa de cartão retornados em um pagamento com falha (como INSUFFICIENT_FUNDS ou CARD_DECLINED), consulte a referência de Falhas de transação.

Códigos de erro padrão da API

A API usa estes códigos de status HTTP para erros:

Formato da resposta de erro

O corpo de uma resposta de erro contém dois campos, code e message:

Referência de códigos de erro

Os códigos de erro abaixo estão agrupados pela área da API à qual se relacionam. Cada entrada lista a condição que aciona o erro e a mensagem retornada pela API. Placeholders como {id} representam valores preenchidos pela API.

Autenticação e conta

  • UNAUTHORIZED
    • Gatilho: A solicitação não tem uma chave da API ou usa uma chave inválida (HTTP 401), ou a chave da API não tem a função exigida pela ação (HTTP 403)
    • Mensagem: Você não está autorizado a realizar esta ação
  • MERCHANT_NOT_LIVE
    • Gatilho: Uma solicitação em modo live para uma empresa que não tem pagamentos live habilitados (HTTP 403). Isso inclui uma empresa que usou apenas o modo de teste e uma empresa cujos pagamentos live ainda não estão habilitados porque a verificação está incompleta. As solicitações em modo de teste não são afetadas.
    • Mensagem: Pagamentos live não habilitados para o merchant
  • BUSINESS_ARCHIVED
    • Gatilho: Qualquer solicitação voltada ao cliente para uma empresa arquivada (HTTP 403). Isso inclui checkout, links de pagamento, a loja, o Customer Portal e a ativação de chaves de licença.
    • Mensagem: Esta empresa está arquivada e não aceita mais solicitações

Pagamentos e checkout

  • CHECKOUT_SESSION_CONSUMED
    • Gatilho: A sessão de checkout já gerou um pagamento (HTTP 403). Crie uma nova sessão de checkout.
    • Mensagem: O pagamento com a sessão de checkout informada já foi gerado.
  • MANUAL_RETRY_ALREADY_PAID
    • Gatilho: Nova tentativa manual de uma fatura de renovação na qual um pagamento já foi aprovado. Enviar novamente cobraria o cliente duas vezes.
    • Mensagem: Um pagamento desta fatura já foi aprovado
  • MANUAL_RETRY_HARD_DECLINE
    • Gatilho: Nova tentativa manual quando a falha mais recente na fatura é uma recusa definitiva ou não contém um código de erro classificado. Outra cobrança no mesmo cartão não será aprovada; atualize a forma de pagamento.
    • Mensagem: A última falha nesta fatura é uma recusa definitiva, portanto a nova tentativa não será aprovada (ou) A última falha nesta fatura não pode ser classificada, portanto não pode ser repetida
  • MANUAL_RETRY_IN_FLIGHT
    • Gatilho: Nova tentativa manual enquanto um pagamento da fatura está processing ou ainda não tem status registrado. Aguarde o resultado desse pagamento em vez de enviá-lo novamente.
    • Mensagem: Um pagamento desta fatura ainda está em andamento
  • MANUAL_RETRY_LIMIT_REACHED
    • Gatilho: Nova tentativa manual depois que todos os 3 envios da fatura foram usados ou antes de o período de espera terminar (HTTP 429). O segundo envio aguarda 1 hora após o primeiro, e o terceiro aguarda 3 horas após o segundo. O corpo contém apenas code e message. Para saber quando o próximo envio será permitido, leia retry_available_at de GET /payments/{payment_id}/retry.
    • Mensagem: Todas as novas tentativas manuais desta fatura foram usadas (ou) A opção de tentar novamente ainda não está disponível para esta fatura
  • NO_ELIGIBLE_PAYMENT_METHODS
    • Gatilho: Nenhuma forma de pagamento permanece disponível após a filtragem (HTTP 422)
    • Mensagem: Nenhuma forma de pagamento elegível encontrada
  • PAYMENT_NOT_PERMITTED
    • Gatilho: Um checkout ou tentativa de pagamento feito por um cliente na lista de bloqueio do merchant (HTTP 403). O código e a mensagem deliberadamente não informam a causa.
    • Mensagem: Este pagamento não pode ser processado.
  • PAYMENT_NOT_RETRYABLE
    • Gatilho: Nova tentativa manual de um pagamento que não é abrangida pela nova tentativa manual. O pagamento não tem fatura, a fatura não é uma renovação de assinatura aberta, nenhum pagamento da fatura falhou ainda, a assinatura não tem cobrança recorrente configurada (por exemplo, uma assinatura sob demanda) ou o cliente está na lista de bloqueio.
    • Mensagem: Varia conforme o motivo, por exemplo: Apenas pagamentos de renovação de assinatura podem ser repetidos
  • PAYMENT_NOT_SUCCEEDED
    • Gatilho: Tentativa de reembolsar ou processar um pagamento que não foi aprovado
    • Mensagem: O pagamento informado não foi aprovado
  • PREVIOUS_PAYMENT_PENDING
    • Gatilho: Tentativa de criar uma cobrança enquanto o pagamento anterior está em um estado não terminal. Também retornado para uma nova tentativa manual quando o pagamento mais recente da fatura não é failed nem está em andamento, por exemplo requires_customer_action ou cancelled.
    • Mensagem: Não é possível criar uma nova cobrança porque o pagamento anterior ainda não foi aprovado (ou) O pagamento mais recente desta fatura não falhou
  • UNSUCCESSFUL_PAYMENT_ID
    • Gatilho: O ID do pagamento faz referência a um pagamento que não foi aprovado
    • Mensagem: O Payment ID tem um status de insucesso.

Conectores e BYOP

Estes erros estão relacionados a conectores de pagamento pertencentes ao merchant (Bring Your Own Processor ou BYOP).
  • BYOP_CONNECTOR_DISABLED
    • Gatilho: Atualização da forma de pagamento de uma assinatura encaminhada por um conector BYOP desabilitado. O Dodo Payments não usa seus próprios conectores como alternativa; primeiro, habilite novamente o conector.
    • Mensagem: A assinatura é encaminhada pelo conector próprio do merchant (BYOP), que está desabilitado no momento
  • BYOP_CUSTOM_INVOICE_ADDRESS_MISSING
    • Gatilho: Um pagamento encaminhado pelo conector do merchant (BYOP) não tem endereço de fatura personalizado
    • Mensagem: O endereço de fatura personalizado BYOP é obrigatório quando um pagamento é encaminhado pelo conector do merchant
  • CONNECTOR_LABEL_ALREADY_EXISTS
    • Gatilho: Criação de um conector com um rótulo que já existe
    • Mensagem: Já existe um conector com este rótulo. Escolha outro rótulo.

Reembolsos

  • EXISTING_REFUND_REQUEST_PROCESSING
    • Gatilho: Uma solicitação de reembolso anterior ainda está sendo processada
    • Mensagem: Uma solicitação de reembolso com status “Pending” ainda está sendo processada
  • LINE_ITEM_FULLY_REFUNDED
    • Gatilho: Tentativa de reembolsar um item de linha que já foi totalmente reembolsado
    • Mensagem: O item de linha {id} foi totalmente reembolsado e não pode receber outro reembolso.
  • LINE_ITEM_NOT_FOUND
    • Gatilho: O ID do item não faz parte do pagamento referenciado
    • Mensagem: Item de linha {id} não encontrado no pagamento
  • LINE_ITEM_PRORATED
    • Gatilho: Reembolso ou atualização de um item de linha rateado
    • Mensagem: O item de linha {id} não pode ser reembolsado porque é rateado
  • LINE_ITEM_REFUND_AMOUNT_TOO_HIGH
    • Gatilho: O valor do reembolso, incluindo impostos, é maior que o valor pago
    • Mensagem: O valor de reembolso solicitado para o item de linha {id}, incluindo impostos, é {amount}, acima do valor pago {amount}
  • LINE_ITEM_REFUND_AMOUNT_TOO_LOW
    • Gatilho: O valor do reembolso está abaixo do limite mínimo
    • Mensagem: O valor de reembolso solicitado para o item de linha {id} é {amount}, que é muito baixo
  • NOTHING_TO_REFUND
    • Gatilho: Não resta nenhum valor reembolsável, pois todos os itens de linha positivos já foram totalmente reembolsados
    • Mensagem: Não resta nenhum valor reembolsável. Todos os itens de linha positivos foram totalmente reembolsados.
  • PARTIAL_REFUND_NOT_ALLOWED
    • Gatilho: Tentativa de reembolso parcial em uma forma de pagamento que aceita apenas reembolsos integrais
    • Mensagem: Reembolsos parciais não são permitidos para esta forma de pagamento
  • PAYMENT_ALREADY_REFUNDED
    • Gatilho: Um reembolso duplicado
    • Mensagem: Este pagamento já foi reembolsado
  • PAYMENT_HAS_BEEN_REFUNDED
    • Gatilho: O pagamento foi totalmente reembolsado
    • Mensagem: O Payment ID foi totalmente reembolsado.
  • REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT
    • Gatilho: O valor total do reembolso é maior que o valor pago
    • Mensagem: O valor de reembolso calculado é maior que o valor pago
  • REFUND_WINDOW_EXPIRED
    • Gatilho: O reembolso é solicitado fora do período permitido
    • Mensagem: Não é possível iniciar reembolsos {days} dias após a criação do pagamento. Entre em contato com support@dodopayments.com.
  • ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED
    • Gatilho: Tentativa de reembolsar um pagamento de valor zero
    • Mensagem: Não é possível reembolsar um pagamento com valor monetário zero

Assinaturas e complementos

  • ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Gatilho: Tentativa de adicionar complementos a uma assinatura com cobrança baseada em uso
    • Mensagem: Complementos em assinaturas não são compatíveis com cobrança baseada em uso
  • ADDONS_NOT_ALLOWED_FOR_ON_DEMAND
    • Gatilho: Tentativa de adicionar complementos a uma assinatura sob demanda
    • Mensagem: Complementos não são permitidos para assinaturas sob demanda
  • CANCEL_SCHEDULED_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Gatilho: O Customer Portal tenta cancelar uma alteração de plano agendada enquanto a empresa desabilitou essa ação
    • Mensagem: O cancelamento da alteração de plano agendada está desabilitado para o customer portal.
  • CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Gatilho: Tentativa de cobrar uma assinatura agendada para cancelamento
    • Mensagem: Assinatura agendada para cancelamento
  • CUSTOMER_HAS_EXISTING_SUBSCRIPTION
    • Gatilho: Criação de uma assinatura para um cliente que já possui uma, quando a empresa não permite várias assinaturas por cliente
    • Mensagem: O cliente {id} já tem uma assinatura existente. Para permitir várias assinaturas por cliente, altere as configurações da empresa
  • DO_NOT_BILL_NOT_ALLOWED_IN_CUSTOMER_PORTAL
    • Gatilho: O modo de rateio do_not_bill é usado em uma alteração de plano no Customer Portal
    • Mensagem: O modo de rateio do_not_bill não é permitido no customer portal
  • DUPLICATE_ADDON_IDS_IN_REQUEST
    • Gatilho: O mesmo addon_id aparece mais de uma vez na solicitação
    • Mensagem: IDs de complemento duplicados não são permitidos
  • INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED
    • Gatilho: Alteração de plano em uma assinatura inativa
    • Mensagem: Não há suporte para alteração de planos em assinaturas inativas
  • INVALID_PRORATION_MODE_WITH_NEXT_BILLING_DATE
    • Gatilho: Um modo de rateio diferente de full_immediately usado com effective_at: next_billing_date
    • Mensagem: Apenas o modo de rateio full_immediately é permitido com effective_at: next_billing_date
  • MISSING_ADDON_IDS
    • Gatilho: A lista addon_id está vazia ou contém IDs desconhecidos
    • Mensagem: Um ou mais IDs de produto não existem: {id}
  • ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED
    • Gatilho: Alteração de plano em uma assinatura sob demanda
    • Mensagem: Não há suporte para alteração de planos em assinaturas sob demanda
  • ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Gatilho: Tentativa de usar uma assinatura sob demanda com cobrança baseada em uso
    • Mensagem: Assinaturas sob demanda não são compatíveis com cobrança baseada em uso
  • ONE_TIME_PRODUCTS_NOT_ALLOWED_FOR_ON_DEMAND
    • Gatilho: Um produto avulso adicionado a uma assinatura sob demanda
    • Mensagem: Produtos avulsos não são permitidos para assinaturas sob demanda
  • PENDING_PLAN_CHANGE_EXISTS
    • Gatilho: Uma nova alteração de plano é solicitada enquanto uma alteração anterior ainda aguarda pagamento
    • Mensagem: Já existe uma alteração de plano pendente para esta assinatura. Aguarde a conclusão do pagamento atual.
  • PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Gatilho: Alteração de plano pelo Customer Portal enquanto a empresa a desabilitou
    • Mensagem: A alteração de plano da assinatura pelo customer portal está desabilitada.
  • PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Gatilho: Alteração de plano em uma assinatura agendada para cancelamento
    • Mensagem: Assinatura agendada para cancelamento
  • SCHEDULE_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Gatilho: Agendamento de uma alteração de plano pelo Customer Portal enquanto a empresa a desabilitou
    • Mensagem: O agendamento de alterações de plano está desabilitado para esta empresa.
  • SCHEDULED_PLAN_CHANGE_EXISTS
    • Gatilho: Criação de uma alteração de plano agendada quando já existe uma
    • Mensagem: Já existe uma alteração de plano agendada para esta assinatura. Cancele a alteração agendada existente antes de criar uma nova.
  • SCHEDULED_PLAN_CHANGE_NOT_FOUND
    • Gatilho: Referência ou cancelamento de uma alteração de plano agendada que não existe
    • Mensagem: Nenhuma alteração de plano agendada encontrada para esta assinatura.
  • SUBSCRIPTION_EXPIRED
    • Gatilho: Cobrança de uma assinatura após sua data INLINE_CODE_CODE_PLACEHOLDER_c9ee9d72f3737fa4_END
    • Mensagem: A assinatura expirou; não é possível criar novas cobranças
  • SUBSCRIPTION_HAS_NO_PAYMENT_METHOD
    • Gatilho: Nova tentativa manual de uma assinatura que não tem uma forma de pagamento salva para cobrança off-session
    • Mensagem: Esta assinatura não tem uma forma de pagamento salva para cobrança
  • SUBSCRIPTION_INACTIVE
    • Gatilho: O status da assinatura não é active
    • Mensagem: A assinatura não está ativa (ou) Esta assinatura não está live, portanto não é possível agendar um cancelamento
  • SUBSCRIPTION_NOT_ON_DEMAND
    • Gatilho: Uma ação sob demanda em uma assinatura cobrada em um intervalo fixo
    • Mensagem: A assinatura já não é sob demanda
  • SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED
    • Gatilho: As tentativas de pagamento da assinatura excederam o número máximo de tentativas
    • Mensagem: O limite máximo de 10 tentativas foi excedido para esta assinatura

Clientes e lista de bloqueio

  • CUSTOMER_ALREADY_BLOCKED
    • Gatilho: Bloqueio de um cliente que já está na lista de bloqueio e não tem mais assinaturas live para cancelar (HTTP 409)
    • Mensagem: Este cliente já está na lista de bloqueio
  • PORTAL_ACTION_NOT_PERMITTED
    • Gatilho: Um cliente bloqueado chama uma rota de gravação do Customer Portal: cancelar, pausar, retomar, alterar plano ou atualizar a forma de pagamento (HTTP 403). As rotas de leitura continuam abertas. O código e a mensagem deliberadamente não informam a causa.
    • Mensagem: Esta ação não está disponível.

Produtos, carrinho e marcas

  • BRAND_ALREADY_ARCHIVED
    • Gatilho: Arquivamento de uma marca que já está arquivada
    • Mensagem: A marca já está arquivada
  • BRAND_ARCHIVED
    • Gatilho: Atualização de uma marca arquivada, envio dela para verificação ou associação de um novo produto, coleção de produtos ou assinatura a ela
    • Mensagem: A marca está arquivada (ou) A marca está arquivada e não pode ser atualizada (ou) A marca está arquivada e não pode ser enviada para verificação
  • BRAND_ARCHIVE_TARGET_REQUIRED
    • Gatilho: Arquivamento de uma marca que ainda contém produtos, assinaturas live ou coleções de produtos sem um destino move_products_to
    • Mensagem: A marca tem {count} produto(s). Defina move_products_to como uma marca de destino para associá-los novamente. A mensagem menciona assinaturas live ou coleções de produtos quando elas impedem o arquivamento.
  • BRAND_MISMATCH
    • Gatilho: Os itens do carrinho pertencem a marcas diferentes
    • Mensagem: Todos os itens do carrinho de produtos devem pertencer à mesma marca
  • BRAND_NOT_ENABLED
    • Gatilho: A marca está desabilitada ou não está ativa
    • Mensagem: A marca informada não está habilitada
  • BRAND_SUBMISSION_NOT_ENABLED
    • Gatilho: O recurso de reenvio da verificação da marca não está habilitado
    • Mensagem: Brand verificatin resubmission is not enabled (escrito exatamente como retornado pela API)
  • CANNOT_ARCHIVE_PRIMARY_BRAND
    • Gatilho: Arquivamento da marca principal, cujo ID de marca é o ID da empresa
    • Mensagem: A marca principal não pode ser arquivada
  • FILE_IN_USE
    • Gatilho: Exclusão de um arquivo de produto digital que ainda é referenciado por concessões de acesso ativas
    • Mensagem: O arquivo digital é referenciado por concessões ativas
  • INVALID_BRAND_ARCHIVE_TARGET
    • Gatilho: move_products_to identifica a marca que está sendo arquivada, uma marca arquivada ou uma marca de outra empresa
    • Mensagem: move_products_to deve ser uma marca desta empresa que não esteja arquivada (ou) move_products_to não pode ser a marca que você arquiva
  • INVALID_SUGGESTED_PRICE
    • Gatilho: Um preço sugerido de Pay What You Want é inferior ao preço mínimo
    • Mensagem: O preço sugerido não pode ser inferior ao preço mínimo. No modelo pay what you want, o preço é considerado o valor mínimo aceito
  • LOCALIZED_PRICE_ALREADY_EXISTS
    • Gatilho: Já existe um preço localizado para este produto e país ou moeda
    • Mensagem: Já existe um preço localizado para este produto e país/moeda
  • LOCALIZED_PRICE_DUPLICATES_BASE
    • Gatilho: O preço localizado duplica a moeda ou o país base do produto
    • Mensagem: O preço localizado duplica a moeda/o país base do produto
  • LOCALIZED_PRICE_SHAPE_MISMATCH
    • Gatilho: A estrutura do preço localizado não corresponde ao pricing_mode do produto
    • Mensagem: A estrutura do preço localizado não corresponde ao pricing_mode do produto
  • MISSING_PRODUCT_INFORMATION
    • Gatilho: O produto existe, mas faltam informações obrigatórias
    • Mensagem: O produto {id} existe, mas outras informações obrigatórias estão ausentes ou são inválidas
  • PAY_AS_YOU_WANT_AMOUNT_REQUIRED
    • Gatilho: O valor está ausente para um produto Pay What You Want
    • Mensagem: O valor é obrigatório para um produto pay as you want
  • PRODUCT_CART_EMTPY
    • Gatilho: Um carrinho de produtos vazio é enviado
    • Mensagem: product_cart está vazio (o código de erro é intencionalmente escrito como EMTPY para corresponder ao valor exato retornado pela API)
  • PRODUCT_COLLECTION_IS_DELETED
    • Gatilho: Operação em uma coleção de produtos que foi excluída
    • Mensagem: Nenhuma mensagem
  • PRODUCT_COLLECTION_MUST_HAVE_PRODUCTS
    • Gatilho: Remoção do último produto ou do último grupo com produtos de uma coleção
    • Mensagem: Não é possível excluir o último produto de uma coleção. Em vez disso, arquive a coleção. (ou) Não é possível excluir o último grupo com produtos. Em vez disso, arquive a coleção.
  • PRODUCT_IS_DELETED
    • Gatilho: O produto foi excluído
    • Mensagem: Nenhuma mensagem
  • PRODUCT_PRICING_MODE_REQUIRED
    • Gatilho: Adição de preços localizados antes de definir o pricing_mode do produto
    • Mensagem: O pricing_mode do produto deve ser definido antes de adicionar preços localizados
  • SLUG_ALREADY_TAKEN
    • Gatilho: O slug ou URL curta do produto solicitado já está em uso
    • Mensagem: O slug já está em uso
  • UNABLE_TO_EDIT_PRIMARY_BRAND
    • Gatilho: Tentativa de atualizar a marca principal pela API regular de marcas
    • Mensagem: A marca principal não pode ser atualizada por este endpoint da API.

Descontos

  • DISCOUNT_ALREADY_USED_ON_SUBSCRIPTION
    • Gatilho: Aplicação novamente de um desconto que já foi usado nesta assinatura
    • Mensagem: Este desconto já foi usado nesta assinatura
  • DISCOUNT_CODE_ALREADY_EXISTS
    • Gatilho: Criação de um código de desconto que já existe
    • Mensagem: O código de desconto já existe
  • DISCOUNT_CODE_EXPIRED
    • Gatilho: O código de desconto passou da data expires_at
    • Mensagem: Código de desconto expirado
  • DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
    • Gatilho: O código é usado depois que seu usage_limit é atingido
    • Mensagem: O limite de uso não pode ser inferior a times_used (ou) O código de desconto atingiu o limite de uso
    • Observação: Terminal. O código foi esgotado; não tente novamente.
  • DISCOUNT_CONCURRENT_REDEMPTION
    • Gatilho: Outro resgate do mesmo código manteve o bloqueio do limite de uso por tempo demais (HTTP 503)
    • Mensagem: O desconto está sendo resgatado simultaneamente; tente novamente
    • Observação: Transitório. O código ainda pode ter capacidade, portanto é seguro tentar novamente. Não mostre isso ao cliente como um código esgotado.
  • DISCOUNT_CURRENCY_OPTION_INVALID
    • Gatilho: currency_options inválido na criação ou atualização
    • Mensagem: Um desconto fixo exige pelo menos uma opção de moeda com um padrão resolvível (ou) Não são permitidas opções de moeda duplicadas (ou) Apenas uma opção de moeda pode ser marcada como padrão
  • DISCOUNT_CUSTOMER_NOT_ELIGIBLE
    • Gatilho: O cliente não atende ao customer_eligibility do código (first_time, existing ou não está na lista de permissões de um código specific)
    • Mensagem: O cliente não é elegível para este código de desconto
  • DISCOUNT_MINIMUM_SUBTOTAL_NOT_MET
    • Gatilho: O subtotal do carrinho está abaixo do minimum_subtotal configurado para a moeda do checkout
    • Mensagem: O subtotal do carrinho está abaixo do subtotal mínimo exigido pelo desconto
  • DISCOUNT_NOT_YET_ACTIVE
    • Gatilho: O código é usado antes da data starts_at
    • Mensagem: O código de desconto ainda não está ativo (starts_at está no futuro)
  • DISCOUNT_PER_CUSTOMER_USAGE_LIMIT_EXCEEDED
    • Gatilho: O cliente já resgatou o código per_customer_usage_limit vezes
    • Mensagem: O limite de uso por cliente foi excedido para este código de desconto
  • DISCOUNT_NOT_APPLICABLE_TO_NEW_PRODUCT
    • Gatilho: Alteração de plano para um produto ao qual o desconto existente não se aplica
    • Mensagem: O desconto não se aplica ao produto do novo plano
  • DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND
    • Gatilho: O código é aplicado a uma assinatura sob demanda
    • Mensagem: O cupom de desconto não está disponível para assinaturas sob demanda
  • DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT
    • Gatilho: O código é aplicado a produtos que não abrange
    • Mensagem: O cupom de desconto não está disponível para este produto
  • INVALID_DISCOUNT_CODE
    • Gatilho: O código não existe ou não se aplica a nenhum produto do carrinho
    • Mensagem: Código de desconto inválido (ou) O código de desconto não pode ser aplicado a nenhum produto do carrinho
  • INVALID_PERCENTAGE
    • Gatilho: A porcentagem é superior a 100% (10.000 pontos-base)
    • Mensagem: O valor percentual não pode ser superior a 10000 (ou) O valor do código de desconto não pode ser superior a 100%
  • UNSUPPORTED_DISCOUNT_TYPE
    • Gatilho: Um tipo de desconto não compatível. percentage e flat são compatíveis; descontos de valor por unidade não são.
    • Mensagem: Apenas códigos de desconto percentuais e fixos são compatíveis (ou) Por enquanto, apenas códigos de desconto percentuais são compatíveis

Chaves de licença

  • ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT
    • Gatilho: O novo limite de ativações de uma chave de licença é inferior ao número atual de instâncias
    • Mensagem: O novo limite de ativações não pode ser inferior à contagem atual de instâncias
  • INACTIVE_LICENSE_KEY
    • Gatilho: O status da chave de licença não é active
    • Mensagem: A chave de licença não está ativa
  • LICENSE_KEY_LIMIT_REACHED
    • Gatilho: O número de ativações atingiu o limite de ativações
    • Mensagem: Limite de ativações da chave de licença atingido
  • LICENSE_KEY_NOT_FOUND
    • Gatilho: O ID da instância ou da chave de licença é inválido
    • Mensagem: Instância da chave de licença não encontrada ou não pertence a esta chave de licença
  • NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS
    • Gatilho: Tentativa de definir uma data de expiração em uma chave de licença baseada em assinatura
    • Mensagem: Não é possível definir uma data de expiração para uma chave de licença baseada em assinatura

Cobrança baseada em uso e medidores

  • DUPLICATE_METER_IDS_IN_REQUEST
    • Gatilho: O mesmo ID de medidor aparece mais de uma vez na solicitação
    • Mensagem: IDs de medidor duplicados não são permitidos
  • INVALID_QUANTITY
    • Gatilho: Uma quantidade diferente de 1 para um produto com preços baseados em uso
    • Mensagem: Apenas a quantidade 1 é permitida em produtos com preço baseado em uso
  • METER_IS_DELETED
    • Gatilho: Tentativa de usar um medidor excluído
    • Mensagem: O medidor já foi excluído
  • MISSING_METER_IDS
    • Gatilho: A lista de IDs de medidores está vazia ou contém IDs inválidos
    • Mensagem: Um ou mais IDs de medidores não existem: {id}

Cobrança baseada em créditos

  • CREDIT_ENTITLEMENT_IS_DELETED
    • Gatilho: Operação em um direito de crédito que foi excluído
    • Mensagem: O direito de crédito já foi excluído
  • CREDIT_ENTITLEMENT_NAME_ALREADY_EXISTS
    • Gatilho: Criação de um direito de crédito com um nome que já existe
    • Mensagem: Já existe um direito de crédito com este nome
  • OVERAGE_LIMIT_EXCEEDED
    • Gatilho: Um uso ou dedução de crédito excederia o limite de excedente configurado
    • Mensagem: Limite de excedente excedido

Carteira

  • INSUFFICIENT_WALLET_FUNDS
    • Gatilho: O saldo da carteira é inferior ao valor do débito
    • Mensagem: Fundos insuficientes na carteira
  • NEGATIVE_BALANCE_ADJUSTMENT
    • Gatilho: Tentativa de tornar negativo o saldo da carteira
    • Mensagem: Não é permitido tornar negativo o saldo da carteira

Moeda, impostos e região

  • EXCHANGE_RATE_NOT_FOUND
    • Gatilho: Não existe taxa de câmbio para o par de moedas
    • Mensagem: Taxa de câmbio não encontrada para converter de {currency} para {currency}
  • INVALID_TAX_ID
    • Gatilho: O VAT, GST ou TIN não passou na validação
    • Mensagem: O ID fiscal é inválido
  • REQUEST_AMOUNT_BELOW_MINIMUM
    • Gatilho: O valor é inferior ao mínimo definido para o produto
    • Mensagem: O valor não pode ser inferior ao valor mínimo especificado para o produto
  • TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT
    • Gatilho: O total combinado do carrinho é inferior ao valor mínimo exigido para processar um pagamento
    • Mensagem: É necessário um valor mínimo de {display_str} para processar o pagamento
  • UNSUPPORTED_BILLING_CURRENCY
    • Gatilho: A moeda de cobrança solicitada não é compatível com esta assinatura
    • Mensagem: Moeda de cobrança diferente de USD não é compatível com assinaturas
  • UNSUPPORTED_COUNTRY
    • Gatilho: O país não é compatível
    • Mensagem: O país {country_name} não é compatível no momento
  • UNSUPPORTED_CURRENCY
    • Gatilho: A moeda do produto ou complemento não é uma moeda na qual o Dodo Payments pode cobrar. Os preços base podem ser definidos em qualquer moeda cobrável; portanto, esse erro geralmente significa que o código da moeda é inválido ou não é compatível.
    • Mensagem: A moeda não é compatível no momento (ou) No momento, apenas produtos em USD e INR são compatíveis (ou) No momento, apenas USD e INR são compatíveis para o preço do complemento (ou) Só é possível solicitar USD ou INR para billing_currency (ou) Moeda não compatível (ou) Moeda inesperada para assinaturas de cartões indianos
  • UNSUPPORTED_TAX_CATEGORY
    • Gatilho: A categoria fiscal não é um dos valores compatíveis
    • Mensagem: A categoria {category} não é compatível no momento

Validação e solicitações

  • DUPLICATE_LINE_ITEMS_IN_REQUEST
    • Gatilho: O mesmo item_id aparece mais de uma vez em items[]
    • Mensagem: item_ids duplicados especificados na matriz de items
  • INVALID_QUERY_PARAMS
    • Gatilho: Parâmetros de consulta mutuamente exclusivos ou malformados
    • Mensagem: Os parâmetros de consulta devem conter apenas time_frame ou (start, end) (ou) O início do intervalo não pode ser posterior ao fim
  • INVALID_REQUEST_BODY
    • Gatilho: JSON malformado ou violação de esquema
    • Mensagem: O corpo da sua solicitação é inválido. Verifique os cabeçalhos e o objeto da solicitação.
  • INVALID_REQUEST_PARAMETERS
    • Gatilho: Valores de parâmetros válidos no formato, mas não no significado, como uma data no passado
    • Mensagem: Não é possível alterar next_billing_date para um horário no passado
  • MAXIMUM_KEYS_REACHED
    • Gatilho: Metadados ou campos personalizados excedem 50 pares de chave-valor
    • Mensagem: Mais de 50 pares de chave-valor

Geral e sistema

  • INTEGER_CONVERSION_FAILURE
    • Gatilho: Uma conversão no servidor entre um inteiro e uma string ou decimal falha, por exemplo, quando o total do carrinho é grande demais para ser processado
    • Mensagem: Falha na conversão de inteiro (ou) O total do carrinho é grande demais para ser processado. Reduza a quantidade ou selecione outra moeda de cobrança.
  • INTERNAL_SERVER_ERROR
    • Gatilho: Um erro inesperado no servidor. Registre os detalhes da solicitação no seu lado.
    • Mensagem: Nenhuma mensagem pública (500 genérico; message geralmente é null)
  • NOT_FOUND
    • Gatilho: 404 genérico para qualquer recurso ausente
    • Mensagem: Item não encontrado (ou uma mensagem mais específica que identifique o que está ausente)
  • TOO_MANY_REQUESTS
    • Gatilho: Um limite de taxa foi excedido (HTTP 429)
    • Mensagem: Nenhuma mensagem
  • UNSUPPORTED_ACTION
    • Gatilho: Uma ação que o tipo de recurso não permite
    • Mensagem: Não há suporte para alteração de planos em assinaturas baseadas em uso

Práticas recomendadas

Siga estas práticas ao tratar erros da API:
  1. Trate todas as respostas de erro na sua aplicação e baseie o fluxo em code, em vez de message.
  2. Registre o status HTTP, code e message de todas as solicitações com falha.
  3. Mostre aos usuários finais uma mensagem escrita para eles, em vez do message bruto da API.
  4. Tente novamente apenas erros transitórios, como respostas 429 e 5xx ou DISCOUNT_CONCURRENT_REDEMPTION, após um intervalo.
  5. Entre em contato com o suporte para erros que você não consiga resolver.

Suporte

Para obter mais ajuda com códigos de erro ou problemas de integração, entre em contato com a equipe de suporte pelo e-mail support@dodopayments.com.
Última modificação em 26 de setembro de 2026