Skip to main content
Didit Raises $2M and Joins Y Combinator (W26)
Didit
US · BSA / FinCEN

Monitor every transaction. File the SAR.

Real-time Transaction Monitoring at $0.02 per call plus Case Management with a Suspicious Activity Report-ready export. 11 seeded rule bundles, AWAITING_USER auto-remediation, 500 verifications free every month.

Backed by
Y Combinator
GBTC Finance
Bondex
Crnogorski Telekom
UCSF Neuroscape
Shiply
Adelantos

Trusted by 2,000+ organizations worldwide.

A cinematic dark abstract compliance illustration — four floating translucent dark-glass panels in 3D perspective on a pure black canvas, threaded by a luminous Didit Blue vertical line and framed by four glowing scanner brackets. Each panel carries a tiny pale-white abstract motif (document silhouette, magnifying glass, case folder, alert bell) representing Suspicious Activity Report case management.

What the BSA owes

Watch every transfer. Open every case. File on time.

Every US financial institution owes real-time monitoring on every transaction plus a Suspicious Activity Report inside 30 days of detection. Didit ships the rule engine, the case state machine, the auto-remediation loop, and the FinCEN-schema export — at $0.02 per transaction call. 500 verifications free every month.

How it works

From sign-up to verified user in four steps.

  1. Step 01

    Create the workflow

    Pick the checks you want — ID, liveness, face match, sanctions, address, age, phone, email, custom questions. Drag them into a flow in the dashboard, or post the same flow to our API. Branch on conditions, run A/B tests, no code required.

  2. Step 02

    Integrate

    Embed natively with our Web, iOS, Android, React Native, or Flutter SDK. Redirect to a hosted page. Or just send your user a link — by email, SMS, WhatsApp, anywhere. Pick what fits your stack.

  3. Step 03

    User goes through the flow

    Didit hosts the camera, the lighting cues, the mobile hand-off, and accessibility. While the user is in the flow, we score 200+ fraud signals in real time and verify every field against authoritative data sources. Result in under two seconds.

  4. Step 04

    You receive the results

    Real-time signed webhooks keep your database in sync the moment a user is approved, declined, or sent to review. Poll the API on demand. Or open the console to inspect every session, every signal, and manage cases your way.

Built for BSA · Priced like infrastructure

11 rule bundles. One queue. $0.02 per transaction.

Real BSA work is not a single check — it's a recipe. Toggle rule bundles per workflow. Tune thresholds. Open cases automatically. Export the SAR. All under one /v3/ contract.
01 · Rule bundles

Eleven seeded rule bundles.

Structuring, velocity, mule patterns, geographic risk, sanctioned counterparties, crypto-specific, Travel Rule completeness, new-account spike, dormant-active, cross-border layering. All editable in the no-code Workflow Builder.
Transaction Monitoring module
02 · Case state machine

OPEN → INVESTIGATING → SAR_FILED → CLOSED.

Every flagged transaction opens a case. Reviewer attribution, notes, timestamps, decisions all captured. Every transition signed and audit-ready.
Workflow Orchestrator
03 · SAR-ready export

SAR-ready package, on export.

FinCEN SAR XML schema, plus the supporting evidence pack — subject KYC bundle, flagged transactions, counterparty data, behavioural context, reviewer narrative, HMAC signature. E-File from your back-end or push to your investigation tool.
AML Screening module
04 · AWAITING_USER auto-remediation

Auto-remediation when data is missing.

When a transaction needs more customer data (source of funds, updated address, refreshed selfie), Didit creates a remediation session automatically. Verification URL on the response, signed webhook on completion, transaction re-runs.
User Verification module
05 · Live alert stream

Live alerts. One queue.

Every flagged transaction surfaces in the Case Console with its rule, score, status, and assigned reviewer. Same surface for assignment, investigation, filing, and closure.
Business Console
06 · Retention stack

5-year retention. EU + US residency.

Indefinite retention while subscribed, EU by default, US data residency on enterprise contracts. SOC 2 Type 1 and ISO/IEC 27001 certified. FFIEC-aligned controls.
Security & compliance
Integrate

