> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Testing Process

> Complete guide to testing your Dodo Payments integration with test cards, UPI IDs, BNPL data, and digital wallets.

<Frame>
  <iframe className="w-full aspect-video rounded-md" src="https://www.youtube.com/embed/5CcUSE4L_cg" title="Test Transaction | Dodo Payments" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen />
</Frame>

## Overview

Test mode lets you simulate payments without processing real transactions. All test credentials only work in test mode — never use them in production.

<CardGroup cols={3}>
  <Card title="No Real Charges" icon="shield-check">
    Test transactions don't process actual payments or affect real accounts.
  </Card>

  <Card title="Full API Access" icon="code">
    All API endpoints work identically in test and live modes.
  </Card>

  <Card title="Webhook Testing" icon="webhook">
    Webhooks fire for test transactions just like production.
  </Card>
</CardGroup>

<Warning>
  Test credentials only work in test mode. Attempting to use them in live mode will result in payment failures.
</Warning>

## Test Cards

Use these card numbers to simulate successful and declined payments across different regions.

<Tabs>
  <Tab title="Successful Payments">
    | Region | Brand      | Card Number        | Expiry | CVV |
    | :----- | :--------- | :----------------- | :----- | :-- |
    | US     | Visa       | `4242424242424242` | 06/32  | 123 |
    | US     | Mastercard | `5555555555554444` | 06/32  | 123 |
    | India  | Visa       | `4576238912771450` | 06/32  | 123 |
    | India  | Mastercard | `5409162669381034` | 06/32  | 123 |
  </Tab>

  <Tab title="Declined Payments">
    | Região | Marca      | Número do Cartão   | Cenário              | Resultante `error_code` |
    | :----- | :--------- | :----------------- | :------------------- | :---------------------- |
    | US     | Visa       | `4000000000000002` | Declínio genérico    | `GENERIC_DECLINE`       |
    | US     | Mastercard | `4000000000009995` | Fundos insuficientes | `INSUFFICIENT_FUNDS`    |
    | Índia  | Visa       | `4706131211212123` | Declínio genérico    | `GENERIC_DECLINE`       |
    | Índia  | Mastercard | `5105105105105100` | Declínio genérico    | `GENERIC_DECLINE`       |

    Quando um desses cartões é recusado, o `error_code` e `error_message` do pagamento refletem o cenário acima. Consulte qualquer código na referência [Falhas de Transação](/api-reference/transaction-failures) para entender seu significado e ação recomendada, e veja [Como Tratar Falhas de Pagamento](/developer-resources/handle-payment-failures) para lidar com recusas na sua integração.
  </Tab>

  <Tab title="Subscription Failure Testing (Renewal/Upgrade/Downgrade)">
    | Número do Cartão      | Validade | CVC |
    | :-------------------- | :------- | :-- |
    | `4000 0000 0000 0341` | 12/34    | 123 |

    Use este cartão para testar cenários de falha de renovação, atualização e downgrade de inscrição.
  </Tab>
</Tabs>

<Info>
  Para todos os cartões de teste, use a data de validade **06/32** (ou **12/34**) e CVV **123**.
</Info>

### Como Testar Falha de Renovação

