Back to Blog

AML Monitoring and Pre-Signing KYT Screening for Fintechs

Ted Nguyen

Ted Nguyen

Author

June 3, 2026
6 min read

BD & Growth @Fystack

AML Monitoring and Pre-Signing KYT Screening for Fintechs

TL;DR

  • The Travel Rule is now live in 85 jurisdictions, and FATF’s March 2026 data shows stablecoins make up 84% of flagged transaction volume. Regulators are now focused on exactly where in your execution flow your screening runs.
  • KYT tools give you a risk score on an address, but your custody layer is what decides whether a transaction executes. These two systems must be connected before signing to effectively block high-risk transfers.
  • While SaaS custody requires manual integration to support pre-signing screening, self-hosted custody gives you a native cryptographic intercept point.

As of early 2026, 85 jurisdictions had enacted Travel Rule requirements (up from 65 in 2024). However, FATF data and analyses indicate that approximately 59% of these jurisdictions have yet to take meaningful enforcement action against non-compliant VASPs

Meanwhile, the FATF’s March 2026 Targeted Report on Stablecoins highlighted that stablecoins accounted for 84% of illicit virtual asset transaction volume in 2025.

In mature jurisdictions, simply having a KYT tool on your compliance stack is no longer enough. Regulators now audit your flow to confirm screening happens before a transaction is signed.

Why KYT Tools Alone Cannot Stop Transactions

KYT (Know Your Transaction) tools analyze blockchain data to return a risk score and its underlying context—entity labels, fund flow traces, and VASP scoring. But this output is purely advisory. Whether a transaction is blocked, approved, or escalated depends entirely on your custody platform's policy engine, meaning these two components must be wired together before execution.

Many teams set up a KYT tool, monitor the dashboard, and consider the job done. This setup provides visibility for post-transaction reporting, which satisfies some jurisdictions. However, under MiCA, MAS PSN01, or VASP frameworks in APAC, the expectation is stricter: high-risk transfers must be rejected before signing, not reviewed after settlement.

The intercept point depends on your custody architecture, not your KYT vendor.

How Custody Architecture Affects KYT Intercept

Whether you use SaaS custody or self-hosted MPC, pre-signing screening is technically possible in both. The difference is in who builds the integration layer and where control sits.

Architecture

Outgoing pre-signing screen

Incoming screen

Audit trail

Setup requirement

SaaS custody (e.g. Fireblocks)

Possible via Callback Handler and vendor API Co-Signer component

Post-deposit: transaction lands on-chain first, then freeze or allow

Shared between you and vendor

Intel SGX server plus custom Callback Handler you build and host

Self-hosted Custody

(e.g. mpcium)

Configurable pre-signing webhook, no vendor infrastructure dependency

Pre-credit: you define the policy, timing, and threshold

Fully yours

Configure webhook in your own pipeline before the signing step

With Fireblocks, outgoing pre-signing screening is possible but you need to build it. You run their API Co-Signer on an Intel SGX-enabled server you operate, then build and host a Callback Handler that calls your KYT provider and returns Accept or Reject within 30 seconds. It works, but you are building inside Fireblocks' framework and their co-signer component sits in the middle of the flow.

With self-hosted ​Custody, the KYT check goes in as a webhook you configure before the signing request reaches the MPC nodes. You set it up in your own pipeline, on your own infrastructure, with no vendor component between your application and the signing decision.

Connecting KYT to Your MPC Signing Flow

The diagram below shows where KYT sits in a full custodial payment flow: step 4, right after the transaction indexer detects an incoming deposit and before the internal ledger is updated.

The same pattern applies to outgoing transactions. For background on how deposits enter a custodial system before this step, see How Crypto On-Ramps Work.

Custodial Pyament Flow KYT Screening
Custodial Pyament Flow KYT Screening

For outgoing transactions, here is a working address screening proxy using Fystack's DD.xyz integration:

const express = require('express');
const axios = require('axios');
require('dotenv').config();
 
const app = express();
const WEBACY_API_KEY = process.env.WEBACY_API_KEY;
 
app.use(express.json());
 
app.get('/api/address/:address', async (req, res) => {
  try {
    const { address } = req.params;
    const response = await axios.get(
      `https://api.webacy.com/addresses/${address}`,
      { headers: { 'accept': 'application/json', 'x-api-key': WEBACY_API_KEY } }
    );
    res.json(response.data);
  } catch (error) {
    res.status(500).json({ error: 'Failed to fetch address data' });
  }
});
 
app.listen(process.env.PORT || 3001);

