Transaction Enrichment API

Turn raw descriptors into clean merchants

Send a descriptor like SBUX_STORE_321_NYC and get back Starbucks: a clean name, a logo, and a category. Built for banking apps, finance tools, and expense platforms, backed by a 30M+ company index.

Raw transaction descriptor → enriched merchant
  • SBUX_STORE_321_NYC
    starbucks.com
    StarbucksFood & Drink
  • AMZ_STORECRD_PMT PAYMENT
    amazon.com
    AmazonShopping
  • CONSUMERS ENERGY ENERGYBILL
    consumersenergy.com
    Consumers EnergyUtilities
  • ALAMO SOUTH LAMAR RETAIL
    drafthouse.com
    Alamo DrafthouseEntertainment

Parses any descriptor

Messy strings like ALAMO SOUTH LAMAR RETAIL resolve to a canonical merchant.

Logo included

Every resolved merchant returns a logo URL, so rows are branded instantly.

Category tagging

Each transaction comes tagged with a category for budgeting and analytics.

Where fintech teams use merchant enrichment

Anywhere a raw transaction lands, the API resolves it to a real merchant.

Banking apps
Show users who they paid, with a logo, instead of uppercase processor noise.
Personal finance tools
Power budgeting and spend analytics with a category on every transaction.
Expense platforms
Resolve receipts and card feeds to clean, reportable merchants automatically.
Fraud and disputes
Cut "I don't recognize this charge" tickets with a recognizable merchant and logo.
Spend analytics
Aggregate clean merchant and category data across millions of transactions.
AI finance agents
Give an agent structured merchant context from a raw transaction string.
Card issuers
Brand every transaction in a card or neobank feed straight from the descriptor.
Subscription tracking
Spot recurring merchants and categorize subscriptions across statements.
Accounting and bookkeeping
Map bank feeds to real vendors so the books reconcile without manual cleanup.
Granola
Levels.fyi
Linear
Mutiny
Okta
Perplexity

One request, a clean merchant

Post a raw transaction descriptor, get back the merchant, logo, and category.

curl -H "Authorization: Bearer sk_..." \
  -X POST "https://api.logo.dev/enrich/transaction" \
  -d '{ "description": "SBUX_STORE_321_NYC" }'

Response

One clean object per descriptor. Drop it straight into a transaction feed.

{
  "merchant": "Starbucks",
  "domain": "starbucks.com",
  "logo": "https://img.logo.dev/starbucks.com?token=...",
  "category": "Food & Drink"
}
  • Clean, canonical merchant name
  • Verified domain
  • Logo URL from the Logo.dev CDN
  • Spending category per transaction
  • Handles store numbers and location codes
  • Card, ACH, and processor descriptors
  • Backed by a 30M+ company index
  • Ambiguous strings flagged, not guessed
"We use Logo.dev inside lucanto.eu and love it. It automatically enriches our invoice and expense lists with company logos, giving users a cleaner and more delightful experience. Highly recommended!"
Erich Stark avatar
Erich Stark

Frequently asked questions

Clean every transaction in your app

  • Clean merchant, logo, and category
  • Backed by a 30M+ company index
  • Built for real-time feeds