One transaction call. One case. One signed export.

Submit each transfer. Triage the flagged cases. Export the SAR. File.
POST /v3/transactions/Monitor
$ curl -X POST https://verification.didit.me/v3/transactions/ \
  -H "x-api-key: $DIDIT_API_KEY" \
  -d '{
    "transaction_id": "tx-9001",
    "transaction_details": { "direction": "OUTBOUND", "currency": "USD", "amount": "9500" },
    "subject": { "full_name": "J. Doe" },
    "counterparty": { "full_name": "Counterparty" }
  }'
201Createdstatus APPROVED · IN_REVIEW · DECLINED · AWAITING_USER
Flagged transactions open a case automatically. $0.02 per call.docs →
GET /v3/transactions/{id}/SAR
$ curl https://verification.didit.me/v3/transactions/$TXN/ \
  -H "x-api-key: $DIDIT_API_KEY"

# Returns full case payload —
# flagged transactions, subject KYC,
# counterparty, behavioural context,
# reviewer narrative, HMAC signature.
# Map to FinCEN SAR XML schema.
200OKcase OPEN · INVESTIGATING · SAR_FILED · CLOSED
Export ZIP from Console or POST to BSA E-Filing from your back-end.docs →
Agent-ready integration

Ship BSA monitoring + SAR filing in one prompt.

Paste into Claude Code, Cursor, Codex, Devin, Aider, or Replit Agent. Fill in your stack. The agent builds the workflow, wires the rule bundles, opens cases, runs the AWAITING_USER remediation loop, and surfaces the SAR XML export.
didit-integration-prompt.md
You are integrating Didit into a US financial institution (bank, money services business, crypto VASP, broker-dealer, casino, mortgage lender) to satisfy Bank Secrecy Act monitoring + Suspicious Activity Report (SAR) filing under the Financial Crimes Enforcement Network (FinCEN). Three obligations:

  1. Monitor every transaction in real time against the eleven seeded rule bundles (structuring, velocity, mule patterns, geographic risk, sanctioned counterparties, etc.).
  2. Open and manage cases on every flagged transaction.
  3. Export the SAR-ready package matching the FinCEN SAR XML schema for filing via the BSA E-Filing System.

Pricing (verified live 2026-05-16):
  - Transaction Monitoring: $0.02 per transaction call
  - Anti-Money Laundering (AML) Screening on flagged subjects: $0.20 per check, $0.07 per user per year for ongoing monitoring
  - User Verification (Know Your Customer (KYC)) for remediation: $0.33 per check
  - First 500 verifications free every month, forever

PRE-REQUISITES
  - Production API key from https://business.didit.me (sandbox key in 60 seconds, no credit card).
  - Webhook endpoint with HMAC SHA-256 verification of the X-Signature-V2 header.
 HMAC-SHA256 verification MUST run against the raw body bytes (the raw payload as Didit sent it) BEFORE any JSON parsing — re-serialising the parsed body changes whitespace and key order, which invalidates the signature.  - A workflow_id for KYC sessions (used on remediation), and Transaction Monitoring + Case Management enabled in the Business Console.
  - Optional: integration with the BSA E-Filing System on your back-end OR push to your existing investigation tool (Actimize, NICE, Quantexa, ComplyAdvantage Workflow).