The KYT result on its own is advisory. What decides whether a transaction proceeds, gets blocked, or gets sent for manual review is the policy engine. Fystack's programmable policy engine evaluates the KYT output against your rules before the signing step reaches the MPC nodes. A basic withdrawal policy looks like this:

{
  "version": "2024-10-24",
  "default_effect": "DENY",
  "policies": [
    {
      "name": "withdrawal-override",
      "rules": [
        {
          "id": "deny_exceed_amount",
          "effect": "DENY",
          "condition": "transaction.amount_numeric > 99.9"
        },
        {
          "id": "allow_stablecoin_transfer",
          "effect": "ALLOW",
          "condition": "transaction.asset.symbol in ['USDC', 'USDT']"
        }
      ]
    }
  ]
}

Effect precedence matters in a custody context.

By default, rule ordering determines the outcome, which means a misconfigured ALLOW rule placed before a DENY can let a transaction through. The engine's WithEffectPrecedence option removes that risk: you declare the priority hierarchy once and the engine enforces it regardless of rule order.

engine, err := policy.CompileDocument(doc,
    policy.WithEffectPrecedence(policy.EffectDeny, EffectReview, policy.EffectAllow),
)

With this configuration, a DENY always wins over a REVIEW or ALLOW.

A transaction that matches both an ALLOW rule and a DENY rule gets blocked. The signing layer only receives transactions that cleared both the KYT check and the policy evaluation.

Fystack's Risk Assessment Dashboard is built on the DD.xyz integration. It runs due diligence checks and address poisoning detection on every withdrawal address before the signing request is created.

Fystack's Risk Assessment Dashboard
Fystack's Risk Assessment Dashboard

 Top KYT Providers for Crypto Businesses

Provider

Best for

Coverage strength

Integration

Chainalysis

Institutions, regulated exchanges, enterprise compliance teams

Broad blockchain coverage, deep VASP database, sanctions screening

REST API, Reactor for case management

TRM Labs

Cross-chain screening, DeFi exposure analysis

Strong on cross-chain hops and bridge transactions

REST API, batch screening endpoints

Elliptic

EU-regulated businesses, MiCA compliance

Strong VASP coverage for EU market, Travel Rule tooling

REST API, Lens for investigations

DD.xyz (Webacy)

Web3 custodial platforms and payment processors running pre-signing security checks

Address threat scoring (KYW), transaction simulation before signing, post-transaction risk details, address poisoning detection, EIP-712 permit analysis

REST API, TypeScript SDK, open API key

All three provide address screening via REST API, so they can sit in front of your signing step regardless of custody architecture. The decision between them comes down to the regulatory framework you operate under, your chain coverage requirements, and pricing at your transaction volume.

Fystack's KYT Configuration Module
Fystack's KYT Configuration Module

Build AML Screening Into Your Signing Layer

Self-hosted MPC gives you the intercept point directly. You control where in the flow the check fires, which provider it calls, and what happens when it returns a flag. Fystack's mpcium is an open-source MPC node daemon you deploy on your own infrastructure. The signing pipeline is yours to extend.

If you are mapping your KYT integration into a self-hosted custody setup, tell us where you are and our team will follow up.

Frequently Asked Questions (FAQs)

Does KYT screening replace Travel Rule compliance?

No. KYT screens addresses for risk signals like sanctions exposure, darknet activity, or mixing service involvement. Travel Rule requires transmitting originator and beneficiary data between VASPs for qualifying transfers. Both are required in most regulated jurisdictions. They address different obligations and neither substitutes for the other.

Can you run two KYT providers in parallel?

Yes. Some teams run Chainalysis for institutional-grade reporting and a second provider for real-time pre-signing checks. The two calls can run concurrently before the transaction reaches the signing layer. If either returns a high-risk result, the transaction does not proceed.

What happens when a KYT check flags a transaction before signing?

The transaction is rejected before it reaches the signing nodes. Nothing gets created on-chain. The address, risk score, and rejection timestamp are logged for your compliance records. Since nothing was broadcast, the chain has no record of the attempt, and your compliance log has a clean entry showing the check ran and the transaction was stopped before it went out.

Does KYT work for incoming transactions in self-hosted MPC?

Yes. You screen the sending address when a deposit notification arrives. If the address is flagged, you hold the credited funds and queue the transaction for manual review before updating the user's balance. The timing is pre-credit rather than pre-signing, since you do not control the incoming chain transaction.

Which KYT providers does Fystack integrate with?

Fystack's platform supports API integrations with KYT providers including Chainalysis, Elliptic, and Blockaid, configurable through the Fystack dashboard. For address risk assessment and poisoning detection, Fystack also uses DD.xyz (Webacy), whose API is open for developers to set up directly.

Share this post