Documentation Index
Fetch the complete documentation index at: https://docs.triqai.com/llms.txt
Use this file to discover all available pages before exploring further.
Platform-derived category signals and pre-auth rate-limiting refinements
Added
- Known platform intermediaries such as Uber Eats, DoorDash, Deliveroo, Wolt, Instacart, Getir, Lazada, and Shopee can now contribute deterministic transaction categories such as Food Delivery, Groceries, and Online Marketplaces.
- Added
platform_category_matchas a category confidence reason for platform-derived category results.
Changed
- Improved category accuracy for delivery, grocery, and marketplace platform transactions so known platform categories can outweigh weaker merchant-derived classifications.
- Refined pre-auth rate limiting so missing or malformed API keys are handled separately from valid-format API key cache misses, reducing false positives for legitimate authenticated traffic while still protecting authentication lookups.
Fixed
- Prevented duplicate platform category signals from inflating category weighting when the same intermediary is encountered through both cached and newly enriched data.
P2P disambiguation and parent-merchant resolution reliability improvements
Changed
- Improved person-versus-merchant disambiguation for transfer-style transactions by adding P2P intermediary context (platform, wallet, and transfer-token signals) to merchant analysis.
- Improved P2P routing so person-detected payees keep intermediary platform context, leading to more complete peer-to-peer enrichment results.
- Improved parent-merchant resolution reliability during enrichment with a more resilient retry path.
Fixed
- Prevented merchant-stage P2P placeholders from overwriting valid intermediary-derived P2P recipient data.
- Ensured merchant
entities[].data.idremains canonical at the parent-merchant level when a parent profile is temporarily unavailable. - Fixed parent-merchant redirect lookups to apply consistently for merchants missing a stored parent ID.
Merchant category response field and enrichment quality improvements
Added
GET /v1/merchants/{id}now includes the merchant’scategoryfield with primary, secondary, and tertiary classification (sameCategoryStructureformat as enrichment responses).
Changed
- Improved merchant name normalization internally in the enrichment pipeline.
- Improved merchant confidence scoring for single-token acronyms and abbreviations by using fuzzy domain-anchor matching against search results and resolved domains.
- Location enrichment now skips purely numeric store-ID hints because of misclassification of enrichment results.
Fixed
- Merchant logos are now more likely to show if existing entity internally has no logo.
Enrichment responsiveness and merchant normalization performance improvements
Changed
- Faster response times for common enrichment traffic, especially when similar transaction patterns repeat.
- Better responsiveness during high-traffic periods through more efficient capacity checks.
- Faster merchant normalization for clear brand matches, with heavier reconciliation work moved to background processing.
Fixed
- Reduced response delays when merchant redirect lookups are slow.
- Reduced repeated work for known unresolved redirect mappings with short-lived miss caching.
Intermediary alias detection and location cross-checking reliability improvements
Changed
- Improved intermediary detection for short processor aliases in transaction titles, increasing recognition accuracy for delimiter-based formats.
- Improved location cross-checking for store/branch-specific transactions to better validate that selected places match the transaction context.
Fixed
- Reduced incorrect location matches for store-ID and branch-hint transactions when geographic validation signals are missing or inconsistent.
Enrichment throughput and parent-merchant consolidation performance improvements
Changed
- Improved enrichment throughput for concurrent requests, reducing end-to-end latency in high-traffic periods.
- Improved parent-merchant consolidation flow so enrichment results are returned faster while keeping merchant identity consistency.
Merchant/intermediary recognition and location extraction reliability improvements
Changed
- Improved merchant detection for noisy and reference-heavy transaction titles.
- Improved intermediary and merchant brand recognition using broader keyword and domain matching.
- Improved location extraction reliability when using selective entity filters.
Fixed
- Prevented location-only extraction paths from reusing merchant values as location fallbacks.
- Reduced repeated warning noise for invalid AI model overrides in long-running environments.
Parent merchant matching and confidence improvements
Changed
- Improved parent merchant matching accuracy for brands that appear on shared marketplace/portal domains.
- More reliable merchant confidence scoring for ambiguous payment-style titles and legal-name search results.
- Better consensus handling when search evidence consistently points to a single merchant brand.
Fixed
- Reduced incorrect parent-merchant merges for unrelated merchants sharing the same host domain.
Transaction lifecycle endpoints and classification improvements
Added
GET /v1/transactions/countendpoint to retrieve the total number of stored transactions, with optionalafterDatefilter.DELETE /v1/transactions/batchendpoint for bulk deletion by date range or list of IDs (max 1000). Associated cache and all internal organization related entries are purged automatically.- Per-organization transaction retention setting (
transaction_retention_days, 1–90 days) to control how long enriched results are cached.
Changed
- Improved person vs. merchant classification: legal entity suffixes (LTD, LLC, GmbH, B.V., etc.) now strongly favor merchant classification in both title dissection and merchant analysis.
- Improved P2P detection: transfer phrases followed by business names with legal suffixes are no longer misclassified as person-to-person transfers.
- Improved merchant detection signals: company registries, commercial directories, and invoice/reference patterns now contribute to merchant classification confidence.
Recurring-payment metadata removal from transaction responses
Breaking
- Removed the legacy recurring-payment object from enrichment transaction responses.
- Removed recurring-payment enum/type surfaces from the public API contract.
Migration Notes
- Action required if your integration reads or validates the legacy recurring-payment object.
- Update response parsing, DTOs, and schema validation to use
data.transaction.categoryanddata.transaction.confidenceonly. - This change does not affect billing plan flows in the dashboard and Stripe.
Changed
- Internal enrichment persistence no longer stores legacy recurring-payment classification fields for transactions and merchants.
Coordinate-based location context and resolution improvements
Added
- Core API now accepts GPS coordinates in
options.location.coordinatesas location context for enrichment. - When coordinates are provided without a city name, the API now resolves them to a nearby place name.
Changed
- Location enrichment is now more accurate for transactions where the title has little or no clear location text.
- If both coordinates and
cityNameare provided,cityNameremains the source of truth.
Fixed
- Prevented country-level matches from being used as location results when resolving coordinates.
- Ensured coordinate-based location hints are not applied when
options.filters.noLocationis enabled.
More conservative fallback categorization for IBAN-heavy transfer-like titles
Changed
- Fallback categorization is now more conservative for transfer-like titles that contain full IBAN-style account references.
- For IBAN-heavy titles, you may see lower confidence and
reference_codein confidence reasons, even if transfer wording is present.
Fixed
- Improved reliability of request gating under high-load/throttling scenarios.
- Improved consistency of credit reservation handling when requests are denied by system-wide capacity protections.
Canonical brand-level merchant IDs
Breaking
- Merchant
entities[].data.idnow returns the canonical brand-level merchant ID (parent merchant UUID), not a store-level/sub-merchant ID. - If your integration stores or joins on merchant IDs from previous versions, you should treat this as a new canonical ID space.
Migration Notes
- Action required if you persist merchant IDs in your database, analytics model, or downstream joins.
- No action required if you only display merchant name/icon/category in responses.
- Recommended approach:
- Store the new
entities[].data.idas your canonical merchant key. - Re-map historical references over time by re-enriching recent transactions or by backfilling your local mappings.
- Store the new
Added
- Parent merchant deduplication: location/store variants of the same brand are grouped under one canonical merchant.
- Responses now return a consistent merchant identity (
id) and canonical brand profile across transactions for the same brand.
Changed
- Merchant names and descriptions are now curated at the brand level when multiple merchant observations exist.
- You may see cleaner brand naming (less branch/store-specific noise) while keeping relevant merchant metadata.
Channel removal and merchant-detection improvements
Breaking
- Removed
data.transaction.channelfrom enrichment responses. - Removed channel-related enums and shared types from the public API contract and SDK type surface.
Added
- Platform-domain validation for merchant enrichment. Social/content platform domains are no longer assigned as merchant domains unless the merchant is the platform itself.
- URL-based merchant recovery in title dissection when a merchant is missing but a URL is present in the transaction title.
- New
venue_or_attractionconfidence reason for non-traditional merchants such as venues, attractions, and transport operators.
Changed
- Improved merchant confidence scoring for abbreviated and concatenated merchant names.
- Broadened merchant classification so payees that provide goods, services, entry, or transport are more consistently recognized as merchants.
- Improved
broad_merchant_nametagging so known brand names are less likely to be marked as broad/generic. - Improved merchant domain extraction to avoid selecting review sites, app stores, and social media pages as the merchant domain.
Merchant-location cross-checking and fallback improvements
Added
- Post-enrichment merchant-location cross-checking on
POST /v1/transactions/enrichto detect merchant/location mismatches and automatically re-select better location candidates when available. - Location recovery path for cases where location initially returns no match but a merchant-aligned place exists in search results.
- New location confidence reasons in responses:
merchant_location_crosscheck_corrected,merchant_location_crosscheck_recovered,merchant_location_mismatch, andgeo_mismatch.
Changed
- Improved fallback routing for non-P2P transactions: fallback classification now runs when merchant extraction ends in no match, and income classification runs only when a merchant is confidently found.
- More conservative fallback confidence calibration for ambiguous or reference-heavy titles, with stronger routing to
UncategorizedorOther Incomein low-confidence cases. - Improved title dissection for separator-heavy and URL-containing transaction strings.
- Improved country handling with stricter ISO 3166-1 alpha-2 validation and broader country-name/address resolution for multilingual aliases.
Fixed
- Reduced wrong-branch location matches for similarly named merchants by cross-validating merchant identity against selected location evidence.
- Fixed cases where weak fallback evidence could inflate confidence or produce over-specific categories.
Merchant disambiguation and fallback confidence updates
Added
- Expanded merchant analysis signals with country-aware disambiguation and legal-entity marker handling.
- Expanded fallback confidence reason handling for ambiguous and reference-like titles.
Changed
- Improved title normalization for merchant analysis and fallback categorization.
- Improved fallback confidence scoring to better reflect uncertainty.
Fixed
- Negative fallback reason tags now take precedence over positive tags during confidence calibration.
New options field for enrichment endpoint
Added
- Enrichment options on
POST /v1/transactions/enrich: new optionaloptionsfield in the request body.- Filters (
options.filters): setnoMerchant,noIntermediary, ornoLocationtotrueto skip extraction of that entity type. Useful when you already have the data or want faster responses. - Pre-filled merchant (
options.merchant): supplyid,name, ordomainwhen you know the merchant. The API will use it directly instead of extracting from the title. IDs must exist in our system (returns 422 if not found); names and domains use best-effort lookup. - Pre-filled location (
options.location): supplycityName,streetName,storeNumber,physicalLocation, orcoordinatesto improve location accuracy. - Pre-filled intermediaries (
options.intermediaries): supply up to 5 intermediaries byid,name, ordomainwhen you know the payment processor(s). - You cannot combine a filter (e.g.
noMerchant) with pre-filled data for the same entity type; the request will return 422.
- Filters (
Changed
- Improved extraction accuracy for transaction titles that include country codes (e.g.
NETFLIX NL). - Improved handling of reference-like patterns (payment IDs, order numbers).
- When you pre-fill merchant and skip intermediary + location, the API may bypass title dissection for lower latency.
Fixed
- Titles ending in a country code (e.g.
NETFLIX NL) are now parsed correctly instead of being treated as merchant-only.
Incremental accuracy and performance improvements
Changed
- Incremental accuracy and performance improvements across the enrichment pipeline.
- Improved entity detection for noisy transaction strings, reducing merchant false negatives.
- Faster cold-start behavior on
POST /v1/transactions/enrich. - Tuned confidence reason-tagging to make confidence scores more reliable, especially for merchant and location entities.
- Additional latency improvements in enrichment processing.