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
Gerenciamento de contas
Fazer onboarding de contas
Configurar Dashboards da conta
Trabalhe com tipos de contas conectadas
Processamento de pagamentos
Receba pagamentos
    Criar uma cobrança
      Cobranças diretas
      Cobranças de destino
      Cobranças e transferências separadas
    Estabelecer descrições para extratos
    Definir MCCs
    Gerenciar várias moedas
    Crie links de pagamentos com o Connect
    Usar o Radar com o Connect
    Contestações no Connect
    Criar assinaturas
    Criar faturas
    Configurações de formas de pagamento múltiplas
    Integre o componente das configurações de forma de pagamento
    Saldo da conta
Repassar para contas
Administração de plataforma
Gerencie sua plataforma do Connect
Informes fiscais para sua plataforma Connect
Página inicialPlataformas e marketplacesAccept paymentsCreate a charge

Criar cobranças e transferências separadas

Crie cobranças na conta da sua plataforma e transfira fundos para várias contas conectadas.

Crie cobranças e transferências separadas para transferir fundos de um pagamento para várias contas conectadas ou quando um usuário específico não for conhecido no momento do pagamento. A cobrança na conta da sua plataforma é desvinculada das transferências para suas contas conectadas. Com este tipo de cobrança:

  • Você cria uma cobrança na conta da sua plataforma e transfere fundos para suas contas conectadas. O pagamento aparece como cobrança na sua conta, e também há transferências para contas conectadas (valor determinado por você), que são retiradas do saldo da sua conta.
  • Você pode transferir os fundos para diferentes contas conectadas.
  • O custo das tarifas da Stripe e de reembolsos ou estornos é debitado da sua conta.

Esse tipo de cobrança ajuda os marketplaces a dividir os pagamentos entre várias partes. Por exemplo, uma plataforma de entrega de restaurantes que divide os pagamentos entre o restaurante e o entregador.

Observação

A segregação de fundos é um recurso de visualização privada que mantém os fundos de pagamento em um estado de retenção protegido antes de você transferi-los para contas conectadas. Isso evita que os fundos alocados sejam usados para operações não relacionadas à plataforma. Entre em contato com seu gerente da conta Stripe para solicitar acesso.

A Stripe aceita cobranças e transferências separadas nas seguintes regiões:

Alemanha
Austrália
Áustria
Bélgica
Brasil
Bulgária
Canadá
Chipre
Croácia
Dinamarca
Eslováquia
Eslovênia
Espanha
Estados Unidos
Estônia
Finlândia
França
Grécia
Hungria
Irlanda
Itália
Japão
Letônia
Liechtenstein
Lituânia
Luxemburgo
Malásia
Malta
México
Noruega
Nova Zelândia
Países Baixos
Polônia
Portugal
Reino Unido
República Tcheca
Romênia
Singapura
Suécia
Suíça

Na maioria dos cenários, sua plataforma e todas as contas conectadas precisam estar na mesma região. A tentativa de transferir fundos para uma região não permitida retorna um erro. Para obter informações sobre o suporte entre regiões, consulte as transferências internacionais. Você só pode usar transferências em combinação com os casos de uso permitidos para cobranças, recargas e tarifas. Recomendamos usar cobranças e transferências separadas para contas conectadas com acesso ao Dashboard Express ou sem acesso Dashboard.

Integre a IU de pagamento pré-criada da Stripe no checkout do seu aplicativo iOS com a classe PaymentSheet. Veja nosso exemplo de integração no GitHub.

Configurar a Stripe
Lado do servidor
Lado do cliente

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

Lado do servidor

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

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'

Lado do cliente

O SDK da Stripe para iOS é de código aberto, totalmente documentado e compatível com aplicativos que aceitam iOS 13 ou versões mais recentes.

Para instalar o SDK, siga estas etapas:

  1. No Xcode, selecione Arquivo > Adicionar dependências de pacote… e insira https://github.com/stripe/stripe-ios-spm como URL do repositório.
  2. Selecione o número da última versão da nossa página de lançamentos.
  3. Adicione o produto StripePaymentSheet ao alvo do seu aplicativo.

