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 intermediaries.
Classification
The transaction is categorized and additional metadata (channel,
subscription status) is determined.
What Gets Enriched
Each enrichment request returns two main sections: transaction metadata and an entities array.Transaction Metadata
Classification and signals about the transaction itself:- Category — Hierarchical spending categories (primary, secondary, tertiary) with MCC/SIC/NAICS codes
- Channel — How the transaction occurred (online, in-store, mobile app, ATM, bank transfer)
- Subscription — Whether this is a recurring payment and its type
- Confidence — Overall enrichment confidence with reason tags
Entities Array
An array of identified real-world entities, each with atype, role, confidence, and data:
- Merchant — The business behind the transaction (name, logo, website, domain)
- Location — The physical place where it occurred (address, coordinates, timezone)
- Intermediary — Payment processors, delivery platforms, wallets, or P2P services (Stripe, Venmo, DoorDash, etc.)
- Person — Recipient information for P2P transfers (display name)
"status": "no_match" entries.
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 |
Response Structure
The enrichment response uses an entities array pattern. Only found entities are included:Only identified entities appear in the
entities array. If no intermediary or
location was found, they are simply absent not present with a null status.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 in the
entitiesarray - The
meta.errorsarray lists which enrichers failed - 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 and reasons
Use confidence scores and reasons
Check confidence scores and their reason tags before displaying data to
users. Low-confidence results may need manual review. Reason tags explain
why the score is what it is.
Next Steps
Categories
Learn about the category taxonomy
Entities
Understand merchant, location, intermediary, and person data
Confidence Scores
How to interpret confidence scores and reason tags
API Reference
See the full API documentation