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
Recursos para desenvolvedores
Visão geral
Comece a usar o Connect
Princípios básicos de integração
Exemplos de integrações
    Criar um marketplace
    Criar uma plataforma de SaaS
    Cobra tarifas de SaaS para contas conectadas
    Criar uma integração do Connect totalmente incorporada
Gerenciamento de contas
Fazer onboarding de contas
Configurar Dashboards da conta
Trabalhe com tipos de contas conectadas
Processamento de pagamentos
Receba pagamentos
Repassar para contas
Administração de plataforma
Gerencie sua plataforma do Connect
Informes fiscais para sua plataforma Connect
Página inicialPlataformas e marketplacesExample integrations

Receba pagamentos e efetue repasses em seu marketplace

Receba pagamentos de clientes e repasse-os para vendedores ou prestadores de serviços no seu marketplace.

Essa integração combina todas as etapas exigidas para pagar – coleta dos dados de pagamento e confirmação do pagamento – em uma única folha que é exibida com base no seu aplicativo.

Pré-requisitos

  1. Cadastre sua plataforma.
  2. Adicione dados da empresa para ativar sua conta.
  3. Conclua seu perfil da plataforma.
  4. Personalize as configurações da sua marca. Adicione um nome de empresa, ícone e cor da marca.

Configurar a Stripe
Lado do servidor
Lado do cliente

Primeiro, você precisa de uma conta Stripe. Inscreva-se agora.

Lado do servidor

Esta integração exige que os endpoints do seu servidor se comuniquem com a API da Stripe. Use as bibliotecas oficiais para acessar a API da Stripe pelo seu servidor:

Command Line
Ruby
Python
PHP
Java
Node
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node
Go
.NET
No results
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Lado do cliente

O SDK do React Native é de código aberto e totalmente documentado. Internamente, utiliza as SDKs de iOS nativo e Android. Para instalar o SDK do React Native da Stripe, execute um dos seguintes comandos no diretório do seu projeto (dependendo de qual gerenciador de pacotes você usa):

Command Line
yarn add @stripe/stripe-react-native

Em seguida, instale algumas outras dependências necessárias:

  • For iOS, go to the ios directory and run pod install to ensure that you also install the required native dependencies.
  • Para Android, não há mais dependências para instalar.

Observação

Recomendamos seguir o guia oficial do TypeScript para adicionar suporte ao TypeScript.

Inicialização da Stripe

Para inicializar a Stripe no aplicativo React Native, insira sua tela de pagamento com o componente StripeProvider ou use o método de inicialização initStripe. Somente a chave da API publicável em publishableKey é necessária. O exemplo a seguir mostra como inicializar a Stripe usando o componente StripeProvider.

