Códigos de rechazo
Códigos de rechazo de Stripe: qué significa cada uno y cómo solucionarlo
Revisado
Los códigos de rechazo de Stripe le dicen por qué falló un pago con tarjeta en Stripe. Algunos provienen del banco de la tarjeta, como `insufficient_funds` o `expired_card`; algunos provienen de Stripe mismo, como `fraudulent` o `merchant_blacklist`. Stripe los devuelve como el `decline_code` en un error `card_declined`. Cada página a continuación explica un código, dice si un reintento puede funcionar bajo las reglas de la red de tarjetas y muestra lo que PlatformDTC hace con ellos en el proceso de pago y las renovaciones de suscripción.
| Código | Significado |
|---|---|
| authentication_required | El banco quiere que el titular de la tarjeta verifique el pago, normalmente con 3D Secure. |
| authentication_not_handled | Se requería verificación, el comprador la omitió, y el banco rechazó de nuevo. |
| approve_with_id | El banco no pudo autorizar el pago tal como se envió; un intento más podría funcionar. |
| call_issuer | El banco rechazó sin una razón y quiere que el titular de la tarjeta lo contacte. |
| card_not_supported | La tarjeta no se puede usar para este tipo de compra. |
| card_velocity_exceeded | Se ha alcanzado el saldo, el límite de crédito o el límite de importe de la tarjeta. |
| currency_not_supported | La tarjeta no puede ser cargada en la moneda del pago. |
| do_not_honor | El banco rechazó la tarjeta sin decir por qué. |
| do_not_try_again | Código obsoleto: rechazado por una razón desconocida; no vuelvas a cargar esta tarjeta. |
| duplicate_transaction | Se envió un pago idéntico con la misma tarjeta hace unos momentos. |
| expired_card | La tarjeta ha superado su fecha de vencimiento. |
| fraudulent | Las comprobaciones de fraude de Stripe sospecharon que el pago era fraudulento y lo bloquearon. |
| generic_decline | Rechazado por una razón desconocida, o bloqueado por Stripe Radar o Adaptive Acceptance. |
| incorrect_address | La dirección de facturación ingresada no coincide con los registros del banco. |
| incorrect_cvc | El código de seguridad de la tarjeta (CVC) es incorrecto. |
| incorrect_number | El número de tarjeta ingresado es incorrecto. |
| incorrect_pin | El PIN introducido en un lector de tarjetas es incorrecto. |
| incorrect_zip | El código postal de facturación no coincide con los registros del banco. |
| insufficient_funds | La tarjeta no tiene suficiente dinero o crédito para este pago. |
| invalid_account | La tarjeta o la cuenta asociada ya no es válida. |
| invalid_amount | El monto del pago es inválido o superior a lo que permite la tarjeta. |
| invalid_cvc | El código de seguridad de la tarjeta (CVC) es incorrecto. |
| invalid_expiry_month | El mes de caducidad de la tarjeta no es válido. |
| invalid_expiry_year | El año de caducidad de la tarjeta no es válido. |
| invalid_number | El número de tarjeta es incorrecto. |
| invalid_pin | El PIN introducido es incorrecto. |
| issuer_not_available | No se pudo contactar con el banco de la tarjeta, por lo que el pago nunca fue autorizado. |
| lost_card | La tarjeta ha sido reportada como perdida. No se puede usar; el comprador necesita otra tarjeta. |
| merchant_blacklist | El pago coincidió con una entrada en la lista de bloqueo de Stripe propia de la tienda. |
| new_account_information_available | La tarjeta o su cuenta no es válida; el banco podría tener detalles más recientes para ella. |
| no_action_taken | La tarjeta fue rechazada por una razón que el banco no compartió. |
| not_permitted | El banco dice que este pago no está permitido en esta tarjeta. |
| offline_pin_required | Solo en persona: la tarjeta debe insertarse y se debe introducir un PIN. |
| online_or_offline_pin_required | Solo en persona: la tarjeta necesita un PIN, mediante Online PIN o chip y PIN. |
| pickup_card | La tarjeta no se puede usar para este pago; puede haber sido reportada como perdida o robada. |
| pin_try_exceeded | Demasiados intentos de PIN incorrectos; el cliente debe usar otra tarjeta o método. |
| processing_error | Ocurrió un error al procesar la tarjeta. Generalmente temporal. |
| reenter_transaction | El banco no pudo procesar el pago por una razón desconocida; inténtelo de nuevo. |
| restricted_card | La tarjeta no se puede usar para este pago; puede haber sido reportada como perdida o robada. |
| revocation_of_all_authorizations | El banco rechazó; típicamente el titular de la tarjeta ha detenido todos los pagos futuros. |
| revocation_of_authorization | El banco rechazó; típicamente el titular de la tarjeta revocó los pagos a esta tienda. |
| security_violation | El banco rechazó por una razón que no compartió; a menudo una regla de seguridad. |
| service_not_allowed | La tarjeta fue rechazada por una razón que el banco no dio. |
| stolen_card | La tarjeta ha sido reportada como robada. No puede usarse de nuevo. |
| stop_payment_order | El banco rechazó; el nombre del código apunta a una orden de suspensión de pago en la tarjeta. |
| testmode_decline | Se usó un número de tarjeta de prueba de Stripe en un pago real. |
| transaction_not_allowed | El banco rechazó; la tarjeta no permite este tipo de transacción. |
| try_again_later | Código obsoleto: el banco rechazó por una razón desconocida; intenta de nuevo más tarde. |
| withdrawal_count_limit_exceeded | El cliente ha superado el saldo o límite de crédito disponible en la tarjeta. |
| mobile_device_authentication_required | El pago necesita autenticación; el cliente debería tocar su teléfono de nuevo. |
| card_declined | El código de error de Stripe para cualquier tarjeta rechazada; el decline_code indica el motivo. |
| payment_intent_authentication_failure | La tarjeta falló la verificación de autenticación del banco (como 3-D Secure). |
¿Qué códigos de rechazo de Stripe se pueden reintentar?
Stripe clasifica muchos rechazos como genéricos, por lo que la razón exacta a menudo no está clara. Como regla general, los códigos de fondos, límite y temporales pueden resolverse más tarde; los detalles de tarjeta incorrectos requieren que el comprador los vuelva a introducir; las tarjetas perdidas, robadas, cerradas, restringidas y caducadas necesitan una tarjeta diferente.
Stripe también devuelve un código de consejo con algunos rechazos: `do_not_try_again` significa no usar la tarjeta de nuevo para ese pago, `try_again_later` significa que se permite un reintento, y `confirm_card_data` significa que algunos detalles de la tarjeta son incorrectos. Stripe recomienda un máximo de ocho reintentos para un cargo que permite reintentos.
En el calendario fijo predeterminado (reintentos con 1, 3, 5 y 7 días de diferencia), los rechazos en los dos últimos grupos también se detienen en el primer fallo: la tarjeta no se reintenta, la suscripción se mantiene vencida y el cliente recibe el correo electrónico para actualizar la tarjeta o confirmar el pago. Solo los otros grupos se reintentan en ese calendario.
| Grupo | Códigos de ejemplo | Qué sucede |
|---|---|---|
| Fondos insuficientes | insufficient_funds | Se reintenta en el día de pago probable del cliente, o 2, 5, 8, 13 y 18 días después del primer rechazo: hasta 6 intentos (7 en PayPal, 2 en una tarjeta prepago) |
| Temporal | processing_error, issuer_not_available, try_again_later, card_velocity_exceeded, card_decline_rate_limit_exceeded | Se reintenta 2, 5 y 8 días después del primer rechazo: hasta 4 intentos |
| Sin razón indicada | do_not_honor, generic_decline, call_issuer, approve_with_id, no_action_taken, duplicate_transaction | Un reintento 48 a 72 horas después, luego se le pide al cliente una nueva tarjeta |
| Se necesita confirmación bancaria | authentication_required, authentication_not_handled, mobile_device_authentication_required | No hay reintento ciego; se le pide al cliente que confirme el pago con su banco |
| La tarjeta no se puede usar | lost_card, stolen_card, expired_card, incorrect_number, incorrect_zip, restricted_card, pin_try_exceeded, do_not_try_again | Nunca se reintenta; el cliente recibe un enlace de un solo clic para actualizar la tarjeta |
Qué hace PlatformDTC en el proceso de pago
El comprador ve el mensaje de rechazo de Stripe, además de una pista sencilla para los códigos comunes, como "Su tarjeta no tiene fondos suficientes. Intente con otra tarjeta." y una opción para probar otra tarjeta de inmediato. Para `lost_card`, `stolen_card`, `pickup_card`, `fraudulent` y `merchant_blacklist`, la pista es siempre la genérica "Su tarjeta fue rechazada. Intente con otra tarjeta o contacte a su banco.", por lo que nunca se le dice al comprador que una tarjeta fue reportada como perdida o robada o marcada.
Si la tienda ha elegido los pagos con tarjeta de PayPal como respaldo, un rechazo bancario sin razón duradera, como `do_not_honor` o `processing_error`, puede intentarse de nuevo a través de PayPal, donde el comprador introduce la tarjeta otra vez. Los rechazos por fondos, 3-D Secure, detalles incorrectos, tarjeta inactiva y fraude nunca se mueven al respaldo.
Preguntas frecuentes
- ¿Dónde encuentro el código de rechazo para un pago de Stripe?
- En el Panel de Stripe, abra el pago fallido: la razón del rechazo se muestra con una solución corta sugerida. En la API es el `decline_code` en el `last_payment_error` del `PaymentIntent`, y el resultado del cargo también lleva la razón, un código de consejo y, cuando la red envió uno, el código de rechazo de red en bruto.
- ¿Cuál es el código de rechazo de Stripe más común?
- Stripe dice que los bancos de tarjetas categorizan la mayoría de los rechazos como genéricos (`generic_decline`), lo que deja la razón exacta poco clara. Si la información de la tarjeta es correcta, Stripe aconseja pedir al cliente que contacte a su banco emisor para saber por qué se rechazó el pago.
- ¿Cuántas veces puedo reintentar un pago de Stripe rechazado?
- Stripe recomienda un máximo de ocho reintentos para cargos que permiten reintentos, y advierte que los reintentos adicionales pueden parecer fraude a los bancos de tarjetas. Visa permite hasta 20 intentos en 30 días en rechazos reintentables y ninguno después de un rechazo de Categoría 1, como una tarjeta perdida o robada.
- ¿Debo decirle al comprador la razón exacta del rechazo?
- Para la mayoría de los códigos, sí: una razón sencilla como una tarjeta caducada o un código de seguridad incorrecto les ayuda a solucionarlo. Para `fraudulent`, `lost_card`, `stolen_card` y `merchant_blacklist`, Stripe dice que no se deben dar detalles y que se debe mostrar el rechazo de la misma manera que `generic_decline`.