Money Laundry
Summary¶
Dedomena AI's Money Laundry Neuron predicts whether banking transactions are likely to be related to money laundering activity. It evaluates transaction flow characteristics such as source and destination banks, account identifiers, paid and received amounts, currencies, payment format, and timestamp to return a laundering probability and a binary decision.
Warning
This prediction is an analytical signal and should be considered alongside internal compliance policies, regulatory requirements, and human review before taking action. Prediction is done on the fly. Dedomena AI never retains submitted transaction information, so you must copy the results before closing the tab or window to avoid losing the information.
Key Properties
The system's functionality is built on several key capabilities:
- Transaction-Level AML Scoring: Each transaction receives a laundering probability and a boolean classification.
- Banking Flow Features: The model uses origin and destination bank/account fields, amounts, currencies, payment format, and timestamp information.
- Batch Processing: The API accepts a JSON array of transactions, allowing one or many transactions to be evaluated in a single request.
- Operational Simplicity: The response includes only the transaction identifier, probability, and classification, making it easy to integrate into monitoring queues and review workflows.
- Usage Controls: API usage is controlled by the subscription plan associated with the provided token.
Use Cases
Here are the key use cases for the Money Laundry Neuron:
- AML Transaction Monitoring: Prioritize transactions that may require compliance review.
- Investigation Queues: Route higher-risk transactions to analysts or case-management tools.
- Risk Controls: Add transaction-level laundering risk signals to existing fraud, compliance, and account-monitoring workflows.
- Portfolio Screening: Evaluate batches of transaction records to identify unusual or high-risk patterns.
- Operational Reporting: Track the volume of transactions screened and quota consumption through the metrics endpoint.
API & Endpoints¶
/health¶
GET /health
Checks whether the API is running and whether the model artifact is loaded.
Response¶
200
{
"status": "ok",
"model_loaded": true,
"model_version": "1.0.0"
}
/v1/laundry/predict¶
POST /v1/laundry/predict
This endpoint predicts whether each submitted transaction is likely to be money laundering activity.
Headers:
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json
This header must be included in every request to authenticate the user.
- Header name:
Authorization - Header format:
Bearer <your_token>
If omitted or incorrect, the server will respond with a 401 Unauthorized error.
Request Body:
It should be a JSON array with the following fields:
transaction_id(str): Optional unique ID that identifies the transaction.timestamp(str): Date and time of the transaction.from_bank(str or int): Origin bank identifier.from_account(str): Origin account identifier.to_bank(str or int): Destination bank identifier.to_account(str): Destination account identifier.amount_received(float): Amount received by the destination account.receiving_currency(str): Currency of the received amount.amount_paid(float): Amount paid by the origin account.payment_currency(str): Currency of the paid amount.payment_format(str): Payment method or channel.
Request Body - JSON Array¶
[
{
"transaction_id": "txn-123",
"timestamp": "2025-01-01 00:00:29",
"from_bank": 3295718,
"from_account": "A009852",
"to_bank": 2657408,
"to_account": "A010012",
"amount_received": 4.4,
"receiving_currency": "CHF",
"amount_paid": 8.06,
"payment_currency": "AUD",
"payment_format": "Mobile"
}
]
Response¶
200
[
{
"transaction_id": "txn-123",
"laundering_probability": 0.000019,
"is_laundering": false
}
]
401
{
"detail": "Could not validate credentials"
}
406
{
"detail": "The number of observations in the payload exceed the available quote"
}
422
{
"detail": "Unprocessable Entity"
}
429
{
"detail": "The maximum monthly number of calls or predictions for your account has been exceeded"
}
/metrics¶
POST /metrics
This endpoint returns the available and consumed quotas for API calls and predictions.
Headers:
Authorization: Bearer YOUR_ACCESS_TOKEN
Response¶
200
{
"MonthlyRequestsLimit": 10,
"CurrentRequestsCount": 2,
"MonthlyOutputsLimit": 100,
"CurrentOutputsCount": 8
}
Description:
MonthlyRequestsLimit: Limit of available requests/calls according to the contracted plan per month.CurrentRequestsCount: Number of requests/calls consumed in the current period.MonthlyOutputsLimit: Limit of available outputs/predictions according to the contracted plan per month.CurrentOutputsCount: Number of outputs/predictions consumed in the current period.
401
{
"detail": "Could not validate credentials"
}