# Acepta un pago con cargos y envíos de fondos separados. Utiliza cargos y envíos de fondos separados para aceptar pagos. Crea cargos y envíos de fondos separados para transferir fondos de un pago a varias cuentas conectadas, o cuando se desconoce a un usuario específico en el momento del pago. El cargo en tu cuenta plataforma se desvincula de las transferencias a tus cuentas conectadas. Con este tipo de cargo: - Creas un cargo en la cuenta de tu plataforma y también transfieres fondos a tus cuentas conectadas. El pago aparece como un cargo en tu cuenta y también hay transferencias a cuentas conectadas (por un importe determinado por ti), que se extraen del saldo de tu cuenta. - Puedes transferir fondos a varias cuentas conectadas. - Eres el *comerciante registrado* (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) y el costo de las comisiones, los reembolsos y los contracargos de Stripe se debita del saldo de tu cuenta. Este tipo de cargo ayuda a los marketplaces a dividir los pagos entre varias partes, por ejemplo, una plataforma de entrega de restaurantes que divide los pagos entre el restaurante y el repartidor. > Segregación de fondos es una versión preliminar de una funcionalidad privada que mantiene los fondos de los pagos en un estado de tenencia protegido antes de enviarlos a fondos a cuentas conectadas. Esto evita que los fondos asignados se utilicen para operaciones de plataforma no relacionadas. Ponte en contacto con tu gestor de cuentas de Stripe para solicitar acceso. ## Crea una Checkout Session [Lado del servidor] Una [sesión de Checkout](https://docs.stripe.com/api/checkout/sessions.md) controla lo que tu cliente puede ver en el formulario de pago, como las partidas, el importe y la moneda del pedido, así como los métodos de pago aceptados. Agrega un botón de pago en tu sitio web que llame a un punto de conexión del lado del servidor para crear una sesión de Checkout. En tu servidor, crea una Checkout Session y redirige a tu cliente a la [URL](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-url) que se devuelve en la respuesta. ```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 | ¿Obligatorio? | Descripción | | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [partidas](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) | Una lista de las partidas que compra el cliente. | Obligatorio condicionalmente | Este atributo representa las partidas que el cliente está comprando. Las partidas se muestran en la página de proceso de compra alojada en Stripe. | | [payment_intent_data[transfer_group]](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-transfer_group) | Una cadena única que identifica un pago como parte de un grupo. | Sí | Cuando Stripe crea automáticamente un cargo para un PaymentIntent con un valor de `transfer_group`, asigna el mismo valor al `transfer_group` del cargo. | | [success_url](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-success_url) | Una URL válida | Sí | Stripe redirige al cliente a la URL de éxito después de que complete un pago y reemplaza la cadena `{CHECKOUT_SESSION_ID}` con el ID de la sesión de Checkout. Úsalo para recuperar la sesión de Checkout e inspecciona el estado para decidir qué mostrarás a tu cliente. También puedes adjuntar tus propios parámetros de consulta, que se mantendrán durante el proceso de redireccionamiento. Consulta [Personalizar el comportamiento de redireccionamiento en una página alojada en Stripe](https://docs.stripe.com/payments/checkout/custom-success-page.md) para obtener más información. | (See full diagram at https://docs.stripe.com/connect/marketplace/tasks/accept-payment/separate-charges-and-transfers) ## Administra eventos posteriores al pago para cargos y envíos de fondos separados. [Lado del servidor] Stripe envía un evento [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) cuando se completa el pago. [Utiliza un webhook para recibir estos eventos](https://docs.stripe.com/webhooks/quickstart.md) y ejecutar acciones, como enviar un correo electrónico de confirmación del pedido a tu cliente, registrar la venta en una base de datos o iniciar el flujo de tareas para un envío. Presta atención a estos eventos en lugar de esperar una devolución de llamada del cliente. De su lado, el cliente puede cerrar la ventana del navegador o salir de la aplicación antes de que se ejecute la devolución de llamada. Algunos métodos de pago tardan entre 2 y 14 días en confirmar el pago. Si configuras tu integración para identificar eventos asincrónicos, podrás aceptar varios [métodos de pago](https://stripe.com/payments/payment-methods-guide) con una sola integración. Administra los siguientes eventos al cobrar pagos con Checkout: | Evento | Descripción | Próximos pasos | | -------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | | [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) | Mediante el envío del formulario de Checkout, el cliente ha autorizado correctamente el pago. | Espera hasta saber si el pago se concreta o no. | | [checkout.session.async_payment_succeeded](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_succeeded) | El pago del cliente se efectuó correctamente. | Entrega los bienes o servicios comprados. | | [checkout.session.async_payment_failed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_failed) | El pago se rechazó o falló por algún otro motivo. | Comunícate con el cliente por correo electrónico y solicítale que haga un nuevo pedido. | Todos estos eventos incluyen el objeto [Checkout Session](https://docs.stripe.com/api/checkout/sessions.md). Una vez que el pago se efectúa correctamente, el [estado](https://docs.stripe.com/payments/paymentintents/lifecycle.md) del *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) subyacente cambia de `processing` a `succeeded` o a un estado de falla. ## Crear una transferencia [Lado del servidor] En tu servidor, envía fondos desde tu cuenta a una cuenta conectada creando un [envío de fondos](https://docs.stripe.com/api/transfers/create.md) y especificando el `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 ``` Los importes de transferencia y cargo no tienen que coincidir. Puedes dividir un solo cargo entre varias transferencias o incluir varios cargos en una sola transferencia. En el siguiente ejemplo se crea una transferencia adicional asociada con el mismo `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 ``` ### Opciones de envíos de fondo Puedes asignar cualquier valor a la cadena `transfer_group`, pero debes representar una sola acción comercial. También puedes realizar una transferencia sin un cargo asociado ni un `transfer_group`, por ejemplo, cuando debes pagar a un proveedor pero no hay un pago de cliente asociado. > El `transfer_group` solo identifica los objetos asociados. No afecta a ninguna funcionalidad estándar. Para evitar que se ejecute una transferencia antes de que estén disponibles los fondos del cargo asociado, usa el atributo `source_transaction` de la transferencia. De forma predeterminada, una solicitud de envío de fondos falla cuando el monto excede el [saldo disponible de la cuenta](https://docs.stripe.com/connect/account-balances.md) de la plataforma Stripe no reintenta automáticamente las solicitudes de envío de fondos fallidas. Puedes evitar solicitudes de transferencias fallidas para transferencias asociadas a cargos. Cuando especificas el cargo asociado [como source_transaction de la transferencia](https://docs.stripe.com/connect/marketplace/tasks/accept-payment/separate-charges-and-transfers.md#transfer-options), la solicitud se transferencia se efectúa correctamente de forma automática. Sin embargo, realizamos la transferencia hasta que los fondos de ese cargo estén disponibles en la cuenta de la plataforma. > Si utilizas cargos y envíos de fondos separados, tenlo en cuenta al planificar tu calendario de *transferencias* (A payout is the transfer of funds to an external account, usually a bank account, in the form of a deposit). Las transferencias automáticas pueden interferir con las transferencias que no tienen una `source_transaction` definida. ## Disponibilidad geográfica Stripe acepta cargos y transferencias separados en las siguientes regiones: - 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 Stripe admite transferencias transfronterizas en el saldo de pagos entre los Estados Unidos, Canadá, el Reino Unido, el EEE y Suiza. En otras situaciones, tu plataforma y cualquier cuenta conectada deben estar en la misma región. Intentar transferir fondos a través de fronteras o saldos no admitidos devuelve un error. Consulta [Transferencias transfronterizas](https://docs.stripe.com/connect/cross-border-payouts.md) para ver los flujos de fondos admitidos entre otras regiones. Solo debes usar transferencias en combinación con los casos de uso permitidos para [cargos](https://docs.stripe.com/connect/charges.md), [recargas](https://docs.stripe.com/connect/top-ups.md) y [comisiones](https://docs.stripe.com/connect/marketplace/tasks/accept-payment/separate-charges-and-transfers.md#collect-fees). Te recomendamos usar cargos y envíos de fondos separados solo cuando seas responsable de los saldos negativos de tus cuentas conectadas. ## Próximos pasos Una vez que puedas procesar pagos, monetiza tu marketplace [cobrando comisiones de aplicación](https://docs.stripe.com/connect/marketplace/tasks/app-fees.md) a tus cuentas conectadas.