When enrichment runs
Inline during transaction creation:- You submit
POST /v3/transactions/withapplicant.device.ip(or any party’s device IP). - Didit looks up the IP in an in-memory cache (24-hour TTL).
- If not cached, checks the shared IP-enrichment table (~30-day freshness).
- If stale or missing, resolves the IP through Didit’s enrichment pipeline with multi-provider failover.
- Enriched fields are written back to the transaction record and made available to rules.
Enriched fields
Using enriched fields in rules
Any of the enriched fields can be a rule condition. Common patterns: High-risk jurisdiction by IPCache 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
Inspecting enrichment for a transaction
Via API. The transaction response includes anip_enrichment block:
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.