Pular para o conteúdo
Criar conta
ou
Entrar
O logotipo da documentação da Stripe
/
Pergunte à IA
Criar conta
Login
Comece já
Pagamentos
Receita
Plataformas e marketplaces
Gestão de valores
Ferramentas para desenvolvedores
Visão geral
Sobre os pagamentos da Stripe
Atualize sua integração
Análise de pagamentos
Pagamentos online
Visão geralEncontre seu caso de usoPagamentos gerenciados
Usar Payment Links
Crie uma página de checkout
Criar uma integração avançada
Crie uma integração no aplicativo
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
    Cripto
    Débitos bancários
    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
      Boleto
        Aceitar um pagamento
        Usar boletos com assinaturas
        Usar boletos com faturas
      Konbini
      Multibanco
      OXXO
    Carteiras
    Habilitar formas de pagamento locais por país
    Formas de pagamento personalizadas
Gerenciar formas de pagamento
Checkout mais rápido com o Link
Interfaces de pagamento
Payment Links
Checkout
Web Elements
Elements no aplicativo
Cenários de pagamento
Fluxos de pagamento personalizados
Aquisição flexível
Orquestração
Pagamentos presenciais
Terminal
Outros produtos da Stripe
Financial Connections
Cripto
Climate
Página inicialPagamentosAdd payment methodsVouchersBoleto

Pagamentos por boleto

Veja como aceitar boletos, uma forma de pagamento comum no Brasil.

Copiar página

Os usuários da Stripe no Brasil podem receber pagamentos por boleto dos clientes brasileiros por meio das APIs Payment Intents e Payment Methods. O boleto tem um número exclusivo, que o cliente usa para fazer o pagamento em caixas eletrônicos, bancos, internet banking ou agências autorizadas.

Configurar a Stripe
Lado do servidor

Primeiro, você precisa de uma conta Stripe. Cadastre-se aqui.

Use nossas bibliotecas oficiais para acessar a API da Stripe no seu aplicativo:

Command Line
Ruby
# Available as a gem sudo gem install stripe
Gemfile
Ruby
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Criar um PaymentIntent
Lado do servidor

A Stripe usa um objeto PaymentIntent para representar sua intenção de coletar o pagamento de um cliente, acompanhando desde a criação do boleto até seu pagamento.

Crie um PaymentIntent no seu servidor com um valor em moeda brl (não é possível gerar boletos em outras moedas). Se você já tiver uma integração usando a API Payment Intents, adicione boleto à lista de tipos de forma de pagamento para seu PaymentIntent.

O PaymentIntent retornado contém um segredo do cliente, que você usa para finalizar o processo de pagamento com segurança. Devolva o segredo do cliente ao cliente para usá-lo nas próximas etapas.

Command Line
cURL
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=brl \ -d "payment_method_types[]"=boleto

Outras opções da forma de pagamento

Você pode especificar um parâmetro opcional expires_after_days nas opções da forma de pagamento para o PaymentIntent, definindo os dias corridos até o vencimento. Por exemplo, se você criar um boleto na segunda-feira e a configuração de expires_after_days for 2, o boleto vencerá na quarta-feira, às 23h59, horário Sao_Paulo (UTC-3). Se a configuração for 0, o boleto vencerá no final do dia. O parâmetro expires_after_days pode ser de 0 a 60 dias. O padrão é 3 dias. Você pode personalizar os dias de validade padrão na sua conta nas configurações de formas de pagamento

Coletar dados da forma de pagamento
Lado do cliente

Crie um formulário para obter os dados necessários para cobrar o cliente:

CampoValor
nameNome completo do cliente.
emailEndereço de e-mail do cliente.
tax_idO CPF (para indivíduos) ou CNPJ (para empresas) do cliente. O CPF precisa ter 11 dígitos em um dos seguintes formatos: 000.000.000-00 ou 00000000000. O CNPJ precisa ter 14 dígitos em um dos seguintes formatos: 00.000.000/0000-00 ou 00000000000000.
addressNome da rua e número do endereço do cliente.
cityCidade do endereço do cliente.
stateSigla com duas letras representando o estado brasileiro (ISO_3166-2:BR) do endereço do cliente.
postal_codeCEP do endereço do cliente, com dois formatos possíveis: XXXXX-XXX ou XXXXXXXX.