<Steps>
  <Step title="Create a test subscription">
    Crie uma assinatura com suas chaves de API de teste usando um cartão de teste de **sucesso** (por exemplo, `4242 4242 4242 4242`). A cobrança inicial deve ser bem-sucedida e a assinatura deve se tornar ativa.
  </Step>

  <Step title="Swap in the failure card via Customer Portal">
    Abra o [Portal do Cliente](/features/customer-portal), encontre a assinatura que você acabou de criar e clique em **Atualizar Método de Pagamento**. Insira o cartão de teste de falha `4000 0000 0000 0341` (Validade: `12/34`, CVC: `123`) e salve-o como método de pagamento da assinatura.
  </Step>

  <Step title="Advance the next billing date (optional)">
    Para acionar a renovação imediatamente, em vez de esperar o ciclo de faturamento natural, use a API de Atualização de Assinatura para definir `next_billing_date` para o horário UTC atual. O valor deve ser um timestamp UTC ISO 8601 / RFC 3339 (o sufixo `Z` é necessário).

    ```http theme={null}
    PATCH /subscriptions/{subscription_id}
    {
      "next_billing_date": "2026-05-03T00:00:00Z"
    }
    ```

    Veja os detalhes na referência [API de Atualização de Assinaturas](/api-reference/subscriptions/patch-subscriptions#body-next-billing-date-one-of-0).
  </Step>

  <Step title="Verify the failure">
    Na próxima tentativa de cobrança:

    * A cobrança de renovação é recusada no cartão de falha
    * A assinatura muda para o status **Em Espera**
    * Um evento webhook `payment.failed` é enviado
    * O cliente pode retornar ao Portal do Cliente para atualizar o método de pagamento e tentar novamente
  </Step>
</Steps>

<Warning>
  Este cartão é especificamente para testar falhas de renovação. A cobrança será recusada na próxima data de faturamento, permitindo que você teste a lógica de tentativa de pagamento, notificações ao cliente e tratamento de falhas.
</Warning>

## Testar UPI

O teste UPI usa identificadores especiais de VPA (Endereço de Pagamento Virtual) que simulam diferentes resultados de pagamento.

| Status  | ID UPI        |
| :------ | :------------ |
| Sucesso | `success@upi` |
| Falha   | `failure@upi` |

### Requisitos para Teste de UPI

* O país de faturamento deve ser definido como `IN`
* A moeda deve ser `INR`
* Para comerciantes não indianos: Moeda Adaptativa deve estar ativada

Para documentação completa de UPI, incluindo testes de mandato do RBI para assinaturas, consulte a página [Métodos de Pagamento na Índia](/features/payment-methods/india).

## Testar BNPL

Os provedores de Buy Now Pay Later têm requisitos específicos de dados de teste.

### Dados de Teste Klarna

Use estes detalhes para simular pagamentos Klarna no modo de teste:

| Campo                  | Aprovado                                      | Negado                                                      |
| :--------------------- | :-------------------------------------------- | :---------------------------------------------------------- |
| **Data de Nascimento** | 07-10-1970                                    | 07-10-1970                                                  |
| **Nome**               | Test                                          | Test                                                        |
| **Sobrenome**          | Person-us                                     | Person-us                                                   |
| **Email**              | [customer@email.us](mailto:customer@email.us) | [customer+denied@email.us](mailto:customer+denied@email.us) |
| **Rua**                | Amsterdam Ave                                 | Amsterdam Ave                                               |
| **Número da Casa**     | 509                                           | 509                                                         |
| **Cidade**             | Nova Iorque                                   | Nova Iorque                                                 |
| **Estado**             | Nova Iorque                                   | Nova Iorque                                                 |
| **Código Postal**      | 10024-3941                                    | 10024-3941                                                  |
| **Telefone**           | +13106683312                                  | +13106354386                                                |

<Note>
  Klarna exige um valor mínimo de transação de **\$50.01** para aparecer como opção de pagamento.
</Note>

### Teste Afterpay

<Steps>
  <Step title="Select Afterpay">
    Escolha Afterpay como o método de pagamento no checkout e clique em Pagar.
  </Step>

  <Step title="Test successful payment">
    Use qualquer endereço de email e endereço de entrega válidos para pagamentos bem-sucedidos.
  </Step>

  <Step title="Test failed authentication">
    Para simular uma falha, feche a janela modal Afterpay na página de redirecionamento. O pagamento transita de `requires_action` para `requires_payment_method`.
  </Step>
</Steps>

<Note>
  Afterpay requer um valor mínimo de transação de **\$50.01** para aparecer como opção de pagamento.
</Note>

### Teste Sunbit

<Steps>
  <Step title="Set billing country and currency">
    Certifique-se de que `billing_address.country` seja `US` e `billing_currency` seja `USD`.
  </Step>

  <Step title="Use a qualifying amount">
    Defina o valor da transação entre **$60.00 e $19,999.00**.
  </Step>

  <Step title="Complete the Sunbit flow">
    Selecione Sunbit no checkout e complete a aplicação de financiamento no modal Sunbit.
  </Step>

  <Step title="Test failure">
    Feche o modal Sunbit antes de completar o fluxo para simular uma aplicação recusada. O pagamento transita para `requires_payment_method`.
  </Step>
</Steps>

<Note>
  Sunbit só aparece para clientes dos EUA pagando em USD com um valor entre **$60.00** e **$19,999.00**.
</Note>

Para documentação completa de BNPL, incluindo testes Billie B2B, consulte a página [Buy Now Pay Later](/features/payment-methods/bnpl).

## Testar Carteiras Digitais

### Apple Pay

<Steps>
  <Step title="Enable test mode">
    Use suas chaves de API de teste do Dodo Payments.
  </Step>

  <Step title="Add a card to Apple Wallet">
    Adicione um cartão real à sua Carteira Apple. No modo de teste, o cartão não será cobrado.
  </Step>

  <Step title="Complete test purchase">
    Abra o checkout em um dispositivo Apple e complete o fluxo de Apple Pay.
  </Step>
</Steps>

<Warning>
  Apple Pay requer HTTPS. Não aparecerá em `localhost` sem configuração SSL adequada. A verificação de domínio também deve estar completa.
</Warning>

### Google Pay

<Steps>
  <Step title="Join the test card group">
    [Participe do grupo de cartões de teste do Google Pay](https://groups.google.com/g/googlepay-test-mode-stub-data) para adicionar cartões de teste automaticamente à sua carteira.
  </Step>

  <Step title="Enable test mode">
    Use suas chaves de API de teste do Dodo Payments.
  </Step>

  <Step title="Complete test purchase">
    Selecione um dos cartões de teste no Google Pay para completar a transação.
  </Step>
</Steps>

### Amazon Pay, Cash App Pay & RevolutPay

Use suas chaves de API de teste e siga o fluxo padrão de checkout. As transações de teste são simuladas sem cobranças reais.

Para documentação completa de carteiras digitais, incluindo verificação de domínio para Apple Pay, consulte a página [Carteiras Digitais](/features/payment-methods/digital-wallets).

## Testar Métodos Europeus

Métodos de pagamento europeus (iDEAL, Bancontact, EPS, Multibanco) podem ser testados no modo sandbox.

<Steps>
  <Step title="Enable test mode">
    Use suas chaves de API de teste do Dodo Payments.
  </Step>

  <Step title="Set billing address">
    Defina o país do endereço de faturamento para corresponder ao método de pagamento:

    * `NL` para iDEAL
    * `BE` para Bancontact
    * `AT` para EPS
    * `PT` para Multibanco
  </Step>

  <Step title="Set currency">
    Métodos europeus requerem moeda EUR.
  </Step>

  <Step title="Complete test flow">
    Siga o fluxo de autenticação bancária simulado no ambiente de teste.
  </Step>
</Steps>

Para documentação completa de métodos de pagamento europeus, consulte a página [Europa](/features/payment-methods/europe).

## Melhores Práticas de Teste

<AccordionGroup>
  <Accordion title="Test all payment scenarios">
    Não teste apenas pagamentos bem-sucedidos. Teste recusas, cancelamentos e casos extremos como fundos insuficientes.
  </Accordion>

  <Accordion title="Verify webhook handling">
    Certifique-se de que seus endpoints webhook processem corretamente todos os tipos de eventos, especialmente `payment.succeeded`, `payment.failed`, e eventos de assinatura.

    Use o [CLI do Dodo Payments](/developer-resources/sdks/cli#webhook-testing) para testar webhooks localmente:

    * `dodo wh listen` encaminha webhooks de teste ao vivo para seu servidor local
    * `dodo wh trigger` envia cargas simuladas para todos os 22 tipos de eventos
  </Accordion>

  <Accordion title="Test on real devices">
    Para Apple Pay e Google Pay, teste em dispositivos iOS e Android reais. Simuladores não replicam totalmente o comportamento da carteira.
  </Accordion>

  <Accordion title="Test regional methods with correct addresses">
    Métodos de pagamento regionais (UPI, iDEAL, etc.) requerem endereços de faturamento correspondentes. Um endereço de faturamento nos EUA não mostrará iDEAL.
  </Accordion>

  <Accordion title="Verify minimum amounts">
    Métodos BNPL requerem valor mínimo de \$50.01. Teste se eles aparecem/desaparecem corretamente com base no total do carrinho.
  </Accordion>
</AccordionGroup>

## Páginas Relacionadas

<CardGroup cols={2}>
  <Card title="Cards" icon="credit-card" href="/features/payment-methods/cards">
    Testes de cartões, 3D Secure e métodos de pagamento salvos.
  </Card>

  <Card title="Digital Wallets" icon="wallet" href="/features/payment-methods/digital-wallets">
    Teste de Apple Pay, Google Pay, Amazon Pay.
  </Card>

  <Card title="BNPL" icon="calendar-days" href="/features/payment-methods/bnpl">
    Testes Klarna, Afterpay e Billie.
  </Card>

  <Card title="India" icon="indian-rupee-sign" href="/features/payment-methods/india">
    Testes UPI e mandato RBI.
  </Card>

  <Card title="Europe" icon="euro-sign" href="/features/payment-methods/europe">
    Testes iDEAL, Bancontact, EPS, Multibanco.
  </Card>

  <Card title="Webhooks" icon="webhook" href="/developer-resources/webhooks">
    Configurar webhooks para eventos de teste.
  </Card>

  <Card title="CLI Webhook Testing" icon="terminal" href="/developer-resources/sdks/cli#webhook-testing">
    Testar webhooks localmente com o CLI do Dodo Payments.
  </Card>
</CardGroup>
