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 geral
Comece a usar o Connect
Projete sua integração
Princípios básicos de integração
Exemplos de integrações
    Crie uma integração avançada
    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
Estados Unidos
Português (Brasil)
Página inicialPlataformas e marketplacesExample integrations

Criar um marketplace

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

Este guia explica como aceitar pagamentos e mover fundos para as contas bancárias dos seus provedores de serviços ou vendedores. Para fins de demonstração, criamos um marketplace de aluguel de casas que conecta proprietários a possíveis inquilinos. Também mostramos como aceitar pagamentos de inquilinos (clientes) e fazer repasses aos proprietários (os usuários da sua plataforma).

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

Instale as bibliotecas oficiais da Stripe para acessar a API Stripe no seu aplicativo:

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

Criar uma conta conectada

Quando um vendedor ou provedor de serviços se cadastra na sua plataforma, crie uma conta conectada que o represente. A conta conectada permite que você recolha suas informações de identificação, aceite pagamentos para eles e transfira fundos para a conta bancária deles. Em nosso exemplo de aluguel de casas, a conta conectada representa o proprietário da casa.

Crie uma conta conectada com informações pré-preenchidas

Use a API /v2/core/accounts para criar uma conta conectada, especificando o dashboard da conta conectada e as responsabilidades.

Command Line
cURL
No results
curl -X POST https://api.stripe.com/v2/core/accounts \ -H "Authorization: Bearer
sk_test_BQokikJOvBiI2HlWgH4olfQ2
"
\ -H "Stripe-Version: 2025-08-27.preview" \ --json '{ "contact_email": "furever_contact@example.com", "display_name": "Furever", "defaults": { "responsibilities": { "fees_collector": "application", "losses_collector": "application" } }, "dashboard": "express", "identity": { "business_details": { "registered_name": "Furever" }, "country": "us", "entity_type": "company" }, "configuration": { "merchant": { "capabilities": { "card_payments": { "requested": true } } }, "recipient": { "capabilities": { "stripe_balance": { "stripe_transfers": { "requested": true } } } } }, "include": [ "configuration.merchant", "configuration.recipient", "identity", "requirements" ] }'

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.

Criar um link da conta

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

  • account
  • refresh_url
  • return_url
  • type = account_onboarding
  • configurações = destinatário e comerciante
Command Line
cURL
No results
curl -X POST https://api.stripe.com/v2/core/account_links \ -H "Authorization: Bearer
sk_test_BQokikJOvBiI2HlWgH4olfQ2
"
\ -H "Stripe-Version: 2025-08-27.preview" \ --json '{ "account":
"{{CONNECTED_ACCOUNT_ID}}"
, "use_case": { "type": "account_onboarding", "account_onboarding": { "configurations": [ "recipient", "merchant" ], "refresh_url": "https://example.com/reauth", "return_url": "https://example.com/return" } } }'

Redirecionar o usuário ao URL do link da conta

A resposta do criação de Account Link inclui um valor URL. Depois de autenticar o usuário em sua inscrição, redirecione-o para esse URL para enviá-lo ao fluxo. Os URLs de link de conta são temporários e de uso único, pois concedem acesso aos dados pessoais do usuário da conta conectada. Se você quiser preencher previamente as informações, deverá fazê-lo antes de gerar o link da conta. Depois de criar o link da conta, você não poderá ler ou gravar informações da conta conectada.

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.

ConnectOnboardViewController.swift
Swift
Objective-C
No results
import UIKit import SafariServices let BackendAPIBaseURL: String = "" // Set to the URL of your backend server class ConnectOnboardViewController: UIViewController { // ... override func viewDidLoad() { super.viewDidLoad() let connectWithStripeButton = UIButton(type: .system) connectWithStripeButton.setTitle("Connect with Stripe", for: .normal) connectWithStripeButton.addTarget(self, action: #selector(didSelectConnectWithStripe), for: .touchUpInside) view.addSubview(connectWithStripeButton) // ... } @objc func didSelectConnectWithStripe() { if let url = URL(string: BackendAPIBaseURL)?.appendingPathComponent("onboard-user") { var request = URLRequest(url: url) request.httpMethod = "POST" let task = URLSession.shared.dataTask(with: request) { (data, response, error) in guard let data = data, let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String : Any], let accountURLString = json["url"] as? String, let accountURL = URL(string: accountURLString) else { // handle error } let safariViewController = SFSafariViewController(url: accountURL) safariViewController.delegate = self DispatchQueue.main.async { self.present(safariViewController, animated: true, completion: nil) } } } } // ... } extension ConnectOnboardViewController: SFSafariViewControllerDelegate { func safariViewControllerDidFinish(_ controller: SFSafariViewController) { // the user may have closed the SFSafariViewController instance before a redirect // occurred. Sync with your backend to confirm the correct state } }

Gerenciar o usuário que volta à plataforma

O Connect Onboarding exige que você passe tanto um return_url quanto um refresh_url para lidar com todos os casos em que o usuário da conta é redirecionado para a sua plataforma.

Observação

Você pode usar HTTP para seu 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. Certifique-se de trocar os URLs de teste por URLs HTTPS antes de lançar a produção.

return_url

A Stripe emite um redirecionamento para essa URL quando o usuário da conta conectada conclui o fluxo de onboarding. Isso não significa que todas as informações tenham sido recolhidas ou que não haja requisitos pendentes na conta. Significa apenas que o fluxo foi inserido e encerrado corretamente.

