Skip to main content

Overview

This guide covers the complete flow for transaction monitoring, from creation through automatic risk analysis and alert generation. Transactions are evaluated against transaction-specific rules to detect suspicious patterns, unusual amounts, high-risk jurisdictions, and other red flags.

Flow Diagram

Step 1: Create Transaction

Transactions are created via the transaction API with automatic currency conversion and optional rule execution. Endpoint: POST /transactions Request:
Field Descriptions: What happens automatically:
  1. Currency Conversion:
    • If currency is not USD, converts amount to USD using real-time exchange rates
    • Stores: amountInUsd, exchangeRate, rateSource, rateTimestamp
    • On conversion failure, transaction is still created (without USD amount)
  2. Transaction Creation:
    • Transaction record created in database
    • Unique ID generated
    • Links to origin/destination entities if provided
  3. Automatic Risk Analysis (if executeRules: true):
    • Executes transaction-specific rules
    • Calculates risk score
    • Creates alerts for matched rules
    • Updates transaction status if needed
Response (with risk analysis):

Step 2: Currency Conversion

How Currency Conversion Works

  1. Automatic Conversion: If currency !== 'USD', system automatically converts to USD
  2. Provider: Uses ms-providers service (configured via MS_PROVIDERS_URL)
  3. Caching: Exchange rates cached for 1 minute (TTL)
  4. Resilience: Circuit breaker pattern with fallback to stale cache
  5. Graceful Degradation: If conversion fails, transaction still created (without USD amount)
Conversion Metadata:
USD Transactions:
  • If currency: 'USD', no conversion needed
  • amountInUsd = amount
  • exchangeRate = 1
  • rateSource = 'no-conversion'

Conversion Failure Handling

If currency service is unavailable:
Transaction is created successfully, but USD amount is unavailable. Rules that depend on USD amounts will use original amount instead.

Step 3: Transaction Risk Analysis

How Transaction Risk Analysis Works

The RulesExecutionService evaluates transactions using transaction-specific rules:
  1. Context Loading:
    • Loads transaction data
    • Loads linked entities (origin/destination) with enrichment data
    • Prepares execution context
  2. Rule Selection:
    • Filters rules by targetEntityTypes: ['transaction']
    • Filters by trigger: 'created' (for automatic) or 'manual_evaluation'
    • Filters by status: enabled: true and status: 'active'
  3. Rules Execution:
    • Evaluates rule conditions against transaction context
    • Executes actions for matched rules (add score, create alerts, update status)
    • Accumulates risk score
  4. Score Update:
    • Updates transaction riskScore
    • Sets flagged: true if score > 50
    • Stores riskFactors array with reasons
  5. Alert Creation:
    • Rules with create_alert action generate alerts
    • Alerts linked to transaction
    • Alerts consolidated into investigations after 5-second delay

Transaction-Specific Rules Examples

Rule 1: Large Transaction Amount
Rule 2: High-Risk Jurisdiction Transfer
Rule 3: Rapid Transaction Velocity
Rule 4: Sanctioned Entity Transaction

Transaction Context Structure

The rules engine receives this context:

Step 4: Batch Transaction Creation

For high-volume scenarios, use the batch endpoint to create multiple transactions efficiently. Endpoint: POST /transactions/batch Request:
Features:
  • Bulk insert for better performance
  • Optimized currency conversion (caches rates for same currency)
  • Automatic duplicate detection (by externalId)
  • Optional rule execution on all transactions
  • Max 1000 transactions per batch
  • 2-minute timeout
Response:

Step 5: Manual Transaction Analysis

If you created a transaction with executeRules: false, you can manually trigger risk analysis later. Endpoint: POST /entities/:transactionId/analyze Request:
Use Cases:
  • Re-analyze transaction after entity enrichment
  • Analyze transaction after rule updates
  • Periodic re-scoring of pending transactions
Response: Same as automatic risk analysis result

Step 6: Transaction Queries and Monitoring

List Transactions with Filtering

Endpoint: GET /transactions Query Parameters:
Available Filters:
  • flagged: Filter by flagged status (true, false, all)
  • minAmount / maxAmount: Amount range filter (in original currency)
  • currency: Filter by currency
  • type: Filter by transaction type
  • status: Filter by transaction status
  • entityId: Filter by origin or destination entity
  • startDate / endDate: Date range filter
  • search: Free-text search (externalId, description, names)
  • sortBy: Sort field (transacted_at, amount, risk_score, created_at)
  • sortOrder: Sort direction (asc, desc)
Response:

Get Transaction Details

Endpoint: GET /transactions/:transactionId Response: Full transaction object with risk analysis details

View Transaction Alerts

Endpoint: GET /alerts?transactionId=:transactionId Response: All alerts generated for the transaction

Step 7: Alert Consolidation and Investigations

After risk analysis, alerts are automatically consolidated into investigations:
  1. Alert Creation: Rules with create_alert action create individual alerts
  2. 5-Second Delay: System waits to collect all related alerts
  3. Consolidation: Related alerts consolidated into single investigation
  4. Investigation Creation: Investigation created with:
    • Priority based on highest alert severity
    • Status: β€œopen”
    • All related alerts linked
  5. Notifications: Analysts notified of new investigation
Investigation Structure:

Best Practices

  1. Always Enable Auto-Rules: Set executeRules: true (default) to catch suspicious transactions immediately.
  2. Use Batch API for Volume: For bulk imports or high-volume scenarios, use /transactions/batch for better performance.
  3. Link Entities: Always provide originEntityId and destinationEntityId when available. This enables:
    • Entity enrichment data in rule evaluation
    • Better risk aggregation
    • Entity-level transaction patterns
  4. External ID Mapping: Always set unique externalId for correlation with your systems.
  5. Currency Handling: System handles currency conversion automatically. Ensure MS_PROVIDERS_URL is configured correctly.
  6. Rule Configuration: Configure transaction rules for your risk appetite:
    • Amount thresholds appropriate for your business
    • High-risk jurisdictions based on your compliance requirements
    • Velocity rules based on normal transaction patterns
  7. Status Management: Use transaction status field to track lifecycle:
    • PENDING β†’ APPROVED/REJECTED/CANCELLED
    • Update status based on manual review or external validation
  8. Monitoring: Set up dashboards to monitor:
    • Flagged transaction rate
    • Average risk scores
    • Alert volume by type
    • Investigation resolution time

Advanced Patterns

Pattern 1: Entity Risk Affects Transaction Risk

Configure rules that consider entity risk:

Pattern 2: Velocity and Pattern Detection

Use historical queries in rules:

Pattern 3: Sanctions Screening on Transaction

Error Handling

Currency Conversion Failures

Transaction created successfully, rules use original amount.

Rule Execution Failures

Transaction created, but risk not calculated. Manually trigger analysis later.

Batch Partial Failures

Successful transactions created, failures reported separately.

Next Steps