Observação

Para obter mais informações sobre a versão mais recente e as versões anteriores do SDK, consulte a página Lançamentos no GitHub. Para receber notificações quando um novo lançamento for publicado, assista aos lançamentos do repositório.

Configure o SDK com sua chave publicável da Stripe na inicialização do aplicativo. Isso permite que seu aplicativo faça solicitações à API da Stripe .

AppDelegate.swift
Swift
No results
import UIKit import StripePaymentSheet @main class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { StripeAPI.defaultPublishableKey =
"pk_test_TYooMQauvdEDq54NiTphI7jx"
// do any other necessary launch configuration return true } }

Observação

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

Adicione um endpoint
Lado do servidor

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

  1. Um PaymentIntent. A Stripe usa isso para representar sua intenção de coletar um pagamento de um cliente, acompanhando suas tentativas de cobrança e alterações de estado do pagamento durante todo o processo.
  2. Um cliente (opcional). Para configurar uma forma de pagamento para pagamentos futuros, ela precisa estar vinculada a um cliente. 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. Uma chave efêmera de cliente (opcional). Os dados do objeto Customer são confidenciais e não podem ser recuperados diretamente do aplicativo. Uma chave efêmera concede ao SDK acesso temporário ao cliente.

Se você quiser salvar cartões e permitir que clientes recorrentes reutilizem cartões salvos, você precisa dos objetos Customer e Customer Ephemeral Key para sua integração. Caso contrário, você poderá omitir esses objetos.

Por motivos de segurança, seu aplicativo não pode criar esses objetos. Em vez disso, adicione um endpoint ao 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, o cliente e um grupo de transferência para associar posteriormente à transferência de fundos.
  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 estão incluídas no PaymentIntent. Você pode permitir que a Stripe obtenha as formas de pagamento das configurações do Dashboard ou pode listá-las manualmente.

A menos que sua integração exija uma opção baseada em código para oferecer formas de pagamento, não liste as formas de pagamento manualmente. 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. A Stripe prioriza as formas de pagamento que ajudam a aumentar a conversão e são mais relevantes para a moeda e a localização do cliente. Ocultamos as formas de pagamento de menor prioridade em um menu de navegação.

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

Command Line
curl
Ruby
Python
PHP
Java
Node.js
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-08-27.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"=10000 \ -d "currency"="usd" \ # 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 transfer_group="ORDER100" \

Integrar a descrição da compra
Lado do cliente

Para exibir o Payment Element para dispositivos móveis na tela de checkout, não se esqueça de:

  • Mostrar os produtos que o cliente está comprando e o valor total
  • Usar o Address Element para coletar todos os dados de envio necessários do cliente
  • Adicionar um botão de checkout para exibir a IU da Stripe

No checkout do seu aplicativo, obtenha o segredo do cliente do PaymentIntent, o segredo da chave efêmera, o ID do cliente e a chave publicável do endpoint que você criou na etapa anterior. Defina a chave publicável usando StripeAPI.shared e inicialize PaymentSheet.

import UIKit import StripePaymentSheet class CheckoutViewController: UIViewController { @IBOutlet weak var checkoutButton: UIButton! var paymentSheet: PaymentSheet? let backendCheckoutUrl = URL(string: "Your backend endpoint/payment-sheet")! // Your backend endpoint override func viewDidLoad() { super.viewDidLoad() checkoutButton.addTarget(self, action: #selector(didTapCheckoutButton), for: .touchUpInside) checkoutButton.isEnabled = false // MARK: Fetch the PaymentIntent client secret, Ephemeral Key secret, Customer ID, and publishable key var request = URLRequest(url: backendCheckoutUrl) request.httpMethod = "POST" let task = URLSession.shared.dataTask(with: request, completionHandler: { [weak self] (data, response, error) in guard let data = data, let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String : Any], let customerId = json["customer"] as? String, let customerEphemeralKeySecret = json["ephemeralKey"] as? String, let paymentIntentClientSecret = json["paymentIntent"] as? String, let publishableKey = json["publishableKey"] as? String, let self = self else { // Handle error return } STPAPIClient.shared.publishableKey = publishableKey // MARK: Create a PaymentSheet instance var configuration = PaymentSheet.Configuration() configuration.merchantDisplayName = "Example, Inc." configuration.customer = .init(id: customerId, ephemeralKeySecret: customerEphemeralKeySecret) // Set `allowsDelayedPaymentMethods` to true if your business handles // delayed notification payment methods like US bank accounts. configuration.allowsDelayedPaymentMethods = true self.paymentSheet = PaymentSheet(paymentIntentClientSecret: paymentIntentClientSecret, configuration: configuration) DispatchQueue.main.async { self.checkoutButton.isEnabled = true } }) task.resume() } }

Quando o cliente toca no botão Checkout, invoque present para apresentar a PaymentSheet. Após o cliente concluir o pagamento, a descrição é descartada e o bloco de conclusão é invocado com PaymentSheetResult.

@objc func didTapCheckoutButton() { // MARK: Start the checkout process paymentSheet?.present(from: self) { paymentResult in // MARK: Handle the payment result switch paymentResult { case .completed: print("Your order is confirmed") case .canceled: print("Canceled!") case .failed(let error): print("Payment failed: \(error)") } } }

Se PaymentSheetResult for .completed, informe ao usuário (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
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
Objective-C
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 } }

Gerenciar eventos pós-pagamento
Lado do servidor

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.

Criar uma transferência
Lado do servidor

No seu servidor, envie fundos da sua conta para uma conta conectada criando uma Transferência e especificando o transfer_group utilizado.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/transfers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=7000 \ -d currency=usd \ -d destination=
{{CONNECTED_ACCOUNT_ID}}
\ -d transfer_group=ORDER100

Os valores de transferência e cobrança não precisam ser iguais. Você pode dividir uma única cobrança entre várias transferências ou incluir várias cobranças em uma única transferência. O exemplo a seguir cria uma transferência adicional associada ao mesmo transfer_group.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/transfers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=2000 \ -d currency=usd \ -d destination={{OTHER_CONNECTED_ACCOUNT_ID}} \ -d transfer_group=ORDER100

Opções de transferência

Você pode atribuir qualquer valor à string transfer_group, mas ela deve representar uma única ação de negócios. Também é possível fazer uma transferência sem associar uma cobrança ou transfer_group. Por exemplo, quando você paga um provedor, mas não há um pagamento a cliente associado.

Observação

O transfer_group identifica apenas objetos associados. Ele não afeta nenhuma funcionalidade padrão. Para evitar que uma transferência seja executada antes que os fundos da cobrança associada estejam disponíveis, use o atributo source_transaction da transferência.

Por padrão, uma solicitação de transferência falha quando o valor excede o saldo da conta disponível da plataforma. A Stripe não repete automaticamente solicitações de transferência malsucedidas.

Você pode evitar falhas nas solicitações de transferência para transferências associadas a cobranças. Quando você especifica a cobrança associada como a source_transaction da transferência, a solicitação de transferência é bem-sucedida automaticamente. No entanto, não executamos a transferência até que os fundos dessa cobrança estejam disponíveis na conta da plataforma.

Observação

Se você usa cobranças e transferências separadas, leve isso em consideração quando planejar seu cronograma de repasses payout. Repasses automáticos podem interferir nas transferências que não têm uma source_transaction definida.

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

OpcionalAtivar Apple Pay

Observação

Se sua tela de checkout tiver um botão Apple Pay exclusivo, siga o guia de Apple Pay e use ApplePayContext para coletar pagamento com o botão Apple Pay. Você pode usar PaymentSheet para processar outros tipos de forma de pagamento.

Solicitar um ID de comerciante da Apple

Obtenha um ID de comerciante da Apple solicitando um novo identificador no site de desenvolvedores da Apple.

Preencha o formulário com descrição e identificador. A descrição é para seu controle e pode ser modificada no futuro. A Stripe recomenda que você use o nome do aplicativo como identificador (por exemplo, merchant.com.{{YOUR_APP_NAME}}).

Criar um certificado Apple Pay

Crie um certificado para criptografia de dados de pagamento pelo aplicativo.

Vá até Configurações de certificado do iOS no Dashboard, clique em Adicionar novo aplicativo e siga o guia.

Baixe um arquivo de solicitação de assinatura de certificado (CSR) para obter um certificado seguro da Apple que permite usar o Apple Pay.

Um arquivo CSR deve ser usado para emitir exatamente um certificado. Se você trocar seu ID de comerciante da Apple, acesse as Configurações de certificado do iOS no Dashboard para obter um novo CSR e certificado.

Integrar com Xcode

Adicione as funções do Apple Pay ao aplicativo. No Xcode, abra as configurações do projeto, clique na guia Signing & Capabilities e adicione o recurso Apple Pay. Talvez seja necessário fazer login na sua conta de desenvolvedor. Selecione o ID de comerciante criado anteriormente e o aplicativo já pode aceitar Apple Pay.

Habilitar o recurso Apple Pay no Xcode

Adicionar Apple Pay

Para adicionar Apple Pay à PaymentSheet, defina applePay após inicializar PaymentSheet.Configuration com seu ID de comerciante Apple e o código de país da sua empresa.

var configuration = PaymentSheet.Configuration() configuration.applePay = .init( merchantId: "merchant.com.your_app_name", merchantCountryCode: "US" )

Rastreamento de pedidos

Para adicionar informações de rastreamento de pedidos no iOS 16 ou posterior, configure um authorizationResultHandler em seu PaymentSheet.ApplePayConfiguration.Handlers. A Stripe invoca sua implementação após a conclusão do pagamento, mas antes que o iOS descarte a descrição Apple Pay.

Na implementação authorizationResultHandler, obtenha os detalhes do pedido concluído no seu servidor. Adicione os detalhes ao PKPaymentAuthorizationResult informado e chame o gerenciador de conclusão informado.

Para saber mais sobre o rastreamento de pedidos, consulte a documentação de pedidos da carteira da Apple.

let customHandlers = PaymentSheet.ApplePayConfiguration.Handlers( authorizationResultHandler: { result, completion in // Fetch the order details from your service MyAPIClient.shared.fetchOrderDetails(orderID: orderID) { myOrderDetails result.orderDetails = PKPaymentOrderDetails( orderTypeIdentifier: myOrderDetails.orderTypeIdentifier, // "com.myapp.order" orderIdentifier: myOrderDetails.orderIdentifier, // "ABC123-AAAA-1111" webServiceURL: myOrderDetails.webServiceURL, // "https://my-backend.example.com/apple-order-tracking-backend" authenticationToken: myOrderDetails.authenticationToken) // "abc123" // Call the completion block on the main queue with your modified PKPaymentAuthorizationResult completion(result) } } ) var configuration = PaymentSheet.Configuration() configuration.applePay = .init(merchantId: "merchant.com.your_app_name", merchantCountryCode: "US", customHandlers: customHandlers)

OpcionalHabilitar leitura de cartões

Para habilitar o suporte à leitura de cartão, defina a NSCameraUsageDescription (Privacidade - Descrição de uso de câmera) no Info.plist do seu aplicativo e informe um motivo para acessar a câmera (por exemplo, “Para ler cartões”). Dispositivos com iOS 13 ou versão mais recente aceitam a leitura de cartões.

OpcionalPersonalizar a descrição

Toda personalização é configurada usando o objeto PaymentSheet.Configuration.

Aparência

Personalize cores, fontes e outros atributos de acordo com a aparência do aplicativo usando a API Appearance.

Layout da forma de pagamento

Configure o layout das formas de pagamento na planilha usando paymentMethodLayout. Você pode exibi-los horizontalmente, verticalmente ou deixar a Stripe otimizar o layout automaticamente.

var configuration = PaymentSheet.Configuration() configuration.paymentMethodLayout = .automatic

Coletar endereços de usuários

Colete endereços de entrega ou cobrança locais e internacionais de seus clientes usando o Address Element.

Nome de exibição do comerciante

Especifique o nome da empresa exibido para o cliente definindo merchantDisplayName. Por padrão, esse é o nome do seu aplicativo.

var configuration = PaymentSheet.Configuration() configuration.merchantDisplayName = "My app, Inc."

Modo escuro

A PaymentSheet se adapta automaticamente às configurações de aparência do sistema do usuário (modos claro e escuro). Se o seu aplicativo não aceitar o modo escuro, defina estilo como modo alwaysLight ou alwaysDark.

var configuration = PaymentSheet.Configuration() configuration.style = .alwaysLight

Dados de faturamento padrão

Para definir valores padrão para dados de faturamento coletados na descrição da compra, configure a propriedade defaultBillingDetails. A PaymentSheet preenche previamente seus campos com os valores que você informou.

var configuration = PaymentSheet.Configuration() configuration.defaultBillingDetails.address.country = "US" configuration.defaultBillingDetails.email = "foo@bar.com"

Coleta de dados de faturamento

Use billingDetailsCollectionConfiguration para especificar como você deseja coletar dados de faturamento na página de pagamento.

Você pode coletar o nome, e-mail, número de telefone e endereço do cliente.

Se você quiser apenas os dados de faturamento exigidos pela forma de pagamento, defina billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod como verdadeiro. Nesse caso, PaymentSheet.Configuration.defaultBillingDetails são definidos como os detalhes de faturamento da forma de pagamento.

Se você quiser coletar dados de faturamento adicionais que não são necessariamente exigidos pela forma de pagamento, defina billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod como falso. Nesse caso, os dados de faturamento coletados por meio da PaymentSheet são definidos como os dados de faturamento da forma de pagamento.

var configuration = PaymentSheet.Configuration() configuration.defaultBillingDetails.email = "foo@bar.com" configuration.billingDetailsCollectionConfiguration.name = .always configuration.billingDetailsCollectionConfiguration.email = .never configuration.billingDetailsCollectionConfiguration.address = .full configuration.billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod = true

Observação

Consulte seu jurídico sobre as leis que se aplicam à coleta de dados. Só colete números de telefone se precisar deles para a transação.

OpcionalConclua o pagamento em sua IU

Você pode exibir o Payment Sheet apenas para coletar dados da forma de pagamento e depois chamar um método confirm para concluir o pagamento na IU do aplicativo. Isso é útil quando você tem um botão de compra personalizado ou precisa de mais etapas após a coleta dos dados do pagamento.

Conclua o pagamento na IU do aplicativo

As etapas a seguir mostram como concluir o pagamento na IU do aplicativo. Veja nosso exemplo de integração no GitHub.

  1. Primeiro, inicialize PaymentSheet.FlowController em vez de PaymentSheet e atualize a IU com sua propriedade paymentOption. Essa propriedade contém uma imagem e um rótulo que representam a forma de pagamento padrão selecionada inicialmente pelo cliente.
PaymentSheet.FlowController.create(paymentIntentClientSecret: paymentIntentClientSecret, configuration: configuration) { [weak self] result in switch result { case .failure(let error): print(error) case .success(let paymentSheetFlowController): self?.paymentSheetFlowController = paymentSheetFlowController // Update your UI using paymentSheetFlowController.paymentOption } }
  1. Em seguida, chame presentPaymentOptions para coletar os detalhes do pagamento. Quando terminar, atualize sua IU novamente com a propriedade paymentOption.
paymentSheetFlowController.presentPaymentOptions(from: self) { // Update your UI using paymentSheetFlowController.paymentOption }
  1. Por fim, chame confirm.
paymentSheetFlowController.confirm(from: self) { paymentResult in // MARK: Handle the payment result switch paymentResult { case .completed: print("Payment complete!") case .canceled: print("Canceled!") case .failed(let error): print(error) } }

Se PaymentSheetResult for .completed, informe ao usuário (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.

OpcionalHabilitar formas de pagamento adicionais

Navegue para Gerenciar formas de pagamento para suas contas conectadas no Dashboard para configurar quais formas de pagamento suas contas conectadas aceitam. As alterações nas configurações padrão se aplicam a todas as contas conectadas novas e existentes.

Consulte os seguintes recursos para obter informações sobre formas de pagamento:

  • Um guia de formas de pagamento para ajudar você a escolher as formas de pagamento corretas para sua plataforma.
  • Funções da conta para assegurar que as formas de pagamento escolhidas funcionem para suas contas conectadas.
  • Tabelas de suporte a formas de pagamento e produtos para assegurar que suas formas de pagamento escolhidas funcionem para seus produtos da Stripe e fluxos de pagamento.

Para cada forma de pagamento, você pode selecionar uma das seguintes opções no menu suspenso:

Ativadas por padrãoSuas contas conectadas aceitam esta forma de pagamento durante o checkout. Algumas formas de pagamento podem ser desativadas ou bloqueadas. Isso ocorre porque suas contas conectadas com acesso ao Stripe Dashboard precisam ativá-las em sua página de configurações.
Desativadas por padrãoSuas contas conectadas não aceitam esta forma de pagamento durante o checkout. Se você permitir que contas conectadas com acessem o Stripe Dashboard para gerenciar suas próprias formas de pagamento, elas podem ativar esse recurso.
BloqueadasSuas contas conectadas não aceitam esta forma de pagamento durante o checkout. Se você permitir que contas conectadas com acessem o Stripe Dashboard para gerenciar suas próprias formas de pagamento, elas não têm a opção para ativar esse recurso.
Opções suspensas para formas de pagamento, cada uma mostrando uma opção disponível (bloqueadas, ativadas por padrão, desativadas por padrão)

Opções de formas de pagamento

Se fizer uma alteração em uma forma de pagamento, você deve clicar em Revisar alterações na barra inferior da tela e em Salvar e aplicar para atualizar suas contas conectadas.

Diálogo exibido após clicar no botão Salvar, com uma lista das alterações feitas pelo usuário

Salvar diálogo

Permitir que contas conectadas gerenciem formas de pagamento

A Stripe recomenda permitir que as contas conectadas personalizem suas próprias formas de pagamento. Esta opção permite que cada conta conectada com acesso ao Stripe Dashboard para ver e atualizar sua página de formas de pagamento. Somente os proprietários das contas conectadas podem personalizar as formas de pagamento. O Stripe Dashboard exibe o conjunto de padrões de forma de pagamento que você aplicou a todas as contas conectadas novas e existentes. Suas contas conectadas podem sobrepor esses padrões, excluindo as formas de pagamento que você bloqueou.

Marque a caixa de seleção Personalização da conta para habilitar essa opção. Você deve clicar em Revisar alterações na barra inferior da tela e selecionar Salvar e aplicar para atualizar essa configuração.

Captura de tela da caixa de seleção a ser marcada ao permitir que proprietários conectados personalizem formas de pagamento

Caixa de seleção de personalização da conta

Funções das formas de pagamento

Para permitir que suas contas conectadas aceitem outras formas de pagamento, é preciso verificar se as contas conectadas têm funções ativas para cada forma de pagamento. A maioria das formas de pagamento tem os mesmos requisitos de verificação da função card_payments, com algumas restrições e exceções. A tabela de funções das formas de pagamento lista as formas de pagamento que exigem verificação adicional para cartões.

Navegue até as Configurações de pagamento de conta conectada no Dashboard para solicitar recursos em suas contas conectadas novas e existentes para cada combinação de forma de pagamento e país.

Especificar o comerciante da liquidação

O comerciante da liquidação depende das funções da conta e da forma de criação da cobrança. O comerciante da liquidação determina quais dados são usados para fazer a cobrança. Isso inclui a descrição no extrato (da plataforma ou da conta conectada) exibida sobre essa cobrança no extrato bancário ou de cartão de crédito do cliente.

A especificação do comerciante da liquidação permite que você defina mais explicitamente para quem as cobranças são criadas. Por exemplo, algumas plataformas preferem ser o comerciante da liquidação porque o cliente final interage diretamente com a plataforma (como plataformas sob demanda). No entanto, algumas plataformas têm contas conectadas que interagem diretamente com os clientes finais (como lojas de uma plataforma de e-commerce). Nesses cenários, pode fazer mais sentido que a conta conectada seja o comerciante da liquidação.

Você pode definir o parâmetro on_behalf_of para o ID de uma conta conectada para tornar essa conta o comerciante de liquidação do pagamento. Quando usar on_behalf_of:

  • As cobranças são liquidadas no país da conta conectada e na moeda de liquidação.
  • É usada a estrutura de tarifas do país da conta conectada.
  • A descrição no extrato da conta conectada é exibida no extrato do cartão de crédito do cliente.
  • Se a conta conectada estiver em um país diferente do da plataforma, o endereço e o número de telefone da conta conectada serão exibidos no extrato do cartão de crédito do cliente.
  • O número de dias que um saldo pendente é retido antes de receber o repasse depende da configuração delay_days na conta conectada.

Se on_behalf_of for omitido, a plataforma será a empresa registrada para o pagamento.

Cuidado

O parâmetro on_behalf_of só é aceito para contas conectadas com uma função de pagamentos, como card_payments. As contas sujeitas ao contrato de serviços de destinatário não podem solicitar card_payments nem outras funções de pagamento.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=10000 \ -d currency=usd \ -d "automatic_payment_methods[enabled]"=true \ -d on_behalf_of=
{{CONNECTED_ACCOUNT_ID}}
\ -d transfer_group=ORDER100

Coletar tarifas

Ao usar cobranças e transferências separadas, a plataforma pode coletar tarifas sobre uma cobrança, reduzindo o valor transferido para as contas de destino. Por exemplo, considere uma transação de serviço de entrega em restaurante que envolve pagamentos ao restaurante e ao motorista:

  1. O cliente paga uma cobrança de US$ 100.
  2. A Stripe coleta uma tarifa de US$ 3,20 e adiciona os US$ 96,80 restantes ao saldo pendente da conta da plataforma.
  3. A plataforma transfere US$ 70 para a conta conectada do restaurante e US$ 20 para a conta conectada do motorista.
  4. Uma tarifa de plataforma de US$ 6,80 permanece na conta da plataforma.

Tarifas de plataforma com segregação de fundos

A segregação de fundos é um recurso de visualização privada que permite debitar tarifas da plataforma diretamente dos fundos alocados durante a transferência, proporcionando uma separação contábil limpa. Entre em contato com seu gerente da conta Stripe para solicitar acesso.

Como uma cobrança é dividida em tarifas para a conta da plataforma e transferências para as contas conectadas

Para saber mais sobre o processamento de pagamentos em várias moedas com o Connect, consulte como trabalhar com várias moedas.

Disponibilidade da transferência

O comportamento padrão é transferir fundos do saldo disponível da conta da plataforma. A tentativa de uma transferência que excede o saldo disponível falha com um erro. Para evitar esse problema, quando criar uma transferência, vincule-a a uma cobrança existente especificando o ID da cobrança como o parâmetro source_transaction. Com um source_transaction, a solicitação de transferência retorna com êxito, independentemente do seu saldo disponível, caso a cobrança relacionada ainda não tenha sido liquidada. No entanto, os fundos não ficam disponíveis na conta de destino até que os fundos da cobrança associada estejam disponíveis para transferência da conta da plataforma.

Transferências com segregação de fundos

O recurso de visualização privada segregação de fundos exige o parâmetro source_transaction para transferências de fundos alocados para que sejam vinculadas ao pagamento original.

Observação

Se uma transferência falhar por falta de fundos no saldo da plataforma, a adição de fundos não acionará automaticamente uma nova tentativa da ação malsucedida. Depois de adicionar fundos, você deve repetir todas as transferências ou repasses malsucedidos.

Se a cobrança de origem tiver um valor transfer_group, a Stripe atribui o mesmo valor ao transfer_group da transferência. Se isso não acontecer, a Stripe gera uma cadeia de caracteres no formato group_ mais o ID do PaymentIntent associado, por exemplo: group_pi_2NHDDD589O8KAxCG0179Du2s. Essa string é atribuída como transfer_group tanto para a cobrança quanto para a transferência.

Observação

Você deve especificar o source_transaction quando criar uma transferência. Não é possível atualizar esse atributo posteriormente.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/transfers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=7000 \ -d currency=usd \ -d source_transaction=
{{CHARGE_ID}}
\ -d destination=
{{CONNECTED_ACCOUNT_ID}}

Você pode obter o ID da cobrança no PaymentIntent:

  • Obtenha o atributo latest_charge do PaymentIntent. Este atributo é o ID da cobrança mais recente associada ao PaymentIntent.
  • Solicitar uma lista de cobranças, especificando o payment_intent na solicitação. Esse método retorna dados completos para todas as cobranças associadas ao PaymentIntent.

Quando esse parâmetro é usado:

  • O valor da transferência não pode exceder o valor da cobrança de origem
  • Você pode criar várias transferências com o mesmo source_transaction, desde que a soma das transferências não exceda a cobrança de origem
  • A transferência assume o status pendente da cobrança associada. Se os fundos da cobrança são disponibilizados em N dias, o pagamento recebido da transferência pela conta Stripe de destino também é disponibilizado em N dias
  • A Stripe cria automaticamente um transfer_group para você
  • A moeda da transação de saldo associada com a cobrança precisa corresponder à moeda da transferência

Formas de pagamento assíncronas, como ACH, podem falhar após ser feita uma solicitação de transferência subsequente. Evite usar source_transaction para esses pagamentos. Em vez disso, aguarde o acionamento de um evento charge.succeeded antes de transferir os fundos. Se for necessário usar source_transaction com esses pagamentos, será preciso implementar funcionalidades para gerenciar falhas nos pagamentos.

Quando um pagamento usado como source_transaction falha, os fundos no saldo da conta da sua plataforma são transferidos para a conta conectada para cobrir o pagamento. Para recuperar esses fundos, anule a transferência associada ao source_transaction malsucedido.

Emita reembolsos

Você pode reembolsar cobranças criadas em sua plataforma usando a chave secreta. No entanto, o reembolso de uma cobrança não afeta nenhuma transferência associada. Cabe à sua plataforma reconciliar qualquer valor devido, reduzindo valores de transferências subsequentes ou anulando transferências.

Reembolsos com segregação de fundos

O recurso de visualização privada segregação de fundos usa fundos alocados para reembolsos antes de debitar o saldo de pagamentos da sua plataforma, proporcionando uma separação contábil limpa.

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

Anulará transferências

O Connect permite anular transferências para contas conectadas. O valor anulado pode ser total ou parcial, de acordo com o valor definido em amount. Use anulações de transferências somente para reembolsos ou contestações relacionadas à cobrança ou para corrigir erros na transferência.

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

A anulação de transferências devolve o valor parcial ou total ao saldo disponível da plataforma. O saldo da conta conectada é reduzido no mesmo valor. Só é possível anular uma transferência se o saldo disponível da conta conectada for maior que o valor anulado ou se reservas conectadas estiverem habilitadas na conta.

Se a anulação de transferência exigir uma conversão de moeda e o valor da anulação resultar em um saldo zero após a conversão, ela retornará um erro.

Desativar reembolsos para uma conta conectada não bloqueia a capacidade de processar anulações de transferências.

Veja também

  • Trabalhar com várias moedas
  • Descrições no extrato com o Connect
  • Entenda os saldos de conta Connect
  • Contestações em plataformas Connect
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