Pular para o conteúdo
Criar conta ou Entrar
O logotipo da documentação da Stripe
/
Pergunte à IA
Criar contaLogin
Comece já
Pagamentos
Receita
Plataformas e marketplaces
Gestão de valores
Recursos para desenvolvedores
APIs e SDKsAjuda
Visão geralAceitar um pagamentoAtualize sua integração
Pagamentos online
Visão geralEncontre seu caso de uso
Usar Payment Links
Usar uma página de checkout predefinida
Criar uma integração personalizada com o Elements
Crie uma integração no aplicativo
Usar o Managed PaymentsPagamentos recorrentes
Pagamentos presenciais
Terminal
Formas de pagamento
Adicionar formas de pagamento
    Visão geral
    Opções de integração de formas de pagamento
    Gerenciar formas de pagamento padrão no Dashboard
    Tipos de forma de pagamento
    Cartões
    Pagar com saldo da Stripe
    Pagamentos com stablecoin
    Débitos bancários
      Débito automático ACH
        Aceitar um pagamento
        Salvar dados bancários
        Migrar ACH Direct Debit de cobranças para APIs mais recentes
        Migrar de outro processador
        Contas bancárias bloqueadas
        Códigos SEC
      Débito automático Bacs
      Débito pré-autorizado no Canadá
      Débito automático BECS Austrália
      Débito automático BECS da Nova Zelândia
      Débito automático SEPA
    Redirecionamentos bancários
    Transferências bancárias
    Transferências de crédito (Sources)
    Compre agora e pague depois
    Pagamentos em tempo real
    Guias de pagamento
    Carteiras
    Habilitar formas de pagamento locais por país
    Formas de pagamento personalizadas
Gerenciar formas de pagamento
Checkout mais rápido com o Link
Operações de pagamento
Análises
Saldos e tempo de liquidação
Conformidade e segurança
Moedas
Recusas
Contestações
​Prevenção​ a fraudes​
Proteção contra fraudes do Radar
Repasses
RecibosReembolsos e cancelamentos
Integrações avançadas
Fluxos de pagamento personalizados
Aquisição flexível
Pagamentos fora da sessão
Orquestração multiprocessador
Muito mais que pagamentos
Abra sua empresa
Cripto
Comércio agêntico
Financial Connections
Climate
Verificar identidades
Estados Unidos
Português (Brasil)
Página inicialPagamentosAdd payment methodsBank debitsACH Direct Debit

Accept an ACH Direct Debit payment

Build a custom payment form or use Stripe Checkout to accept payments with ACH Direct Debit.

Cuidado

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 para elaborar uma integração de checkout que usa formas de pagamento dinâmicas.
  • 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.

Stripe users in the US can use Checkout in payment mode to accept ACH Direct Debit payments.

A Checkout Session represents the details of your customer’s intent to purchase. You create a Session when your customer wants to pay for something. After redirecting your customer to a Checkout Session, Stripe presents a payment form where your customer can complete their purchase. After your customer completes a purchase, they redirect back to your site.

With Checkout, you can create a Checkout Session with us_bank_account as a payment method type to track and handle the states of the payment until the payment completes.

Nota

ACH Direct Debit is a delayed notification payment method, which means that funds aren’t immediately available after payment. A payment typically takes 4 business days to arrive in your account.

Determine compatibility

Localizações aceitas para empresas: US

Moedas aceitas: usd

Moedas de apresentação: usd

Modo de pagamento: Yes

Modo de configuração: Yes

Modo de assinatura: Yes

To support ACH Direct Debit payments, make sure you express Prices for all line items in US dollars (currency code usd).

Create or retrieve a customer
RecommendedServer-side

Comparar referências de Customers v1 e Accounts v2

Se a sua plataforma Connect utiliza Contas configuradas pelo cliente, utilize o nosso guia para substituir as referências a Cliente e eventos no seu código pelas referências equivalentes da API Accounts v2.

Create a Customer object when your user creates an account with your business, or retrieve an existing Customer associated with this user. Associating the ID of the Customer object with your own internal representation of a customer enables you to retrieve and use the stored payment method details later. Include an email address on the Customer to enable Financial Connections’ return user optimization.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d email={{CUSTOMER_EMAIL}}

