Aceptar una transferencia bancaria
The first time you accept a bank transfer payment from a customer, Stripe generates a virtual bank account for them, which you can then share with them directly. All future bank transfer payments from this customer get sent to this bank account. In some countries, Stripe also provides you with a unique transfer reference number that your customer should include with each transfer to make it easier to match the transfer against outstanding payments. Some countries have limits on the number of virtual bank account numbers that you can create for free.
Puedes encontrar un resumen de los pasos más comunes para aceptar un pago mediante transferencia bancaria en el siguiente diagrama de secuencia:
Handling underpayments and overpayments
With bank transfer payments, it’s possible that the customer sends you more or less than the expected payment amount. If the customer sends too little, Stripe partially funds an open payment intent. Invoices won’t be partially funded and remain open until incoming funds cover the full invoice amount.
Si el cliente envía un importe mayor que el previsto, Stripe intenta conciliar los fondos recibidos con un pago abierto y mantendrá lo que sobre del importe en el saldo de caja del cliente. Puedes encontrar más detalles sobre cómo Stripe gestiona la conciliación en la sección Conciliación de nuestra documentación.
Cómo gestionar varias facturas o pagos abiertos
You might have multiple open payments or invoices which can be paid with a bank transfer. In the default setup, Stripe attempts to automatically reconcile the bank transfer by using information like the transfer’s reference code or the amount transferred.
You can disable automatic reconciliation and manually reconcile payments and invoices yourself. You can override the automatic reconciliation behavior on a per-customer basis by setting reconciliation mode to manual.
Configura StripeLado del servidor
Primero, necesitas una cuenta de Stripe. Inscríbete ahora.
Usa nuestras librerías oficiales para acceder a la API de Stripe desde tu aplicación:
Crea o recupera un objeto CustomerLado del servidor
You must associate a Customer object to reconcile each bank transfer payment. If you have an existing Customer object, you can skip this step. Otherwise, create a new Customer object.
Crea y confirma un PaymentIntentLado del servidor
Un PaymentIntent es un objeto que representa tu intención de cobrarle a un cliente y hace el seguimiento del ciclo de vida del proceso de pago en cada etapa. Crea y confirma un PaymentIntent en el servidor y especifica el importe y la moneda del cobro.
Indícale a tu cliente que complete una transferencia bancaria.Lado del cliente
Si el saldo del cliente no tiene fondos suficientes para cubrir el importe solicitado, el estado del PaymentIntent es requires_action
. La respuesta tiene un campo next_action
que contiene un valor type
de display_bank_transfer_instructions
. El hash next_action[display_bank_transfer_instructions]
contiene información que debes mostrar a tu cliente para que pueda completar la transferencia bancaria.
Nota
En modo activo, Stripe proporciona a cada cliente un conjunto único de datos de transferencias bancarias. Por el contrario, Stripe ofrece datos de transferencias bancarias no válidos para todos los clientes en modo de prueba. A diferencia del modo activo, es posible que estos datos no válidos no siempre sean únicos.
Confirma el PaymentIntent procesado correctamente
El estado del PaymentIntent permanece en requires_action
hasta que los fondos llegan a la cuenta bancaria. Cuando los fondos están listos, el estado del PaymentIntent se actualiza y pasa de requires_action
a succeeded
.
Debes configurar tu punto de conexión de webhook para empezar a recibir el evento payment_intent.partially_funded
.
You can add a webhook from the Dashboard.
Alternatively, you can use the Webhook Endpoints API to start receiving the payment_intent.partially_funded
event.
Stripe envía los siguientes eventos durante el movimiento de los fondos del pago cuando actualizamos el PaymentIntent.
Evento | Descripción | Próximos pasos |
---|---|---|
payment_intent.requires_action | Se envía durante la confirmación cuando no hay suficientes fondos en el saldo de cliente para conciliar el PaymentIntent; el PaymentIntent pasa a requires_action . | Indícale a tu cliente que envíe una transferencia bancaria con el amount_remaining . |
payment_intent.partially_funded | The customer sent a bank transfer that was applied to the PaymentIntent, but wasn’t enough to complete the payment. This might happen because the customer transferred an insufficient amount (because of a mistaken underpayment or fees charged by their bank) or because a remaining customer balance was applied to this PaymentIntent. PaymentIntents that are partially funded aren’t reflected in your account balance until the payment is complete. | Instruct your customer to send another bank transfer with the new amount_remaining to complete the payment. If you want to complete the payment with the partially applied funds, you can update the amount and confirm the PaymentIntent again. |
payment_intent.succeeded | El pago del cliente se efectuó correctamente. | Entrega los bienes o servicios que el cliente compró. |
Precaución
Cuando cambias el importe de un PaymentIntent parcialmente financiado, los fondos se devuelven al saldo del cliente. Si hay otros PaymentIntents abiertos, Stripe los financia automáticamente. Si el cliente está configurado para realizar la conciliación manual, tienes que aplicar los fondos de nuevo.
Te recomendamos usar webhooks para confirmar que el cobro se efectuó correctamente y notificar al cliente que se completó el pago.
Código de ejemplo
View pending payments in the Dashboard
You can view all pending bank transfer PaymentIntents in the Dashboard by applying the Waiting on funding filter to Status .
Prueba tu integración
Puedes probar tu integración simulando una transferencia bancaria entrante a través del Dashboard o con una solicitud HTTP.
With the Dashboard
Para simular una transferencia bancaria usando el Dashboard, debes ir a la página del cliente en el Dashboard. En Métodos de pago, haz click en Agregar y selecciona Agregar fondos al saldo de caja (solo modo de prueba).
With the Stripe API
You can make an API call to simulate a bank transfer.
Cómo gestionar problemas temporales de disponibilidad
Los siguientes códigos de error indican errores temporales en la disponibilidad del método de pago:
Código | Description | Handling |
---|---|---|
payment_method_rate_limit_exceeded | Se realizaron demasiadas solicitudes en poco tiempo para este método de pago, cuyos límites son más estrictos que los límites de frecuencia de la API. | These errors can persist for several API requests when many of your customers try to use the same payment method, such as during an ongoing sale on your website. In this case, ask your customers to choose a different payment method. |
Precaución
Si prevés un consumo intensivo en general o debido a un próximo evento, contáctanos tan pronto como lo sepas.