AMLBot - Crypto Risk Screening
The amlbot plugin screens your exchange's crypto deposits and withdrawals with AMLBot before they go through. Deposits are checked by their transaction ID and withdrawals by their destination address. Risky transactions stay on hold for your team; the rest are released automatically. You use and pay for your own AMLBot account.
What you need
- The Enterprise plan on HollaEx Cloud.
- Your own AMLBot account, with an access ID and access key.
- Auto Deposit and Auto Withdrawal turned off. See Turn off Auto Deposit and Auto Withdrawal.
- No other risk-screening plugin. Only one can run at a time (Scorechain, AMLBot or TRM Labs). If another is installed, this one doesn't start and your audit email is told why.
Turn off Auto Deposit and Auto Withdrawal
The plugin only screens transactions that are on hold. With Auto Deposit and Auto Withdrawal on, deposits and withdrawals are processed straight away and never wait on hold, so there is nothing to screen.
- Go to Operator Controls → Exchange → Configuration → Security.
- Turn off Auto Deposit. Incoming blockchain deposits now stay pending until they are approved.
- Turn off Auto Withdrawal. Withdrawal requests now stay pending until they are approved.
The plugin never changes these settings itself. While one of them is on, the plugin doesn't screen that kind of transaction, and it emails your audit address asking you to turn it off. It starts screening on its own within about a minute of the setting being turned off.
Set it up
-
Get your API credentials. In AMLBot, go to Profile → API Keys and copy your access ID and access key.
-
Turn off Auto Deposit and Auto Withdrawal as described above.
-
Install the plugin. Go to Operator Controls → Exchange → Plugins, find amlbot under Available to install and click Install.
-
Configure it. Open the plugin with Configure, fill in the settings and save.
Setting What it does access_idYour AMLBot access ID. From AMLBot. Required. access_keyYour AMLBot access key. Secret, from AMLBot. Required. min_usdtSmallest value, in USDT, that gets screened. Transactions worth less are released without a check. Default 100.risk_threshold_percentAMLBot's overall risk score (0–100) at or above which a transaction is held. Default 75, which holds only critical risk. Lower it to hold more, with more manual review.high_risk_signal_threshold_percentCombined share, in percent, of high-risk signals (such as sanctions, dark markets, scams, stolen coins or terrorism financing) at or above which a transaction is held, whatever its overall score. Default 1.5.risk_thresholdSeverity that holds a transaction: CRITICAL(default, 75% and up),HIGH(50% and up),MEDIUM(25% and up) orLOW(above 0%).block_on_blacklistOn (default): anything AMLBot blacklists is held, whatever the thresholds. Leave it on. check_withdrawalsOn (default): withdrawals are screened too. Off: only deposits are screened, and on-hold withdrawals are left for you to approve. flowfast(default) for quicker results, oradvancedfor AMLBot's full report.cache_ttl_hoursHow long an AMLBot result is reused for the same address or transaction. Default 48.request_timeout_msHow long to wait for AMLBot on each request, in milliseconds. Default 15000.alert_emailWho gets an email when a transaction is held. Empty (default) uses your exchange's audit email, set in Operator Controls → Exchange → Configuration → Alerts. api_urlAMLBot's address. Leave the default, https://extramlbot.com. -
Check it's running. Make a small test deposit above
min_usdt. If AMLBot finds no risk, it is released on one of the next runs.
What your users see
Users see their deposit or withdrawal as pending while it is on hold. A transaction the plugin releases then goes through as usual. A held one stays pending until your team releases or rejects it.
How it works
Every 60 seconds, the plugin goes through your on-hold deposits and withdrawals:
- Blacklist first. If the address is on your exchange's address blacklist, the transaction stays on hold straight away, without asking AMLBot, and your team is emailed.
- Small amounts. A transaction worth less than
min_usdtis released without a check. - Screening. Otherwise the plugin asks AMLBot: the transaction for a deposit, the destination address for a withdrawal.
- Decision. The transaction is held if AMLBot blacklists it (with
block_on_blackliston), or if it reachesrisk_threshold_percent,high_risk_signal_threshold_percentorrisk_threshold.- Held: the transaction stays on hold, an alert with the details goes to
alert_email, and the address is added to your exchange's blacklist for all networks. The transaction gets a note starting[amlbot-reviewed], so it isn't screened or charged again. - Not risky: the transaction is released and goes through as usual.
- Held: the transaction stays on hold, an alert with the details goes to
The plugin fails closed:
- If AMLBot can't be reached, returns no result, or hasn't finished its analysis, the transaction stays on hold and is tried again on a later run.
- If a transaction's value can't be worked out, it isn't released as a small amount; it is screened.
- Transactions on a network the plugin doesn't recognise are left on hold, untouched, for you to review.
- The plugin only clears its own screening hold. A transaction held for another reason, such as the Travel Rule, stays on hold until that reason is cleared too.
Review held transactions
Open the transaction in Operator Controls → Operations → Deposits or Withdrawals. Its hold reason shows the plugin's note with the reason and risk. If you decide the transaction is fine, use Release to clear the hold. Remember that the plugin has also added the address to your blacklist; remove it there if it was a false positive.
Troubleshooting
- You got an email saying the plugin is inactive and to turn off Auto Deposit or Auto Withdrawal. One or both are still on. Turn them off in Operator Controls → Exchange → Configuration → Security.
- You got an email titled "Duplicate KYT Plugin Installation Blocked". Another risk-screening plugin was installed first, so this one didn't start. Only one can run. Remove the one you don't want with Remove plugin. If you keep this one, open it in Operator Controls → Exchange → Plugins and click Restart.
- Nothing is being released. Check
access_idandaccess_key. With wrong credentials, AMLBot returns no result, so every transaction abovemin_usdtstays on hold. - Withdrawals wait even though they look fine. If
check_withdrawalsis off, the plugin doesn't touch withdrawals; approve them yourself.
Need help? Open a ticket from your HollaEx dashboard.