import { useState, useEffect } from 'react'; import { StripeProvider } from '@stripe/stripe-react-native'; function App() { const [publishableKey, setPublishableKey] = useState(''); const fetchPublishableKey = async () => { const key = await fetchKey(); // fetch key from your server here setPublishableKey(key); }; useEffect(() => { fetchPublishableKey(); }, []); return ( <StripeProvider publishableKey={publishableKey} merchantIdentifier="merchant.identifier" // required for Apple Pay urlScheme="your-url-scheme" // required for 3D Secure and bank redirects > {/* Your app code here */} </StripeProvider> ); }

Observação

Use suas chaves de API de teste enquanto testa e desenvolve, e as chaves de modo de produção quando publica seu aplicativo.

Criar uma conta conectada

Quando um usuário (vendedor ou provedor de serviços) se registra na sua plataforma, crie uma Conta de usuário (chamada de conta conectada) para que você possa aceitar pagamentos e mover fundos para a conta bancária dele. Contas conectadas representam seu usuário na API da Stripe e ajudam a facilitar a coleta de requisitos de onboarding para que a Stripe possa verificar a identidade do usuário. No nosso exemplo do criador de lojas, a conta conectada representa a empresa que está configurando a loja online.

Etapa 2.1: crie uma conta conectada e preencha os dados Server-side

Use a API /v1/accounts para criar uma conta conectada especificando as propriedades da conta conectada ou o tipo de conta.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl https://api.stripe.com/v1/accounts \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "controller[losses][payments]"=application \ -d "controller[fees][payer]"=application \ -d "controller[stripe_dashboard][type]"=express

Se você já coletou dados de suas contas conectadas, pode usá-los para preencher o objeto Account. Você pode preencher quaisquer dados de conta, inclusive dados pessoais e comerciais, dados de contas externas e muito mais.

O Connect Onboarding não solicita as informações pré-preenchidas. No entanto, ele solicita que o titular da conta confirme as informações pré-preenchidas antes de aceitar o contrato de serviços do Connect.

Ao testar sua integração, preencha antecipadamente os dados da conta usando dados de teste.

Etapa 2.2: Crie um link de conta Lado do servidor

Você pode criar um link de conta chamando a API Account Links com os seguintes parâmetros:

  • account
  • refresh_url
  • return_url
  • type = account_onboarding
Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl https://api.stripe.com/v1/account_links \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d account=
{{CONNECTED_ACCOUNT_ID}}
\ --data-urlencode refresh_url="https://example.com/reauth" \ --data-urlencode return_url="https://example.com/return" \ -d type=account_onboarding

Etapa 2.3: Redirecione seu usuário para o URL do link da conta Lado do cliente

A resposta à solicitação da API Account Links inclui um valor para a chave url. Redirecione para esse link para enviar o usuário ao fluxo. URLs da API Account Links são temporários e usados somente uma vez, porque concedem acesso aos dados pessoais do usuário da conta conectada. Autentique o usuário no aplicativo antes de redirecioná-lo para esse URL. Se quiser preencher as informações, faça-o antes de gerar o link da conta. Após criar o link para uma conta Express, não é possível ler ou gravar informações na conta.

Dica de segurança

Não envie URLs de links de conta por e-mail, SMS ou outra maneira para fora do aplicativo da sua plataforma. Em vez disso, forneça-os ao titular da conta autenticado dentro do seu aplicativo.

Etapa 2.4: Gerencie o usuário que está retornando à sua plataforma Lado do cliente

O Connect Onboarding exige que você passe um return_url e refresh_url para gerenciar todos os casos em que o usuário é redirecionado à sua plataforma. É importante implementá-los corretamente para proporcionar a melhor experiência ao usuário. Você pode configurar um deep link para habilitar a página da Stripe a redirecionar para o seu app automaticamente.

Observação

Você pode usar HTTP para return_url e refresh_url enquanto estiver em um ambiente de teste (por exemplo, para testar com localhost), mas o modo de produção só aceita HTTPS. Não se esqueça de trocar os URLs de teste para HTTPS antes de entrar em modo de produção.

return_url

A Stripe emite um redirecionamento para este URL quando o usuário conclui o fluxo do Connect Onboarding. Isso não significa que todas as informações foram coletadas ou que não há requisitos pendentes na conta. Significa somente que a entrada e saída do fluxo foram normais.

Nenhum estado é passado por este URL. Após o redirecionamento de um usuário para o return_url , verifique o estado do parâmetro details_submitted na conta dele realizando uma das seguintes ações:

  • Escutar webhooks account.updated
  • Chamar a API Accounts e inspecionar o objeto retornado

refresh_url

A Stripe redireciona seu usuário para o refresh_url nestes casos:

  • O link expirou (alguns minutos se passaram desde a criação do link).
  • O usuário já acessou o URL (atualizou a página ou clicou em Voltar ou Avançar no navegador).
  • Sua plataforma não consegue mais acessar a conta.
  • A conta foi recusada.

O refresh_url deve acionar um método no servidor para chamar novamente a API Account Links com os mesmos parâmetros e redirecionar o usuário ao fluxo do Connect Onboarding para criar uma experiência ideal.

Etapa 2.5: Gerencie usuários que não concluíram o onboarding

Um usuário que é redirecionado para o seu return_url pode não ter concluído o processo de onboarding. Use o endpoint /v1/accounts para recuperar a conta do usuário e verificar charges_enabled. Se a conta não estiver totalmente integrada, forneça solicitações de IU para permitir que o usuário continue o onboarding mais tarde. O usuário pode concluir a ativação da conta por meio de um novo link de conta (gerado por sua integração). Verifique o estado do parâmetro details_submitted na conta dele para ver se o processo de onboarding foi concluído.

Habilitar formas de pagamento

Veja as configurações de formas de pagamento e ative as que pretende aceitar. Pagamentos com cartão, Google Pay e Apple Pay são ativados por padrão, mas você pode ativar e desativar as formas de pagamento conforme a necessidade.

Antes da exibição das formas de pagamento, a Stripe avalia a moeda, as restrições e outros parâmetros dessas formas de pagamento para criar a lista das que são aceitas. Priorizamos as que aumentam a conversão e são mais relevantes para a moeda e a localização do cliente. As formas de pagamento de menor prioridade são ocultas em um menu de estouro.

Adicionar um endpoint
Lado do servidor

Nota

Para exibir o PaymentSheet antes de criar um PaymentIntent, consulte Colete os dados de pagamento antes de criar um Intent.

Esta integração usa três objetos da API da Stripe:

  1. PaymentIntent: A Stripe usa isso para representar sua intenção de coletar o pagamento de um cliente, acompanhando suas tentativas de cobrança e alterações no estado do pagamento durante todo o processo.

  2. (Opcional) Customer: Para configurar uma forma de pagamento para pagamentos futuros, vincule-a a um Customer. Crie um objeto Customer quando o cliente abrir uma conta na sua empresa. Se o cliente pagar como convidado, você pode criar o objeto Customer antes do pagamento e associá-lo à sua representação interna da conta do cliente, mais tarde.

  3. (Opcional) Chave Efêmera de Cliente: as informações sobre o objeto Customer são confidenciais e não podem ser obtidas diretamente por um apliativo. Uma Chave Efêmera concede acesso temporário ao Cliente para o SDK.

Observação

Se você nunca salva cartões para um cliente e não permite que clientes retornando reutilizem cartões salvos, é possível omitir os objetos cliente e Ephemeral Key da sua integração.

Por motivos de segurança, seu aplicativo não pode criar esses objetos. Em vez disso, adicione um endpoint ao seu servidor que:

  1. Recuperar ou criar um Customer.
  2. Criar uma chave efêmera para o Customer.
  3. Cria um PaymentIntent com o valor, a moeda e o cliente. Também é possível incluir opcionalmente o parâmetro automatic_payment_methods. A Stripe habilita sua funcionalidade por padrão na versão mais recente da API.
  4. Retorna o segredo do cliente do Payment Intent, o secret da chave efêmera, o id do cliente e sua chave publicável ao aplicativo.

As formas de pagamento mostradas aos clientes durante o processo de checkout também são incluídas no PaymentIntent. Você pode permitir que a Stripe obtenha as formas de pagamento das configurações do Dashboard ou listá-las manualmente. Independentemente da opção escolhida, saiba que a moeda passada no PaymentIntent filtra as formas de pagamento mostradas para o cliente. Por exemplo, se você passar EUR no eur e a OXXO estiver ativada no Dashboard, a OXXO não será exibida ao cliente porque a OXXO não aceita pagamentos em eur.

Se sua integração não exige uma opção baseada em código para oferecer formas de pagamento, a Stripe recomenda a opção automática. Isso ocorre porque a Stripe avalia a moeda, as restrições de forma de pagamento e outros parâmetros para determinar a lista de formas de pagamento aceitas. Priorizamos as formas de formas de pagamento que aumentam a conversão e que são mais relevantes para a moeda e a localização do cliente.

Observação

Você pode clonar e executar uma implementação de exemplo deste endpoint diretamente no CodeSandbox para testar o comportamento.

Você pode gerenciar formas de pagamento no Dashboard. A Stripe processa a devolução de formas de pagamento qualificadas com base em fatores como valor, moeda e fluxo de pagamento da transação. O PaymentIntent é criado usando as formas de pagamento configuradas no Dashboard. Se não quiser usar o Dashboard ou se quiser especificar formas de pagamento manualmente, você pode listá-las usando o atributo payment_method_types.

Command Line
curl
Ruby
Python
PHP
Java
Node
Go
.NET
No results
# Create a Customer (use an existing Customer ID if this is a returning customer) curl https://api.stripe.com/v1/customers \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -X "POST" # Create an Ephemeral Key for the Customer curl https://api.stripe.com/v1/ephemeral_keys \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -H "Stripe-Version: 2025-07-30.basil" \ -X "POST" \ -d "customer"="{{CUSTOMER_ID}}" \ # Create a PaymentIntent curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -X "POST" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1099 \ -d "currency"="eur" \ # In the latest version of the API, specifying the `automatic_payment_methods` parameter # is optional because Stripe enables its functionality by default. -d "automatic_payment_methods[enabled]"=true \ -d application_fee_amount="123" \ -d "transfer_data[destination]"=
{{CONNECTED_ACCOUNT_ID}}
\

Integrar a descrição da compra
Lado do cliente

Antes de exibir o Element Pagamento para dispositivos móveis, a página de checkout deve:

  • Mostrar os produtos sendo comprados e o valor total
  • Coletar todos os dados de entrega necessários
  • Incluir um botão de checkout para apresentar a IU da Stripe

No checkout do aplicativo, faça uma solicitação de rede para o endpoint de backend criado por você na etapa anterior e chame o initPaymentSheet do hook useStripe.

export default function CheckoutScreen() { const { initPaymentSheet, presentPaymentSheet } = useStripe(); const [loading, setLoading] = useState(false); const fetchPaymentSheetParams = async () => { const response = await fetch(`${API_URL}/payment-sheet`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, }); const { paymentIntent, ephemeralKey, customer } = await response.json(); return { paymentIntent, ephemeralKey, customer, }; }; const initializePaymentSheet = async () => { const { paymentIntent, ephemeralKey, customer, } = await fetchPaymentSheetParams(); const { error } = await initPaymentSheet({ merchantDisplayName: "Example, Inc.", customerId: customer, customerEphemeralKeySecret: ephemeralKey, paymentIntentClientSecret: paymentIntent, // Set `allowsDelayedPaymentMethods` to true if your business can handle payment //methods that complete payment after a delay, like SEPA Debit and Sofort. allowsDelayedPaymentMethods: true, defaultBillingDetails: { name: 'Jane Doe', } }); if (!error) { setLoading(true); } }; const openPaymentSheet = async () => { // see below }; useEffect(() => { initializePaymentSheet(); }, []); return ( <Screen> <Button variant="primary" disabled={!loading} title="Checkout" onPress={openPaymentSheet} /> </Screen> ); }

Quando o cliente tocar no botão Checkout, chame presentPaymentSheet() para abrir a descrição. Depois que o cliente finalizar o pagamento, a descrição será descartada e a promessa será resolvida com um StripeError<PaymentSheetError> opcional.

export default function CheckoutScreen() { // continued from above const openPaymentSheet = async () => { const { error } = await presentPaymentSheet(); if (error) { Alert.alert(`Error code: ${error.code}`, error.message); } else { Alert.alert('Success', 'Your order is confirmed!'); } }; return ( <Screen> <Button variant="primary" disabled={!loading} title="Checkout" onPress={openPaymentSheet} /> </Screen> ); }

Se não houver erro, informe ao usuário que está tudo pronto (por exemplo, exibindo uma tela de confirmação de pedido).

Configurar allowsDelayedPaymentMethods como verdadeiro permite formas de pagamento de notificação assíncrona como contas bancárias dos EUA. Para essas formas de pagamento, o status final do pagamento não é conhecido quando o PaymentSheet é concluído, sendo efetivado ou não posteriormente. Se você aceitar esses tipos de formas de pagamento, informe o cliente que seu pedido está confirmado e somente processe o pedido (por exemplo, fazendo o envio do produto) quando o pagamento for bem-sucedido.

Configurar um URL de retorno (somente iOS)
Lado do cliente

O cliente pode sair do seu aplicativo para autenticar (por exemplo, no Safari ou no aplicativo bancário). Para permitir que eles voltem ao seu aplicativo após a autenticação, configure um esquema de URL personalizado e configure seu aplicativo delegado para encaminhar o URL ao SDK. A Stripe não aceita links universais.

SceneDelegate.swift
Swift
No results
// This method handles opening custom URL schemes (for example, "your-app://stripe-redirect") func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { guard let url = URLContexts.first?.url else { return } let stripeHandled = StripeAPI.handleURLCallback(with: url) if (!stripeHandled) { // This was not a Stripe url – handle the URL normally as you would } }

Além disso, defina o returnURL no seu objeto PaymentSheet.Configuration para o URL do seu aplicativo.

var configuration = PaymentSheet.Configuration() configuration.returnURL = "your-app://stripe-redirect"

Gerenciar eventos pós-pagamento

Stripe envia um evento payment_intent.succeeded quando o pagamento é concluído. Use a ferramenta Dashboard webhook ou siga o guia de webhooks para receber esses eventos e executar ações, como enviar um e-mail de confirmação do pedido ao cliente, registrar a venda em um banco de dados ou iniciar um fluxo de trabalho de envio.

Escute esses eventos em vez de aguardar um retorno de chamada do cliente. No cliente, o consumidor pode fechar a janela do navegador ou sair do aplicativo antes da execução do retorno de chamada, o que permite que clientes mal-intencionados manipulem a resposta. Configurar sua integração para escutar eventos assíncronos é o que permite a você aceitar diferentes tipos de formas de pagamento com uma única integração.

Além de gerenciar o evento payment_intent.succeeded, recomendamos gerenciar esses outros eventos ao coletar pagamentos com o Element Pagamento:

EventoDescriçãoAção
payment_intent.succeededEnviado quando um cliente conclui um pagamento com êxito.Envie ao cliente uma confirmação de pedido e processe o pedido.
payment_intent.processingEnviado quando um cliente inicia um pagamento, mas o pagamento ainda precisa ser concluído. Esse evento costuma ser enviado quando um cliente inicia um débito bancário. Ele é seguido por um evento payment_intent.succeeded ou payment_intent.payment_failed no futuro.Envie ao cliente uma confirmação do pedido que indica que o pagamento está pendente. Para produtos digitais, pode ser necessário executar o pedido antes de aguardar a conclusão do pagamento.
payment_intent.payment_failedEnviado quando um cliente tenta fazer um pagamento, mas o pagamento falha.Se um pagamento passa de processing para payment_failed, ofereça ao cliente outra tentativa para pagar.

Testar a integração

Número do cartãoCenárioComo testar
O pagamento com cartão é bem-sucedido e não precisa de autenticação.Preencha o formulário do cartão de crédito usando o número do cartão de crédito com qualquer validade, CVC e código postal.
O pagamento com cartão precisa de autenticação.Preencha o formulário do cartão de crédito usando o número do cartão de crédito com qualquer validade, CVC e código postal.
O cartão é recusado com um código de recusa como insufficient_funds.Preencha o formulário do cartão de crédito usando o número do cartão de crédito com qualquer validade, CVC e código postal.
O cartão UnionPay tem um comprimento variável de 13 a 19 dígitos.Preencha o formulário do cartão de crédito usando o número do cartão de crédito com qualquer validade, CVC e código postal.

Consulte Testes para obter mais informações sobre como testar sua integração.

OpcionalHabilitar Apple Pay

OpcionalHabilitar Google Pay

OpcionalHabilitar leitura de cartões (somente iOS)
Lado do cliente

OpcionalPersonalizar a descrição

OpcionalConclua o pagamento em sua IU

Contestações

Como comerciante de liquidação das cobranças, sua plataforma é responsável pelas contestações. Leia com atenção as práticas recomendadas para responder a contestações.

Repasses

Por padrão, todos os fundos transferidos para uma conta conectada são acumulados no saldo Stripe da conta conectada e repassados diariamente. É possível alterar a frequência dos repasses na página de detalhes da conta conectada, clicando no botão mais à direita da seção Saldo, e selecionando Editar cronograma de repasses.

Reembolsos

Para emitir reembolsos, vá até a página Pagamentos. Selecione pagamentos individuais clicando na caixa de seleção à esquerda de qualquer pagamento que você quiser reembolsar. Após selecionar um pagamento, a Stripe exibe um botão Reembolsar no canto superior direito da página. Clique no botão Reembolsar para emitir um reembolso para clientes para todos os pagamentos que você selecionou.

Observação

Por padrão, contas conectadas não podem iniciar reembolsos diretamente a partir do Express Dashboard. Se suas contas conectadas estiverem usando o Express Dashboard, você pode processar os reembolsos em nome delas ou permitir que realizem os próprios reembolsos ajustando as funcionalidades do Express Dashboard.

Veja também

  • Gerenciar contas conectadas no Dashboard
  • Emitir reembolsos
  • Personalizar descrições no extrato
  • Trabalhar com várias moedas
  • Express dashboard
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