Accept a payment

Nota

Build an integration to accept a payment with Checkout before using this guide.

This guides you through enabling ACH Direct Debit and shows the differences between accepting payments using dynamic payment methods and manually configuring payment methods.

Enable ACH Direct Debit as a payment method

When creating a new Checkout Session, you need to:

  1. Add us_bank_account to the list of payment_method_types.
  2. Make sure all your line_items use the usd currency.
Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -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]"=us_bank_account \ --data-urlencode success_url="https://example.com/success"

For more information on Financial Connections fees, see pricing details.

By default, collecting bank account payment information uses Financial Connections to instantly verify your customer’s account, with a fallback option of manual account number entry and microdeposit verification. See the Financial Connections docs to learn how to configure Financial Connections and access additional account data to optimize your ACH integration. For example, you can use Financial Connections to check an account’s balance before initiating the ACH payment.

Nota

To expand access to additional data after a customer authenticates their account, they must re-link their account with expanded permissions.

If the customer opts for microdeposit verification instead of Financial Connections, Stripe automatically sends two small deposits to the provided bank account. These deposits can take 1-2 business days to appear on the customer’s online bank statement. When the deposits are expected to arrive, the customer receives an email with a link to confirm these amounts and verify the bank account with Stripe. After verification is complete, the payment begins processing.

We recommend including the payment_intent_data.setup_future_usage parameter with a value of off_session when creating a payment mode Session for ACH Direct Debit so you can save payment method details.

Fulfill your orders

After accepting a payment, learn how to fulfill orders.

Test your integration

Saiba como testar cenários com verificações instantâneas usando Financial Connections.

Enviar e-mails transacionais em uma área restrita

Depois de coletar os dados da conta bancária e aceitar uma instrução, envie os e-mails de confirmação de mandato e verificação de microdepósito em uma área restrita.

Se seu domínio for {domain} e seu nome de usuário é {username}, use o seguinte formato de e-mail para enviar e-mails de teste de transação: {username}+test_email@{domain}.

Por exemplo, se seu domínio é example.com e seu nome de usuário é info, use o formato info+test_email@example.com para testar pagamentos por ACH Direct Debit. Esse formato garante que os e-mails sejam encaminhados corretamente. Se não incluir o sufixo +test_email, não enviaremos o e-mail.

Erro comum

Você precisa ativar sua conta Stripe antes de enviar esses e-mails durante os testes.

Números de conta de teste

A Stripe fornece vários números de conta de teste e tokens correspondentes que você pode usar para verificar se sua integração para contas bancárias inseridas manualmente está pronta para produção.

Número da contaTokenRouting numberComportamento
000123456789pm_usBankAccount_success110000000O pagamento é aprovado.
000111111113pm_usBankAccount_accountClosed110000000O pagamento falha porque a conta está fechada.
000000004954pm_usBankAccount_riskLevelHighest110000000O pagamento foi bloqueado pelo Radar devido a um alto risco de fraude.
000111111116pm_usBankAccount_noAccount110000000O pagamento falha porque nenhuma conta foi encontrada.
000222222227pm_usBankAccount_insufficientFunds110000000O pagamento falha devido a fundos insuficientes.
000333333335pm_usBankAccount_debitNotAuthorized110000000O pagamento falha porque o uso de débitos não está autorizado.
000444444440pm_usBankAccount_invalidCurrency110000000O pagamento falha porque a moeda é inválida.
000666666661pm_usBankAccount_failMicrodeposits110000000O pagamento não consegue enviar microdepósitos.
000555555559pm_usBankAccount_dispute110000000O pagamento aciona uma contestação.
000000000009pm_usBankAccount_processing110000000O pagamento permanece em processamento indefinidamente. Útil para testar cancelamento do PaymentIntent.
000777777771pm_usBankAccount_weeklyLimitExceeded110000000O pagamento falha devido ao valor do pagamento fazer com que a conta exceda seu limite de volume de pagamentos semanal.
000888888885110000000O pagamento falha devido a um número de conta tokenizado desativado.

