# aceite pagamentos usando cobranças e transferências separadas use cobranças e transferências separadas para aceitar pagamentos. 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 na hora do pagamento. A cobrança em sua conta da plataforma está desvinculada das transferências para suas contas conectadas. Com esse 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. - Você é o *merchant of record* (The legal entity responsible for facilitating the sale of products to a customer that handles any applicable regulations and liabilities, including sales taxes. In a Connect integration, it can be the platform or a connected account), e o saldo de sua conta é debitado pelos custos das tarifas, reembolsos e estornos da Stripe. 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. > 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. ## Criar uma sessão do Checkout [Lado do servidor] Uma [Checkout Session](https://docs.stripe.com/api/checkout/sessions.md) controla o que o seu cliente vê no formulário de pagamento, como itens de linha, o valor e a moeda do pedido, bem como formas de pagamento aceitáveis. Adicione um botão de checkout ao seu site para chamar um endpoint do lado do servidor e criar uma Sessão do Checkout. No seu servidor, crie uma sessão do Checkout e redirecione o cliente para o [URL](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-url) retornado na resposta. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=Restaurant delivery service" \ -d "line_items[0][price_data][unit_amount]=10000" \ -d "line_items[0][quantity]=1" \ -d "payment_intent_data[transfer_group]=ORDER100" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success?session_id={CHECKOUT_SESSION_ID}" ``` | Parâmetro | Valor | Obrigatório? | Descrição | | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [line_items](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) | Uma lista de itens que o cliente está comprando. | Exigido condicionalmente | Esse atributo representa os itens que o cliente está comprando. Os itens são exibidos na página de checkout hospedada pela Stripe. | | [payment_intent_data[transfer_group]](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-transfer_group) | Uma sequência de caracteres exclusiva que identifica um pagamento como parte de um grupo. | Sim | Quando a Stripe cria automaticamente uma cobrança para um PaymentIntent com um valor `transfer_group`, ele atribui o mesmo valor ao `transfer_group` da cobrança. | | [success_url](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-success_url) | Um URL válido | Sim | A Stripe redireciona o cliente para o URL de sucesso após ele concluir um pagamento e substitui a sequência `{CHECKOUT_SESSION_ID}` pela ID da Sessão de Checkout. Use isso para recuperar a Sessão de Checkout e inspecionar o status para decidir o que mostrar ao cliente. Você também pode anexar seus próprios parâmetros de consulta, que persistem durante o processo de redirecionamento. Consulte [como personalizar o comportamento de redirecionamento em uma página hospedada pelo Stripe](https://docs.stripe.com/payments/checkout/custom-success-page.md) para mais informações. | (See full diagram at https://docs.stripe.com/connect/marketplace/tasks/accept-payment/separate-charges-and-transfers) ## Tratar eventos após o pagamento para cobranças e transferências separadas [Lado do servidor] A Stripe envia um evento [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) quando o pagamento é concluído. [Use um webhook para receber esses eventos](https://docs.stripe.com/webhooks/quickstart.md) 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. Ouça esses eventos em vez de esperar por um retorno de chamada do cliente. No cliente, o cliente poderia fechar a janela do navegador ou sair do aplicativo antes da execução do retorno de chamada. Algumas formas de pagamento também levam de 2 a 14 dias para a confirmação do pagamento. Configurar sua integração para ouvir eventos assíncronos permite que você aceite várias [formas de pagamento](https://stripe.com/payments/payment-methods-guide) com uma única integração. Trate os seguintes eventos ao coletar pagamentos com o Checkout: | Evento | Descrição | Próximas etapas | | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | | [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) | O cliente autorizou o pagamento enviando o formulário do Checkout. | Aguarde a confirmação ou falha do pagamento. | | [checkout.session.async_payment_succeeded](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_succeeded) | O pagamento do cliente foi confirmado. | Execute o pedido de mercadorias ou serviços. | | [checkout.session.async_payment_failed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_failed) | O pagamento foi recusado ou houve outro erro. | Entre em contato com o cliente por e-mail e solicite a realização de um novo pedido. | Todos esses eventos incluem o objeto [Checkout Session](https://docs.stripe.com/api/checkout/sessions.md). Após o pagamento, o [status](https://docs.stripe.com/payments/paymentintents/lifecycle.md) subjacente do *PaymentIntent* (The Payment Intents API tracks the lifecycle of a customer checkout flow and triggers additional authentication steps when required by regulatory mandates, custom Radar fraud rules, or redirect-based payment methods) muda de `processing` para `succeeded` ou um status malsucedido. ## Criar uma transferência [Lado do servidor] No seu servidor, envie fundos da sua conta para uma conta conectada criando uma [Transferência](https://docs.stripe.com/api/transfers/create.md) e especificando o `transfer_group` utilizado. ```curl curl https://api.stripe.com/v1/transfers \ -u "<>:" \ -d amount=7000 \ -d currency=usd \ -d "destination={{CONNECTEDACCOUNT_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`. ```curl curl https://api.stripe.com/v1/transfers \ -u "<>:" \ -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. > 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](https://docs.stripe.com/connect/account-balances.md) da plataforma. A Stripe não repete automaticamente solicitações de transferência malsucedidas. You can avoid failed transfer requests for transfers that are associated with charges. When you specify the associated charge [as the transfer’s source_transaction](https://docs.stripe.com/connect/marketplace/tasks/accept-payment/separate-charges-and-transfers.md#transfer-options), the transfer request automatically succeeds. However, we don’t execute the transfer until the funds from that charge are available in the platform account. > Se você usa cobranças e transferências separadas, leve isso em consideração quando planejar seu cronograma de repasses *payout* (A payout is the transfer of funds to an external account, usually a bank account, in the form of a deposit). Repasses automáticos podem interferir nas transferências que não têm uma `source_transaction` definida. ## Disponibilidade geográfica A Stripe aceita cobranças e transferências separadas nas seguintes regiões: - AT - AU - BE - BG - BR - CA - CH - CY - CZ - DE - DK - EE - ES - FI - FR - GB - GR - HR - HU - IE - IT - JP - LI - LT - LU - LV - MT - MX - MY - NL - NO - NZ - PL - PT - RO - SE - SG - SI - SK - US A Stripe oferece suporte a transferências transfronteiriças no saldo de pagamentos entre os Estados Unidos, o Canadá, O Reino Unido, o EEE e a Suíça. Em outros cenários, a plataforma e qualquer conta conectada precisam estar na mesma região. Tentar transferir fundos entre fronteiras ou saldos não compatíveis retorna um erro. Consulte [pagamentos transfronteiriços](https://docs.stripe.com/connect/cross-border-payouts.md) para fluxos de fundos compatíveis entre outras regiões. Você deve usar transferências apenas em combinação com os casos de uso permitidos para [cobranças](https://docs.stripe.com/connect/charges.md), [recargas](https://docs.stripe.com/connect/top-ups.md) e [tarifas](https://docs.stripe.com/connect/marketplace/tasks/accept-payment/separate-charges-and-transfers.md#collect-fees). Recomendamos usar cobranças e transferências separadas somente quando você for responsável por saldos negativos das suas contas conectadas. ## Próximas etapas Depois de poder processar pagamentos, monetize seu marketplace [cobrando taxas de inscrição](https://docs.stripe.com/connect/marketplace/tasks/app-fees.md) de suas contas conectadas.