Ir a contenido
Crea una cuenta
o
Inicia sesión
Logotipo de Stripe Docs
/
Pregúntale a la IA
Crear una cuenta
Iniciar sesión
Empieza ahora
Pagos
Ingresos
Plataformas y marketplaces
Gestión del dinero
Recursos para desarrolladores
Resumen
Acerca de Stripe Payments
    Resumen
    Acepta un pago
    Otras monedas
    Pagos rechazados
    Transferencias
    Pagos recurrentes
    Autenticación mediante 3D Secure
    Reembolsar y cancelar pagos
    Saldos y plazos de acreditación de fondos
    Recibos
    Administrar eventos de webhook
    Preparación para la SCA
    API anteriores
Actualiza tu integración
Análisis de pagos
Pagos electrónicos
ResumenEncuentra tu caso de usoUsar pagos administrados
Usa Payment Links
Usar una página del proceso de compra prediseñada
Crear una integración personalizada con Elements
Desarrolla una integración en la aplicación
Métodos de pago
Agrega métodos de pago
Gestiona los métodos de pago
Finalización de compra más rápida con Link
Interfaces de pago
Payment Links
Checkout
Elements para la web
Pagos dentro de la aplicación
Escenarios de pago
Administrar varias monedas
Flujos de pago personalizados
Capacidad adquirente flexible
Orquestación
Pagos en persona
Terminal
Más allá de los pagos
Constituye tu empresa
Criptomonedas
Comercio agéntico
Financial Connections
Climate
Comprender el fraude
Protección contra fraudes de Radar
Gestionar disputas
Verificar identidades
InicioPagosAbout Stripe payments

Aceptar un pago

Acepta pagos en línea en modo seguro.

Crea un formulario de pago o usa una página de confirmación de compra prediseñada para comenzar a aceptar pagos electrónicos.

Redirige a los usuarios a una página de pago alojada en Stripe con Stripe Checkout. Comprueba cómo esta integración se compara con los otros tipos de integración de Stripe.

Vista previa de la finalización de compra

Esfuerzo de integración

Baja codificación (low code)

Tipo de integración

Redirigir a la página de pagos alojada en Stripe

Personalización de la interfaz de usuario

Personalización limitada

Probarlo

Primero, inscríbete para obtener una cuenta de Stripe.

Usa nuestras bibliotecas oficiales para acceder a la API de Stripe desde tu aplicación:

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'

Redirige a tu cliente a Stripe Checkout
Lado del cliente
Lado del servidor

Agrega un botón de confirmación de compra a tu sitio web que llame a un punto de conexión del lado del servidor para crear una sesión de Checkout.

También puedes crear una Checkout Session para un cliente existente, lo que te permite completar previamente los campos de Checkout con información de contacto conocida y unificar tu historial de compras para ese cliente.

checkout.html
<html> <head> <title>Buy cool new product</title> </head> <body> <!-- Use action="/create-checkout-session.php" if your server is PHP based. --> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>

Una sesión de Checkout es la representación programática de lo que ve tu cliente cuando es redirigido al formulario de pago. Puedes configurarla con opciones como estas:

  • Partidas a cobrar
  • Monedas que se utilizarán

Debes compeltar success_url con el valor de la URL de una página en tu sitio web a la que Checkout redirige al cliente después de que efectúa el pago. Opcionalmente, también puedes proporcionar un valor cancel_url de una página en tu sitio web a la que Checkout redirige al cliente si finaliza el proceso de pago antes de que se complete.

Nota

Las Checkout Sessions vencen 24 horas después de su creación de forma predeterminada.

Después de crear una sesión de Checkout, redirige a tu cliente a la URL devuelta en la respuesta.

