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 | Type | Required | Description |
|---|---|---|---|
| externalId | string | Yes | Your unique identifier for this transaction |
| type | enum | Yes | Transaction type: PAYMENT, TRANSFER, WITHDRAWAL, DEPOSIT, REFUND, CHARGEBACK, REVERSAL, FEE, ADJUSTMENT, OTHER |
| status | enum | No | Transaction status (default: PENDING) |
| amount | number | Yes | Transaction amount in original currency |
| currency | string | Yes | ISO 4217 currency code (e.g., USD, EUR, GBP) |
| paymentMethod | enum | No | Payment method used |
| originEntityId | uuid | No | Sender entity ID (if entity exists in system) |
| originExternalId | string | No | Sender external identifier |
| originName | string | No | Sender name |
| originCountry | string | No | Sender country (ISO 3166-1 alpha-2) |
| destinationEntityId | uuid | No | Receiver entity ID (if entity exists in system) |
| destinationExternalId | string | No | Receiver external identifier |
| destinationName | string | No | Receiver name |
| destinationCountry | string | No | Receiver country (ISO 3166-1 alpha-2) |
| description | string | No | Transaction description |
| category | string | No | Transaction category |
| transactedAt | datetime | No | When the transaction occurred (default: now) |
| executeRules | boolean | No | Execute rules automatically (default: true) |
| metadata | object | No | Additional custom metadata |
-
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)
-
Transaction Creation:
- Transaction record created in database
- Unique ID generated
- Links to origin/destination entities if provided
-
Automatic Risk Analysis (if
executeRules: true):- Executes transaction-specific rules
- Calculates risk score
- Creates alerts for matched rules
- Updates transaction status if needed
Step 2: Currency Conversion
How Currency Conversion Works
- Automatic Conversion: If
currency !== 'USD', system automatically converts to USD - Provider: Uses
ms-providersservice (configured viaMS_PROVIDERS_URL) - Caching: Exchange rates cached for 1 minute (TTL)
- Resilience: Circuit breaker pattern with fallback to stale cache
- Graceful Degradation: If conversion fails, transaction still created (without USD amount)
- If
currency: 'USD', no conversion needed amountInUsd = amountexchangeRate = 1rateSource = 'no-conversion'
Conversion Failure Handling
If currency service is unavailable:Step 3: Transaction Risk Analysis
How Transaction Risk Analysis Works
The RulesExecutionService evaluates transactions using transaction-specific rules:-
Context Loading:
- Loads transaction data
- Loads linked entities (origin/destination) with enrichment data
- Prepares execution context
-
Rule Selection:
- Filters rules by
targetEntityTypes: ['transaction'] - Filters by trigger:
'created'(for automatic) or'manual_evaluation' - Filters by status:
enabled: trueandstatus: 'active'
- Filters rules by
-
Rules Execution:
- Evaluates rule conditions against transaction context
- Executes actions for matched rules (add score, create alerts, update status)
- Accumulates risk score
-
Score Update:
- Updates transaction
riskScore - Sets
flagged: trueif score > 50 - Stores
riskFactorsarray with reasons
- Updates transaction
-
Alert Creation:
- Rules with
create_alertaction generate alerts - Alerts linked to transaction
- Alerts consolidated into investigations after 5-second delay
- Rules with
Transaction-Specific Rules Examples
Rule 1: Large Transaction AmountTransaction 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:
- 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
Step 5: Manual Transaction Analysis
If you created a transaction withexecuteRules: false, you can manually trigger risk analysis later.
Endpoint: POST /entities/:transactionId/analyze
Request:
- Re-analyze transaction after entity enrichment
- Analyze transaction after rule updates
- Periodic re-scoring of pending transactions
Step 6: Transaction Queries and Monitoring
List Transactions with Filtering
Endpoint:GET /transactions
Query Parameters:
flagged: Filter by flagged status (true, false, all)minAmount/maxAmount: Amount range filter (in original currency)currency: Filter by currencytype: Filter by transaction typestatus: Filter by transaction statusentityId: Filter by origin or destination entitystartDate/endDate: Date range filtersearch: Free-text search (externalId, description, names)sortBy: Sort field (transacted_at, amount, risk_score, created_at)sortOrder: Sort direction (asc, desc)
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:- Alert Creation: Rules with
create_alertaction create individual alerts - 5-Second Delay: System waits to collect all related alerts
- Consolidation: Related alerts consolidated into single investigation
- Investigation Creation: Investigation created with:
- Priority based on highest alert severity
- Status: βopenβ
- All related alerts linked
- Notifications: Analysts notified of new investigation
Best Practices
-
Always Enable Auto-Rules: Set
executeRules: true(default) to catch suspicious transactions immediately. -
Use Batch API for Volume: For bulk imports or high-volume scenarios, use
/transactions/batchfor better performance. -
Link Entities: Always provide
originEntityIdanddestinationEntityIdwhen available. This enables:- Entity enrichment data in rule evaluation
- Better risk aggregation
- Entity-level transaction patterns
-
External ID Mapping: Always set unique
externalIdfor correlation with your systems. -
Currency Handling: System handles currency conversion automatically. Ensure
MS_PROVIDERS_URLis configured correctly. -
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
-
Status Management: Use transaction
statusfield to track lifecycle:- PENDING β APPROVED/REJECTED/CANCELLED
- Update status based on manual review or external validation
-
Monitoring: Set up dashboards to monitor:
- Flagged transaction rate
- Average risk scores
- Alert volume by type
- Investigation resolution time