Si tu tienda online está detrás de Cloudflare, sus sistemas de seguridad (WAF, reglas administradas, Bot Fight Mode o los desafíos tipo CAPTCHA) pueden bloquear comunicaciones legítimas de tu pasarela de pago. El síntoma clásico: el cliente paga correctamente, pero el pedido se queda «pendiente de pago» porque la notificación servidor a servidor (webhook o callback) de **RedSys**, **PayPal** o **Stripe** nunca llega a tu web.

En esta guía te explicamos cómo crear una **lista blanca (whitelist) en Cloudflare** para los sistemas autónomos (ASN) y las IPs de las principales pasarelas de pago, de forma que Cloudflare no las bloquee ni les muestre ningún desafío.

:::info
Esta guía sirve para cualquier web que pase por Cloudflare (plan Free o de pago), tanto si está alojada en un [hosting](https://ginernet.com/es/hosting/) como en un [VPS](https://ginernet.com/es/vps/) de GINERNET.
:::

## Por qué Cloudflare bloquea los pagos

Las pasarelas de pago confirman las operaciones mediante peticiones **servidor a servidor** contra tu web: la «notificación online» de RedSys, el IPN/webhook de PayPal o los webhooks de Stripe. Estas peticiones las hace un servidor, no un navegador, por lo que **no pueden resolver un desafío JavaScript ni un CAPTCHA**. Si Cloudflare les presenta un Managed Challenge (el equivalente de Cloudflare a un reCAPTCHA), un Browser Integrity Check o las bloquea por reputación de IP, la notificación se pierde y el pago no se confirma en tu tienda, aunque el banco sí lo haya cobrado.

## Qué es un ASN y por qué usarlo para la whitelist

Un **sistema autónomo (AS)** es el conjunto de redes IP que gestiona una misma organización en internet, identificado por un número único: el **ASN**. Permitir el ASN oficial de una pasarela es más robusto que mantener listas de IPs sueltas: si la pasarela añade o cambia IPs dentro de su propia red, la regla sigue funcionando sin que tengas que tocar nada.

## ASN de las principales pasarelas de pago

| Pasarela | ASN | Notas |
| --- | --- | --- |
| **RedSys** (TPV virtual de la mayoría de bancos españoles y Bizum) | **AS31627** | Rangos propios: `195.76.9.0/24` y `193.16.243.0/24` |
| **PayPal** | **AS17012** | PayPal también publica sus [rangos de IP oficiales](https://www.paypal.com/us/cshelp/article/ts1056) |
| **Adyen** | **AS200596** | Adyen recomienda además resolver por DNS `out.adyen.com` |
| **Stripe** | — (no aplica) | Envía los webhooks desde AWS: usa su [lista oficial de IPs](https://docs.stripe.com/ips) |
| **Klarna** | — (no aplica) | Envía los callbacks desde AWS: usa su [lista oficial de IPs](https://docs.klarna.com/acquirer/klarna/get-started/integration-resilience/callbacks/) |

:::danger
Stripe y Klarna envían sus webhooks desde infraestructura de Amazon Web Services (AS16509). **Nunca hagas whitelist del ASN de Amazon**: estarías dando vía libre a millones de servidores de terceros, incluidos bots maliciosos. Para estas pasarelas usa siempre sus listas oficiales de IPs.
:::

## Método recomendado: regla personalizada del WAF con acción «Omitir» (Skip)

Cloudflare recomienda usar reglas personalizadas con la acción **Skip** (Omitir) para las listas blancas. Disponible en todos los planes, incluido el Free.

1. Entra en el [dashboard de Cloudflare](https://dash.cloudflare.com/) y selecciona tu dominio.
2. Ve a **Security → WAF → Custom rules** (en el dashboard nuevo: **Security → Security rules**).
3. Pulsa **Create rule** y ponle un nombre descriptivo, por ejemplo `Whitelist pasarelas de pago`.
4. Pulsa **Edit expression** y pega esta expresión (ajústala a las pasarelas que uses):

```
(ip.src.asnum eq 31627)
or (ip.src.asnum eq 17012)
or (ip.src.asnum eq 200596)
or (ip.src in {3.18.12.63 3.130.192.231 13.235.14.237 13.235.122.149 18.211.135.69 35.154.171.200 52.15.183.38 54.88.130.119 54.88.130.237 54.187.174.169 54.187.205.235 54.187.216.72 35.157.207.129 3.69.109.8 3.120.168.93})
```

   Las tres primeras líneas permiten los ASN de RedSys, PayPal y Adyen; la última contiene las IPs de webhooks de Stripe. Si usas Klarna, añade también sus IPs de producción: `52.17.117.56 52.17.176.198 52.0.45.33 52.0.46.187 13.211.30.100 3.104.49.49 13.54.229.130`.

5. En **Choose action**, selecciona **Skip**.
6. Marca todas las protecciones que quieras omitir. Para una lista blanca total, marca:
   - **All remaining custom rules** (el resto de reglas personalizadas)
   - **All rate limiting rules** (limitación de peticiones)
   - **All Super Bot Fight Mode rules**
   - **All managed rules** (las reglas administradas del WAF)
   - En **WAF components to skip**: *Zone Lockdown*, *User Agent Blocking*, *Browser Integrity Check*, *Hotlink Protection* y *Security Level* (esto último desactiva los desafíos por nivel de seguridad).
7. Guarda la regla con **Deploy** y **arrástrala a la primera posición** de la lista, para que se evalúe antes que cualquier regla de bloqueo.

:::warning
El **Bot Fight Mode** del plan Free no se puede omitir con reglas Skip. Si tienes activado Bot Fight Mode y sigue bloqueando los webhooks, desactívalo en **Security → Bots** o pásate a un plan Pro con Super Bot Fight Mode, que sí respeta esta regla.
:::

## Alternativa: IP Access Rules

En **Security → WAF → Tools → IP Access Rules** puedes crear una regla con acción **Allow** indicando directamente un ASN (por ejemplo `AS31627`). Es más rápido, pero menos completo: las IP Access Rules **no omiten las reglas administradas del WAF**, así que un falso positivo de las managed rules seguiría bloqueando la notificación. Por eso Cloudflare recomienda el método de la regla personalizada con Skip.

## Comprueba que funciona

1. Ve a **Security → Events** (o **Security → Analytics**) en el dashboard de Cloudflare.
2. Filtra por **ASN** (por ejemplo `31627`) o por la IP de origen de la pasarela.
3. Haz un pago de prueba: los eventos deben aparecer con acción **Skip** en lugar de *Block* o *Managed Challenge*.

En paralelo, revisa el panel de tu pasarela: RedSys muestra el resultado del envío de la notificación online, y Stripe y PayPal registran el código de respuesta de cada webhook (debe ser `200`, no `403`).

## Mantén la verificación de firmas

Hacer whitelist en Cloudflare no significa desactivar la seguridad de tu módulo de pago: la firma HMAC de RedSys, la verificación de firma de los webhooks de Stripe (`Stripe-Signature`) y la validación del IPN de PayPal deben seguir activas. La whitelist evita que Cloudflare bloquee la comunicación; la firma garantiza que la notificación es auténtica.

:::tip
Las listas de IPs de Stripe y Klarna pueden cambiar con el tiempo. Revísalas periódicamente en su documentación oficial ([Stripe](https://docs.stripe.com/ips), [Klarna](https://docs.klarna.com/acquirer/klarna/get-started/integration-resilience/callbacks/)) o suscríbete a sus avisos para desarrolladores.
:::

Si tienes tu web alojada en GINERNET y necesitas ayuda con la configuración, abre un ticket de soporte desde tu área de cliente y te echamos una mano.