Antes que as transações de teste possam ser concluídas, você precisa verificar todas as contas de teste que aprovam ou falham automaticamente o pagamento. Para fazer isso, use as quantias de microdepósito de teste ou códigos de descrição abaixo.

Testar valores de microdepósito e códigos de descrição

Para simular diferentes cenários, use estas quantias de microdepósito ou valores de código de descrição 0,01.

Valores de microdepósitoValores de código da descrição 0,01Cenário
32 e 45SM11AASimula a verificação da conta.
10 e 11SM33CCSimula o excesso de tentativas permitidas de verificação.
40 e 41SM44DDSimula um tempo limite de microdepósito.

Testar o comportamento da liquidação

As transações de teste são liquidadas instantaneamente e adicionadas ao seu saldo de teste disponível. Esse comportamento é diferente do modo de produção, em que as transações podem demorar vários dias para serem liquidadas no saldo disponível.

Additional considerations

Microdeposit verification failure

When a bank account is pending verification with microdeposits, the customer can fail to verify for three reasons:

  • The microdeposits failed to send to the customer’s bank account (this usually indicates a closed or unavailable bank account or incorrect bank account number).
  • The customer made 10 failed verification attempts for the account. Exceeding this limit means the bank account can no longer be verified or reused.
  • The customer failed to verify the bank account within 10 days.

If the bank account fails verification for one of these reasons, you can handle the checkout.session.async_payment_failed event to contact the customer about placing a new order.

OpcionalInstant only verification

By default, ACH Direct Debit payments allow your customers to use instant bank account verification or microdeposits. You can optionally require instant bank account verification only using the payment_method_options[us_bank_account][verification_method] parameter when you create the Checkout session.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d mode=payment \ -d customer={{CUSTOMER_ID}} \ -d "payment_method_types[0]"=card \ -d "payment_method_types[1]"=us_bank_account \ -d "payment_method_options[us_bank_account][verification_method]"=instant \ -d "payment_method_options[us_bank_account][financial_connections][permissions][0]"=payment_method \ -d "line_items[0][price_data][currency]"=usd \ -d "line_items[0][price_data][unit_amount]"=2000 \ -d "line_items[0][price_data][product_data][name]"=T-shirt \ -d "line_items[0][quantity]"=1 \ --data-urlencode success_url="https://example.com/success"

OpcionalAccess data on a Financial Connections bank account

You can only access Financial Connections data if you request additional data permissions when you create your PaymentIntent .

After your customer successfully completes the Checkout flow, the us_bank_account PaymentMethod returned includes a financial_connections_account ID that points to a Financial Connections Account. Use this ID to access account data.

Erro comum

Bank accounts that your customers link through manual entry and microdeposits don’t have a financial_connections_account ID on the Payment Method.