Ruby
Python
PHP
Java
Node.js
Ir
.NET
No results
# This example sets up an endpoint using the Sinatra framework. require 'json' require 'sinatra' require 'stripe' # Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
post '/create-checkout-session' do session = Stripe::Checkout::Session.create({ line_items: [{ price_data: { currency: 'usd', product_data: { name: 'T-shirt', }, unit_amount: 2000, }, quantity: 1, }], mode: 'payment', # These placeholder URLs will be replaced in a following step. success_url: 'https://example.com/success', cancel_url: 'https://example.com/cancel', }) redirect session.url, 303 end

Métodos de pago

De forma predeterminada, Stripe habilita las tarjetas y otros métodos de pago comunes. Puedes activar o desactivar métodos de pago individuales en el Dashboard de Stripe. En Checkout, Stripe evalúa la moneda y las restricciones y, a continuación, presenta al cliente de forma dinámica los métodos de pago admitidos.

Para ver cómo se muestran tus métodos de pago a los clientes, introduce una ID de transacción o establece el importe y la moneda de un pedido en el Dashboard.

Puedes habilitar Apple Pay y Google Pay en tu configuración de métodos de pago. De forma predeterminada, Apple Pay está habilitado y Google Pay está deshabilitado. Sin embargo, en algunos casos, Stripe los filtra incluso cuando están habilitados. Filtramos Google Pay si habilitas el cálculo automático de impuestos sin recopilar una dirección de envío.

Las páginas alojadas en Stripe de Checkout no necesitan cambios de integración para habilitar Apple Pay o Google Pay. Stripe gestiona estos pagos de la mima manera que otros pagos con tarjeta.

Confirma tu punto de conexión

Confirma que tu punto de conexión es accesible iniciando tu servidor web (por ejemplo, localhost:4242) y ejecutando el siguiente comando:

Command Line
curl -X POST -is "http://localhost:4242/create-checkout-session" -d ""

Debes ver una respuesta en tu terminal parecida a esta:

Command Line
HTTP/1.1 303 See Other Location: https://checkout.stripe.com/c/pay/cs_test_... ...

Pruebas

Ya deberías tener un botón de confirmación de compra para redirigir al cliente a Stripe Checkout.

  1. Haz clic en el botón de confirmación de compra.
  2. Serás redirigido al formulario de pago de Stripe Checkout.

Si tu integración no funciona:

  1. Abre la pestaña Red en las herramientas de desarrollador de tu navegador.
  2. Haz click en el botón de confirmación de compra y confirma que se le haya enviado una solicitud XHR a tu punto de conexión de lado del servidor (POST /create-checkout-session).
  3. Verifica que la solicitud devuelva un código de estado 200.
  4. Usa console.log(session) dentro del oyente de click del botón para confirmar que se devolvieron los datos correctos.

Mostrar página de confirmación
Lado del cliente
Lado del servidor

Es importante que tu cliente vea una página de confirmación después de haber enviado correctamente el formulario de pago. Aloja esta página en tu sitio.

Crea una página de confirmación mínima:

success.html
<html> <head><title>Thanks for your order!</title></head> <body> <h1>Thanks for your order!</h1> <p> We appreciate your business! If you have any questions, please email <a href="mailto:orders@example.com">orders@example.com</a>. </p> </body> </html>

Luego, actualiza el punto de conexión de creación de la sesión de Checkout para usar esta nueva página:

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "line_items[0][price_data][currency]"=usd \ -d "line_items[0][price_data][product_data][name]"=T-shirt \ -d "line_items[0][price_data][unit_amount]"=2000 \ -d "line_items[0][quantity]"=1 \ -d mode=payment \ --data-urlencode success_url="http://localhost:4242/success.html" \ --data-urlencode cancel_url="http://localhost:4242/cancel.html"

Nota

Si quieres personalizar tu página de confirmación, lee la guía para personalizar la página de confirmación.

Pruebas

  1. Haz clic en el botón de finalización de compra.
  2. Completa los datos de pago con la información de la tarjeta de prueba:
    • Ingresa 4242 4242 4242 4242 como número de tarjeta.
    • Ingresa una fecha futura como fecha de vencimiento.
    • Ingresa cualquier número de 3 dígitos como CVC.
    • Ingresa un código postal de facturación.
  3. Haz click en Pagar.
  4. Serás redirigido a tu nueva página de confirmación.

A continuación, busca el nuevo pago en el Dashboard de Stripe. Los pagos exitosos aparecen en la lista de pagos del Dashboard . Cuando haces clic en un pago, se te dirige a la página de información del pago. La sección Resumen de la compra contiene información de facturación y la lista de artículos comprados, que puedes usar para completar el pedido manualmente.

Gestionar eventos posteriores al pago

Stripe envía un evento checkout.session.completed cuando un cliente completa un pago de la Checkout Session. Usa la herramienta de webhooks del Dashboard o sigue la guía de webhooks para recibir y gestionar estos eventos, que podrían hacer que hagas lo siguiente:

  • Envía un correo electrónico de confirmación del pedido a tu cliente.
  • Registra la venta en una base de datos.
  • Inicia el flujo de tareas de envío.

Recibe notificaciones de estos eventos en lugar de esperar a que se redirija a tu cliente de nuevo a tu sitio web. Activar el cumplimiento del pedido solo desde la página de inicio de Checkout no es confiable. Si configuras tu integración para recibir notificaciones de eventos asincrónicos, podrás aceptar diferentes tipos de métodos de pago con una sola integración.

Obtén más información en nuestra guía de gestión logística para Checkout.

Gestiona los siguientes eventos al cobrar pagos con Checkout:

EventoDescripciónAcción
checkout.session.completedSe envía cuando un cliente completa correctamente una Checkout Session.Envía al cliente una confirmación del pedido y completa el pedido.
checkout.session.async_payment_succeededSe envía cuando un pago realizado con un método de pago retrasado, como el débito directo ACH, se efectúa correctamente.Envía al cliente una confirmación del pedido y completa el pedido.
checkout.session.async_payment_failedSe envía cuando falla un pago realizado con un método de pago retrasado, como el débito directo ACH.Notifica al cliente el error y regrésalo a la sesión para que vuelva a intentar el pago.

Prueba tu integración

Para probar la integración de tu formulario de pago alojado en Stripe:

  1. Crea una sesión de Checkout.
  2. Completa los datos del pago con un método de la siguiente tabla.
    • Ingresa una fecha futura como fecha de vencimiento.
    • Ingresa cualquier número de 3 dígitos como CVC.
    • Ingresa un código postal de facturación.
  3. Haz clic en Pagar. Serás redirigido a tu success_url.
  4. Ve al Dashboard y busca el pago en la página Transacciones. Si tu pago se realizó correctamente, lo verás en esa lista.
  5. Haz clic en tu pago para ver más detalles, como un resumen de Checkout con la información de facturación y la lista de artículos comprados. Puedes usar esta información para completar el pedido.

Obtén más información sobre cómo probar tu integración.

Número de tarjetaEscenarioCómo hacer la prueba
El pago con tarjeta se efectúa correctamente y no requiere autenticación.Completa el formulario de tarjeta de crédito con el número de tarjeta de crédito y la fecha de vencimiento, el CVC o el código postal.
El pago con tarjeta requiere autenticación.Completa el formulario de tarjeta de crédito con el número de tarjeta de crédito y la fecha de vencimiento, el CVC o el código postal.
La tarjeta es rechazada con un código de rechazo insufficient_funds.Completa el formulario de tarjeta de crédito con el número de tarjeta de crédito y la fecha de vencimiento, el CVC o el código postal.
La tarjeta UnionPay puede tener entre 13 y 19 dígitos.Completa el formulario de tarjeta de crédito con el número de tarjeta de crédito y la fecha de vencimiento, el CVC o el código postal.

Consulta Pruebas para obtener información adicional para probar tu integración.

Tarjetas de prueba

NúmeroDescripción
Se efectúa correctamente la transacción y se procesa el pago de inmediato.
Para que el pago se efectúe correctamente, se requiere la autenticación con 3D Secure 2.
Siempre da error con un código de rechazo insufficient_funds.

OpcionalCrear productos y precios

Deja que los clientes decidan qué pagar

Puedes configurar tu sesión de Checkout para aceptar propinas y donaciones o vender productos y servicios con pagos a voluntad.

Antes de crear una sesión de Checkout, puedes crear productos y precios por adelantado. Utiliza productos para representar diferentes bienes físicos o niveles de servicio, y precios para representar los precios de cada producto.

Por ejemplo, puedes crear una camiseta como producto con un precio de USD 20. Esto te permite actualizar y agregar precios sin necesidad de cambiar los detalles de tus productos subyacentes. Puedes crear productos y precios con el Dashboard de Stripe o la API. Obtén más información sobre cómo funcionan los productos y los precios.

La API solo necesita un name para crear un Producto. Checkout muestra los atributos name, description e images que indiques para el producto.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/products \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d name=T-shirt

A continuación, crea un precio para definir cuánto cobrar por tu producto. Esto incluye cuánto cuesta el producto y qué moneda usar.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/prices \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d product=
{{PRODUCT_ID}}
\ -d unit_amount=2000 \ -d currency=usd

Cada precio que creas tiene un ID. Cuando crees una Checkout Session, haz referencia al ID del precio y a la cantidad. Si vendes en múltiples monedas, haz que tu Precio sea en múltiples monedas. Checkout automáticamente determina la moneda local del cliente y presenta esa moneda si el Precio la admite.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d mode=payment \ -d "line_items[0][price]"={{PRICE_ID}} \ -d "line_items[0][quantity]"=1 \ --data-urlencode success_url="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" \ --data-urlencode cancel_url="https://example.com/cancel"

OpcionalCompletar los datos del cliente automáticamente
Lado del servidor

Si ya tienes el correo electrónico del cliente y quieres completarlo automáticamente en la sesión de Checkout, especifica customer_email cuando crees una sesión de Checkout.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ --data-urlencode customer_email="customer@example.com" \ -d "line_items[0][price]"=
{{PRICE_ID}}
\ -d "line_items[0][quantity]"=1 \ -d mode=payment \ --data-urlencode success_url="https://example.com/success" \ --data-urlencode cancel_url="https://example.com/cancel"

OpcionalGuardar datos de métodos de pago
Lado del servidor

De forma predeterminada, los métodos de pago utilizados para realizar pagos únicos con Checkout no están disponibles para su uso futuro.

Guarda los métodos de pago para cargarlos fuera de sesión

Puedes configurar Checkout para que guarde los métodos de pago utilizados para realizar un pago único especificando el argumento payment_intent_data.setup_future_usage. Esta opción es útil si necesitas capturar un método de pago en el archivo para usarlo en comisiones futuras, como comisiones de cancelación o de no presentación.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer_creation=always \ -d "line_items[0][price_data][currency]"=usd \ -d "line_items[0][price_data][product_data][name]"=T-shirt \ -d "line_items[0][price_data][unit_amount]"=2000 \ -d "line_items[0][quantity]"=1 \ -d mode=payment \ --data-urlencode success_url="https://example.com/success.html" \ --data-urlencode cancel_url="https://example.com/cancel.html" \ -d "payment_intent_data[setup_future_usage]"=off_session

Si utilizas Checkout en modo subscription, Stripe guarda automáticamente el método de pago para usarlo en pagos posteriores. Los métodos de pago con tarjeta guardados en los clientes que utilizan el modo setup_future_usage o subscription no aparecen en caso de devolución en Checkout (más información a continuación). Te recomendamos que utilices texto personalizado para vincular los términos relevantes relacionados con el uso de la información de pago guardada.

Precaución

Las leyes mundiales sobre privacidad son complicadas y están llenas de matices. Te recomendamos que te comuniques con tu equipo legal y de privacidad antes de implementar setup_future_usage ya que podría afectar a tu marco existente de cumplimiento de la normativa de privacidad. Consulta la guía emitida por la Junta Europea de Protección para obtener más información sobre cómo guardar los datos de pago.

Guarda los métodos de pago para completarlos previamente en Checkout

De forma predeterminada, el proceso de compra utiliza Enlace para ofrecer a tus clientes la opción de guardar y reutilizar su información de pago de forma segura. Si prefieres administrar los métodos de pago tú mismo, utiliza saved_pago_method_options.pago_method_save al crear una sesión de proceso de compra para permitir que tus clientes guarden sus métodos de pago para futuras compras en proceso de compra.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer_creation=always \ -d "line_items[0][price_data][currency]"=usd \ -d "line_items[0][price_data][product_data][name]"=T-shirt \ -d "line_items[0][price_data][unit_amount]"=2000 \ -d "line_items[0][quantity]"=1 \ -d mode=payment \ --data-urlencode success_url="https://example.com/success.html" \ --data-urlencode cancel_url="https://example.com/cancel.html" \ -d "saved_payment_method_options[payment_method_save]"=enabled

Si pasas este parámetro ya sea en modo de pago o suscripción, se muestra una casilla de verificación opcional que les permite a los clientes guardar explícitamente su método de pago para futuras compras. Cuando los clientes marcan esta casilla, Checkout guarda el método de pago con allow_redisplay: always. Checkout usa este parámetro para determinar si un método de pago puede completarse previamente en futuras compras. Al usar saved_payment_method_options.payment_method_save, no necesitas especificar setup_future_usage para guardar el método de pago.

El uso de saved_payment_method_options.payment_method_save requiere un Customer. Para guardar a un nuevo cliente, configura la customer_creation de la sesión de Checkout en always. De lo contrario, la sesión no guardará el cliente ni el método de pago.

Si no se especifica payment_method_save o si el cliente no acepta guardar el método de pago, Checkout aún guardará los métodos de pago creados en modo subscription o con setup_future_usage. Estos métodos de pago tienen un valor allow_redisplay de limited, lo que evita que se completen previamente para la devolución de compras y te permite cumplir con las reglas de la red de tarjetas y las normativas de protección de datos. Aprende a cambiar el comportamiento predeterminado habilitado por estos modos y a cambiar o anular el comportamiento allow_redisplay.

Nota

Puedes usar Checkout para guardar tarjetas y otros métodos de pago para cargarlos fuera de la sesión, pero Checkout solo completa automáticamente las tarjetas guardadas. Obtén información sobre cómo completar automáticamente las tarjetas guardadas. Para guardar un método de pago sin un pago inicial, usa Checkout en modo de configuración.

Permitir a los clientes eliminar métodos de pago guardados

Para permitir que tus clientes eliminen un método de pago guardado de modo que no vuelva a aparecer en pagos futuros, usa saved_payment_method_options.payment_method_remove cuando crees una Checkout Session.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer={{CUSTOMER_ID}} \ -d "line_items[0][price_data][currency]"=usd \ -d "line_items[0][price_data][product_data][name]"=T-shirt \ -d "line_items[0][price_data][unit_amount]"=2000 \ -d "line_items[0][quantity]"=1 \ -d mode=payment \ --data-urlencode success_url="https://example.com/success.html" \ --data-urlencode cancel_url="https://example.com/cancel.html" \ -d "saved_payment_method_options[payment_method_remove]"=enabled

El cliente no puede eliminar un método de pago si está vinculado a una suscripción activa y el cliente no tiene un método de pago predeterminado guardado para los pagos de facturas y suscripciones.

OpcionalSeparar la autorización de la captura
Lado del servidor

Stripe admite los pagos con tarjeta en dos pasos, de modo que primero puedes autorizar una tarjeta y luego capturar los fondos. Cuando Stripe autoriza un pago, el emisor de la tarjeta garantiza los fondos y retiene el importe del pago en la tarjeta del cliente. Luego tienes un cierto tiempo para capturar los fondos, según la tarjeta). Si no capturas el pago antes del vencimiento de la autorización, se cancela el pago y el emisor libera los fondos retenidos.

Separar la autorización y la captura es útil si tienes que tomar medidas adicionales entre la confirmación de que el cliente puede pagar y el cobro de los fondos. Por ejemplo, si vendes artículos de stock limitado y un cliente compra un producto con Checkout, es posible que tengas que confirmar si hay stock del artículo antes de capturar el pago y completar la compra. Para conseguirlo, usa el siguiente flujo de trabajo:

  1. Confirma que Stripe autorizó el método de pago del cliente.
  2. Consulta tu sistema de gestión de inventario para confirmar si hay stock del artículo.
  3. Actualiza tu sistema de gestión de inventario para indicar que el cliente ha comprado el artículo.
  4. Captura el pago del cliente.
  5. Informa a tu cliente si se concretó la compra en tu página de confirmación.

Para indicar que quieres separar la autorización de la captura, debes establecer el valor de payment_intent_data.capture_method en manual al crear la sesión de Checkout. Esto le indica a Stripe que solo debe autorizar el importe en la tarjeta del cliente.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "line_items[0][price]"={{PRICE_ID}} \ -d "line_items[0][quantity]"=1 \ -d mode=payment \ -d "payment_intent_data[capture_method]"=manual \ --data-urlencode success_url="https://example.com/success.html" \ --data-urlencode cancel_url="https://example.com/cancel.html"

Para capturar un pago que solo fue autorizado, puedes usar el punto de conexión del Dashboard o de captura. Para capturar pagos mediante programación, es necesario acceder al PaymentIntent creado durante la sesión de Checkout, al que llegas desde el objeto Session.

OpcionalGestión de cuentas de clientes
Sin código

Para permitir que tus clientes gestionen sus propias cuentas, comparte un enlace a tu portal de clientes. El portal de clientes les permite a los clientes iniciar sesión con su correo electrónico para gestionar las suscripciones, actualizar los métodos de pago, etc.

Consulta también

  • Agrega descuentos
  • Recauda impuestos
  • Recopila las identificaciones fiscales
  • Agrega envío
  • Personaliza tu imagen de marca
¿Te fue útil esta página?
SíNo
  • ¿Necesitas ayuda? Ponte en contacto con soporte.
  • Únete a nuestro programa de acceso anticipado.
  • Echa un vistazo a nuestro registro de cambios.
  • ¿Tienes alguna pregunta? Contacto.
  • ¿LLM? Lee llms.txt.
  • Con tecnología de Markdoc
Code quickstart
Guías relacionadas
API Elements Appearance
Más escenarios de pago
¿Cómo funcionan las tarjetas?