Clean merchant names for messy transaction feeds
Run safe sample descriptors and see the merchant name, category, confidence, and warnings TxnKit returns.
Deterministic first. No live LLM, crawler, logo-provider, or third-party enrichment calls during POST /v1/enrich.
Built for visible transaction-feed quality
Raw Plaid, Teller, Yodlee, MX, open-banking, and card descriptors make good apps look unfinished.
TxnKit is the practical enrichment layer for small fintech, expense, budgeting, accounting, loyalty, cashback, personal finance, and AI-built finance apps.
Clean transaction display
Normalize processor wrappers, merchant names, category hints, recurrence signals, and logo-ready metadata for transaction rows users can understand.
Logo variants are metadata, not decorative examples
Returned logo candidates are described by format, size, theme, background, shape, purpose, source, and confidence so clients can choose the right asset for each UI state.
Deterministic-first enrichment
Normalize before predicting. Low-confidence results return warnings instead of pretending every descriptor is solved.
Integration-ready contract
Start from OpenAPI, examples, and fixtures. MCP and SDKs come after the core API stabilizes.
Built for existing feeds
Keep your data provider. Clean the merchant display layer.
TxnKit sits after transaction ingestion. It helps teams using Plaid, Teller, Yodlee, MX, open banking, or card exports turn raw descriptors into UI-ready metadata.
Plaid transaction cleanup
Use TxnKit after Plaid when transaction rows still show processor wrappers, weak labels, or missing confidence-aware fallbacks.
Teller transaction enrichment
Add merchant display fields to Teller-backed apps without changing the upstream account connection.
Yodlee transaction cleanup
Improve imported feed rows with a one-descriptor enrichment call after Yodlee ingestion.
MX transaction cleanup
Return safer merchant labels, categories, confidence, and warnings for MX-backed transaction UI.
Finicity transaction cleanup
Clean aggregated rows after feed access without adding live research to the request path.
Akoya transaction cleanup
Keep open-finance data access separate from merchant display cleanup.
Tink transaction cleanup
Turn open-banking descriptors into confidence-aware merchant rows.
TrueLayer transaction cleanup
Improve app-facing labels after account information data is already available.
What happens on a miss
A weak match should produce a usable fallback, not a fake merchant profile.
Low-confidence descriptors return normalized text, confidence, signals, and warnings. Website and logo fields stay empty unless reviewed merchant evidence supports them.
{
"raw_description": "POS PURCHASE 742 MAIN ST CAFE",
"display_name": "Main St Cafe",
"confidence": 0.56,
"logos": {
"preferred": null,
"variants": [],
"warnings": ["avoid_logo_display"]
},
"warnings": [
"local_merchant_identity_not_verified"
]
}
Use-case proof
Start with the feed your users already see.
Each use case shows raw descriptor examples, response fields, and boundaries for what TxnKit should not decide.
Expense app transaction enrichment
SQ *JOES COFFEE 0421 TORONTO becomes a confidence-aware merchant row for reviewers.
Personal finance transaction cleanup
SPOTIFY USA 877-7781161 can surface a subscription hint without inferring personal intent.
Accounting import cleanup
PAYPAL *ACME-SUPPLY keeps the processor hint visible while avoiding accounting decisions.
Loyalty and cashback transaction feeds
SHOPIFY*LOCAL GOODS can be treated as display metadata, not rewards-settlement authority.
AI tool transaction enrichment
SQ *JOES COFFEE 0421 TORONTO becomes a structured tool result for ChatGPT, custom GPTs, and coding agents.
Proof before claims
The public surface is examples, contracts, and guardrails.
Descriptor audit
Send anonymized descriptors only.
Live research calls
No LLMs, crawlers, or logo providers in the request path.
Signals
Bounded reason codes for cleanup, confidence, and warnings.
Performance and reliability
Built for fast, repeatable enrichment without a live research dependency.
TxnKit keeps the online path deterministic and cache-first, so transaction display does not wait on an LLM prompt, crawler, logo lookup, or third-party enrichment provider.
No live vendor calls
No live LLM, crawler, logo-provider, or third-party enrichment calls run during POST /v1/enrich.
Bounded failure modes
Responses use bounded confidence, signals, and warnings so architects can design fallback UI instead of debugging free-form enrichment text.
Hard request boundary
The deterministic path has a documented 1 second timeout target and returns fallback or timeout behavior instead of waiting for offline metadata work.
Contract-first integration
OpenAPI, fixtures, smoke tests, and preflight checks give senior developers a concrete contract to inspect before they wire TxnKit into production screens.
Early access pricing
Start free. Pay small. Pilot when the cleanup is worth production use.
Pricing is intentionally simple while the product validates one ICP, one pain, and the right paid conversion path.
100 anonymized descriptors, before/after cleanup, no integration required.
$490/year. Up to 2,500 enrichments/month and one API key.
$4,990/year. Up to 50,000 enrichments/month, one production API key, email support.
Higher volume, coverage planning, retention review, and support expectations.
API shape
One endpoint. One descriptor.
Send one safe descriptor. Get merchant metadata, confidence, signals, and warnings.
{
"raw_description": "SQ *JOES COFFEE 0421 TORONTO",
"amount": 6.75,
"currency": "CAD",
"country": "CA",
"mcc": "5814"
}
{
"display_name": "Joe's Coffee",
"category": "Food and Drink",
"confidence": 0.72,
"processor_hint": "square",
"warnings": ["local_merchant_identity_not_verified"]
}
Privacy guardrails
Never send sensitive financial data.
Safe samples first
Demo examples are synthetic. Custom input waits for live privacy rejection.
Data minimization by default
Metrics should use bounded status, confidence, and warning fields. Raw descriptors do not belong in analytics, URLs, storage, or error reports.
Visible uncertainty
Low-confidence results should omit strong website and logo-variant claims unless reviewed merchant records support them.
Trust signals
Evidence-backed, not badge-driven.
OpenAPI contract
Integrators can inspect the request, response, and privacy rejection shape before they wire anything into an app.
Public benchmark
Examples and expected outputs are visible instead of hidden behind broad merchant-coverage claims.
Privacy guarded
Do not send card numbers, account numbers, full statements, customer PII, or bank credentials.
Deterministic first
Parsing, reviewed seed data, confidence, and warnings come before any advisory model behavior.
No live vendor calls
The request path does not call LLMs, crawlers, logo providers, or third-party enrichment APIs.
Versioned releases
Public pages, OpenAPI metadata, and release metadata stay tied to the workspace version.
Blog
Technical notes for transaction-feed builders.
Why descriptor cleanup should return warnings, not fake certainty
Confidence-aware enrichment lets teams design fallback UI instead of trusting a guessed merchant identity.
May 4, 2026How to enrich transactions without sending sensitive financial data
Reject statement-like and PII-heavy input before parsing, logging, matching, queueing, or third-party use.
April 5, 2026Why TxnKit avoids live LLM calls during POST /v1/enrich
A transaction row should not wait on a prompt, crawler, logo lookup, or third-party enrichment provider.
Contact us
Ask about a 100-descriptor cleanup audit. Send anonymized descriptors only; no card numbers, account numbers, full statements, or customer PII.