Crie cobranças diretas
Crie cobranças diretamente na conta conectada e receba tarifas.
Crie cobranças diretas quando os clientes fazem transações diretamente com uma conta conectada e muitas vezes nem percebem a existência da sua plataforma. Com cobranças diretas:
- O pagamento aparece como cobrança na conta conectada, e não na conta da sua plataforma.
- O saldo da conta conectada aumenta a cada cobrança.
- O saldo da sua conta aumenta com as tarifas da plataforma de cada cobrança.
Esse tipo de cobrança é mais adequado para plataformas que fornecem software como serviço. A Shopify, por exemplo, oferece ferramentas para a criação de lojas online e a Worksify permite que professores vendam cursos online.
Observação
Recomendamos usar cobranças diretas para contas conectadas que têm acesso ao Stripe Dashboard completo.

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.
Configurar a StripeLado do servidorLado do cliente
Primeiro, você precisa de uma conta Stripe. Cadastre-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:
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):
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.
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 publicável da API em publishableKey
é necessária. O exemplo a seguir mostra como inicializar a Stripe usando o componente StripeProvider
.
import { StripeProvider } from '@stripe/stripe-react-native'; function App() { return ( <StripeProvider publishableKey=
stripeAccountId='pk_test_TYooMQauvdEDq54NiTphI7jx'urlScheme='your-url-scheme' // required for 3D Secure and bank redirects merchantIdentifier='merchant.com.{{YOUR_APP_NAME}}' // required for Apple Pay > // Your app code here </StripeProvider> ); }'{{CONNECTED_ACCOUNT_ID}}'
Observação
Use suas chaves de API de teste enquanto testa e desenvolve, e as chaves em modo de produção quando publica seu aplicativo.
Adicionar um endpointLado 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:
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.
(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.
(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:
- Recuperar ou criar um Customer.
- Criar uma chave efêmera para o Customer.
- Cria um PaymentIntent com o valor, a moeda e o cliente. Também é possível incluir opcionalmente o parâmetro
automatic_
. A Stripe habilita sua funcionalidade por padrão na versão mais recente da API.payment_ methods - 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.
Integrar a descrição da compraLado 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.
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_
, recomendamos gerenciar esses outros eventos ao coletar pagamentos com o Element Pagamento:
Evento | Descrição | Ação |
---|---|---|
payment_intent.succeeded | Enviado quando um cliente conclui um pagamento com êxito. | Envie ao cliente uma confirmação de pedido e processe o pedido. |
payment_intent.processing | Enviado 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_ ou payment_ 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_failed | Enviado quando um cliente tenta fazer um pagamento, mas o pagamento falha. | Se um pagamento passa de processing para payment_ , ofereça ao cliente outra tentativa para pagar. |
Testar a integração
Consulte Testes para obter mais informações sobre como testar sua integração.
Coletar tarifas
Quando um pagamento é processado, sua plataforma pode receber uma parte da transação na forma de tarifas da plataforma. Você pode definir os preços da tarifa da plataforma de duas maneiras:
- Use a ferramenta de preços da plataforma para definir e testar regras de preços. No momento, esse recurso no-code no Stripe Dashboard só está disponível para plataformas responsáveis pelo pagamento das tarifas da Stripe.
- Defina internamente as regras de preços, especificando as tarifas da plataforma diretamente em um PaymentIntent. As tarifas definidas com esse método substituem a lógica de preços especificada na ferramenta de preços da plataforma.
Sua plataforma pode cobrar uma tarifa da plataforma com as seguintes limitações:
- O valor de
application_
deve ser positivo e menor que o valor da cobrança. A tarifa da plataforma cobrada é limitada ao valor capturado da cobrança.fee_ amount - Não há tarifas adicionais da Stripe sobre a própria tarifa da plataforma.
- De acordo com os requisitos regulatórios e de conformidade do Brasil, as plataformas de fora do Brasil com contas conectadas brasileiras não podem coletar tarifas da plataforma por meio da Stripe.
- A moeda de
application_
depende de alguns fatores de várias moedas.fee_ amount
A transação de saldo da cobrança resultante inclui um detalhamento das tarifas da Stripe e da plataforma. Para melhorar a experiência com os relatórios, é criado um objeto Application Fee após a coleta da tarifa. Use a propriedade amount
no objeto de tarifa do aplicativo para criar relatórios. Você pode acessar esses objetos com o endpoint Application Fees.
As tarifas da plataforma recebidas são adicionadas ao saldo disponível da sua conta no mesmo cronograma que os fundos das cobranças regulares da Stripe. Você pode consultá-las na seção Tarifas cobradas do Dashboard.
Cuidado
Por padrão, as tarifas da plataforma para cobranças diretas são criadas de forma assíncrona. Se você expandir o objeto application_
em uma solicitação de criação de cobrança, a tarifa da plataforma será criada de forma síncrona como parte dessa solicitação. Somente expanda o objeto application_
se for necessário, pois isso aumenta a latência da solicitação.
Para acessar os objetos de tarifa da plataforma para tarifas da plataforma criadas de forma assíncrona, escute o evento de webhook application_fee.created.
Fluxo de fundos com tarifas
Quando você especifica uma tarifa de plataforma sobre uma cobrança, o valor da tarifa é transferido para a conta da sua plataforma na Stripe. Ao processar uma cobrança diretamente na conta conectada, o valor da cobrança (menos as tarifas da Stripe e da plataforma) é depositado na conta conectada.
Por exemplo, se você fizer uma cobrança de US$ 10 com uma tarifa da plataforma de US$ 1,23 (como no exemplo anterior), US$ 1,23 será transferido para a conta da sua plataforma. US$ 8,18 (US$ 10 - US$ 0,59 - US$ 1,23) são depositados na conta conectada (considerando as tarifas padrão da Stripe dos EUA).

Se você processa pagamentos em várias moedas, veja como as moedas são gerenciadas no Connect.
Emitir reembolsos
Além de criar cobranças em contas conectadas, as plataformas também podem criar reembolsos de cobranças em contas conectadas. Crie um reembolso usando a chave secreta da sua plataforma, estando autenticado com as credenciais da conta conectada.
As tarifas da plataforma não são reembolsadas automaticamente quando um reembolso é emitido. Sua plataforma deve reembolsar explicitamente a tarifa da plataforma, caso contrário a conta conectada (a conta na qual a cobrança foi criada) perde esse valor. Você pode reembolsar uma tarifa de plataforma passando um valor refund_
de verdadeiro na solicitação de reembolso:
Por padrão, toda a cobrança é reembolsada, mas você pode criar um reembolso parcial definindo um amount
como um número inteiro positivo. Se o reembolso for ao valor total da cobrança, toda a tarifa da plataforma será reembolsada. Caso contrário, um valor proporcional da tarifa da plataforma será reembolsado. Como opção, você pode informar um valor refund_
de falso e reembolsar a tarifa da plataforma separadamente.
Componentes integrados do Connect
Componentes integrados do Connect suportam direct charges. Ao usar o componente integrado de pagamentos, você pode permitir que suas contas conectadas visualizem informações de pagamento, capturem cobranças e gerenciem contestações pelo seu site.
Os seguintes componentes exibem informações sobre Direct Charges:
Componente de pagamentos: Exibe todos os pagamentos e contestações de uma conta.
Detalhes dos pagamentos: Exibe informações de um pagamento específico.
Componente de lista de contestações: Exibe todas as contestações de uma conta.
Disputas para um componente de pagamento: Exibe as contestações para um único pagamento especificado. Você pode usá-lo para incluir a função de gerenciamento de contestação em uma página com sua IU de pagamentos.