Skip to main content
Every transaction that includes a device IP address is enriched server-side in real time before rules evaluate it. Enrichment adds country, city, VPN/Tor/data-center flags, ASN, and carrier — all available as rule conditions.

When enrichment runs

Inline during transaction creation:
  1. You submit POST /v3/transactions/ with subject.device_context.network_context.ip_address (or any party’s device IP).
  2. Didit looks up the IP in an in-memory cache (24-hour TTL).
  3. If not cached, checks the shared IP-enrichment table (~30-day freshness).
  4. If stale or missing, resolves the IP through Didit’s enrichment pipeline with multi-provider failover.
  5. Enriched fields are written back to the transaction record and made available to rules.
Enrichment is inline — it completes before rules run — but non-blocking on failure. If enrichment cannot complete, the transaction still goes through; the IP simply appears without enrichment data.

Enriched fields

Using enriched fields in rules

Any of the enriched fields can be a rule condition. Common patterns: High-risk jurisdiction by IP
VPN / Tor usage
Data center / non-residential origin
IP country ≠ KYC country

Cache layers

Hits on the first two layers don’t cost you anything extra. Fresh resolutions may be metered — see your billing console.

Failure behavior

  • Transaction creation never fails because enrichment failed.
  • Missing enrichment fields simply don’t match any rule conditions that reference them.
  • Alerts about stuck enrichment are surfaced to your ops team via internal monitoring; no customer-facing impact.

Validity filtering

Non-routable IPs are skipped before enrichment:
  • Private (10/8, 172.16/12, 192.168/16)
  • Loopback (127/8)
  • Link-local (169.254/16)
  • Multicast, unspecified
These save provider quota and avoid nonsense enrichment data.

Inspecting enrichment for a transaction

Via API. There is no separate enrichment block. The enriched fields are written into the party’s own device.network_context object, next to the ip_address you submitted, on the matching entry of the parties array:
Fields you supplied on the request are preserved; enrichment only fills the keys you left out, and keys the resolver returned empty are omitted. See the response schema for the full device shape. In the console. The transaction detail page shows IP enrichment in the IP & Device tab with a geo-map pin.

Privacy considerations

  • Raw IPs are stored with the transaction.
  • Enrichment data lives on a shared IP-keyed table — not per user.
  • Right-to-be-forgotten deletion removes IPs from the transaction; the shared cache entry remains (it’s not personally identifying).

Next steps

Rules

Use enriched fields in conditions.

Rule library

Preset IP-based rules.

Response schema

Where IP enrichment appears.