Overview
The Transactions module is the entry point for all AML/CFT screening. Every financial transaction your institution processes should be submitted to the/screen endpoint. The platform returns a verdict in under 200ms with a risk score, outcome, and triggered rules.
Common Workflows
Real-time screening: Your core banking system calls/screen on every outgoing transfer → The API returns an outcome → Your system routes the transaction based on APPROVE, REVIEW, ESCALATE, or BLOCK.
Post-hoc review: A compliance officer queries the transaction list to review recent screenings, drill into a specific transaction, and view the full verdict breakdown.
Permissions
| Action | Who Can Do It |
|---|---|
| Screen transaction | All authenticated users |
| List transactions | All authenticated users |
| Get transaction detail | All authenticated users |
Endpoints
| Method | Endpoint | Description |
|---|---|---|
POST | /api/v1/transactions/screen | Submit a transaction for screening |
GET | /api/v1/transactions | List screened transactions |
GET | /api/v1/transactions/:id | Retrieve a specific transaction |
Screen Transaction
Submit a single transaction for real-time screening. The response includes the final outcome, risk breakdown per engine, triggered rules, and recommended actions. Request Body| Field | Type | Required | Description |
|---|---|---|---|
externalId | string | ✅ | Your unique transaction reference |
type | string | ✅ | CASH_DEPOSIT, CASH_WITHDRAWAL, TRANSFER, INTERNATIONAL_TRANSFER, POS, ATM, MOBILE, USSD, INTERNET_BANKING |
channel | string | ✅ | BRANCH, MOBILE_APP, INTERNET_BANKING, POS_TERMINAL, ATM, USSD, AGENT, API |
amount | number | ✅ | Amount in base currency unit (e.g. 5000000 = ₦5M) |
currency | string | ISO 4217 code. Defaults to NGN | |
senderAccountNumber | string | ✅ | Sender’s bank account number (NUBAN, 10 digits) |
senderBvn | string | Sender’s BVN. Enables identity risk scoring | |
senderKycStatus | string | VERIFIED, PENDING, IN_PROGRESS, REJECTED, EXPIRED, NONE | |
senderKycTier | string | TIER_1, TIER_2, TIER_3. Required in EXTERNAL mode; optional in HYBRID mode | |
senderKycVerifiedAt | string | ISO 8601 timestamp of last KYC verification | |
senderKycExternalRef | string | Internal KYC reference (e.g. CORE-BANK-KYC-78432) | |
senderName | string | ✅ | Sender’s full name. Screened against sanctions |
senderBankCode | string | Sender’s bank CBN code (e.g. "058" for GTBank) | |
receiverAccountNumber | string | Receiver’s account number | |
receiverName | string | Receiver’s full name. Also screened | |
receiverKycStatus | string | VERIFIED, PENDING, IN_PROGRESS, REJECTED, EXPIRED, NONE | |
receiverKycVerifiedAt | string | ISO 8601 timestamp of last KYC verification | |
receiverKycExternalRef | string | Internal KYC reference for the receiver | |
receiverBvn | string | Receiver’s BVN | |
receiverBankCode | string | Receiver’s bank CBN code (e.g. "058") | |
receiverCountry | string | ISO 3166-1 alpha-2. Triggers FTR if ≠ NG | |
narration | string | Transaction description | |
deviceId | string | Device fingerprint for behavioral analysis | |
ipAddress | string | Client IP for geo-anomaly detection | |
latitude | number | GPS latitude. Used for geo-anomaly detection | |
longitude | number | GPS longitude. Used for geo-anomaly detection | |
timestamp | string | ✅ | ISO 8601 timestamp |
metadata | object | Optional metadata for business transactions (see KYB Screening) |
Idempotency: Sending the same
externalId twice returns the cached
verdict without re-screening. This makes retries safe.List Transactions
Retrieve a paginated list of all screened transactions in your tenant. Query Parameters| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
limit | integer | 20 | Items per page (max 100) |
outcome | string | — | Filter by APPROVE, REVIEW, ESCALATE, BLOCK |
type | string | — | Filter by transaction type |
from | string | — | ISO 8601 start date |
to | string | — | ISO 8601 end date |
Get Transaction Detail
Retrieve the full screening result for a single transaction, including the complete verdict with engine breakdowns. Path Parameters| Parameter | Type | Description |
|---|---|---|
id | string | Transaction UUID |
KYC Trust Modes
Tenants can configure how KYC status is resolved during transaction screening:| Mode | Behavior |
|---|---|
STRICT | Default. KYC records must exist in the DB. Payload KYC is ignored. |
HYBRID | Uses payload KYC if provided, falls back to DB lookup. |
EXTERNAL | Requires KYC status in every transaction payload. No local DB lookup. |
PATCH /api/v1/tenants/me with kycTrustMode.