BYOK Wallet Screening: Crystal & Merkle Science, ~10× Cheaper
Bring your own Crystal or Merkle Science key and screen crypto wallets at $0.02 per screening — roughly 10× cheaper than buying a blockchain-analytics subscription direct, with no seat licenses or annual minimums.

Blockchain analytics is the most expensive line item in a crypto compliance budget. The major platforms are sold as enterprise contracts — annual minimums, seat licenses, multi-year terms — long before a single wallet is screened. For a team that just needs a risk verdict at the point of deposit, that pricing model is a wall.
Didit's bring-your-own-key (BYOK) model takes that wall down. You bring your own Crystal or Merkle Science key, and Didit charges $0.02 per screening through one API — roughly 10× cheaper than buying the same intelligence as a standalone subscription. You keep your direct relationship with the data provider; Didit handles the integration, the scoring, the case management, and the per-call billing.
This post explains how BYOK works, why it's so much cheaper, and which provider to pick.
Key takeaways
- BYOK = your provider key + Didit's API. You contract with Crystal or Merkle Science directly; Didit runs the screening and bills $0.02 per screening.
- ~10× cheaper than buying a blockchain-analytics subscription direct — no seat licenses, no annual minimums, no multi-year lock-in.
- Two providers today — Crystal ($0.18 managed / $0.02 BYOK) and Merkle Science ($0.15 managed / $0.02 BYOK). Chainalysis and Elliptic are coming soon (BYOK $0.02).
- Managed is also available if you'd rather Didit supply the data — $0.18 (Crystal) or $0.15 (Merkle Science) per screening, no key required.
- One integration, swappable provider. The API surface is identical whichever provider you use, so switching is a config change, not a rebuild.
- Pay-per-success. You pay per screening, so cost scales with usage instead of headcount.
What BYOK wallet screening is
"Bring your own key" means you hold the commercial relationship and the API key with the data provider — Crystal or Merkle Science — and you plug that key into Didit. When you screen a wallet, Didit calls the provider on your behalf, normalizes the result into a single 0–100 risk score with LOW/MEDIUM/HIGH/CRITICAL bands and a source-of-funds breakdown, and charges you $0.02 for the orchestration.
The alternative is managed: Didit supplies the data, no key needed, at $0.18 (Crystal) or $0.15 (Merkle Science) per screening. Same API, same scoring — the only difference is who holds the provider relationship.
Why it matters
The economics are the whole point. A standalone blockchain-analytics subscription bundles the data with seats, dashboards, and an annual commitment — so the marginal cost of one screening is buried inside a large fixed fee, and a small team pays for capacity it doesn't use. BYOK unbundles that: you keep the data contract you may already have (or sign a usage-based one), and you pay Didit $0.02 per screening for everything else — the API, the scoring model, the exposure graph, the case management, and the billing.
The result is roughly 10× lower per-screening cost than buying the analytics platform direct, with no minimums and no seat math. For an exchange or on-ramp screening every deposit and withdrawal, that difference compounds fast.
Technical details
BYOK is configured once in the Console; after that, screening is identical to any crypto transaction on the unified /v3/ API.
curl -X POST https://verification.didit.me/v3/transactions/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"transaction_id": "txn_a72c10",
"category": "finance",
"amount": 5000,
"currency": "BTC",
"currency_kind": "crypto",
"direction": "OUTBOUND",
"wallet_address": "bc1q...8x4d",
"include_crypto_screening": true,
"subject": { "vendor_data": "user_3390", "role": "SENDER" }
}'
The response reports which provider screened the wallet and the verdict — the shape is the same whether you're on Crystal or Merkle Science:
{
"transaction_id": "txn_a72c10",
"wallet_screening": {
"provider": "merkle_science",
"risk_score": 18,
"risk_band": "LOW",
"exposure": [
{ "category": "EXCHANGE", "type": "DIRECT", "share": 0.91 }
]
}
}
Provider matrix.
| Provider | Managed | BYOK | Status |
|---|---|---|---|
| Crystal | $0.18 / screening | $0.02 / screening | Live |
| Merkle Science | $0.15 / screening | $0.02 / screening | Live |
| Chainalysis | — | $0.02 / screening | Coming soon |
| Elliptic | — | $0.02 / screening | Coming soon |
Switching providers is a Console setting under Transactions → Settings — set the active provider and key, and every subsequent screening uses it. The request and response contract doesn't change, so no application code moves.
Price. $0.02 per screening with BYOK; $0.18 (Crystal) or $0.15 (Merkle Science) managed. Billed per call, no minimums.
Choosing a provider
Both Crystal and Merkle Science return the same normalized score, bands, and source-of-funds categories through Didit, so the decision is about coverage and your existing contracts:
- Already have a Crystal or Merkle Science contract? Use BYOK and pay Didit only the $0.02 orchestration fee — you keep the data relationship you've already negotiated.
- No contract yet, want the lowest friction? Use managed and let Didit supply the data — $0.18 (Crystal) or $0.15 (Merkle Science), no key to manage.
- Standardizing on Chainalysis or Elliptic? They're coming soon at $0.02 BYOK; the integration is identical, so you can plan for them now.
Use cases
- Crypto exchanges screening high deposit and withdrawal volumes, where a 10× per-screening saving is the difference between affordable and not.
- On/off-ramps that want usage-based cost aligned to conversion volume rather than a fixed annual seat fee.
- Custodians that already hold a provider contract and want to reuse it through one API instead of a second integration.
- Wallets adding KYT for the first time, where managed pricing avoids signing an enterprise data contract on day one.
- VASPs that need swappable providers to satisfy different jurisdictional preferences without re-integrating.
How to integrate with Didit
- Pick BYOK or managed. In Transactions → Settings, choose your provider. For BYOK, paste your Crystal or Merkle Science key; for managed, just select the provider.
- Set the default. Decide whether crypto transactions screen automatically, and override per call with
include_crypto_screening. - Send transactions.
POST /v3/transactions/withcurrency_kind: "crypto"— the rest is handled. - Read the normalized verdict. Score, band, and exposure come back in the same shape regardless of provider.
Frequently asked questions
How much do I save with BYOK?
Roughly 10× per screening versus buying a blockchain-analytics subscription direct. Didit charges $0.02 per screening; you only carry your own usage-based data contract on top.
What's the difference between BYOK and managed?
With BYOK you hold the provider key and contract, and Didit charges $0.02 per screening. With managed, Didit supplies the data — $0.18 (Crystal) or $0.15 (Merkle Science) — and you don't need a key.
Can I switch providers later?
Yes. The API contract is identical across providers, so switching is a Console setting under Transactions → Settings — no application code changes.
Are Chainalysis and Elliptic supported?
They're coming soon at $0.02 BYOK. Crystal and Merkle Science are live today in both BYOK and managed modes.
Do I still get the same scoring and case management on BYOK?
Yes. Whichever provider you use, Didit normalizes the result into a 0–100 score with LOW/MEDIUM/HIGH/CRITICAL bands and a source-of-funds breakdown, and high-risk screenings open alerts in the built-in case manager.
Ready to get started?
Read the Wallet Screening overview in the docs, see how it fits the platform on the Wallet Screening product page, and compare per-call pricing on the pricing page. When you're ready, start free — 500 free KYC checks every month, and BYOK wallet screening at $0.02 per screening.