Observação

Os campos name, address, city (nome, endereço, cidade) devem conter no mínimo um caractere alfanumérico do Basic Latin (ASCII) Unicode Block.

checkout.html
<form id="payment-form"> <div class="form-row"> <label for="name"> Name </label> <input id="name" name="name" required> </div> <div class="form-row"> <label for="tax_id"> CPF/CNPJ </label> <input id="tax_id" name="tax_id" required> </div> <div class="form-row"> <label for="email"> Email </label> <input id="email" name="email" required> </div> <div class="form-row"> <label for="address"> Address </label> <input id="address" name="address" required> </div> <div class="form-row"> <label for="city"> City </label> <input id="city" name="city" required> </div> <div class="form-row"> <label for="state"> State </label> <input id="state" name="state" required> </div> <div class="form-row"> <label for="postal_code"> Postal Code </label> <input id="postal_code" name="postal_code" required> </div> <!-- Used to display form errors. --> <div id="error-message" role="alert"></div> <button id="submit-button">Pay with Boleto</button> </form>

Enviar o pagamento para a Stripe
Lado do cliente

Quando o cliente optar por pagar com Boleto, use Stripe.js para enviar o pagamento à Stripe. Stripe.js é a nossa biblioteca principal de JavaScript para criação de fluxos de pagamento.

Inclua Stripe.js na sua página de checkout, adicionando o script ao head do seu arquivo HTML.

checkout.html
<head> <title>Checkout</title> <script src="https://js.stripe.com/v3/"></script> </head>

Crie uma instância de Stripe.js com o seguinte JavaScript em sua página de checkout:

client.js
// Set your publishable key. Remember to switch to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
);

Use stripe.confirmBoletoPayment e o segredo do cliente do objeto PaymentIntent criado na etapa 2 para enviar os dados de cobrança do cliente.

Depois da confirmação, a Stripe abre automaticamente um modal que mostra o boleto ao cliente.