To determine the Financial Connections account ID, retrieve the Checkout Session and expand the payment_intent.payment_method attribute:

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -G https://api.stripe.com/v1/checkout/sessions/
{{SESSION_ID}}
\ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "expand[]"="payment_intent.payment_method"
{ "id": "{{CHECKOUT_SESSION_ID}}", "object": "checkout.session", // ... "payment_intent": { "id": "{{PAYMENT_INTENT_ID}}", "object": "payment_intent", // ... "payment_method": { "id": "{{PAYMENT_METHOD_ID}}", // ... "type": "us_bank_account", "us_bank_account": { "account_holder_type": "individual", "account_type": "checking", "bank_name": "TEST BANK", "financial_connections_account": "{{FINANCIAL_CONNECTIONS_ACCOUNT_ID}}", "fingerprint": "q9qchffggRjlX2tb", "last4": "6789", "routing_number": "110000000" } } // ... } }

Learn more about using additional account data to optimize your ACH integration with Financial Connections.

OpcionalResolve disputes
Server-side

Customers can generally dispute an ACH Direct Debit payment through their bank for up to 60 calendar days after a debit on a personal account, or up to 2 business days for a business account. In rare instances, a customer might be able to successfully dispute a debit payment outside these standard dispute timelines.

When a customer disputes a payment, Stripe sends a charge.dispute.closed webhook event, and the PaymentMethod authorization is revoked.

In rare situations, Stripe might receive an ACH failure from the bank after a PaymentIntent has transitioned to succeeded. If this happens, Stripe creates a dispute with a reason of:

  • insufficient_funds
  • incorrect_account_details
  • bank_can't_process

Stripe charges a failure fee in this situation.

Future payments reusing this PaymentMethod return the following error:

{ "error": { "message": "This PaymentIntent requires a mandate, but no existing mandate was found. Collect mandate acceptance from the customer and try again, providing acceptance data in the mandate_data parameter.", "payment_intent": { ... } "type": "invalid_request_error" } }

This error contains a PaymentIntent in the requires_confirmation state. To continue with the payment, you must:

  1. Resolve the dispute with the customer to ensure future payments will not be disputed.
  2. Confirm authorization from your customer again.

To confirm authorization for the payment, you can collect mandate acknowledgement from your customer online with Stripe.js or confirm authorization with your customer offline using the Stripe API.

Cuidado

If a customer disputes more than one payment from the same bank account, Stripe blocks their bank account. Contact Stripe Support for further resolution.

Command Line
cURL
No results
curl https://api.stripe.com/v1/payment_intents/{{PAYMENT_INTENT_ID}}/confirm \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "mandate_data[customer_acceptance][type]"=offline

OpcionalReferência do pagamento

The payment reference number is a bank-generated value that allows the bank account owner to use their bank to locate funds. When the payment succeeds, Stripe provides the payment reference number in the Dashboard and inside the Charge object.

Charge StatePayment Reference Value
PendentesNão disponível
MalsucedidosNão disponível
ConcluídaAvailable (for example, 091000015001234)

In addition, when you receive the charge.succeeded webhook, view the content of payment_method_details to locate the payment_reference.

The following example event shows the rendering of a successful ACH payment with a payment reference number.

{ "id": "{{EVENT_ID}}", "object": "event", // omitted some fields in the example "type": "charge.succeeded", "data": { "object": { "id": "{{PAYMENT_ID}}", "object": "charge", //... "paid": true, "payment_intent": "{{PAYMENT_INTENT_ID}}", "payment_method": "{{PAYMENT_METHOD_ID}}", "payment_method_details": { "type": "us_bank_account", "us_bank_account": { "account_holder_type": "individual", "account_type": "checking", "bank_name": "TEST BANK", "fingerprint": "Ih3foEnRvLXShyfB", "last4": "1000", "payment_reference": "091000015001234", "routing_number": "110000000" } } // ... } } }

View the contents of the destination_details to locate the refund reference associated with the refunded ACH payments.

The following example event shows the rendering of a successful ACH refund with a refund reference number. Learn more about refunds.

{ "id": "{{EVENT_ID}}", "object": "event", "type": "charge.refund.updated", "data": { "object": { "id": "{{REFUND_ID}}", "object": "refund", //... "payment_intent": "{{PAYMENT_INTENT_ID}}", "destination_details": { "type": "us_bank_transfer", "us_bank_transfer": { "reference": "091000015001111", "reference_status": "available" } } // ... } } }

OpcionalConfigure customer debit date
Server-side

You can control the date that Stripe debits a customer’s bank account using the target date. The target date must be at least three days in the future and no more than 15 days from the current date.

The target date schedules money to leave the customer’s account on the target date.

Target dates that meet one of the following criteria delay the debit until the next available business day:

  • Target date falls on a weekend, a bank holiday, or other non-business day.
  • Target date is fewer than three business days in the future.

This parameter operates on a best-effort basis. Each customer’s bank might process debits on different dates, depending on local bank holidays or other reasons.

Cuidado

You can’t set the verification method to microdeposits when using a target date, as the verification process could take longer than the target date, causing payments to arrive later than expected.

Veja também

  • Save ACH Direct Debit pre-authorized debit details for future payments
Esta página foi útil?
SimNão
  • Precisa de ajuda? Fale com o suporte.
  • Confira nosso changelog.
  • Dúvidas? Fale com a equipe de vendas.
  • LLM? Read llms.txt.
  • Powered by Markdoc