> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Enriquecimiento de IP en transacciones: país, ASN, VPN

> Didit enriquece cada transacción con contexto de IP: país, ASN, VPN, Tor, centro de datos y operador. 1,000 al mes incluidas, luego $0.001 cada una.

Cada transacción que incluye una dirección IP de dispositivo se enriquece en el servidor en tiempo real antes de que las reglas la evalúen. El enriquecimiento añade país, ciudad, indicadores de VPN, Tor y centro de datos, ASN y operador, todos ellos disponibles como condiciones de reglas.

## Cuándo se ejecuta el enriquecimiento

En línea, durante la creación de la transacción:

1. Envías `POST /v3/transactions/` con `subject.device_context.network_context.ip_address` (o la IP del dispositivo de cualquier parte).
2. Didit busca la IP en una caché en memoria (TTL de 24 horas).
3. Si no está en caché, consulta la tabla compartida de enriquecimiento de IP (vigencia de unos 30 días).
4. Si el dato está desactualizado o no existe, resuelve la IP mediante el pipeline de enriquecimiento de Didit, con conmutación por error entre varios proveedores.
5. Los campos enriquecidos se escriben en el registro de la transacción y quedan disponibles para las reglas.

El enriquecimiento es **en línea**, es decir, termina antes de que se ejecuten las reglas, pero **no bloquea si falla**. Si el enriquecimiento no puede completarse, la transacción sigue adelante y la IP simplemente aparece sin datos de enriquecimiento.

## Campos enriquecidos

| Campo | Descripción |
| - | - |
| `ip_country` | Nombre del país |
| `ip_country_code` | ISO 3166-1 alfa-2 cuando lo resuelve Didit (un valor que hayas enviado se conserva tal cual); las condiciones de reglas normalizan ambas formas |
| `ip_state` | Subdivisión (estado, región) |
| `ip_city` | Nombre de la ciudad |
| `latitude`, `longitude` | Coordenadas geográficas |
| `isp` | Nombre del proveedor de servicios de internet |
| `organization` | Nombre de la organización registrante |
| `is_vpn_or_tor` | Booleano: la IP es una salida conocida de VPN o Tor |
| `is_data_center` | Booleano: la IP pertenece a un rango de hosting o de centro de datos |
| `time_zone` | Zona horaria IANA (p. ej., `America/New_York`) |
| `time_zone_offset` | Desfase respecto a UTC |
| `asn_number` | Número de sistema autónomo (ASN) |
| `asn_organization` | Organización registrada del ASN |
| `connection_type` | `mobile`, `broadband`, `dialup`, `corporate`, ... |
| `carrier` | Operador móvil (para IP móviles) |
| `proxy_type` | `VPN`, `TOR`, `PUBLIC_PROXY` o null |

## Uso de los campos enriquecidos en reglas

Cualquiera de los campos enriquecidos puede ser una [condición de regla](https://docs.didit.me/es/transaction-monitoring/rules.md). Patrones habituales:

**Jurisdicción de alto riesgo por IP**

```
condition: applicant.ip_country_code IN ['IRN', 'PRK', 'SYR']
action: add_score(35), add_tags(['high_risk_ip_country'])
```

**Uso de VPN o Tor**

```
condition: applicant.is_vpn_or_tor == true
action: change_status('IN_REVIEW'), add_tags(['anonymization'])
```

**Origen en centro de datos o no residencial**

```
condition: applicant.is_data_center == true AND amount > 10000
action: add_score(30)
```

**País de la IP ≠ país del KYC**

```
condition: applicant.ip_country_code != applicant.country_code
action: add_score(15), add_tags(['geo_mismatch'])
```

## Capas de caché

| Capa | TTL | Propósito |
| - | - | - |
| Caché en memoria | 24 horas | Búsqueda en menos de un milisegundo para IP frecuentes |
| Tabla compartida de enriquecimiento de IP | \~30 días | Compartida entre instancias; más barata que volver a resolver |
| Pipeline de enriquecimiento | n/a | Datos actualizados cuando ninguna otra capa los tiene |

Los aciertos en las dos primeras capas no tienen ningún costo adicional. Las resoluciones nuevas pueden estar sujetas a cargos; consulta tu consola de facturación.

## Comportamiento ante fallos

* La creación de una transacción **nunca falla** porque haya fallado el enriquecimiento.
* Los campos de enriquecimiento que faltan simplemente no coinciden con ninguna condición de regla que los utilice.
* Las alertas sobre enriquecimientos atascados se notifican a tu equipo de operaciones mediante monitorización interna; no hay impacto visible para el cliente.

## Filtrado por validez

Las IP no enrutables se omiten antes del enriquecimiento:

* Privadas (10/8, 172.16/12, 192.168/16)
* Bucle local (127/8)
* Enlace local (169.254/16)
* Multidifusión, no especificadas

Así se ahorra cuota de los proveedores y se evitan datos de enriquecimiento sin sentido.

## Inspección del enriquecimiento de una transacción

**Mediante la API.** No existe un bloque de enriquecimiento independiente. Los campos enriquecidos se escriben en el propio objeto `device.network_context` de la parte, junto a la `ip_address` que enviaste, en la entrada correspondiente del array `parties`:

```json theme={null}
"parties": [
  {
    "role": "APPLICANT",
    "vendor_data": "user-42",
    "device": {
      "network_context": {
        "ip_address": "203.0.113.5",
        "ip_country": "United States",
        "ip_country_code": "US",
        "ip_state": "California",
        "ip_city": "San Francisco",
        "is_vpn_or_tor": false,
        "is_data_center": false,
        "asn_number": 64496,
        "asn_organization": "Example ISP",
        "proxy_type": null
      }
    }
  }
]
```

Los campos que proporcionaste en la solicitud se conservan; el enriquecimiento solo completa las claves que dejaste sin indicar, y las claves que el resolvedor devolvió vacías se omiten. Consulta el [esquema de respuesta](https://docs.didit.me/es/transaction-monitoring/response-schema.md#device) para ver la estructura completa de `device`.

**En la consola.** La página de detalle de la transacción muestra el enriquecimiento de la dirección IP en la pestaña **IP & Device**, con un marcador en un mapa geográfico.

## Consideraciones de privacidad

* Las IP sin procesar se almacenan con la transacción.
* Los datos de enriquecimiento residen en una tabla compartida indexada por IP, no por usuario.
* La eliminación por derecho al olvido elimina las IP de la transacción; la entrada de la caché compartida se mantiene (no identifica a ninguna persona).

## Próximos pasos

> [card] [Reglas](https://docs.didit.me/es/transaction-monitoring/rules.md)
>
> Usa los campos enriquecidos en condiciones.

> [card] [Biblioteca de reglas](https://docs.didit.me/es/transaction-monitoring/rules-library.md)
>
> Reglas predefinidas basadas en IP.

> [card] [Esquema de respuesta](https://docs.didit.me/es/transaction-monitoring/response-schema.md)
>
> Dónde aparece el enriquecimiento de IP.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.