client.js
var form = document.getElementById('payment-form'); form.addEventListener('submit', async (event) => { event.preventDefault(); const result = await stripe.confirmBoletoPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { payment_method: { boleto: { tax_id: document.getElementById('tax_id').value, }, billing_details: { name: document.getElementById('name').value, email: document.getElementById('email').value, address: { line1: document.getElementById('address').value, city: document.getElementById('city').value, state: document.getElementById('state').value, postal_code: document.getElementById('postal_code').value, country: 'BR', }, }, }, } ); // Stripe.js will open a modal to display the Boleto voucher to your customer // This async function finishes when the customer closes the modal if (result.error) { // Display error to your customer const errorMsg = document.getElementById('error-message'); errorMsg.innerText = result.error.message; } });

Observação

stripe.confirmBoletoPayment pode levar vários segundos para finalizar. Nesse período, previna que o formulário seja reenviado e apresente um indicador de espera, como um spinner. Se receber um erro, mostre-o ao cliente, reative o formulário e oculte o spinner.

Quando o boleto é criado, o valor da propriedade status do PaymentIntent indica requires_action. Verifique o status de um PaymentIntent no Dashboard ou verifique a propriedade do status do objeto. Se o boleto não for criado corretamente, inspecione o error recebido para entender o motivo (um e-mail com formato inválido, por exemplo).

Opcional: enviar um e-mail ao cliente com um link para o boleto

A Stripe envia um evento payment_intent.requires_action quando um boleto é criado. Para enviar um e-mail ao cliente com o link para o boleto, pode localizar o link hosted_voucher_url em payment_intent.next_action.boleto_display_details.

Opcional: personalizar o boleto

A Stripe permite personalizar as IUs exibidas para seus clientes na página Configurações da marca.

Estas configurações de marca podem ser aplicadas à guia:

  • Ícone: a imagem de sua marca e nome fantasia da empresa
  • Cor de destaque: usada no botão Copiar número
  • Cor da marca: usada como cor de fundo

Processar eventos pós-pagamento
Lado do servidor

Os pagamentos por boleto são assíncronos, ou seja, os fundos não ficam imediatamente disponíveis. O cliente pode não pagar o boleto imediatamente após o checkout.

A Stripe envia um evento payment_intent.succeeded no dia útil seguinte (de segunda a sexta, exceto feriados do calendário brasileiro) para todos os boletos pagos. Use o Dashboard ou um webhook personalizado para receber esses eventos e executar ações (por exemplo, enviar um e-mail de confirmação de pedido ao cliente, registrar a venda em um banco de dados ou iniciar um fluxo de entrega).

Se o boleto não for pago antes das 23h59 América/Sao_Paulo (UTC-3) na data de vencimento, a Stripe envia um evento payment_intent.payment_failed após 1 dia útil. Por exemplo, se um boleto vencer na quinta-feira, o evento será enviado na sexta-feira. Se o boleto vencer na sexta-feira, o evento será enviado na segunda-feira seguinte.

EventoDescriçãoPróximas etapas
payment_intent.succeededO cliente pagou o boleto antes do vencimento.Execute o pedido de mercadorias ou serviços do cliente.
payment_intent.payment_failedO cliente não pagou o boleto antes do vencimento.Entre em contato com o cliente por e-mail ou notificação push e solicite outra forma de pagamento.

Testar a integração

Em uma área restrita, defina payment_method.billing_details.email de acordo com os valores a seguir ao chamar stripe.confirmBoletoPayment para testar diferentes cenários.

E-mailDescrição

{any_prefix}@{any_domain}

Simula um boleto pago pelo cliente depois de 3 minutos, com o webhook payment_intent.succeeded recebido depois de cerca de 3 minutos. Em produção, este webhook chega 1 dia útil após o pagamento.

Exemplo: fulaninho@exemplo.com.br

{any_prefix}succeed_immediately@{any_domain}

Simula um boleto pago imediatamente pelo cliente, com o webhook payment_intent.succeeded recebido depois de alguns segundos. Em produção, este webhook chega 1 dia útil após o pagamento.

Exemplo: succeed_immediately@exemplo.com.br

{any_prefix}expire_immediately@{any_domain}

Simula um boleto que vence sem ser pago pelo cliente, com o webhook payment_intent.payment_failed recebido depois de alguns segundos.

O campo expires_at em next_action.boleto_display_details está configurado para o horário atual, independente da configuração do parâmetro expires_after_days em opções de forma de pagamento.

Exemplo: expire_immediately@exemplo.com.br

{any_prefix}expire_with_delay@{any_domain}

Simula um boleto que vence sem ser pago pelo cliente, com o webhook payment_intent.payment_failed recebido depois de 3 minutos.

O campo expires_at em next_action.boleto_display_details está configurado para 3 minutos no futuro, independente da configuração do parâmetro expires_after_days em opções de forma de pagamento.

Exemplo: expire_with_delay@exemplo.com.br

{any_prefix}fill_never@{any_domain}

Simula um boleto que nunca é pago; ele expira de acordo com o campo expires_at em next_action.boleto_display_details de acordo com os parâmetros informados em opções de forma de pagamento. O webhook payment_intent.payment_failed é recebido em seguida.

Exemplo: fill_never@exemplo.com.br

Código FiscalDescrição

CPF 000.000.000-00

CNPJ 00.000.000/0000-00

Em uma área restrita, defina tax_id como esses valores, para que eles ignorem a validação do ID fiscal.

OpcionalCrie sua própria interface de boletos
Lado do cliente

OpcionalConfirmar Payment Intent no lado do servidor
Lado do servidor

OpcionalEnviar e-mails de instrução de pagamento

Validade e cancelamento

Os boletos vencem após a data UNIX expires_at, e o cliente não pode pagar um boleto vencido. Não é possível cancelar um boleto antes do vencimento.

Depois do vencimento do boleto, o status do PaymentIntent muda para requires_payment_method. Neste ponto, você pode confirmar o PaymentIntent com outra forma de pagamento ou cancelar.

Esta página foi útil?
SimNão
Precisa de ajuda? Fale com o suporte.
Participe do nosso programa de acesso antecipado.
Confira nosso changelog.
Dúvidas? Fale com a equipe de vendas.
LLM? Read llms.txt.
Powered by Markdoc