STEP 1 — Monitor every transaction with the Transactions API

  POST https://verification.didit.me/v3/transactions/
  Headers:
    x-api-key: <your api key>
    Content-Type: application/json
  Body (required fields verified live 2026-05-16):
    {
      "transaction_id": "<your internal transaction id>",
      "transaction_category": "finance",
      "transaction_details": {
        "direction": "OUTBOUND",
        "amount": "9500",
        "currency": "USD",
        "currency_kind": "fiat",
        "action_type": "payment"
      },
      "subject": {
        "entity_type": "individual",
        "vendor_data": "<your user id>",
        "full_name": "<user name from verified KYC>"
      },
      "counterparty": {
        "entity_type": "individual",
        "full_name": "<counterparty name if known>",
        "payment_method": {
          "method_type": "wire",
          "account_id": "<counterparty account or routing reference>"
        }
      }
    }

  REQUIRED fields the API rejects if missing:
    - subject.vendor_data + subject.full_name
    - counterparty.full_name
    - transaction_details.direction + currency + currency_kind + amount

  Response shape (excerpted from a real successful 201):
    {
      "uuid": "<server transaction uuid>",
      "txn_id": "<your transaction_id echoed back>",
      "status": "APPROVED",
      "score": 0,
      "severity": null,
      "cost_breakdown": {
        "total_price": 0.02,
        "items": [{ "usage_type": "transaction_monitoring", "price": 0.02 }]
      }
    }

  Transaction status enum (exact case, UPPER_SNAKE_CASE): APPROVED | IN_REVIEW | DECLINED | AWAITING_USER.

STEP 2 — Branch on the verdict

  APPROVED       → clear the transaction. Webhook may still update later if Ongoing Monitoring catches a delayed signal.
  IN_REVIEW      → hold the transaction. Case opens automatically in the Business Console for analyst triage.
  DECLINED       → refuse the transaction. Case opens at SAR-candidate priority.
  AWAITING_USER  → the workflow needs more data from the customer (source of funds, updated address, refreshed selfie). The response includes a remediation verification URL — send it to the customer.

