# Retener fondos en un método de pago Separa la autorización y la captura del pago para crear un cargo ahora y capturar los fondos más tarde. Cuando creas un pago, puedes aplicar una retención a un método de pago que cumpla los requisitos para reservar fondos que puedas capturar más tarde. Por ejemplo, los hoteles suelen autorizar el pago total antes de que llegue el huésped y, luego, capturan el dinero cuando termina la estadía del huésped en el hotel. Esto a veces se conoce como *captura manual* (Manually capture funds separately from an authorization). La autorización de un pago garantiza el importe reteniéndolo en el método de pago del cliente. Si usas la API, el atributo [payment_method_details.card.capture_before](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-capture_before) en el cargo indica cuándo vence la autorización. Debes capturar los fondos antes de que venza la autorización. Si la autorización vence antes de capturar los fondos, estos se liberan y el estado del pago cambia a `canceled`. Obtén más información sobre los [estados de los pagos asincrónicos](https://docs.stripe.com/payments/paymentintents/lifecycle.md). ## Períodos de validez de la autorización Las siguientes tablas describen los períodos de validez para autorizar diferentes tipos de transacciones. ### Transacciones sin tarjeta presente | Marca de la tarjeta | Período de validez de la autorización de la [transacción iniciada por el comerciante](https://docs.stripe.com/payments/cits-and-mits.md) | Período de validez de la autorización de la [transacción iniciada por el cliente](https://docs.stripe.com/payments/cits-and-mits.md) | | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | | **Visa** | 5 días* | 7 días | | **Mastercard** | 7 días | 7 días | | **American Express** | 7 días | 7 días | | **Discover** | 7 días | 7 días | La ventana exacta de autorización es de 4 días y 18 horas, para dar tiempo a los procesos de compensación. ### Transacciones con tarjeta presente (pagos en persona) | Marca de la tarjeta | Período de validez de la autorización | | -------------------- | ------------------------------------- | | **Visa** | 5 días* | | **Mastercard** | 2 días | | **American Express** | 2 días | | **Discover** | 2 días | La ventana exacta de autorización es de 4 días y 18 horas, para dar tiempo a los procesos de compensación. ### Períodos de autorización de 30 días en Japón Si tu cuenta está establecida en Japón, puedes retener transacciones en JPY de Visa, Mastercard, JCB, Diners Club y Discover durante un máximo de 30 días. Las transacciones que no son en JPY y con American Express vencen después del plazo estándar de 7 días. > A partir del 14 de abril de 2024, Visa acortó el plazo de autorización para las [transacciones iniciadas por el comerciante](https://docs.stripe.com/payments/cits-and-mits.md) en línea de 7 a 5 días. Visa también amplió el plazo de autorización para las transacciones en persona (Terminal) de 2 a 5 días. ## Limitaciones de los métodos de pago Antes de pasar a la implementación, comprende las siguientes limitaciones para autorizar y capturar por separado. - Solo algunos métodos de pago admiten separar la autorización de la *captura* (Fulfillment is the process of providing the goods or services purchased by a customer, typically after payment is collected). Algunos métodos de pago que admiten esto incluyen tarjetas, Affirm, Afterpay, Cash App Pay, Klarna y PayPal. Algunos métodos de pago que no admiten esto incluyen [ACH](https://docs.stripe.com/payments/ach-direct-debit.md) e [iDEAL](https://docs.stripe.com/payments/ideal.md). Obtén más información sobre la [compatibilidad con las funcionalidades de los métodos de pago](https://docs.stripe.com/payments/payment-methods/payment-method-support.md). - Más allá de lo que se indica en las tablas anteriores, otros métodos de pago tienen reglas y períodos de autorización distintos: - Pagos con tarjeta: El importe suele retenerse durante 7 días para los pagos electrónicos y 2 días para los pagos en persona con Terminal (según el tipo de transacción y la red de tarjetas). Puedes solicitar una autorización ampliada para ciertas [autorizaciones de pago en línea](https://docs.stripe.com/payments/extended-authorization.md) y con [Terminal](https://docs.stripe.com/terminal/features/extended-authorizations.md) que reúnan los requisitos para períodos de validez extendidos. Las redes de tarjeta también pueden restringir las autorizaciones de 1 USD que no tengas intención de capturar. - [Affirm](https://docs.stripe.com/payments/affirm/accept-a-payment.md?platform=web#manual-capture): Si Affirm requiere un pago inicial para pedidos muy grandes, cobra el importe durante la autorización y el reembolso si no se captura el pago. Luego tienes 30 días para capturar el saldo del pago. - [Afterpay/Clearpay](https://docs.stripe.com/payments/afterpay-clearpay/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture): Durante la autorización, el cliente paga la primera cuota de la devolución. Afterpay reembolsa el pago si nunca se captura. Luego tienes 13 días para capturar el saldo del pago. - [Cash App Pay](https://docs.stripe.com/payments/cash-app-pay/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture): Las autorizaciones válidas deben capturarse en un plazo de 7 días para completar un pago. - [Klarna](https://docs.stripe.com/payments/klarna/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture): Debes capturar el cargo antes de la medianoche del día calendario número 28 después de la solicitud del cargo; de lo contrario, la autorización vence. Por ejemplo, tendrías que capturar una solicitud de cargo a las 14:00 UTC del 2020-10-01 antes de las 00:00 UTC del 2020-10-29. - [PayPal](https://docs.stripe.com/payments/paypal/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture): Retiene el importe durante 10 días. Stripe intenta automáticamente extender la retención por otros 10 días, lo que hace un total de 20 días. Tu [preferencia de acreditación de fondos](https://docs.stripe.com/payments/paypal/choose-settlement-preference.md) puede afectar el período de autorización. Para obtener más información, consulta [autorización y captura por separado](https://docs.stripe.com/payments/paypal/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture). ## Usa el Dashboard para autorizar y capturar Puedes autorizar un pago y capturar fondos por separado sin necesidad de escribir código. 1. En el Dashboard, [crea un nuevo pago](https://dashboard.stripe.com/test/payments/new). Selecciona **Por única vez**. 1. Cuando ingreses o selecciones el método de pago, selecciona **Más opciones** y luego **Capturar fondos más tarde**. El pago aparece en tu [página de pagos](https://dashboard.stripe.com/test/payments) como **No capturado**. Para capturar los fondos, ve a la página de datos de pago y haz clic en **Capturar**. ## Indicarle a Stripe que autorice únicamente #### API Checkout Sessions Para indicar que quieres separar la autorización y la captura, especifica el valor de [capture_method](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-capture_method) en `manual` al crear la sesión de Checkout. Este parámetro le indica a Stripe que debe autorizar el importe en el método de pago del cliente, pero no capturarlo. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price]"="{{PRICE_ID}}" \ -d "line_items[0][quantity]"=2 \ -d mode=payment \ -d ui_mode=custom \ -d "payment_intent_data[capture_method]"=manual ``` Con el enfoque anterior, le indicas a Stripe que solo puedes usar la opción «capturar después de» para una sesión de Checkout con métodos de pago aptos. #### API Payment Intents Para indicar que quieres separar la autorización y la captura, establece el valor de [capture_method](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-capture_method) como `manual` a la hora de crear el PaymentIntent. Este parámetro le indica a Stripe que debe autorizar el importe en el método de pago del cliente, pero no capturarlo. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d capture_method=manual ``` Con el enfoque anterior, le dices a Stripe que solo puedes usar «capturar después de» para un PaymentIntent con métodos de pago aptos. Por ejemplo, no puedes aceptar pagos con tarjeta y débito directo SEPA (que no admiten la captura posterior) para un solo PaymentIntent. Para aceptar métodos de pago que posiblemente no admitan la captura posterior, puedes configurar la captura después del método de pago configurando `capture_method=manual` en el objeto `payment_method_options[]`. Por ejemplo, si configuras `payment_method_options[card][capture_method]=manual`, solo pondrás en espera los pagos con tarjeta. Puedes gestionar los métodos de pago desde el [Dashboard](https://dashboard.stripe.com/settings/payment_methods). Stripe gestiona la lógica para [mostrar de forma dinámica](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md) los métodos de pago admisibles más pertinentes para cada cliente en función de factores como el importe de la transacción, la moneda y el flujo de pago. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "automatic_payment_methods[enabled]"=true \ -d "payment_method_options[card][capture_method]"=manual ``` Como opción, puedes indicar `card` y `sepa_debit` usando [tipos de métodos de pago](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types) como en el siguiente ejemplo. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=eur \ -d "payment_method_types[]"=card \ -d "payment_method_types[]"=sepa_debit \ -d "payment_method_options[card][capture_method]"=manual ``` Antes de pasar a la captura, asocia un método de pago con los datos de la tarjeta al PaymentIntent y autoriza la tarjeta confirmando el PaymentIntent. Puedes hacerlo estableciendo los campos `payment_method` y `confirm` en el PaymentIntent. > #### Autorizaciones ampliadas > > Por lo general, la autorización de un pago con tarjeta en línea es válida durante 7 días. Para aumentar el período de validez, puedes [aplicar una retención prolongada a un pago con tarjeta en línea](https://docs.stripe.com/payments/extended-authorization.md). ## Captura los fondos > #### Las sesiones de Checkout tienen una ID de PaymentIntent > > Si usas la API Checkout Sessions, asegúrate de usar la [ID del PaymentIntent](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-payment_intent) que se devuelve en el objeto Checkout Session. Una vez autorizado el método de pago, el [estado](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-status) del PaymentIntent pasa a `requires_capture`. Para capturar los fondos autorizados, haz una solicitud de [captura](https://docs.stripe.com/api/payment_intents/capture.md) del PaymentIntent. De esta forma, se captura el importe total autorizado de forma predeterminada. Para capturar menos o (para algunos pagos con tarjeta en línea) más que el importe inicial, especifica la opción [amount_to_capture](https://docs.stripe.com/api/payment_intents/capture.md#capture_payment_intent-amount_to_capture). La captura parcial libera automáticamente el importe restante. Si intentas capturar un importe superior al importe inicial para un pago con tarjeta en línea, consulta la [documentación sobre sobrecapturas](https://docs.stripe.com/payments/overcapture.md). El siguiente ejemplo muestra cómo capturar USD 7.50 del pago autorizado de USD 10.99: ```curl curl https://api.stripe.com/v1/payment_intents/pi_123/capture \ -u "<>:" \ -d amount_to_capture=750 ``` Aunque algunos pagos con tarjeta cumplen los requisitos para [multicaptura](https://docs.stripe.com/payments/multicapture.md), solo puedes realizar una captura de un pago autorizado para la mayoría de los pagos. Si capturas parte del pago, no podrás hacer otra captura por la diferencia. (En su lugar, considera [guardar los datos del método de pago del cliente para más adelante](https://docs.stripe.com/payments/save-during-payment.md#save-payment-details-for-future-use) y crear pagos futuros según sea necesario). Los extractos de las tarjetas de algunos emisores y las interfaces de los métodos de pago no siempre distinguen entre autorizaciones y pagos capturados (acreditados), lo que puede resultar confuso para el cliente. Además, cuando un cliente completa el proceso de pago en un PaymentIntent con captura manual, se activa el evento `payment_intent.amount_capturable_updated`. Puedes inspeccionar la propiedad [amount_capturable](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-amount_capturable) del PaymentIntent para determinar el importe total que puedes capturar del PaymentIntent. ## Cancelar la autorización Si necesitas cancelar una autorización, puedes [cancelar el PaymentIntent](https://docs.stripe.com/refunds.md#cancel-payment). ## Captura el pago antes de que caduque la autorización (Private preview) Puedes indicarle a Stripe que capture automáticamente antes de que venza la autorización en lugar de activar de forma manual la captura para métodos de pago con tarjeta. Usa captura automática diferida para asegurarte de no perder la capturar de pagos autorizados. También puedes especificar un período de demora personalizado desde la autorización hasta la captura. Para habilitar la captura demorada automática, establece [capture_method](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-card) como `automatic_delayed` en el PaymentIntent: ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d "payment_method_options[card][capture_method]"=automatic_delayed ``` Con este enfoque, Stripe captura el pago con tarjeta antes del vencimiento de la autorización, lo que activa la captura unas 6 horas antes del vencimiento. Esto sirve como proceso de respaldo para garantizar que capturamos pagos autorizados antes del vencimiento. Aún puedes [capturar](https://docs.stripe.com/api/payment_intents/capture.md) o [cancelar](https://docs.stripe.com/refunds.md#cancel-payment) de forma manual el PaymentIntent antes de que se capture de manera automática. Si quieres especificar un período de espera personalizado para la captura, puedes incluir el parámetro `capture_delay_days`. Este parámetro indica la cantidad de días que se difiere la captura tras una autorización exitosa: ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d "payment_method_options[card][capture_method]"=automatic_delayed \ -d "payment_method_options[card][capture_delay_days]"=3 ``` En este ejemplo, Stripe captura automáticamente el PaymentIntent 3 días después de la autorización exitosa. Esto es útil si conoces el tiempo necesario para realizar acciones entre la autorización y la captura, a la vez que garantizas la captura antes de que venza la autorización. > Con `capture_method=automatic_delayed`, Stripe prioriza la captura del pago antes del vencimiento de la autorización. Si la ventana de autorización es más corta que el período de espera especificado, capturamos el PaymentIntent antes del vencimiento e ignoramos el período de espera. ## See also - [Separar la autorización de la captura con Checkout](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=stripe-hosted#auth-and-capture) - [Retiene de forma prolongada un pago con tarjeta en línea](https://docs.stripe.com/payments/extended-authorization.md)