The Problem
Bank transaction data is notoriously messy. A simple coffee purchase might appear as:The Solution
Triqai analyzes transaction strings using a combination of:- Pattern matching against known merchant signatures
- Natural language processing to extract entities
- Extensive merchant databases (150M+ companies)
- Location intelligence (10M+ places globally)
- Machine learning models for classification and confidence scoring
Enrichment Pipeline
When you submit a transaction for enrichment, it goes through several stages:Matching
Detected entities are matched against our databases of known merchants, locations, and processors.
Classification
The transaction is categorized and additional metadata (channel, subscription status) is determined.
Enrichment Modules
Each enrichment request activates multiple specialized modules:Merchant Enrichment
Identifies the business or entity behind the transaction and provides:- Normalized merchant name
- Logo and brand color
- Website and domain
- Business description
- Alternative names (aliases)
Location Enrichment
Extracts geographic information including:- Formatted address
- City, state, country
- Postal code
- GPS coordinates (latitude/longitude)
- Timezone
Category Classification
Assigns hierarchical spending categories:- Primary category (e.g., “Shopping”)
- Secondary category (e.g., “Online Shopping”)
- Tertiary category (e.g., “Marketplace”)
- Industry codes (MCC, SIC, NAICS)
Payment Processor Detection
Identifies intermediary payment services:- Processor name (Stripe, PayPal, Square, etc.)
- Underlying merchant (when detectable)
- Processor branding
P2P Platform Detection
Recognizes peer-to-peer transfer platforms:- Platform identification (Venmo, Zelle, Cash App)
- Recipient information
- Transfer memo (when available)
Additional Signals
- Channel: How the transaction occurred (online, in-store, mobile, ATM)
- Subscription: Whether this is a recurring payment and its type
Request Format
A basic enrichment request requires three fields:| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Raw transaction description from bank statement |
country | string | Yes | ISO 3166-1 alpha-2 country code (e.g., “US”, “NL”, “GB”) |
type | string | Yes | Transaction direction: expense or income |
Enrichment Status
Each enrichment module returns a status indicating the result:| Status | Description |
|---|---|
found | Entity was successfully identified |
no_match | No matching entity could be found |
not_applicable | Module doesn’t apply to this transaction type |
Partial Results
Sometimes not all enrichment modules succeed. For example, a transaction might have a recognized merchant but no identifiable location. In these cases:- The response includes
partial: true - Successful enrichments are returned normally
- Failed enrichments have
status: "no_match" - No credits are deducted for partial results
Best Practices
Provide accurate country codes
Provide accurate country codes
The country code helps Triqai narrow down merchant and location matching. An incorrect country code may lead to less accurate results.
Include full transaction strings
Include full transaction strings
Don’t pre-process or truncate transaction titles. The full string often contains valuable signals like store numbers and location hints.
Set the correct transaction type
Set the correct transaction type
The
type field (expense vs income) helps classify refunds, transfers, and income sources correctly.Use confidence scores
Use confidence scores
Check confidence scores before displaying data to users. Low-confidence results may need manual review.