STEP 3 — Handle AWAITING_USER auto-remediation

  Push the verification URL on the response to the customer (email, app deep-link, push notification). They complete the additional verification in hosted flow on their phone.

  On completion:
    - The remediation session is LINKED to the original transaction (you'll see the linkage in both webhooks).
    - Didit re-runs the relevant rules with the new evidence.
    - The transaction moves to APPROVED (clear) or DECLINED (case opens for SAR consideration).

  The whole loop takes minutes for the user; your team only touches the cases that genuinely need human judgement.

STEP 4 — Case Management — every flagged transaction opens a case

  Cases live in the Business Console with a state machine:

    OPEN          → alert fires, no reviewer yet
    INVESTIGATING → reviewer assigned, gathering context
    SAR_FILED     → SAR exported and filed; case awaits regulator response
    CLOSED        → case resolved, no SAR (with reviewer notes explaining why)

  Each transition is signed, timestamped, and attributed (analyst name + officer name).

  Per case, you get:
    - The flagged transaction(s) + the rule(s) that fired
    - The subject's verified KYC bundle (document, biometric, AML, device + IP)
    - The counterparty data (for crypto: wallet screen; for fiat: counterparty identity if known)
    - Behavioural context (user's transaction history, baseline, velocity)
    - Reviewer narrative (analyst notes, decisions, escalations)

STEP 5 — Export the SAR package

  Two paths:

  Path A — Direct from the Console
    Click "Export SAR XML" on a case. You get a downloadable package matching the FinCEN SAR XML schema. Upload through the BSA E-Filing System manually.

  Path B — Via API + your back-end
    GET https://verification.didit.me/v3/transactions/{id}/
    Headers:
      x-api-key: <your api key>
    The full case payload — every field above — is returned as JSON. Map to the FinCEN schema in your back-end and POST to the BSA E-Filing System programmatically.

STEP 6 — Webhook event names

  Sessions: standard session webhook for remediation completions (verify X-Signature-V2).
  Transactions:
    - transaction.created
    - transaction.updated
    - transaction.status.changed
    - transaction.alert.generated

  Every payload signed with X-Signature-V2 HMAC SHA-256.

STEP 7 — Ongoing AML monitoring is automatic on every verified subject

  Every approved user is re-screened daily against 1,300+ sanctions, PEP, and adverse-media lists at $0.07 per user per year on heavy-volume accounts. When a previously-clean subject crosses an AML threshold, a transaction.alert.generated webhook fires and a case opens automatically.

CONSTRAINTS
  - Session statuses Title Case With Spaces; transaction statuses UPPER_SNAKE_CASE. Don't mix.
  - SAR filing deadlines: 30 days from detection (extendable by 30 days for suspect identification).
  - SAR thresholds: $5,000 aggregate transaction for banks; $2,000 for money services businesses.
  - BSA retention: 5 years on every SAR + supporting documentation.
  - Tipping-off: NEVER disclose the SAR filing to the subject. Encode this in your customer-comms workflow.
  - Default record retention is indefinite while subscribed; configurable per workflow if your supervisor mandates a specific duration.

Read the docs:
  - https://docs.didit.me/transaction-monitoring/overview
  - https://docs.didit.me/transaction-monitoring/transactions
  - https://docs.didit.me/transaction-monitoring/aml-screening
  - https://docs.didit.me/sessions-api/create-session
  - https://docs.didit.me/integration/webhooks

Start free at https://business.didit.me — sandbox key in 60 seconds, 500 verifications free every month, no credit card.
Need more context? See the full module docs.docs.didit.me →
Compliant by design

Open a new country in one click. We do the hard work.

We open the local subsidiaries, secure the licenses, run the penetration tests, earn the certifications, and align with every new regulation. To ship verifications in a new country, flip a toggle. 220+ countries live, audited and pen-tested every quarter — the only identity provider an EU member-state government has formally called safer than in-person verification.
Read the security & compliance dossier
EU financial sandbox
Tesoro · SEPBLAC · BdE
ISO/IEC 27001
Information security · 2026
SOC 2 · Type I
AICPA · 2026
iBeta Level 1 PAD
NIST / NIAP · 2026
GDPR
EU 2016/679
DORA
EU 2022/2554
MiCA
EU 2023/1114
AMLD6 · eIDAS 2.0
EU-aligned by design

Proof numbers

Proof numbers
  • $0.00
    Per Transaction Monitoring call — every transfer screened in real time.
  • 0
    Seeded rule bundles covering structuring, velocity, mule patterns, geographic risk, sanctioned counterparties, and the rest of the canonical Bank Secrecy Act scenarios.
  • 0+
    Sanctions, Politically Exposed Persons (PEP), and adverse-media lists screened on every subject.
  • 0
    Free verifications every month, on every account.
Three tiers, one price list

Start free. Pay per usage. Scale to Enterprise.

500 free verifications every month, forever. Pay-as-you-go for production. Custom contracts, data residency, and SLAs (Service Level Agreements) on Enterprise.
Free

Free

$0 / month. No credit card required.

  • Free KYC bundle (ID Verification + Passive Liveness + Face Match + Device & IP Analysis) — 500 / month, every month
  • Blocklisted Users
  • Duplicate Detection
  • 200+ fraud signals on every session
  • Reusable KYC across the Didit network
  • Case Management Platform
  • Workflow Builder
  • Public docs, sandbox, SDKs, MCP (Model Context Protocol) server
  • Community support
Most popular
Pay per usage

Usage Based

Pay only for what you use. 25+ modules. Public per-module pricing, no monthly minimum fee.

  • Full KYC at $0.33 (ID + Biometric + IP / Device)
  • 10,000+ AML datasets — sanctions, PEPs, adverse media
  • 1,000+ government data sources for Database Validation
  • Transaction Monitoring at $0.02 per transaction
  • Live KYB at $2.00 per business
  • Wallet Screening at $0.15 per check
  • Whitelabel verification flow — your brand, our infrastructure
Enterprise

Enterprise

Custom MSA & SLA. For large volumes and regulated programs.

  • Annual contracts
  • Custom MSA, DPA, and SLA
  • Dedicated Slack and WhatsApp channel
  • Manual reviewers on demand
  • Reseller and white-label terms
  • Exclusive features and partner integrations
  • Named CSM, security review, compliance support

Start free → pay only when a check runs → unlock Enterprise for a custom contract, SLA, or data residency.

FAQ

Common questions

Infrastructure for identity and fraud.

One API for KYC, KYB, Transaction Monitoring, and Wallet Screening. Integrate in 5 minutes.

Ask an AI to summarise this page