OnSanctions
Subscribe

Built to hold as little of your data as possible.

We screen your customers without keeping a readable copy of them. Here is what we store, where, and for how long.

DataWhereHow long
Organization name, member emails, password hash, API key hashes, Stripe customer IDCloudflare D1, restricted to the European UnionWhile the account is open
Subject map: our numeric reference and a keyed HMAC of the identifier. No name or ID numberCloudflare D1, restricted to the European UnionWhile the account is open
Call log: time, key prefix, route, status, request ID. No names or identifiersCloudflare D1, restricted to the European Union30 days
Webhook delivery log: time, event ID, HTTP statusCloudflare D1, restricted to the European Union30 days
Developer invite: email and the invite linkCloudflare D1, restricted to the European Union7 days, or until used
Idempotency replay of a responseCloudflare D1, restricted to the European Union48 hours
Matching against the screening datasetVerifyNow, Cape Town, South AfricaPer request
Enrollment link: name and our reference as keyed HMAC-SHA-256 digests. Never the passport or other ID numberVerifyNow, dedicated Redis in Cape Town, South AfricaWhile enrolled. Seven years after withdrawal
Full screening response, encryptedVerifyNow, dedicated Redis in Cape Town, South Africa48 hours
Quick check pack: Stripe Checkout ID, checks bought and used. No namesCloudflare D1, restricted to the European UnionOne year from purchase
Card, email, invoices, tax IDStripePer Stripe

Access controls

API keys are stored as hashes. Revoke a key and it stops working on the next call.

You can restrict a key to an IP allowlist. Until an owner adds addresses, any address is allowed. Set one in production.

Passwords are stored as hashes. Full screening responses are encrypted and deleted after 48 hours.

Report a vulnerability: security@onsanctions.com

Trust center · Subprocessors · DPA