Nenhum estado é transmitido por essa URL. Depois que um usuário for redirecionado para o seu return_url, verifique o estado dos requisitos na conta dele fazendo o seguinte:

  • Ouça os Webhooks v2.core.account[requirements].updated.
  • Chame a API Accounts v2 e inspecione 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.

Configure sua página refresh_url para acionar um método em seu servidor para chamar Account Links v2 novamente com os mesmos parâmetros e redirecionar o usuário para o novo link.

Gerenciar usuários que não concluíram o onboarding

Um usuário que é redirecionado para seu return_url pode não ter concluído o processo de onboarding. Use o endpoint /v2/core/accounts para recuperar a conta do usuário e verificar se configuration.recipient.capabilities.stripe_balance.stripe_transfers.status é active. Se o status não for active e configuration.destinatário.capabilities.stripe_balance.stripe_transfers.status_details.code for requirements_past_due, forneça prompts de IU para permitir que o usuário continue a fazer onboarding por meio de um novo link de conta. Para outros códigos, trate-os conforme necessário.

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 ficam 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.

Aceitar um pagamento

Use o Stripe Checkout para aceitar pagamentos. O Checkout aceita várias formas de pagamento e mostra automaticamente as mais relevantes ao cliente. Você pode aceitar pagamentos com o Checkout usando uma página hospedada pela Stripe ou adicionar uma forma de pagamento incorporável pré-configurada diretamente em seu site. Também é possível criar um fluxo personalizado (usando o Payment Element) para aceitar várias formas de pagamento com uma única integração de front-end.

Crie uma Sessão do Checkout Cliente e servidor

Uma Sessão do Checkout controla o que seu cliente vê na página de pagamentos hospedada pela Stripe, como itens de linha, valor, moeda e formas de pagamento aceitas.

Adicione um botão de checkout ao seu site para chamar um endpoint do lado do servidor e criar uma Sessão do Checkout.

checkout.html
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>

No servidor, faça a chamada a seguir para a API da Stripe. Depois de criar uma Sessão do Checkout, redirecione o cliente para o URL retornado na resposta.

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 "line_items[0][price]"=
"{{PRICE_ID}}"
\ -d "line_items[0][quantity]"=1 \ -d "payment_intent_data[application_fee_amount]"=123 \ -d "payment_intent_data[transfer_data][destination]"=
"{{CONNECTED_ACCOUNT_ID}}"
\ --data-urlencode success_url="https://example.com/success" \ --data-urlencode cancel_url="https://example.com/cancel"
  • line_items - este argumento representa os itens que o cliente está comprando e que serão exibidos na interface do usuário hospedada pela Stripe.
  • success_url - este argumento redireciona um usuário após a conclusão de um pagamento.
  • cancel_url - este argumento redireciona um usuário que clicou em Cancelar.
  • payment_intent_data[application_fee_amount] - este argumento especifica o valor planejado pela sua plataforma para retirar da transação. O valor total da cobrança é imediatamente transferido da plataforma para a conta conectada que é especificada por transfer_data[destination] após a captura da cobrança. O application_fee_amount é transferido de volta para a plataforma, e a tarifa da Stripe é deduzida do valor da plataforma.
  • payment_intent_data[transfer_data][destination] - este argumento indica que é uma cobrança de destino. Uma cobrança de destino significa que a cobrança é processada na plataforma e, em seguida, os fundos são imediatamente e automaticamente transferidos para o saldo pendente da conta conectada. Para o nosso exemplo de aluguel residencial, queremos construir uma experiência na qual o cliente pague por meio da plataforma, e o proprietário receba o pagamento pela plataforma.

O Checkout usa as configurações de marca da sua conta de plataforma para cobranças de destino. Para obter mais informações, consulte Personalizar a marca.

Esta Sessão cria uma cobrança de destino. Se você precisar controlar o cronograma de transferências ou precisar transferir fundos de um único pagamento para várias partes, use cobranças e transferências separadas.

Gerencie eventos pós-pagamento Server-side

A Stripe envia um evento checkout.session.completed quando o pagamento é concluído. Use um webhook para receber esses eventos e executar ações, como 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.

Escute esses eventos em vez de aguardar um retorno de chamada do cliente. No cliente, o consumidor poderia fechar a janela do navegador ou sair do aplicativo antes da execução do retorno de chamada. Algumas formas de pagamento também demoram de 2 a 14 dias para a confirmação do pagamento. 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 checkout.session.completed, recomendamos gerenciar dois outros eventos ao coletar pagamentos com o Checkout:

EventoDescriçãoPróximas etapas
checkout.session.completedO cliente autorizou o pagamento enviando o formulário do Checkout.Aguarde a confirmação ou falha do pagamento.
checkout.session.async_payment_succeededO pagamento do cliente foi confirmado.Execute o pedido de mercadorias ou serviços.
checkout.session.async_payment_failedO pagamento foi recusado ou houve outro erro.Entre em contato com o cliente por e-mail e solicite que seja feito um novo pedido.

Todos esses eventos incluem o objeto Checkout Session. Após o êxito do pagamento, o status subjacente do PaymentIntent passa de processing para succeeded.

Testes

Teste seu fluxo de criação de conta criando contas e usando OAuth.

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.

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.
  • Confira nosso changelog.
  • Dúvidas? Fale com a equipe de vendas.
  • LLM? Read llms.txt.
  • Powered by Markdoc