# Aceitar uma transferência bancária Use a API Payment Intents para aceitar pagamentos por transferência bancária. Na primeira vez em que você aceita um pagamento por transferência bancária de um cliente, a Stripe gera uma conta bancária virtual para o cliente, que pode ser compartilhada diretamente com ele. Todos os pagamentos futuros por transferência bancária deste cliente são enviados para essa conta bancária. Em alguns países, a Stripe também fornece um número de referência de transferência exclusivo que seu cliente deve incluir em cada transferência para facilitar a correspondência entre a transferência e os pagamentos pendentes. Alguns países têm limites para a quantidade de números de contas bancárias virtuais que você pode criar gratuitamente. Você encontra uma visão geral das etapas comuns ao aceitar um pagamento por transferência bancária no seguinte diagrama de sequência: #### Com faturas Etapas comuns ao aceitar um pagamento por transferência bancária (See full diagram at https://docs.stripe.com/payments/bank-transfers/accept-a-payment) #### Sem faturas ![](https://b.stripecdn.com/docs-statics-srv/assets/without-invoices-diagram-1.a17fe04695ef532427f25a9e1276ee2e.svg) ## Gerenciar pagamentos a menor e a maior Com pagamentos por transferência bancária, é possível que o cliente envie a você mais ou menos do que o valor do pagamento esperado. Se o cliente enviar muito pouco, a Stripe financiará parcialmente um Payment Intent em aberto. As faturas não são parcialmente financiadas e permanecem abertas até que os fundos recebidos cubram o valor total da fatura. If the customer sends more than the expected amount, Stripe attempts to reconcile the incoming funds against an open payment and keep the remaining excess amount in the customer balance. Learn more about [how Stripe handles reconciliation](https://docs.stripe.com/payments/customer-balance/reconciliation.md). #### Com faturas Quando um cliente paga parcialmente: Um cliente enviou uma transferência bancária com valor abaixo do esperado (See full diagram at https://docs.stripe.com/payments/bank-transfers/accept-a-payment) Quando um cliente paga em excesso: Um cliente enviou uma transferência bancária com valor acima do esperado (See full diagram at https://docs.stripe.com/payments/bank-transfers/accept-a-payment) #### Sem faturas ![](https://b.stripecdn.com/docs-statics-srv/assets/without-invoices-diagram-2.464fe916d5822422144c8aea0f31ed45.svg) ![](https://b.stripecdn.com/docs-statics-srv/assets/without-invoices-diagram-3.b1992851a5f3492d14eaa35e336b0e9f.svg) ## Gerenciar vários pagamentos ou faturas em aberto Você pode ter vários pagamentos ou faturas em aberto que podem ser pagos com transferência bancária. Na configuração padrão, a Stripe tenta [reconciliar automaticamente](https://docs.stripe.com/payments/customer-balance/reconciliation.md) a transferência bancária usando informações como o código de referência da transferência ou o valor transferido. Você mesmo pode desativar a reconciliação automática e [reconciliar manualmente](https://docs.stripe.com/payments/customer-balance/reconciliation.md#cash-manual-reconciliation) pagamentos e faturas. É possível sobrepor o comportamento de reconciliação automática por cliente, definindo o [modo de reconciliação](https://docs.stripe.com/api/customers/create.md#create_customer-cash_balance-settings-reconciliation_mode) como manual. # Checkout > This is a Checkout for when payment-ui is checkout. View the full page at https://docs.stripe.com/payments/bank-transfers/accept-a-payment?payment-ui=checkout. > A Stripe pode apresentar automaticamente as formas de pagamento relevantes aos seus clientes avaliando moedas, restrições de formas de pagamento e outros parâmetros. > > - Siga o guia [Aceitar um pagamento](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=stripe-hosted) para elaborar uma integração de checkout que usa [formas de pagamento dinâmicas](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md). - Se você não quiser usar o formas de pagamento dinâmico, siga as etapas abaixo para configurar manualmente as formas de pagamento em sua integração de checkout. A transferência bancária é uma forma de pagamento de [uso único](https://docs.stripe.com/payments/payment-methods.md#usage) para o Checkout, em que os clientes pagam com uma transferência bancária usando as instruções de pagamento apresentadas. Quando seleciona a opção de pagar, o usuário é redirecionado para uma página hospedada que exibe instruções de transferência bancária e o status do pagamento por transferência. A transferência bancária também é uma *notificação posterior forma de pagamento*, o que significa que os fundos não ficam imediatamente disponíveis após o pagamento. > Transferências bancárias não estão disponíveis em sessões do Checkout que não incluíram um [objeto Customer](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer) existente na solicitação de criação da sessão. ## Verificar a compatibilidade **Localizações aceitas para empresas**: Europe (SEPA area), UK, JP, MX, US **Moedas aceitas**: `eur, gbp, jpy, mxn, usd` **Moedas de apresentação**: `eur, gbp, jpy, mxn, usd` **Modo de pagamento**: Yes **Modo de configuração**: No **Modo de assinatura**: No Uma sessão do Checkout precisa cumprir todas as seguintes condições para apoiar pagamentos Bank Transfer: - Os *preços* (Prices define how much and how often to charge for products. This includes how much the product costs, what currency to use, and the interval if the price is for subscriptions) de todos os produtos incluídos no checkout precisam estar na mesma moeda. Se você tiver produtos em moedas diferentes, crie sessões do Checkout separadas para cada moeda. - Você só pode usar itens de linha avulsos (Sessões do Checkout de transferência bancária não aceitam planos de *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) recorrentes). ## Aceitar um pagamento > Crie uma integração para [aceitar um pagamento](https://docs.stripe.com/payments/accept-a-payment.md?integration=checkout) com o Checkout antes de usar este guia. Use este guia para habilitar Bank Transfer. ### Crie ou recupere um Customer É necessário associar um objeto [Customer](https://docs.stripe.com/api/customers.md) para reconciliar o pagamento de cada transferência bancária. Se você já tem um objeto Customer, ignore esta etapa. Caso contrário, crie um objeto Customer. ```curl curl -X POST https://api.stripe.com/v1/customers \ -u "<>:" ``` ### Habilitar Bank Transfer como forma de pagamento Ao criar uma [sessão do Checkout](https://docs.stripe.com/api/checkout/sessions.md), é preciso: 1. Definir `customer` 1. Adicionar `customer_balance` à lista de `payment_method_types` 1. Verifique se todos os `line_items` usam a mesma moeda #### EUA ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=us_bank_transfer" \ --data-urlencode "success_url=https://example.com/success" ``` #### Reino Unido ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "line_items[0][price_data][currency]=gbp" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=gb_bank_transfer" \ --data-urlencode "success_url=https://example.com/success" ``` #### UE ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "line_items[0][price_data][currency]=eur" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=eu_bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][eu_bank_transfer][country]=FR" \ --data-urlencode "success_url=https://example.com/success" ``` Defina [payment_method_options[customer_balance][bank_transfer][eu_bank_transfer][country]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-eu_bank_account-country) para um dos para exibir o IBAN localizado para o cliente. #### Japão ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "line_items[0][price_data][currency]=jpy" \ -d "line_items[0][price_data][product_data][name]=Tシャツ" \ -d "line_items[0][price_data][unit_amount]=19000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=jp_bank_transfer" \ --data-urlencode "success_url=https://example.com/success" ``` #### México ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "line_items[0][price_data][currency]=mxn" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=18000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=mx_bank_transfer" \ --data-urlencode "success_url=https://example.com/success" ``` ### Redirecionar para a página de instruções de transferência bancária hospedada da Stripe > Ao contrário dos pagamentos com cartão, o cliente nem sempre é redirecionado para o [success_url](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-success_url) com pagamento por transferência bancária. Depois de *enviar* (Submitting an order indicates that the customer intends to pay. Upon submission, the order can no longer be updated and is ready for payment) o formulário do Checkout corretamente, - Se o cliente já tiver um saldo alto o suficiente para cobrir o valor da solicitação, o pagamento é efetivado imediatamente e o cliente é redirecionado para o [success_url](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-success_url). - Se o saldo do cliente não for alto o suficiente para cobrir o valor da solicitação, o cliente é redirecionado para o [hosted_instructions_url](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-hosted_instructions_url). A página tem as instruções para guiar o cliente até a conclusão da transferência. A Stripe permite a personalização de IUs voltadas ao cliente na página [Configurações de marca](https://dashboard.stripe.com/account/branding). As seguintes configurações de marca podem ser aplicadas à página de instruções hospedada: - **Ícone**: a imagem de sua marca e nome fantasia da empresa - **Cor da marca**: usada como cor de fundo ### Executar seus pedidos Como a transferência bancária é uma *forma de pagamento de notificação postergada* (A payment method that can't immediately return payment status when a customer attempts a transaction (for example, ACH debits). Businesses commonly hold an order in a pending state until payment is successful with these payment methods), você precisa usar um método como *webhooks* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) para monitorar o status do pagamento e gerenciar o *processamento* (Fulfillment is the process of providing the goods or services purchased by a customer, typically after payment is collected) do pedido. Saiba [como configurar webhooks e executar pedidos](https://docs.stripe.com/checkout/fulfillment.md). Os seguintes eventos são enviados quando há mudança no status do pagamento: | Nome do evento | Descrição | Próximas etapas | | -------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) | O cliente enviou com êxito o formulário do Checkout e é redirecionado para `hosted_instructions_url`. | Aguarde o cliente para fazer a transferência bancária. | | [checkout.session.async_payment_succeeded](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_succeeded) | O cliente fez a transferência bancária com êxito. O `PaymentIntent` muda para `succeeded`. | Execute o pedido de mercadorias ou serviços do cliente. | ## Optional: Enviar e-mails de instruções de pagamento Você pode habilitar e-mails de instruções de pagamento de Transferência bancária do [Dashboard](https://dashboard.stripe.com/settings/emails). Após ativar os e-mails de instruções de pagamento, a Stripe envia um e-mail ao seu cliente quando: - Um PaymentIntent é confirmado, mas o cliente não tem saldo suficiente. - O cliente envia uma transferência bancária, mas não tem fundos suficientes para concluir os pagamentos pendentes. Um e-mail de instruções de pagamento de transferência bancária contém o valor devido, os dados do banco para transferir fundos e um link para a página de instruções hospedada da Stripe. > Em uma área restrita, os e-mails com instruções de pagamento só são enviados para endereços de e-mail vinculados à conta Stripe. ## Teste a integração Teste a integração simulando o recebimento de uma transferência bancária na API, no Dashboard ou usando uma versão beta da Stripe CLI. #### Dashboard Para simular uma transferência bancária usando o Dashboard 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), vá para a página do cliente no Dashboard. Em **Formas de pagamento**, clique em **Adicionar** e selecione **Fundir saldo de caixa (somente teste)**. #### API Para simular uma transferência bancária usando a API: #### EUA ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="REF-4242" \ -d "amount"="1000" \ -d "currency"="usd" ``` #### Reino Unido ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="REF-4242" \ -d "amount"="1000" \ -d "currency"="gbp" ``` #### UE ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="REF-4242" \ -d "amount"="1000" \ -d "currency"="eur" ``` #### Japão ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "amount"="1000" \ -d "currency"="jpy" ``` #### México ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="123456" \ -d "amount"="1000" \ -d "currency"="mxn" ``` #### Stripe CLI Para simular uma transferência bancária com o Stripe CLI: 1. [Instale o Stripe CLI](https://docs.stripe.com/stripe-cli.md). 1. Faça login no CLI usando a mesma conta com a qual você se conectou ao Stripe Dashboard. ```bash stripe login ``` 1. Simule o recebimento de uma transferência bancária de um cliente existente. #### EUA ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=DVGBG97TZ6ZV \ --currency=usd ``` O parâmetro `reference` é opcional e simula o valor que o cliente preencheu para o campo de referência da transferência bancária. #### Reino Unido ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=DVGBG97TZ6ZV \ --currency=gbp ``` O parâmetro `reference` é opcional e simula o valor que o cliente preencheu para o campo de referência da transferência bancária. #### UE ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=DVGBG97TZ6ZV \ --currency=eur ``` O parâmetro `reference` é opcional e simula o valor que o cliente preencheu para o campo de referência da transferência bancária. #### Japão ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1000 \ --currency=jpy ``` #### México ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=123456 \ --currency=mxn ``` O parâmetro `reference` é opcional e simula o valor que o cliente preencheu para o campo de referência da transferência bancária. ## See also - [Processamento do checkout](https://docs.stripe.com/checkout/fulfillment.md) - [Personalizar o Checkout](https://docs.stripe.com/payments/checkout/customization.md) # Elements > This is a Elements for when payment-ui is elements. View the full page at https://docs.stripe.com/payments/bank-transfers/accept-a-payment?payment-ui=elements. ## Configurar a Stripe [Lado do servidor] Primeiro, você precisa de uma conta Stripe. [Cadastre-se agora](https://dashboard.stripe.com/register). Use nossas bibliotecas oficiais para acessar a API da Stripe no seu aplicativo: #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## Crie ou recupere um Customer [Lado do servidor] É necessário associar um objeto [Customer](https://docs.stripe.com/api/customers.md) para reconciliar o pagamento de cada transferência bancária. Se você já tem um objeto Customer, ignore esta etapa. Caso contrário, crie um objeto Customer. ```curl curl -X POST https://api.stripe.com/v1/customers \ -u "<>:" ``` ## Criar um PaymentIntent [Lado do servidor] Um [PaymentIntent](https://docs.stripe.com/api/payment_intents/object.md) é um objeto que representa sua intenção de coletar o pagamento de um cliente, acompanhando todas as etapas do ciclo de vida do processo de pagamento. Crie um PaymentIntent no servidor, especificando o valor e a moeda que você deseja receber. Você também deve preencher o [parâmetro customer](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-customer) da solicitação de criação de PaymentIntent. Sem esse cliente, as transferências bancárias não estão disponíveis no PaymentIntents. #### Gerenciar formas de pagamento no Dashboard Antes de criar um Payment Intent, ative **Transferência bancária** na página de [configurações de formas de pagamento](https://dashboard.stripe.com/settings/payment_methods) do Dashboard. > Com as [formas de pagamento dinâmicas](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md), a Stripe gerencia o retorno de formas de pagamento qualificadas com base em fatores como valor, moeda e fluxo de pagamento da transação. #### EUA ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=usd \ -d "automatic_payment_methods[enabled]=true" ``` #### Reino Unido ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=gbp \ -d "automatic_payment_methods[enabled]=true" ``` #### UE ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=eur \ -d "automatic_payment_methods[enabled]=true" ``` Para localizar o IBAN exibido ao cliente, você pode configurar o país do Cliente definindo a propriedade [`address.country`](https://docs.stripe.com/api/customers/object.md#customer_object-address-country) ou [editando o Cliente no Dashboard](https://docs.stripe.com/invoicing/customer.md#edit-a-customer). Aceitamos a localização do IBAN de : - Se não tiver configurado um país para o seu cliente ou se o país dele não aceitar localização por IBAN, usaremos o país da sua conta Stripe. - Se a localização do IBAN não for aceita para o país da sua conta Stripe, usaremos `IE`. > A criação de números de contas bancárias virtuais localizados está indisponível na Espanha (ES). Use qualquer um dos outros países VBAN da UE. #### Japão ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=19000 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=jpy \ -d "automatic_payment_methods[enabled]=true" \ --data-urlencode "return_url=https://example.com/return_url" ``` #### México ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=mxn \ -d "automatic_payment_methods[enabled]=true" \ --data-urlencode "return_url=https://example.com/return_url" ``` Na versão mais recente da API, especificar o parâmetro `automatic_payment_methods` é opcional porque a Stripe habilita sua funcionalidade por padrão. Se o cliente já tiver um saldo alto o suficiente para cobrir o valor do pagamento, o PaymentIntent é efetivado imediatamente com um status de `succeeded`. Os clientes podem acumular um saldo quando acidentalmente pagam a mais por uma transação, o que é comum em transferências bancárias. Você deverá [reconciliar os saldos do cliente dentro de um determinado período com base na sua localização](https://docs.stripe.com/payments/customer-balance/reconciliation.md). #### Listar manualmente as formas de pagamento Para especificar manualmente formas de pagamento com a API, adicione `customer_balance` à lista de [tipos de forma de pagamento](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types) para sua PaymentIntent. Especifique o [id](https://docs.stripe.com/api/customers/object.md#customer_object-id) do cliente. #### EUA ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=us_bank_transfer" ``` Se o cliente já tiver um saldo alto o suficiente para cobrir o valor do pagamento, o PaymentIntent é efetivado imediatamente com um status de `succeeded`. Os clientes podem acumular um saldo quando acidentalmente pagam a mais por uma transação, o que é comum em transferências bancárias. Você deverá [reconciliar os saldos do cliente dentro de um determinado período com base na sua localização](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Use `bank_transfer` como o [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type) para especificar o que fazer quando o cliente não tem saldo suficiente para cobrir o valor do pagamento. - Use `us_bank_transfer` como o [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type) para especificar os tipos de transferência bancária que podem ser usados para financiar o pagamento. #### Reino Unido ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=gbp \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=gb_bank_transfer" ``` Se o cliente já tiver um saldo alto o suficiente para cobrir o valor do pagamento, o PaymentIntent é efetivado imediatamente com um status de `succeeded`. Os clientes podem acumular um saldo quando acidentalmente pagam a mais por uma transação, o que é comum em transferências bancárias. Você deverá [reconciliar os saldos do cliente dentro de um determinado período com base na sua localização](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Use `bank_transfer` como o [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type) para especificar o que fazer quando o cliente não tem saldo suficiente para cobrir o valor do pagamento. - Use `gb_bank_transfer` como o [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type) para especificar os tipos de transferência bancária que podem ser usados para financiar o pagamento. #### UE ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=eur \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=eu_bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][eu_bank_transfer][country]=FR" ``` Se o cliente já tiver um saldo alto o suficiente para cobrir o valor do pagamento, o PaymentIntent é efetivado imediatamente com um status de `succeeded`. Os clientes podem acumular um saldo quando acidentalmente pagam a mais por uma transação, o que é comum em transferências bancárias. Você deverá [reconciliar os saldos do cliente dentro de um determinado período com base na sua localização](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Use `bank_transfer` como o [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type) para especificar o que fazer quando o cliente não tem saldo suficiente para cobrir o valor do pagamento. - Use `eu_bank_transfer` como o [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type) para especificar os tipos de transferência bancária que podem ser usados para financiar o pagamento. - Defina [payment_method_options[customer_balance][bank_transfer][eu_bank_transfer][country]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-eu_bank_account-country) como um de . O IBAN exibido ao cliente está localizado no país que você escolheu. > A criação de números de contas bancárias virtuais localizados está indisponível na Espanha (ES). Use qualquer um dos outros países VBAN da UE. #### Japão ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=19000 \ -d currency=jpy \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=jp_bank_transfer" ``` Se o cliente já tiver um saldo alto o suficiente para cobrir o valor do pagamento, o PaymentIntent é efetivado imediatamente com um status de `succeeded`. Os clientes podem acumular um saldo quando acidentalmente pagam a mais por uma transação, o que é comum em transferências bancárias. Você deverá [reconciliar os saldos do cliente dentro de um determinado período com base na sua localização](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Use `bank_transfer` como o [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type) para especificar o que fazer quando o cliente não tem saldo suficiente para cobrir o valor do pagamento. - Use `jp_bank_transfer` como o [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type) para especificar os tipos de transferência bancária que podem ser usados para financiar o pagamento. #### México ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=mxn \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=mx_bank_transfer" ``` Se o cliente já tiver um saldo alto o suficiente para cobrir o valor do pagamento, o PaymentIntent é efetivado imediatamente com um status de `succeeded`. Os clientes podem acumular um saldo quando acidentalmente pagam a mais por uma transação, o que é comum em transferências bancárias. Você deverá [reconciliar os saldos do cliente dentro de um determinado período com base na sua localização](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Use `bank_transfer` como o [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type) para especificar o que fazer quando o cliente não tem saldo suficiente para cobrir o valor do pagamento. - Use `mx_bank_transfer` como o [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type) para especificar os tipos de transferência bancária que podem ser usados para financiar o pagamento. > Quando criar um pagamento, especifique sempre o `payment_method_types`. Não é possível usar `customer_balance` para [pagamentos futuros](https://docs.stripe.com/payments/save-and-reuse.md). ## Coletar dados de pagamento [Lado do cliente] Colete dados de pagamento no cliente com o [Payment Element](https://docs.stripe.com/payments/payment-element.md). O Payment Element é um componente de IU que simplifica a coleta de dados de pagamento para diversas formas de pagamento. O Payment Element contém um iframe que envia dados de pagamento com segurança à Stripe por uma conexão HTTPS. Evite colocar o Payment Element dentro de outro iframe porque algumas formas de pagamento exigem o redirecionamento para outra página para confirmação do pagamento. Se você optar por usar um iframe e quiser aceitar Apple Pay ou Google Pay, o iframe deve ter o atributo [permitir](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-allowpaymentrequest) definido como igual a `"pagamento *"`. O endereço da página de Checkout deve começar com `https://` rather em vez de `http://` for para que sua integração funcione corretamente. Você pode testar sua integração sem usar HTTPS, mas lembre-se de [habilitá-lo](https://docs.stripe.com/security/guide.md#tls) quando estiver pronto para aceitar pagamentos em tempo real. #### HTML + JS ### Configurar o Stripe.js O Payment Element está automaticamente disponível como um recurso do Stripe.js. Inclua o script Stripe.js em sua página de checkout adicionando-o ao `head` do arquivo HTML. Sempre carregue Stripe.js diretamente de js.stripe.com para manter a conformidade com PCI. Não inclua o script em um pacote nem hospede pessoalmente uma cópia dele. ```html Checkout ``` Crie uma instância de Stripe com o seguinte JavaScript em sua página de checkout: ```javascript // Set your publishable key: remember to change this to your live publishable key in production // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe('<>'); ``` ### Adicione o Element Pagamento à sua página de pagamentos O Payment Element precisa de um lugar para residir na sua página de pagamentos. Crie um node DOM vazio (contêiner) com um ID único no seu formulário de pagamento: ```html
``` Quando o formulário anterior for carregado, crie uma instância do Payment Element e monte-a no nó DOM do contêiner. Passe o [segredo do cliente](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) da etapa anterior em `options` quando criar a instância do [Elements](https://docs.stripe.com/js/elements_object/create): Administre cuidadosamente o segredo do cliente, pois ele pode finalizar a cobrança. Não registre em log, incorpore em URLs nem exponha esse segredo a ninguém, exceto para o próprio cliente. ```javascript const options = { clientSecret: '{{CLIENT_SECRET}}', // Fully customizable with appearance API. appearance: {/*...*/}, }; // Set up Stripe.js and Elements to use in checkout form, passing the client secret obtained in a previous stepconst elements = stripe.elements(options); // Create and mount the Payment Element const paymentElementOptions = { layout: 'accordion'}; const paymentElement = elements.create('payment', paymentElementOptions); paymentElement.mount('#payment-element'); ``` #### React ### Configurar o Stripe.js Instale o [React Stripe.js](https://www.npmjs.com/package/@stripe/react-stripe-js) e o [carregador Stripe.js](https://www.npmjs.com/package/@stripe/stripe-js) do registro público npm: ```bash npm install --save @stripe/react-stripe-js @stripe/stripe-js ``` ### Adicione e configure o provedor do Elements à sua página de pagamento Para usar o componente Payment Element, encapsule o componente da página de checkout em um [provedor do Elements](https://docs.stripe.com/sdks/stripejs-react.md#elements-provider). Chame `loadStripe` com sua chave publicável e passe a `Promise` retornada para o provedor `Elements`. Além disso, passe o [segredo do cliente](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) da etapa anterior como `options` ao fornecedor do `Elements`. ```jsx import React from 'react'; import ReactDOM from 'react-dom'; import {Elements} from '@stripe/react-stripe-js'; import {loadStripe} from '@stripe/stripe-js'; import CheckoutForm from './CheckoutForm'; // Make sure to call `loadStripe` outside of a component’s render to avoid // recreating the `Stripe` object on every render. const stripePromise = loadStripe('<>'); function App() { const options = { // passing the client secret obtained in step 3 clientSecret: '{{CLIENT_SECRET}}', // Fully customizable with appearance API. appearance: {/*...*/}, }; return ( ); }; ReactDOM.render(, document.getElementById('root')); ``` ### Adicione o componente do Element Pagamento Use o componente `PaymentElement` para criar seu formulário: ```jsx import React from 'react'; import {PaymentElement} from '@stripe/react-stripe-js'; const CheckoutForm = () => { return (
); }; export default CheckoutForm; ``` O Stripe Elements é uma coleção de componentes drop-in de IU. Para personalizar ainda mais o formulário ou coletar outros dados do cliente, consulte a [documentação do Elements](https://docs.stripe.com/payments/elements.md). O Payment Element renderiza um formulário dinâmico que permite ao cliente escolher uma forma de pagamento. Para cada forma de pagamento, o formulário solicita automaticamente que o cliente preencha todos os dados de pagamento necessários. ### Personalizar a aparência Personalize o Payment Element para corresponder ao design do seu site, passando o [objeto appearance](https://docs.stripe.com/js/elements_object/create#stripe_elements-options-appearance) para `options` ao criar o provedor do `Elements`. ### Solicitar endereços Por padrão, o Payment Element só recolhe os detalhes necessários do endereço de faturamento. Alguns comportamentos, como [calcular impostos](https://docs.stripe.com/api/tax/calculations/create.md) ou inserir detalhes de entrega, exigem o endereço completo do cliente. Você pode: - Use o [Address Element](https://docs.stripe.com/elements/address-element.md) para aproveitar os recursos de autocompletar e traduzir para recolher o endereço completo do cliente. Isso ajuda a garantir um cálculo tributário mais preciso. - Obtenha os detalhes do endereço usando seu próprio formulário personalizado. Na confirmação, a Stripe automaticamente abre um modal para exibir os detalhes da transferência bancária para o seu cliente. ## Enviar pagamento para a Stripe [Lado do cliente] Use [stripe.confirmPayment](https://docs.stripe.com/js/payment_intents/confirm_payment) para concluir o pagamento utilizando os detalhes do Payment Element. Forneça um [return_url](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-return_url) a essa função para indicar para onde a Stripe deve redirecionar o usuário após a conclusão do pagamento. Seu usuário pode ser redirecionado primeiro para um site intermediário, como uma página de autorização bancária, antes de ser redirecionado para o `return_url`. Os pagamentos com cartão são redirecionados imediatamente para o `return_url` quando um pagamento é finalizado. Se não quiser redirecionar pagamentos com cartão após a conclusão do pagamento, defina [redirecionar](https://docs.stripe.com/js/payment_intents/confirm_payment#confirm_payment_intent-options-redirect) como `if_required`. Isso somente redireciona os clientes que fazem checkout com formas de pagamento baseadas em redirecionamento. #### HTML + JS ```javascript const form = document.getElementById('payment-form'); form.addEventListener('submit', async (event) => { event.preventDefault(); const {error} = await stripe.confirmPayment({ //`Elements` instance that was used to create the Payment Element elements, confirmParams: { return_url: 'https://example.com/order/123/complete', }, }); if (error) { // This point will only be reached if there is an immediate error when // confirming the payment. Show error to your customer (for example, payment // details incomplete) const messageContainer = document.querySelector('#error-message'); messageContainer.textContent = error.message; } else { // Your customer will be redirected to your `return_url`. For some payment // methods like iDEAL, your customer will be redirected to an intermediate // site first to authorize the payment, then redirected to the `return_url`. } }); ``` #### React Para chamar [stripe.confirmPayment](https://docs.stripe.com/js/payment_intents/confirm_payment) do seu componente de formulário de pagamento, use os hooks [useStripe](https://docs.stripe.com/sdks/stripejs-react.md#usestripe-hook) e [useElements](https://docs.stripe.com/sdks/stripejs-react.md#useelements-hook). Se preferir componentes de classe tradicionais em vez de hooks, use um [ElementsConsumer](https://docs.stripe.com/sdks/stripejs-react.md#elements-consumer). ```jsx import React, {useState} from 'react'; import {useStripe, useElements, PaymentElement} from '@stripe/react-stripe-js'; const CheckoutForm = () => { const stripe = useStripe(); const elements = useElements(); const [errorMessage, setErrorMessage] = useState(null); const handleSubmit = async (event) => { // We don't want to let default form submission happen here, // which would refresh the page. event.preventDefault(); if (!stripe || !elements) { // Stripe.js hasn't yet loaded. // Make sure to disable form submission until Stripe.js has loaded. return; } const {error} = await stripe.confirmPayment({ //`Elements` instance that was used to create the Payment Element elements, confirmParams: { return_url: 'https://example.com/order/123/complete', }, }); if (error) { // This point will only be reached if there is an immediate error when // confirming the payment. Show error to your customer (for example, payment // details incomplete) setErrorMessage(error.message); } else { // Your customer will be redirected to your `return_url`. For some payment // methods like iDEAL, your customer will be redirected to an intermediate // site first to authorize the payment, then redirected to the `return_url`. } }; return (
{/* Show error message to your customers */} {errorMessage &&
{errorMessage}
} ); }; export default CheckoutForm; ``` Verifique se o `return_url` corresponde a uma página no seu site que fornece o status do pagamento. Quando a Stripe redireciona o cliente para o `return_url`, nós fornecemos os seguintes parâmetros de consulta de URL: | Parâmetro | Descrição | | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent` | O identificador único do `PaymentIntent`. | | `payment_intent_client_secret` | O [segredo do cliente](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) do objeto `PaymentIntent`. | > Se você tiver ferramentas que rastreiam a sessão do cliente no navegador, pode ser necessário adicionar o domínio `stripe.com` à lista de exclusão de referenciadores. Os redirecionamentos fazem com que algumas ferramentas criem novas sessões, o que impede que você rastreie a sessão completa. Use um dos parâmetros de consulta para recuperar o PaymentIntent. Inspecione o [status do PaymentIntent](https://docs.stripe.com/payments/paymentintents/lifecycle.md) para decidir o que mostrar aos clientes. Você também pode anexar seus próprios parâmetros de consulta ao fornecer o `return_url`, que persiste durante o processo de redirecionamento. #### HTML + JS ```javascript // Initialize Stripe.js using your publishable key const stripe = Stripe('<>'); // Retrieve the "payment_intent_client_secret" query parameter appended to // your return_url by Stripe.js const clientSecret = new URLSearchParams(window.location.search).get( 'payment_intent_client_secret' ); // Retrieve the PaymentIntent stripe.retrievePaymentIntent(clientSecret).then(({paymentIntent}) => { const message = document.querySelector('#message') // Inspect the PaymentIntent `status` to indicate the status of the payment // to your customer. // // Some payment methods will [immediately succeed or fail][0] upon // confirmation, while others will first enter a `processing` state. // // [0]: https://stripe.com/docs/payments/payment-methods#payment-notification switch (paymentIntent.status) { case 'succeeded': message.innerText = 'Success! Payment received.'; break; case 'processing': message.innerText = "Payment processing. We'll update you when payment is received."; break; case 'requires_payment_method': message.innerText = 'Payment failed. Please try another payment method.'; // Redirect your user back to your payment page to attempt collecting // payment again break; default: message.innerText = 'Something went wrong.'; break; } }); ``` #### React ```jsx import React, {useState, useEffect} from 'react'; import {useStripe} from '@stripe/react-stripe-js'; const PaymentStatus = () => { const stripe = useStripe(); const [message, setMessage] = useState(null); useEffect(() => { if (!stripe) { return; } // Retrieve the "payment_intent_client_secret" query parameter appended to // your return_url by Stripe.js const clientSecret = new URLSearchParams(window.location.search).get( 'payment_intent_client_secret' ); // Retrieve the PaymentIntent stripe .retrievePaymentIntent(clientSecret) .then(({paymentIntent}) => { // Inspect the PaymentIntent `status` to indicate the status of the payment // to your customer. // // Some payment methods will [immediately succeed or fail][0] upon // confirmation, while others will first enter a `processing` state. // // [0]: https://stripe.com/docs/payments/payment-methods#payment-notification switch (paymentIntent.status) { case 'succeeded': setMessage('Success! Payment received.'); break; case 'processing': setMessage("Payment processing. We'll update you when payment is received."); break; case 'requires_payment_method': // Redirect your user back to your payment page to attempt collecting // payment again setMessage('Payment failed. Please try another payment method.'); break; default: setMessage('Something went wrong.'); break; } }); }, [stripe]); return message; }; export default PaymentStatus; ``` ## Optional: Enviar e-mails de instruções de pagamento Você pode habilitar e-mails de instruções de pagamento de Transferência bancária do [Dashboard](https://dashboard.stripe.com/settings/emails). Após ativar os e-mails de instruções de pagamento, a Stripe envia um e-mail ao seu cliente quando: - Um PaymentIntent é confirmado, mas o cliente não tem saldo suficiente. - O cliente envia uma transferência bancária, mas não tem fundos suficientes para concluir os pagamentos pendentes. Um e-mail de instruções de pagamento de transferência bancária contém o valor devido, os dados do banco para transferir fundos e um link para a página de instruções hospedada da Stripe. > Em uma área restrita, os e-mails com instruções de pagamento só são enviados para endereços de e-mail vinculados à conta Stripe. ## Confirme se o PaymentIntent foi bem-sucedido O status do PaymentIntent permanece `requires_action` até o recebimento dos fundos na conta bancária. Quando os fundos ficam disponíveis, o status do PaymentIntent muda de `requires_action` para `succeeded`. O endpoint de *webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) precisa estar configurado para começar a receber o evento `payment_intent.partially_funded`. Quando o PaymentIntent é parcialmente financiado, o status continua sendo `requires_action`. Você pode [adicionar um webhook no Dashboard](https://dashboard.stripe.com/webhooks/create). Como alternativa, use a [API Webhook Endpoints](https://docs.stripe.com/api/webhook_endpoints.md) para começar a receber o evento [payment_intent.partially_funded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.partially_funded). > O [Stripe CLI](https://docs.stripe.com/stripe-cli.md) não aceita o acionamento de eventos da versão beta API, como `payment_intent.partially_funded`. Os eventos a seguir são enviados durante o fluxo de fundos do pagamento quando o status do PaymentIntent é atualizado. | Evento | Descrição | Próximas etapas | | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `payment_intent.requires_action` | Enviado durante a confirmação quando o saldo do cliente é insuficiente para reconciliar o PaymentIntent. O status do PaymentIntent muda para `requires_action`. | Oriente o cliente a enviar uma transferência bancária com o valor de `amount_remaining`. | | `payment_intent.partially_funded` | O cliente enviou uma transferência bancária que foi aplicada ao PaymentIntent, mas não foi suficiente para finalizar o pagamento. Isso pode ocorrer quando o cliente transfere um valor insuficiente (por engano ou dedução de tarifas pelo banco) ou quando um saldo remanescente do cliente é aplicado a esse PaymentIntent. PaymentIntents com fundos parciais não são refletidos no saldo da conta até que o pagamento seja finalizado. | Oriente o cliente a enviar outra transferência bancária com o novo `amount_remaining` para finalizar o pagamento. Se quiser concluir o pagamento com os fundos parciais, atualize `amount` e [confirme](https://docs.stripe.com/api/payment_intents/confirm.md) o PaymentIntent novamente. | | `payment_intent.succeeded` | O pagamento do cliente foi confirmado. | Execute o pedido de mercadorias ou serviços do cliente. | > Quando você altera o valor de um PaymentIntent parcialmente financiado, os fundos são devolvidos ao saldo do cliente. Se houver outros PaymentIntents abertos, a Stripe os financia automaticamente. Se houver outros PaymentIntents abertos, a Stripe os financia automaticamente. Se o cliente estiver configurado para reconciliação manual, você precisará [aplicar os fundos](https://docs.stripe.com/api/payment_intents/apply_customer_balance.md) novamente. Recomendamos [usar webhooks](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks) para confirmar que a cobrança foi bem-sucedida e notificar o cliente de que o pagamento está concluído. ### Exemplo de código #### Ruby ```ruby require 'json' # Using Sinatra post '/webhook' do payload = request.body.read event = nil begin event = Stripe::Event.construct_from( JSON.parse(payload, symbolize_names: true) ) rescue JSON::ParserError => e # Invalid payload status 400 return end # Handle the event case event.type when 'payment_intent.requires_action' payment_intent = event.data.object # contains a Stripe::PaymentIntent # The payment intent was not fully funded due to insufficient funds # on the customer balance. Define and call a method to handle the payment intent. # handle_payment_intent_requires_action(payment_intent) when 'payment_intent.partially_funded' payment_intent = event.data.object # contains a Stripe::PaymentIntent # Then define and call a method to handle the payment intent being partially funded. # handle_payment_intent_partially_funded(payment_intent) when 'payment_intent.succeeded' payment_intent = event.data.object # contains a Stripe::PaymentIntent # Then define and call a method to handle the successful payment intent. # handle_payment_intent_succeeded(payment_intent) else puts "Unhandled event type: #{event.type}" end status 200 end ``` ### Ver pagamentos pendentes no Dashboard Para ver todos os PaymentIntents de transferências bancárias pendentes no [Dashboard](https://dashboard.stripe.com/payments), aplique o filtro **Aguardando fundos** ao **Status**. ## Teste sua integração Teste a integração simulando o recebimento de uma transferência bancária na API, no Dashboard ou usando uma versão beta da Stripe CLI. #### Dashboard Para simular uma transferência bancária usando o Dashboard 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), vá para a página do cliente no Dashboard. Em **Formas de pagamento**, clique em **Adicionar** e selecione **Fundir saldo de caixa (somente teste)**. #### API Para simular uma transferência bancária usando a API: #### EUA ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="REF-4242" \ -d "amount"="1000" \ -d "currency"="usd" ``` #### Reino Unido ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="REF-4242" \ -d "amount"="1000" \ -d "currency"="gbp" ``` #### UE ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="REF-4242" \ -d "amount"="1000" \ -d "currency"="eur" ``` #### Japão ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "amount"="1000" \ -d "currency"="jpy" ``` #### México ```bash curl https://api.stripe.com/v1/test_helpers/customers/{{CUSTOMER_ID}}/fund_cash_balance \ -X POST \ -u <>: \ -d "reference"="123456" \ -d "amount"="1000" \ -d "currency"="mxn" ``` #### Stripe CLI Para simular uma transferência bancária com o Stripe CLI: 1. [Instale o Stripe CLI](https://docs.stripe.com/stripe-cli.md). 1. Faça login no CLI usando a mesma conta com a qual você se conectou ao Stripe Dashboard. ```bash stripe login ``` 1. Simule o recebimento de uma transferência bancária de um cliente existente. #### EUA ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=DVGBG97TZ6ZV \ --currency=usd ``` O parâmetro `reference` é opcional e simula o valor que o cliente preencheu para o campo de referência da transferência bancária. #### Reino Unido ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=DVGBG97TZ6ZV \ --currency=gbp ``` O parâmetro `reference` é opcional e simula o valor que o cliente preencheu para o campo de referência da transferência bancária. #### UE ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=DVGBG97TZ6ZV \ --currency=eur ``` O parâmetro `reference` é opcional e simula o valor que o cliente preencheu para o campo de referência da transferência bancária. #### Japão ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1000 \ --currency=jpy ``` #### México ```bash stripe test_helpers customers fund_cash_balance "{{CUSTOMER_ID}}" \ --amount=1099 \ --reference=123456 \ --currency=mxn ``` O parâmetro `reference` é opcional e simula o valor que o cliente preencheu para o campo de referência da transferência bancária. ## Gerenciar problemas temporários de disponibilidade Os seguintes códigos de erro indicam problemas temporários com a disponibilidade da forma de pagamento: | Código | Descrição | Tratamento | | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_method_rate_limit_exceeded` | Foram realizadas solicitações em excesso em sequência para esta forma de pagamento, que tem limites mais rígidos do que as [limitações de fluxo em toda a API](https://docs.stripe.com/rate-limits.md). | Esses erros podem persistir para várias solicitações de API quando muitos dos seus clientes tentam usar a mesma forma de pagamento, como durante uma venda em andamento no seu site. Nesse caso, peça para seus clientes escolherem uma forma de pagamento diferente. | > Se você prevê um uso intenso em geral ou devido a um evento que está por vir, entre em contato conosco assim que tiver conhecimento. # API Direct > This is a API Direct for when payment-ui is direct-api. View the full page at https://docs.stripe.com/payments/bank-transfers/accept-a-payment?payment-ui=direct-api. ## Configure a Stripe [Lado do servidor] Primeiro, você precisa de uma conta Stripe. [Inscreva-se agora](https://dashboard.stripe.com/register). Use nossas bibliotecas oficiais para acessar a API da Stripe no seu aplicativo: #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## Crie ou recupere um Customer [Lado do servidor] É necessário associar um objeto [Customer](https://docs.stripe.com/api/customers.md) para reconciliar o pagamento de cada transferência bancária. Se você tiver um objeto Customer existente, ignore essa etapa. Caso contrário, crie um objeto Customer. ```curl curl -X POST https://api.stripe.com/v1/customers \ -u "<>:" ``` ## Crie e confirme um PaymentIntent [Lado do servidor] Um [PaymentIntent](https://docs.stripe.com/api/payment_intents/object.md) é um objeto que representa sua intenção de receber pagamento de um cliente e acompanha o ciclo de vida do processo de pagamento durante cada etapa. Crie e confirme um PaymentIntent no servidor, especificando o valor e a moeda que você deseja receber. Você também precisa preencher o [parâmetro customer](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-customer) da solicitação de criação de PaymentIntent. Sem esse parâmetro, as transferências bancárias não estão disponíveis no PaymentIntents. #### Gerenciar formas de pagamento no Dashboard Antes de criar um Payment Intent, ative **Transferência bancária** na página de [configurações de formas de pagamento](https://dashboard.stripe.com/settings/payment_methods) do Dashboard. > Com as [formas de pagamento dinâmicas](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md), a Stripe gerencia o retorno de formas de pagamento qualificadas com base em fatores como valor, moeda e fluxo de pagamento da transação. #### EUA ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=usd \ -d "automatic_payment_methods[enabled]=true" \ --data-urlencode "return_url=https://example.com/return_url" \ -d "payment_method_data[type]=customer_balance" \ -d confirm=true ``` #### Reino Unido ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=gbp \ -d "automatic_payment_methods[enabled]=true" \ --data-urlencode "return_url=https://example.com/return_url" \ -d "payment_method_data[type]=customer_balance" \ -d confirm=true ``` #### UE ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=eur \ -d "automatic_payment_methods[enabled]=true" \ --data-urlencode "return_url=https://example.com/return_url" \ -d "payment_method_data[type]=customer_balance" \ -d confirm=true ``` Para localizar o IBAN exibido ao cliente, você pode configurar o país do Cliente definindo a propriedade [`address.country`](https://docs.stripe.com/api/customers/object.md#customer_object-address-country) ou [editando o Cliente no Dashboard](https://docs.stripe.com/invoicing/customer.md#edit-a-customer). Aceitamos a localização do IBAN de : - Se não tiver configurado um país para o seu cliente ou se o país dele não aceitar localização por IBAN, usaremos o país da sua conta Stripe. - Se a localização do IBAN não for aceita para o país da sua conta Stripe, usaremos `IE`. > A criação de números de contas bancárias virtuais localizados está indisponível na Espanha (ES). Use qualquer um dos outros países VBAN da UE. #### Japão ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=19000 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=jpy \ -d "automatic_payment_methods[enabled]=true" \ --data-urlencode "return_url=https://example.com/return_url" \ -d "payment_method_data[type]=customer_balance" \ -d confirm=true ``` #### México ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d "customer={{CUSTOMER_ID}}" \ -d currency=mxn \ -d "automatic_payment_methods[enabled]=true" \ --data-urlencode "return_url=https://example.com/return_url" \ -d "payment_method_data[type]=customer_balance" \ -d confirm=true ``` Na versão mais recente da API, especificar o parâmetro `automatic_payment_methods` é opcional porque a Stripe habilita sua funcionalidade por padrão. Se o cliente já tiver um saldo alto o suficiente para cobrir o valor do pagamento, o PaymentIntent é efetivado imediatamente com um status de `succeeded`. Os clientes podem acumular um saldo quando acidentalmente pagam a mais por uma transação, o que é comum em transferências bancárias. Você deverá [reconciliar os saldos do cliente dentro de um determinado período com base na sua localização](https://docs.stripe.com/payments/customer-balance/reconciliation.md). #### Listar manualmente as formas de pagamento Para especificar manualmente formas de pagamento com a API, adicione `customer_balance` à lista de [tipos de forma de pagamento](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types) para sua PaymentIntent. Especifique o [id](https://docs.stripe.com/api/customers/object.md#customer_object-id) do cliente. #### EUA ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_data[type]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=us_bank_transfer" \ -d confirm=true ``` Se o cliente já tiver um saldo alto o suficiente para cobrir o valor do pagamento, o PaymentIntent é efetivado imediatamente com um status de `succeeded`. Os clientes podem acumular um saldo quando acidentalmente pagam a mais por uma transação, o que é comum em transferências bancárias. Você deverá [reconciliar os saldos do cliente dentro de um determinado período com base na sua localização](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Use `bank_transfer` como o [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type) para especificar o que fazer quando o cliente não tem saldo suficiente para cobrir o valor do pagamento. - Use `us_bank_transfer` como o [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type) para especificar os tipos de transferência bancária que podem ser usados para financiar o pagamento. #### Reino Unido ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=gbp \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_data[type]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=gb_bank_transfer" \ -d confirm=true ``` Se o cliente já tiver um saldo alto o suficiente para cobrir o valor do pagamento, o PaymentIntent é efetivado imediatamente com um status de `succeeded`. Os clientes podem acumular um saldo quando acidentalmente pagam a mais por uma transação, o que é comum em transferências bancárias. Você deverá [reconciliar os saldos do cliente dentro de um determinado período com base na sua localização](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Use `bank_transfer` como o [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type) para especificar o que fazer quando o cliente não tem saldo suficiente para cobrir o valor do pagamento. - Use `gb_bank_transfer` como o [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type) para especificar os tipos de transferência bancária que podem ser usados para financiar o pagamento. #### UE ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=eur \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_data[type]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=eu_bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][eu_bank_transfer][country]=FR" \ -d confirm=true ``` Se o cliente já tiver um saldo alto o suficiente para cobrir o valor do pagamento, o PaymentIntent é efetivado imediatamente com um status de `succeeded`. Os clientes podem acumular um saldo quando acidentalmente pagam a mais por uma transação, o que é comum em transferências bancárias. Você deverá [reconciliar os saldos do cliente dentro de um determinado período com base na sua localização](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Use `bank_transfer` como o [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type) para especificar o que fazer quando o cliente não tem saldo suficiente para cobrir o valor do pagamento. - Use `eu_bank_transfer` como o [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type) para especificar os tipos de transferência bancária que podem ser usados para financiar o pagamento. - Defina [payment_method_options[customer_balance][bank_transfer][eu_bank_transfer][country]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-eu_bank_account-country) como um de . O IBAN exibido ao cliente está localizado no país que você escolheu. > A criação de números de contas bancárias virtuais localizados está indisponível na Espanha (ES). Use qualquer um dos outros países VBAN da UE. #### Japão ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=19000 \ -d currency=jpy \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_data[type]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=jp_bank_transfer" \ -d confirm=true ``` Se o cliente já tiver um saldo alto o suficiente para cobrir o valor do pagamento, o PaymentIntent é efetivado imediatamente com um status de `succeeded`. Os clientes podem acumular um saldo quando acidentalmente pagam a mais por uma transação, o que é comum em transferências bancárias. Você deverá [reconciliar os saldos do cliente dentro de um determinado período com base na sua localização](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Use `bank_transfer` como o [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type) para especificar o que fazer quando o cliente não tem saldo suficiente para cobrir o valor do pagamento. - Use `jp_bank_transfer` como o [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type) para especificar os tipos de transferência bancária que podem ser usados para financiar o pagamento. #### México ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=mxn \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=customer_balance" \ -d "payment_method_data[type]=customer_balance" \ -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \ -d "payment_method_options[customer_balance][bank_transfer][type]=mx_bank_transfer" \ -d confirm=true ``` Se o cliente já tiver um saldo alto o suficiente para cobrir o valor do pagamento, o PaymentIntent é efetivado imediatamente com um status de `succeeded`. Os clientes podem acumular um saldo quando acidentalmente pagam a mais por uma transação, o que é comum em transferências bancárias. Você deverá [reconciliar os saldos do cliente dentro de um determinado período com base na sua localização](https://docs.stripe.com/payments/customer-balance/reconciliation.md). - Use `bank_transfer` como o [funding_type](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-funding_type) para especificar o que fazer quando o cliente não tem saldo suficiente para cobrir o valor do pagamento. - Use `mx_bank_transfer` como o [bank_transfer[type]](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-type) para especificar os tipos de transferência bancária que podem ser usados para financiar o pagamento. > Quando criar um pagamento, especifique sempre o `payment_method_types`. Não é possível usar `customer_balance` para [pagamentos futuros](https://docs.stripe.com/payments/save-and-reuse.md). ## Oriente o cliente a finalizar uma transferência bancária [Lado do cliente] Se o saldo do cliente não for alto o suficiente para cobrir o valor da solicitação, o PaymentIntent mostrará o status `requires_action`. A resposta tem um campo `next_action` com o valor de `type` de `display_bank_transfer_instructions`. O hash `next_action[display_bank_transfer_instructions]` contém informações a serem exibidas ao cliente para que ele finalize a transferência bancária. Para assegurar a liquidação de fundos, instrua seus clientes a usar os dados exatamente como foram fornecidos, especialmente o nome e o número da conta, se houver. > No *modo de produção* (Use this mode when you’re ready to launch your app. Card networks or payment providers process payments), a Stripe fornece a cada cliente um conjunto único de dados de transferência bancária. Por outro lado, a Stripe oferece dados de transferência bancária inválidos a todos os clientes em ambientes de teste. Ao contrário do modo de produção, esses dados inválidos podem não ser únicos. #### EUA | Campo | Descrição | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-type) | O tipo de transferência bancária que você usa. O tipo deve ser `us_bank_transfer` nos EUA. | | [reference](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-reference) | Um código de referência exclusivo para identificar a transferência bancária. Instrua seu cliente a incluir esse código no campo de referência da transferência bancária. | | [amount_remaining](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-amount_remaining) | O valor restante que precisa ser transferido para concluir o pagamento. Instrua seu cliente a transferir esse valor. Ele pode ser diferente do valor do PaymentIntent se fundos preexistentes no saldo do cliente tiverem sido aplicados ao PaymentIntent ou se o seu cliente tiver pago a menos. | | [currency](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-currency) | A moeda para o valor restante. | | [financial_addresses](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions) | Lista de endereços financeiros para contas bancárias dos EUA. Os tipos incluem `aba` e `swift`. Confira os detalhes abaixo. | | [hosted_instructions_url](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-hosted_instructions_url) | Um link para uma página hospedada que orienta seu cliente durante a transferência. | #### hash de aba Exemplo de um hash `aba`: ```json { "aba": { "account_number": "111222333444", "bank_name": "Wells Fargo Bank, NA", "routing_number": "444555666" }, "supported_networks": [ "ach", "domestic_wire_us" ], "type": "aba" } ``` | Campo | Valores | Descrição | | -------------------- | ------------------------------ | ------------------------------------------- | | `type` | `aba` | O tipo de endereço financeiro. | | `supported_networks` | - `ach` - `domestic_wire_us` | A lista de redes aceitas por este endereço. | | `aba.account_number` | 111222333444 | O número da conta ABA. | | `aba.routing_number` | 444555666 | O número routing ABA. | | `aba.bank_name` | Wells Fargo Bank, NA | O nome do banco. | #### hash de swift Exemplo de um hash `swift`: ```json { "swift": { "account_number": "111222333444", "bank_name": "Wells Fargo Bank, NA", "swift_code": "AAAA-BB-CC-123" }, "supported_networks": [ "swift" ], "type": "swift" } ``` | Campo | Valores | Descrição | | ---------------------- | -------------------- | ------------------------------------------- | | `type` | `swift` | O tipo de endereço financeiro. | | `supported_networks` | - `swift` | A lista de redes aceitas por este endereço. | | `swift.account_number` | 111222333444 | O número da conta SWIFT. | | `swift.swift_code` | AAAA-BB-CC-123 | O código SWIFT. | | `swift.bank_name` | Wells Fargo Bank, NA | O nome do banco. | #### Cronograma de liquidação de fundos Após instruir o cliente a iniciar uma transferência com o banco usando as informações fornecidas por você, pode demorar até 5 dias para a transferência ser concluída. O cronograma de liquidação de fundos depende dos sistemas bancários pelos quais a transferência chegou à Stripe: - Transferências ACH chegam entre 1 e 3 dias úteis. - As transferências bancárias nacionais (Fedwire) chegam no mesmo dia (dependendo se a transferência é enviada antes do horário limite do banco). - Transferências internacionais (SWIFT) chegam entre 1 e 5 dias úteis. #### Reino Unido | Campo | Descrição | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-type) | O tipo de transferência bancária que você usa. O tipo deve ser `gb_bank_transfer` no Reino Unido. | | [reference](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-reference) | Um código de referência exclusivo para identificar a transferência bancária. Instrua seu cliente a incluir esse código no campo de referência da transferência bancária. | | [amount_remaining](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-amount_remaining) | O valor restante que precisa ser transferido para concluir o pagamento. Instrua seu cliente a transferir esse valor. Ele pode ser diferente do valor do PaymentIntent se fundos preexistentes no saldo do cliente tiverem sido aplicados ao PaymentIntent ou se o seu cliente tiver pago a menos. | | [currency](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-currency) | A moeda para o valor restante. | | [financial_addresses](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions) | Lista de endereços financeiros para contas bancárias do Reino Unido. Os tipos incluem um `sort_code`. Confira os detalhes abaixo. | | [hosted_instructions_url](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-hosted_instructions_url) | Um link para uma página hospedada que orienta seu cliente durante a transferência. | ### hash de sort_code Exemplo de um hash `sort_code`: ```json { "sort_code": { "account_holder_name": "Demo Test Inc.", "account_number": "98765432", "sort_code": "200000" }, "supported_networks": [ "bacs", "fps" ], "type": "sort_code" } ``` | Campo | Valores | Descrição | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ----------------------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-type) | `sort_code` | O tipo de endereço financeiro. | | [supported_networks](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-supported_networks) | - `bacs` - `fps` | A lista de redes aceitas por este endereço. | | [sort_code.account_number](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-sort_code-account_number) | 98765432 | O número da conta de 8 dígitos. | | [sort_code.sort_code](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-sort_code-sort_code) | 200000 | O sort code de 6 dígitos. | | [sort_code.account_holder_name](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-sort_code-account_holder_name) | Demo Test Inc. | O nome da pessoa ou empresa proprietária da conta bancária. | #### Cronograma de liquidação de fundos Após instruir o cliente a iniciar uma transferência com o banco usando as informações fornecidas por você, pode demorar até 5 dias para a transferência ser concluída. O cronograma de liquidação de fundos depende dos sistemas bancários pelos quais a transferência chegou à Stripe: - As transferências FPS chegam em 15 minutos. - As transferências BACS chegam dentro de 5 dias. > Transferências bancárias enviadas pela rede de pagamentos [CHAPS](https://www.bankofengland.co.uk/payment-and-settlement/chaps) não são aceitas. #### UE | Campo | Descrição | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-type) | O tipo de transferência bancária que você usa. O tipo deve ser `eu_bank_transfer`na UE. | | [reference](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-reference) | Um código de referência exclusivo para identificar a transferência bancária. Instrua seu cliente a incluir esse código no campo de referência da transferência bancária. | | [amount_remaining](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-amount_remaining) | O valor restante que precisa ser transferido para concluir o pagamento. Instrua seu cliente a transferir esse valor. Ele pode ser diferente do valor do PaymentIntent se fundos preexistentes no saldo do cliente tiverem sido aplicados ao PaymentIntent ou se o seu cliente tiver pago a menos. | | [currency](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-currency) | A moeda para o valor restante. | | [financial_addresses](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions) | Lista de endereços financeiros para contas bancárias da UE. Os tipos incluem `iban`. Veja os detalhes abaixo. | | [hosted_instructions_url](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-hosted_instructions_url) | Um link para uma página hospedada que orienta seu cliente durante a transferência. | ### hash de iban Exemplo de hash`iban`: ```json { "iban": { "account_holder_name": "Demo Test Inc.", "bic": "CITINL2XXXX", "country": "NL", "iban": "NL40CITI7000799556 " }, "supported_networks": [ "sepa" ], "type": "iban" } ``` | Campo | Valores | Descrição | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-type) | `iban` | O tipo de endereço financeiro. | | [supported_networks](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-supported_networks) | - `sepa` | A lista de redes aceitas por este endereço. | | [iban.iban](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-iban-iban) | NL40CITI7000799556 | O IBAN pelo qual o cliente deve pagar. Se você estiver gerenciando formas de pagamento no [Dashboard](https://dashboard.stripe.com/settings/payment_methods), o país do IBAN é selecionado de acordo com o cliente [país](https://docs.stripe.com/api/customers/object.md#customer_object-country) ou o país da sua conta Stripe. Se você estiver listando formas de pagamento manualmente usando o parâmetro [payment_method_types](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types), o país do IBAN é selecionado com base no parâmetro [país](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-customer_balance-bank_transfer-eu_bank_transfer-country) passado na solicitação. | | [iban.bic](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-iban-bic) | CITINL2XXXX | O BIC para este IBAN. | | [iban.country](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-iban-country) | `NL` | O código de duas letras do país da conta bancária para a qual será feita a transferência. | | [iban.account_holder_name](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-iban-account_holder_name) | Demo Test Inc. | O nome da pessoa ou empresa proprietária da conta bancária. | #### Cronograma de liquidação de fundos Para transferências nacionais, peça para o cliente iniciar uma transferência SEPA Instantânea (quando disponível) usando os dados que você fornecer. Os fundos costumam ser creditados em segundos e chegam em até 30 minutos. A liquidação de fundos pode demorar mais em fins de semana, feriados bancários ou se o banco do remetente não puder direcionar o pagamento pelo sistema Instantâneo. Nesses casos, a transferência é processada como um pagamento SEPA padrão. > A aceitação de transferências internacionais em EUR está em preview. Para se qualificar para acesso antecipado, entre em contato com [sepa-bank-transfers-beta@stripe.com](mailto:sepa-bank-transfers-beta@stripe.com). #### Japão | Campo | Descrição | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-type) | O tipo de transferência bancária que você usa. O tipo deve ser `jp_bank_transfer` no Japão. | | [reference](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-reference) | Este campo não é usado. | | [amount_remaining](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-amount_remaining) | O valor restante que precisa ser transferido para concluir o pagamento. Instrua seu cliente a transferir esse valor. Ele pode ser diferente do valor do PaymentIntent se fundos preexistentes no saldo do cliente tiverem sido aplicados ao PaymentIntent ou se o seu cliente tiver pago a menos. | | [currency](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-currency) | A moeda para o valor restante. | | [financial_addresses](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses) | Lista de endereços financeiros para contas bancárias do JP. Os tipos incluem um `zengin`. Confira os detalhes abaixo. | | [hosted_instructions_url](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-hosted_instructions_url) | Um link para uma página hospedada que orienta seu cliente durante a transferência. | ### hash de zengin Exemplo de um hash `zengin`: ```json { "zengin": { "account_holder_name": "ストライプジャパン(カ シュウノウダイコウ", "account_number": "1234567", "account_type": "futsu", "bank_code": "0009", "bank_name": "三井住友銀行", "branch_code": "950", "branch_name": "東京第二" }, "supported_networks": [ "zengin" ], "type": "zengin" } ``` | Campo | Valores | Descrição | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- | ------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-type) | `zengin` | O tipo de endereço financeiro. | | [supported_networks](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-supported_networks) | - `zengin` | A lista de redes aceitas por este endereço. | | [zengin.bank_code](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-zengin-bank_code) | 0009 | O código do banco de 4 dígitos. | | [zengin.bank_name](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-zengin-bank_name) | 三井住友銀行 | O nome do banco. | | [zengin.branch_code](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-zengin-branch_code) | 950 | O código de 3 dígitos da agência. | | [zengin.branch_name](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-zengin-branch_name) | 東京第二 | O nome da agência. | | [zengin.account_type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-zengin-account_type) | `futsu`, `toza` | O tipo de conta. | | [zengin.account_holder_name](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-zengin-account_holder_name) | ストライプジャパン(カ シュウノウダイコウ | O nome do titular da conta. | | [zengin.account_number](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-zengin-account_number) | 1234567 | O número da conta de 7 dígitos. | #### Cronograma de liquidação de fundos Instrua o cliente a iniciar uma transferência no banco usando os dados informados por você. Traslados feitos em horário comercial chegam no mesmo dia. Transferências feitas fora do horário comercial chegam no próximo dia útil. #### México | Campo | Descrição | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-type) | O tipo de transferência bancária que você usa. O tipo deve ser `mx_bank_transfer` no México. | | [reference](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-reference) | Um código de referência exclusivo para identificar a transferência bancária. Instrua seu cliente a incluir esse código no campo de referência da transferência bancária. | | [amount_remaining](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-amount_remaining) | O valor restante que precisa ser transferido para concluir o pagamento. Instrua seu cliente a transferir esse valor. Ele pode ser diferente do valor do PaymentIntent se fundos preexistentes no saldo do cliente tiverem sido aplicados ao PaymentIntent ou se o seu cliente tiver pago a menos. | | [currency](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-currency) | A moeda para o valor restante. | | [financial_addresses](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions) | Lista de endereços financeiros para contas bancárias do MX. Os tipos incluem um `spei`. Confira os detalhes abaixo. | | [hosted_instructions_url](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-hosted_instructions_url) | Um link para uma página hospedada que orienta seu cliente durante a transferência. | ### hash de spei Exemplo de um hash `spei`: ```json { "spei": { "bank_code": "002", "bank_name": "BANAMEX", "clabe": "002180650612345670" }, "supported_networks": [ "spei" ], "type": "spei" } ``` | Campo | Valores | Descrição | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------------------------------------------- | | [type](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-type) | `spei` | O tipo de endereço financeiro. | | [supported_networks](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-supported_networks) | - `spei` | A lista de redes aceitas por este endereço. | | [spei.clabe](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-spei-clabe) | 002180650612345670 | O número CLABE de 18 dígitos. | | [spei.bank_code](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-spei-bank_code) | 002 | O código do banco de 3 dígitos. | | [spei.bank_name](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-display_bank_transfer_instructions-financial_addresses-spei-bank_name) | BANAMEX | O nome curto da instituição bancária | Instrua o cliente a iniciar uma transferência no banco usando os dados informados por você. Esperamos que a maioria dos pagamentos chegue em menos de 10 minutos, tanto em dias bancários quanto não bancários. ## Confirme se o PaymentIntent foi bem-sucedido O status do PaymentIntent permanece `requires_action` até o recebimento dos fundos na conta bancária. Quando os fundos ficam disponíveis, o status do PaymentIntent muda de `requires_action` para `succeeded`. Você precisa configurar seu endpoint *webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) para começar a receber o evento `payment_intent.partially_funded`. Você pode [adicionar um webhook no Dashboard](https://dashboard.stripe.com/webhooks/create). Como alternativa, use a [API Webhook Endpoints](https://docs.stripe.com/api/webhook_endpoints.md) para começar a receber o evento [payment_intent.partially_funded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.partially_funded). A Stripe envia os eventos a seguir durante o fluxo de financiamento do pagamento quando atualizamos o PaymentIntent. | Evento | Descrição | Próximas etapas | | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent.requires_action` | Enviado durante a confirmação quando o saldo do cliente não possui fundos suficientes para reconciliar o PaymentIntent, o PaymentIntent passa para `requires_action`. Se um saldo em dinheiro do cliente tiver sido aplicado automaticamente ao PaymentIntent no momento da confirmação e o valor não cobrir totalmente o `amount` do PaymentIntent, a Stripe emite esse evento com o `amount_remaining` correto. | Oriente o cliente a enviar uma transferência bancária com o valor de `amount_remaining`. | | `payment_intent.partially_funded` | O cliente enviou uma transferência bancária que foi aplicada ao PaymentIntent, mas não foi suficiente para concluir o pagamento. Isso pode acontecer se o cliente transferir valor insuficiente após você confirmar o `PaymentIntent`. Pode resultar de pagamento a menor ou de tarifas cobradas pelo banco do cliente. PaymentIntent parcialmente financiado não são refletidos no saldo da sua conta até que o pagamento seja concluído. | Oriente o cliente a enviar outra transferência bancária com o novo valor de `amount_remaining` para finalizar o pagamento. Se quiser finalizar o pagamento com os fundos parciais, atualize `amount` e [confirme](https://docs.stripe.com/api/payment_intents/confirm.md) novamente o PaymentIntent. | | `payment_intent.succeeded` | O pagamento do cliente foi confirmado. | Execute o pedido de mercadorias ou serviços do cliente. | Para ouvir todos os eventos relacionados a financiamento parcial, escute `requires_action` e `partially_funded`. A Stripe emite `requires_action` quando ainda é necessário financiamento após a confirmação. Emitimos `partially_funded` quando posteriormente recebemos fundos adicionais do cliente que não cobrem totalmente o valor restante. > Quando você altera o valor de um PaymentIntent parcialmente financiado, os fundos são devolvidos ao saldo do cliente. Se houver outros PaymentIntents abertos, a Stripe os financia automaticamente. Se o cliente estiver configurado para reconciliação manual, você precisará [aplicar os fundos](https://docs.stripe.com/api/payment_intents/apply_customer_balance.md) novamente. Recomendamos [usar webhooks](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks) para confirmar que a cobrança foi bem-sucedida e notificar o cliente de que o pagamento está concluído. ### Exemplo de código #### Ruby ```ruby require 'json' # Using Sinatra post '/webhook' do payload = request.body.read event = nil begin event = Stripe::Event.construct_from( JSON.parse(payload, symbolize_names: true) ) rescue JSON::ParserError => e # Invalid payload status 400 return end # Handle the event case event.type when 'payment_intent.requires_action' payment_intent = event.data.object # contains a Stripe::PaymentIntent # The payment intent was not fully funded due to insufficient funds # on the customer balance. Define and call a method to handle the payment intent. # handle_payment_intent_requires_action(payment_intent) when 'payment_intent.partially_funded' payment_intent = event.data.object # contains a Stripe::PaymentIntent # Then define and call a method to handle the payment intent being partially funded. # handle_payment_intent_partially_funded(payment_intent) when 'payment_intent.succeeded' payment_intent = event.data.object # contains a Stripe::PaymentIntent # Then define and call a method to handle the successful payment intent. # handle_payment_intent_succeeded(payment_intent) else puts "Unhandled event type: #{event.type}" end status 200 end ``` ### Ver pagamentos pendentes no Dashboard Para ver todos os PaymentIntents de transferências bancárias pendentes no [Dashboard](https://dashboard.stripe.com/payments), aplique o filtro **Aguardando fundos** ao **Status**. ## Teste a integração Você pode testar sua integração ao simular a entrada de uma transferência bancária usando o Dashboard ou uma solicitação de HTTP. ### Com o Dashboard Para simular uma transferência bancária usando o Dashboard 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), vá para a página do cliente no Dashboard. Em **Formas de pagamento**, clique em **Adicionar** e selecione **Fundir saldo de caixa (somente teste)**. ### Com a API da Stripe Você pode simular uma transferência bancária usando uma chamada de API. #### EUA ```curl curl https://api.stripe.com/v1/test_helpers/customers/cus_xxxxxxxxx/fund_cash_balance \ -u "<>:" \ -d amount=1000 \ -d currency=usd \ -d reference=REF-4242 ``` Você pode simular uma anulação prefixando o parâmetro `referência` com `anulação_` (por exemplo, `anulação_123`). #### Reino Unido ```curl curl https://api.stripe.com/v1/test_helpers/customers/cus_xxxxxxxxx/fund_cash_balance \ -u "<>:" \ -d amount=1000 \ -d currency=gbp \ -d reference=REF-4242 ``` #### UE ```curl curl https://api.stripe.com/v1/test_helpers/customers/cus_xxxx/fund_cash_balance \ -u "<>:" \ -d amount=1000 \ -d currency=eur \ -d reference=REF-4242 ``` #### Japão ```curl curl https://api.stripe.com/v1/test_helpers/customers/cus_xxxx/fund_cash_balance \ -u "<>:" \ -d amount=10000 \ -d currency=jpy ``` #### México ```curl curl https://api.stripe.com/v1/test_helpers/customers/cus_xxxx/fund_cash_balance \ -u "<>:" \ -d amount=1000 \ -d currency=mxn \ -d reference=123456 ``` ## Gerenciar problemas temporários de disponibilidade Os seguintes códigos de erro indicam problemas temporários com a disponibilidade da forma de pagamento: | Código | Descrição | Tratamento | | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_method_rate_limit_exceeded` | Foram realizadas solicitações em excesso em sequência para esta forma de pagamento, que tem limites mais rígidos do que as [limitações de fluxo em toda a API](https://docs.stripe.com/rate-limits.md). | Esses erros podem persistir para várias solicitações de API quando muitos dos seus clientes tentam usar a mesma forma de pagamento, como durante uma venda em andamento no seu site. Nesse caso, peça para seus clientes escolherem uma forma de pagamento diferente. | > Se você prevê um uso intenso em geral ou devido a um evento que está por vir, entre em contato conosco assim que tiver conhecimento. ## Optional: Coletar opções de forma de pagamento do cliente Se necessário, colete o tipo de fundos preferido do cliente em seu site e confirme a intenção de pagamento usando o método [confirmCustomerBalancePayment](https://docs.stripe.com/js/payment_intents/confirm_customer_balance_payment) para [Stripe.js](https://docs.stripe.com/js.md). Exiba um formulário HTML para coletar os dados dos fundos preferidos do cliente para transferências bancárias. Use os dados coletados para preencher `payment_method_options`. Consulte a [documentação de referência do JS](https://docs.stripe.com/js/payment_intents/confirm_customer_balance_payment) para ver uma lista completa dos parâmetros `payment_method_options` disponíveis para `confirmCustomerBalancePayment`. Aqui está um exemplo de caso de uso: se você for um comerciante na Irlanda e não tiver certeza sobre em qual país um cliente está, crie um `PaymentIntent` com `payment_method_options[customer_balance][bank_transfer][eu_bank_transfer][country]` definido como “IE” primeiro. Em seguida, use o método [confirmCustomerBalancePayment](https://docs.stripe.com/js/payment_intents/confirm_customer_balance_payment) para atualizar o país com base no que foi informado pelo usuário. ### Amostra de código ```javascript const {paymentIntent, error} = await stripe.confirmCustomerBalancePayment( '{PAYMENT_INTENT_CLIENT_SECRET}', { payment_method: { customer_balance: { }, }, payment_method_options: { customer_balance: { funding_type: 'bank_transfer', bank_transfer: { type: 'eu_bank_transfer', eu_bank_transfer: { country: 'FR', } }, }, }, }, { handleActions: false, } ); if (error) { // Inform the customer that there was an error. } else if (paymentIntent.status === 'requires_payment_method') { // If `payment_method_options.funding_type` wasn't set this // is where you would need to handle the insufficient customer // balance state. } else if (paymentIntent.status === 'requires_action') { // If the current customer balance is insufficient to cover // the amount, and you've passed // `payment_method_options.funding_type` for funding the // customer balance, you can display the bank transfer // instructions to your user. if (paymentIntent.next_action.type === 'display_bank_transfer_instructions') { // Bank transfer details can be found under: // paymentIntent.next_action.display_bank_transfer_instructions } } ``` ## Optional: Enviar e-mails de instruções de pagamento Você pode habilitar e-mails de instruções de pagamento de Transferência bancária do [Dashboard](https://dashboard.stripe.com/settings/emails). Após ativar os e-mails de instruções de pagamento, a Stripe envia um e-mail ao seu cliente quando: - Um PaymentIntent é confirmado, mas o cliente não tem saldo suficiente. - O cliente envia uma transferência bancária, mas não tem fundos suficientes para concluir os pagamentos pendentes. Um e-mail de instruções de pagamento de transferência bancária contém o valor devido, os dados do banco para transferir fundos e um link para a página de instruções hospedada da Stripe. > Em uma área restrita, os e-mails com instruções de pagamento só são enviados para endereços de e-mail vinculados à conta Stripe.