# Teste sua integração do Billing

Aprenda a testar a integração do Billing para garantir que ele esteja pronto para produção.

- Use [cartões](https://docs.stripe.com/testing.md#cards) e [números de conta](https://docs.stripe.com/testing.md#test-account-numbers) de teste para acionar diferentes cenários, como falhas de pagamento ou autenticação obrigatória.
- Use [clocks de teste](https://docs.stripe.com/billing/testing/test-clocks.md) para simular objetos `Billing` ao longo do tempo e testar eventos em diferentes marcos, como o fim de um teste gratuito ou de um plano anual.
- Leia a [documentação geral de testes](https://docs.stripe.com/testing.md) para saber mais sobre os testes fundamentais que ocorrem em toda a Stripe.

Teste detalhadamente toda a integração antes de disponibilizá-la aos clientes ou usá-la em atividades do modo de produção. Use os recursos desta página como complemento das diretrizes organizacionais (por exemplo, manuais de operação, verificações de qualidade ou listas de verificação de desenvolvimento) para ajudar a determinar se a integração está pronta para uso em produção.

Para novas integrações do Billing, use áreas restritas gerais em vez da área restrita do modo de teste. Use áreas restritas separadas para desenvolvimento local e integração contínua (CI), para que os testes automatizados não afetem seus produtos, preços, clientes, endpoints de webhook, configurações ou dados de teste. Saiba mais sobre como [escolher um ambiente de testes](https://docs.stripe.com/testing-use-cases.md#compare).

Antes de usar a integração no modo de produção, confira estas listas de verificação da Stripe:

- [Lista de verificação da conta](https://docs.stripe.com/get-started/account/checklist.md)
- [Lista de verificação de desenvolvimento](https://docs.stripe.com/get-started/checklist/go-live.md)
- [Lista de verificação do site](https://docs.stripe.com/get-started/checklist/website.md)

## Fluxo de teste e integração

Veja como é um fluxo de integração típico:

Uma integração básica do Billing (See full diagram at https://docs.stripe.com/billing/testing)

```text
[Cliente] -- customer.created: Informar detalhes de pagamento e assinatura --> [Seu site]
[Seu site] -- Crie um objeto Conta ou Cliente e um objeto Assinaturas configurados pelo cliente --> [Stripe]
[Stripe] -- customer.created: Enviar evento customer.created --> [Seu site]
[Stripe] -- customer.subscription.created: Enviar evento customer.subscription.created --> [Seu site]
[Stripe] -- Criar fatura --> [Stripe]
[Stripe] -- invoice.created: Enviar evento invoice.created --> [Seu site]
[Stripe] -- invoice.finalized: Enviar evento invoice.finalized --> [Seu site]
[Stripe] -- Enviar fatura ao cliente --> [Cliente]
[Cliente] -- Pague a fatura pelo portal do cliente --> [Stripe]
[Stripe] -- invoice.paid: Enviar evento invoice.paid --> [Seu site]
[Cliente] -- Cancele a assinatura pelo portal do cliente --> [Stripe]
[Stripe] -- customer.subscription.deleted: Enviar evento customer.subscription.deleted --> [Seu site]
[Seu site] -- Confirmar cancelamento --> [Cliente]
```

> #### Use a API Accounts v2 para representar clientes
> 
> A API Accounts v2 está geralmente disponível para usuários do Connect e em prévia pública para outros usuários da Stripe. Se faz parte da prévia de Accounts v2, é necessário [especificar uma versão de prévia](https://docs.stripe.com/api-v2-overview.md#sdk-and-api-versioning) no seu código.
> 
> Para participar da prévia de Accounts v2, acesse [Prévias e recursos da conta](https://dashboard.stripe.com/settings/previews) no Dashboard e ative **Formas de pagamento reutilizáveis para Global Payouts**.
> 
> Para a maioria dos casos de uso, recomendamos [modelar seus clientes como objetos Accounts configuradas pelo cliente](https://docs.stripe.com/accounts-v2/use-accounts-as-customers.md), em vez de usar objetos [Customer](https://docs.stripe.com/api/customers.md).

Para integrações de assinaturas e receitas recorrentes, verifique se pelo menos estes componentes funcionam como esperado.

A tabela lista as notificações de eventos assíncronos para cada componente. Aguarde o evento relevante antes de testar o comportamento downstream da sua integração. Configure sua integração para escutar esses eventos com *webhooks* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests). Para obter mais informações, consulte [notificações de eventos e testes](https://docs.stripe.com/billing/testing.md#webhooks).

| Componente | Descrição | Eventos assíncronos |
| --- | --- | --- |
| **Registro do cliente** | Certifique-se de que sua integração consiga coletar com sucesso as informações necessárias para criar um registro de cliente na Stripe. Seus clientes podem inserir essas informações usando o Payment Links, Checkout, *Elements* (A set of UI components for building a web checkout flow. They adapt to your customer's locale, validate input, and use tokenization, keeping sensitive customer data from touching your server) ou um formulário de pagamento personalizado criado com a [API Stripe](https://docs.stripe.com/api.md). Independentemente do formulário usado, certifique-se de que o objeto `Account` ou `Customer` configurado pelo cliente esteja armazenado na Stripe. Você pode usar o Dashboard ou a API para visualizar e [gerenciar clientes](https://docs.stripe.com/billing/customer.md#manage-customers). | - `v2.core.account.created`
- `v2.core.account[configuration.customer].updated`
- `customer.created`
- `customer.subscription.created` |
| **Faturamento** | As assinaturas geram *faturas* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice) no final de cada período de cobrança. Dependendo da forma de pagamento, você pode enviar faturas para cobrar pagamentos pós-pagos. Verifique se a integração cria e envia faturas da forma esperada. Saiba mais sobre a criação e o gerenciamento de [faturas para assinaturas](https://docs.stripe.com/billing/invoices/subscription.md). Use clocks de teste para simular períodos de cobrança, incluindo a geração e o envio de faturas. Leia o [guia de clocks de teste](https://docs.stripe.com/billing/testing/test-clocks/api-advanced-usage.md#use-cases) para saber conhecer os casos de uso específicos que você pode testar. | - `invoice.created`
- `invoice.finalized`
- `invoice.finalization_failed`
- `invoice.paid`
- `invoice.payment_action_required`
- `invoice.payment_failed`
- `invoice.upcoming`
- `invoice.updated` |
| **Gerenciamento de assinaturas** | Configure o *portal do cliente* (The customer portal is a secure, Stripe-hosted page that lets your customers manage their subscriptions and billing details) para permitir que seus clientes gerenciem suas *assinaturas* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) e informações de cobrança. Para testá-lo, crie uma assinatura em uma *área restrita* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes). Em seguida, faça login no portal como usuário de teste e atualize a assinatura. Verifique o Dashboard ou a API para ver se a assinatura reflete a alteração do cliente. Leia o [guia de integração](https://docs.stripe.com/customer-management.md) para saber como configurar o portal do cliente. | - `customer.subscription.deleted`
- `customer.subscription.paused`
- `customer.subscription.resumed`
- `customer.subscription.updated` |
| **Avaliações** | Ofereça aos clientes uma avaliação do seu serviço. Para testar se a configuração da avaliação está correta, crie um clock de teste. A assinatura gera uma fatura com valor zero para o período da assinatura. [Saiba como testar avaliações com clocks de teste](https://docs.stripe.com/billing/testing.md#trials). Para obter mais informações sobre o funcionamento das avaliações, leia o [guia de avaliações de assinatura](https://docs.stripe.com/billing/subscriptions/trials/free-trials.md). | - `customer.subscription.trial_will_end`
- `customer.subscription.updated` |
| **Falhas de pagamento** | Os pagamentos dos clientes podem falhar por diversos motivos. Verifique se a integração gerencia falhas, incluindo novas tentativas de pagamento [Saiba como testar falhas de pagamento](https://docs.stripe.com/billing/testing.md#payment-failures). | - `invoice.finalization_failed`
- `invoice.payment_failed`
- `invoice.payment_action_required` |

## Clocks de teste

Os clocks de teste permitem simular objetos `Billing`, como *subscriptions* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis), through time in a *sandbox* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes). Assim, você não precisa esperar um ano para ver como a integração se comporta no caso de falha de pagamento de uma renovação anual. Não é preciso criar nenhuma programação para usar os clocks de teste: as simulações são criadas no Dashboard. Elas também podem ser acessadas pela API. Saiba mais sobre [clocks de teste](https://docs.stripe.com/billing/testing/test-clocks.md) e [casos de uso](https://docs.stripe.com/billing/testing/test-clocks.md) comuns para eles.

## Testar períodos de avaliação de assinatura

Digamos que você queira que os clientes experimentem seu produto gratuitamente com um teste de 7 dias antes de começarem a pagar e queira coletar as informações de pagamento antecipadamente. Para simular essa situação usando clocks de teste, siga estas etapas:

- Crie uma nova simulação e defina o `frozen_time` para 1º de janeiro.
- Adicione um cliente e inclua a forma de pagamento dele. Neste caso, use um [cartão de teste](https://docs.stripe.com/testing.md#cards) 4242424242424242.
- Crie uma assinatura e adicione um período de avaliação gratuita de 7 dias:

#### Dashboard

Para adicionar um período de avaliação a uma assinatura existente usando o Dashboard:

Encontre a assinatura a ser alterada.

1. Clique em **Ações**.
2. Clique em **Atualizar assinatura**.
3. Clique em **Adicionar avaliação gratuita** e informe 7 no campo **Dias de avaliação gratuita**.
4. Clique em **Atualizar assinatura**.

#### API

Você pode iniciar a assinatura de um cliente com um período de avaliação gratuita informando o argumento `trial_period_days=7` ao criar a assinatura:

#### Accounts v2

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "customer_account={{CUSTOMERACCOUNT_ID}}" \
  -d "items[0][price]={{PRICE_ID}}" \
  -d trial_end=1610403705
```

#### Clientes v1

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "customer={{CUSTOMER_ID}}" \
  -d "items[0][price]={{PRICE_ID}}" \
  -d trial_end=1610403705
```

- A criação de uma assinatura com período de avaliação gratuita de 7 dias gera uma assinatura com o status `trialing`, o que gera uma fatura de US$&nbsp;0,00 em decorrência da avaliação gratuita.
- Adiante a data para 5 de janeiro para receber a notificação de evento [customer.subscription.trial_will_end](https://docs.stripe.com/api/events/types.md#event_types-customer.subscription.trial_will_end). A Stripe envia essa notificação 3 dias antes do fim da avaliação. Esse webhook pode ser usado para informar aos clientes que a avaliação termina em breve.
- Adiante a data para 8 de janeiro. O estado da assinatura passa para `paid` e é criada uma fatura de 50 USD.
- Adiante a data para mais um ciclo (por exemplo, para 8 de fevereiro se a assinatura for mensal) para ver a renovação bem-sucedida da assinatura.

### Testar períodos de avaliação sem clocks de teste

Para testar como a integração gerencia períodos de teste sem esperar a conclusão do período de avaliação para ver os resultados, crie uma *assinatura* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) com `trial_end` definido para alguns minutos no futuro. Se você usa o Checkout, defina [trial_end](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-trial_end) pelo menos dois dias no futuro.

Nessa abordagem, você não recebe uma notificação de evento `customer.subscription.trial_will_end`, que normalmente ocorre três dias antes do fim da avaliação. O resto do comportamento é idêntico ao de uma assinatura com período de avaliação maior.

## Testar notificações de webhook de assinatura

As integrações de assinatura dependem de *webhooks* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests). Você configura um endpoint de webhook no servidor e especifica quais eventos quer ouvir. A Stripe envia notificações para eventos como atualização ou cancelamento de assinaturas.

Teste webhooks criando assinaturas de teste reais ou acionando notificações de eventos com a [Stripe CLI](https://docs.stripe.com/cli.md) ou pelo [Dashboard](https://dashboard.stripe.com/test/account/webhooks).

Depois de configurar a Stripe CLI e vincular a sua conta Stripe, você pode acionar eventos do [ciclo de vida da assinatura](https://docs.stripe.com/billing/subscriptions/overview.md#subscription-lifecycle) para testar a integração de webhooks. Quando você usa a Stripe CLI para acionar eventos, pode ver notificações de eventos assim que chegam ao servidor. Dessa forma, é possível verificar a integração de webhooks diretamente, sem túneis ou firewalls de rede.

Quando você usa a Stripe CLI ou o Dashboard para acionar eventos, o webhook recebe eventos com dados simulados, sem relação aos dados da assinatura. A forma mais confiável de testar notificações de webhooks é criar assinaturas de teste reais e gerenciar os eventos correspondentes.

A tabela a seguir descreve os eventos mais comuns relacionados a assinaturas e sugere ações para gerenciar os eventos, quando for o caso.

> A API Accounts v2 está disponível para o público em geral para usuários do Connect e em versão prévia pública para outros usuários da Stripe.
> 
> Independentemente de você usar objetos [Accounts v2](https://docs.stripe.com/accounts-v2/use-accounts-as-customers.md) ou objetos [Customer](https://docs.stripe.com/api/customers.md) para representar clientes, use os eventos `customer.subscription` para monitorar eventos de assinatura.

| Evento | Descrição |
| --- | --- |
| `v2.core.account.created` | Enviado quando uma [Account v2](https://docs.stripe.com/api/v2/core/accounts/object.md) é devidamente criada. |
| `customer.created` | Enviado quando um [Customer](https://docs.stripe.com/api/customers/object.md) é criado. |
| `customer.subscription.created` | Enviado quando a assinatura é criada. O `status` da assinatura poderá ser `incomplete` se a autenticação do cliente for necessária para concluir o pagamento ou se você definir `payment_behavior` como [default_incomplete](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-payment_behavior). |
| `customer.subscription.deleted` | Enviado quando a assinatura do cliente termina. |
| `customer.subscription.paused` | Enviado quando o `status` de uma assinatura muda para `paused`. Por exemplo, isso é enviado quando você [configura](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-trial_settings-end_behavior-missing_payment_method) uma assinatura para ser pausada quando um [período de teste gratuito termina sem uma forma de pagamento](https://docs.stripe.com/billing/subscriptions/trials/free-trials.md#create-free-trials-without-payment). O faturamento não ocorrerá até que a assinatura [seja retomada](https://docs.stripe.com/api/subscriptions/resume.md). Esse evento não será enviado se você [pausar a cobrança do pagamento](https://docs.stripe.com/billing/subscriptions/pause-payment.md), pois as faturas continuam sendo criadas durante esse período. |
| `customer.subscription.resumed` | Enviado quando você retoma uma assinatura que estava anteriormente com o status `suspenso`. Isso não se aplica quando você [retoma a cobrança de pagamentos](https://docs.stripe.com/billing/subscriptions/pause-payment.md#unpausing). |
| `customer.subscription.trial_will_end` | Enviado 3 dias antes de o [período de teste terminar](https://docs.stripe.com/billing/subscriptions/trials.md). Se o período de teste for inferior a 3 dias, este evento será acionado. |
| `customer.subscription.updated` | Enviado quando uma assinatura inicia ou é [alterada](https://docs.stripe.com/billing/subscriptions/change.md). Por exemplo, o evento é acionado ao renovar uma assinatura, adicionar cupons, aplicar descontos, incluir itens de fatura ou alterar planos. |
| `entitlements.active_entitlement_summary.updated` | Enviado quando os direitos ativos de um cliente são atualizados. Quando receber esse evento, você pode provisionar ou cancelar o acesso aos recursos do produto. Leia mais sobre [integração com direitos](https://docs.stripe.com/billing/entitlements.md). |
| `invoice.created` | Enviado quando uma fatura é criada para uma assinatura nova ou em renovação. Se a Stripe não receber uma resposta positiva para `invoice.created`, a finalização de todas as faturas com [cobrança automática](https://docs.stripe.com/invoicing/integration/automatic-advancement-collection.md) será adiada por até 72 horas. Leia mais sobre a [finalização de faturas](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#finalized).
- Responda à notificação enviando uma solicitação para a API [finalizar uma fatura](https://docs.stripe.com/api/invoices/finalize.md). |
| `invoice.finalized` | Enviado quando uma fatura é finalizada e está pronta para pagamento.
- Você pode enviar a fatura ao cliente. Para saber mais, consulte [finalização de faturas](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#finalized).
- Dependendo da configuração, cobraremos automaticamente a forma de pagamento padrão ou tentaremos fazer a cobrança. Para saber mais, consulte [e-mails após a finalização](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#emails). |
| `invoice.finalization_failed` | A fatura não pôde ser finalizada. Saiba mais sobre [como lidar com falhas na finalização de faturas](https://docs.stripe.com/tax/customer-locations.md#finalizing-invoices-with-finalization-failures) e [sobre a finalização de faturas](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#finalized).
- Inspecione o [last_finalization_error](https://docs.stripe.com/api/invoices/object.md#invoice_object-last_finalization_error) da fatura para determinar a causa do erro.
- Se você estiver usando o Stripe Tax, verifique o campo [automatic_tax](https://docs.stripe.com/api/invoices/object.md#invoice_object-last_finalization_error) do objeto `Invoice`.
- Se `automatic_tax[status]=requires_location_inputs`, a fatura não será finalizada e os pagamentos não poderão ser coletados. Notifique seu cliente e colete a [localização do cliente](https://docs.stripe.com/tax/customer-locations.md) necessária.
- Se `automatic_tax[status]=failed`, tente a solicitação outra vez mais tarde. |
| `invoice.paid` | Enviado quando a fatura é paga. Você pode provisionar acesso ao produto quando recebe este evento e `status` é `active`. |
| `invoice.payment_action_required` | Enviado quando a fatura exige autenticação do cliente. Saiba como gerenciar a assinatura quando a fatura [exigir ação](https://docs.stripe.com/billing/subscriptions/overview.md#requires-action). |
| `invoice.payment_failed` | Um pagamento de uma fatura falhou. O status do PaymentIntent muda para `requires_action`. O status da assinatura permanece como `incomplete` *only* para a primeira fatura da assinatura. Se um pagamento falhar, você pode tomar várias ações possíveis:

- Avise o cliente.
- Defina suas [configurações de assinatura](https://dashboard.stripe.com/settings/billing/automatic) no Dashboard para ativar o [Smart Retries](https://docs.stripe.com/billing/revenue-recovery/smart-retries.md) e outros recursos de recuperação de receitas.
- Se você usa PaymentIntents, colete os novos dados de pagamento e [confirme o PaymentIntent](https://docs.stripe.com/api/payment_intents/confirm.md).
- Atualize a [forma de pagamento padrão](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-default_payment_method) na assinatura. |
| `invoice.upcoming` | Enviado alguns dias antes da renovação da assinatura. O número de dias é baseado no número definido para **Próximos eventos de renovação** no [Dashboard](https://dashboard.stripe.com/settings/billing/automatic). Para assinaturas existentes, a alteração do número de dias entra em vigor no próximo período de cobrança. Se necessário, você ainda pode adicionar [outros itens de fatura](https://docs.stripe.com/billing/invoices/subscription.md#adding-upcoming-invoice-items). |
| `invoice.updated` | Enviado quando um pagamento é bem-sucedido ou falha. Se o pagamento for bem-sucedido, o atributo `paid` será definido como `true`, e `status` será `paid`. Se o pagamento falhar, `paid` será definido como `false`, e `status` permanecerá `open`. As falhas de pagamento também acionam um evento `invoice.payment_failed`. |
| `payment_intent.created` | Enviado quando um [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) é criado. |
| `payment_intent.succeeded` | Enviado quando um PaymentIntent conclui um pagamento. |
| `subscription_schedule.aborted` | Enviado quando um cronograma de assinatura é cancelado porque o pagamento inadimplente encerrou a assinatura relacionada. |
| `subscription_schedule.canceled` | Enviado quando um cronograma de assinatura é cancelado, o que também cancela qualquer assinatura associada ativa. |
| `subscription_schedule.completed` | Enviado quando todas as [fases](https://docs.stripe.com/billing/subscriptions/subscription-schedules.md#subscription-schedule-phases) de um cronograma de assinatura são concluídas. |
| `subscription_schedule.created` | Enviado quando um novo cronograma de assinatura é criado. |
| `subscription_schedule.expiring` | Enviado 7 dias antes da data de vencimento de um cronograma de assinatura. |
| `subscription_schedule.released` | Enviado quando um cronograma de assinatura é [lançado](https://docs.stripe.com/api/subscription_schedules/release.md) ou interrompido e dissociado da assinatura, que permanece. |
| `subscription_schedule.updated` | Enviado quando uma programação de assinatura é atualizada. |

## Testar falhas de pagamento

Use [números de cartões de crédito de teste](https://docs.stripe.com/testing.md#cards) específicos para acionar falhas de pagamento de assinaturas e *faturas* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice).

Algumas atualizações de assinatura fazem a Stripe faturar a assinatura e tentar fazer o pagamento imediatamente (essa tentativa de pagamento síncrona pode ocorrer na fatura inicial ou em determinadas atualizações de fatura). Se a tentativa falhar, a assinatura é criada em um status `incomplete`.

Para testar o que acontece em caso de falha no pagamento de uma assinatura ativa, vincule o cartão [**4000 0000 0000 0341**](https://docs.stripe.com/testing.md#cards) como forma de pagamento padrão do cliente, mas use um período de teste para diferir a tentativa (uma assinatura de alguns segundos ou minutos é suficiente). A assinatura se torna ativa imediatamente, com uma fatura [preliminar](https://docs.stripe.com/invoicing/overview.md#draft) criada quando o período de avaliação terminar. Leva aproximadamente 1&nbsp;hora para o status da fatura mudar para aberto, nesse momento ocorre a tentativa malsucedida de cobrança do pagamento.

Use [clocks de teste](https://docs.stripe.com/billing/testing/test-clocks.md) para simular o avanço do tempo no *modo de teste* (Test mode is another way to test changes to your integration without affecting production. A sandbox is the default and recommended way to test integrations. All Stripe features are available in test mode but you can't create live charges unless you're in live mode), o que faz com que os recursos do Billing, como Subscriptions, alterem o status e acionem eventos de *webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests). Isso permite que você veja como sua integração gerencia uma falha de pagamento de uma renovação trimestral ou anual sem esperar um ano.

## Testar pagamentos que exigem 3D Secure

Use o cartão [**4000 0027 6000 3184**](https://docs.stripe.com/testing.md#three-ds-cards) para simular o acionamento do 3D Secure para assinaturas e faturas.

Quando um fluxo de autenticação 3D Secure é acionado, é possível testar a autenticação ou a falha na tentativa de pagamento na caixa de autenticação 3DS que aparecer. Se o pagamento for autenticado corretamente, a fatura é paga. Se a fatura pertencer a uma assinatura com status `incomplete`, a assinatura fica ativa. Quando uma tentativa de pagamento falha, a tentativa de autenticação é malsucedida e a fatura permanece `open`.

## Testar pagamentos de faturas com transferência bancária

Para testar pagamentos manuais em faturas por meio de transferências bancárias:

1. Em uma área restrita, crie uma fatura, defina o método de cobrança como `send_invoice` e defina a matriz `payment_settings[payment_method_types]` como `[customer_balance]`.
2. Encontre a fatura no Dashboard e clique em **Enviar**.
3. Seu cliente recebeu um número de conta bancária virtual exclusivo que você pode recuperar usando a [API de instruções de financiamento](https://docs.stripe.com/payments/customer-balance/funding-instructions.md#create-funding-instructions). Os dados bancários virtuais também estão presentes na página da fatura hospedada, assim como no PDF.

## Teste a forma de pagamento padrão para faturas e assinaturas

Use [IDs de cartão de teste](https://docs.stripe.com/testing.md?testing-method=payment-methods#cards) específicos para simular formas de pagamento padrão usadas em assinaturas e faturas.

A forma de pagamento informada precisa definida como a `default_payment method` para ser vinculada ao cliente da assinatura ou fatura. Por exemplo, se você estiver usando `pm_card_visa` para criar uma forma de pagamento Visa de teste:

1. Chame o endpoint do [PaymentMethod](https://docs.stripe.com/api/payment_methods/attach.md) `pm_card_visa` e o cliente pretendido para a assinatura ou fatura
2. Com o ID da forma de pagamento resultante, crie a assinatura ou fatura com esse ID como o `default_payment_method`.

Agora a assinatura ou fatura cobrará esta forma de pagamento.

Saiba mais sobre como usar formas de [pagamento padrão](https://docs.stripe.com/testing.md?testing-method=payment-methods#cards) para assinaturas e faturas.

## Testar verificação de ID fiscal de clientes

Use estes IDs fiscais “mágicos” para acionar determinadas condições de verificação em ambientes de teste. O tipo de ID fiscal deve ser Australian Business Number (ABN), EU VAT Number ou UK Value-Added-Tax (GB VAT) number.

| Número | Tipo |
| --- | --- |
| `000000000` | Verificação bem-sucedida |
| `111111111` | Verificação malsucedida |
| `222222222` | A verificação permanece pendente indefinidamente |

## Testes automatizados

Você pode configurar [testes automatizados](https://docs.stripe.com/automated-testing.md) para a integração. Para otimizar os testes:

- Conheça a [política de retenção de dados](https://support.stripe.com/questions/test-mode-subscription-data-retention) para dados relacionados a assinaturas em uma área restrita.
- Evite reutilizar recursos, como [cupons](https://docs.stripe.com/api/coupons.md) e [códigos promocionais](https://docs.stripe.com/api/promotion_codes.md) em vários testes.
- Use o servidor HTTP [simulado da stripe](https://github.com/stripe/stripe-mock), que é baseado na API da Stripe e reflete melhor o comportamento da API.

## See also

- [Áreas restritas](https://docs.stripe.com/sandboxes.md)
- [Várias contas](https://docs.stripe.com/get-started/account/multiple-accounts.md)
