Transaction Enrichment API — enrich bank transactions with merchant name, logo, category, and more. Alternative to Plaid Enrich, Ntropy, and Mastercard Ethoca.
Project description
easyenrichment — Transaction Enrichment API for Python
The best Plaid Enrich alternative, Ntropy alternative, and Mastercard Ethoca alternative for transaction enrichment. Enrich raw bank transaction descriptions with merchant name, logo, category, subscription detection, and more — powered by AI.
What is Transaction Enrichment?
Transaction enrichment (also called transaction categorization, merchant identification, or payment data enrichment) is the process of transforming raw, cryptic bank transaction descriptions like AMZN Mktp US*RT5KN1Y24 into clean, structured data:
| Raw Description | Merchant Name | Category | Logo | Subscription |
|---|---|---|---|---|
AMZN Mktp US*RT5KN1Y24 |
Amazon | Shopping | ✅ | No |
NETFLIX.COM 8662458999 |
Netflix | Entertainment | ✅ | Yes |
UBER *EATS PENDING |
Uber Eats | Food & Dining | ✅ | No |
APPLE.COM/BILL |
Apple | Technology | ✅ | Yes |
SQ *BLUE BOTTLE COFFEE |
Blue Bottle Coffee | Coffee Shops | ✅ | No |
The Easy Enrichment API provides best-in-class transaction enrichment at a fraction of the cost of Plaid Enrich, Ntropy, or Mastercard Ethoca. Built on advanced AI models including Claude, it delivers industry-leading accuracy for merchant name extraction, transaction categorization, logo identification, subscription detection, and more.
Installation
pip
pip install easyenrichment
Poetry
poetry add easyenrichment
Pipenv
pipenv install easyenrichment
Quick Start
from easyenrichment import EasyEnrichment
# Initialize the client with your API key
client = EasyEnrichment("your-api-key")
# Enrich a single transaction
result = client.enrich("AMZN Mktp US*RT5KN1Y24")
print(result["data"]["merchant_name"]) # "Amazon"
print(result["data"]["category"]) # "Shopping"
print(result["data"]["logo_url"]) # "https://logo.easyenrichment.com/amazon.com"
print(result["data"]["is_subscription"]) # False
print(result["data"]["website"]) # "https://amazon.com"
Get your API key at easyenrichment.com.
Features
| Feature | Description |
|---|---|
| Merchant Name Extraction | Clean, normalized merchant names from messy bank descriptions |
| Transaction Categorization | Accurate spending categories and subcategories |
| Merchant Logos | High-quality merchant logo URLs for beautiful UIs |
| Subscription Detection | Automatically detect recurring subscriptions and memberships |
| Website Identification | Merchant website URLs |
| MCC Code Lookup | Merchant Category Codes for every transaction |
| Carbon Footprint | Estimated CO2 emissions per transaction |
| Batch Processing | Enrich up to 100 transactions in a single API call |
| Confidence Scores | Know how confident the AI is in each enrichment |
Usage Examples
Single Transaction Enrichment
from easyenrichment import EasyEnrichment
client = EasyEnrichment("your-api-key")
result = client.enrich("SPOTIFY P2C4B8F7E2 STOCKHOLM")
data = result["data"]
print(f"Merchant: {data['merchant_name']}") # "Spotify"
print(f"Category: {data['category']}") # "Entertainment"
print(f"Subcategory: {data['subcategory']}") # "Music & Audio"
print(f"Logo: {data['logo_url']}") # "https://logo.easyenrichment.com/spotify.com"
print(f"Subscription: {data['is_subscription']}") # True
print(f"Website: {data['website']}") # "https://spotify.com"
print(f"Confidence: {data['confidence']}") # 0.98
Batch Enrichment
Process up to 100 transactions at once for maximum efficiency:
from easyenrichment import EasyEnrichment
client = EasyEnrichment("your-api-key")
transactions = [
"NETFLIX.COM 8662458999",
"UBER *EATS PENDING",
"AMZN Mktp US*RT5KN1Y24",
"APPLE.COM/BILL",
"SQ *BLUE BOTTLE COFFEE",
"GOOGLE *YouTube Premium",
"TST* Sweetgreen",
"COSTCO WHSE #0482",
]
result = client.enrich_batch(transactions)
for item in result["data"]:
print(f"{item['merchant_name']:20s} | {item['category']:20s} | Sub: {item['is_subscription']}")
Output:
Netflix | Entertainment | Sub: True
Uber Eats | Food & Dining | Sub: False
Amazon | Shopping | Sub: False
Apple | Technology | Sub: True
Blue Bottle Coffee | Coffee Shops | Sub: False
YouTube Premium | Entertainment | Sub: True
Sweetgreen | Food & Dining | Sub: False
Costco | Shopping | Sub: False
Subscription Detection
Identify recurring subscriptions in your users' bank transactions:
from easyenrichment import EasyEnrichment
client = EasyEnrichment("your-api-key")
transactions = [
"NETFLIX.COM 8662458999",
"SPOTIFY P2C4B8F7E2",
"APPLE.COM/BILL",
"GOOGLE *YouTube Premium",
"AMZN Mktp US*RT5KN1Y24",
"UBER *EATS PENDING",
]
result = client.enrich_batch(transactions)
subscriptions = [t for t in result["data"] if t.get("is_subscription")]
print(f"Found {len(subscriptions)} subscriptions:")
for sub in subscriptions:
print(f" - {sub['merchant_name']} ({sub['category']})")
Merchant Logos
Display beautiful merchant logos in your fintech app:
from easyenrichment import EasyEnrichment
client = EasyEnrichment("your-api-key")
result = client.enrich("STARBUCKS STORE 12345")
logo_url = result["data"]["logo_url"]
# Use logo_url in your UI: "https://logo.easyenrichment.com/starbucks.com"
Expense Categorization
Build expense reports and spending analytics:
from collections import defaultdict
from easyenrichment import EasyEnrichment
client = EasyEnrichment("your-api-key")
transactions = [
"UBER *TRIP",
"AMZN Mktp US*RT5KN1Y24",
"WHOLE FOODS MKT",
"SHELL OIL 57444",
"NETFLIX.COM",
"CVS/PHARMACY",
]
result = client.enrich_batch(transactions)
by_category = defaultdict(list)
for item in result["data"]:
by_category[item["category"]].append(item["merchant_name"])
for category, merchants in sorted(by_category.items()):
print(f"\n{category}:")
for m in merchants:
print(f" - {m}")
Check Usage & Balance
from easyenrichment import EasyEnrichment
client = EasyEnrichment("your-api-key")
# Check API usage
usage = client.usage()
print(f"Requests used: {usage['requests_used']} / {usage['requests_limit']}")
# Check account balance
balance = client.balance()
print(f"Balance: ${balance['balance']:.2f} {balance['currency']}")
Response Fields
| Field | Type | Description | Example |
|---|---|---|---|
merchant_name |
str |
Clean merchant name | "Amazon" |
category |
str |
Spending category | "Shopping" |
subcategory |
str |
Specific subcategory | "Electronics" |
logo_url |
str |
Merchant logo URL | "https://logo.easyenrichment.com/amazon.com" |
website |
str |
Merchant website | "https://amazon.com" |
is_subscription |
bool |
Recurring subscription flag | True |
merchant_type |
str |
online / brick_and_mortar | "online" |
confidence |
float |
Enrichment confidence (0-1) | 0.97 |
mcc_code |
str |
Merchant Category Code | "5411" |
carbon_footprint |
float |
Estimated CO2 in kg | 2.5 |
original_description |
str |
Original input string | "AMZN Mktp US*RT5KN1Y24" |
Error Handling
from easyenrichment import EasyEnrichment, EasyEnrichmentError
client = EasyEnrichment("your-api-key")
try:
result = client.enrich("AMZN Mktp US*RT5KN1Y24")
print(result["data"]["merchant_name"])
except EasyEnrichmentError as e:
print(f"Error: {e.message}")
print(f"Code: {e.code}") # e.g., "INVALID_API_KEY"
print(f"Status: {e.status}") # e.g., 401
Comparison: Easy Enrichment vs Plaid Enrich vs Ntropy vs Mastercard Ethoca
Looking for a Plaid Enrich alternative or Ntropy alternative? Here is how Easy Enrichment compares:
| Feature | Easy Enrichment | Plaid Enrich | Ntropy | Mastercard Ethoca | Visa Merchant Search |
|---|---|---|---|---|---|
| Merchant Name | ✅ | ✅ | ✅ | ✅ | ✅ |
| Category | ✅ | ✅ | ✅ | ❌ | ❌ |
| Merchant Logo | ✅ | ✅ | ❌ | ✅ | ❌ |
| Subscription Detection | ✅ | ❌ | ✅ | ❌ | ❌ |
| Carbon Footprint | ✅ | ❌ | ❌ | ❌ | ❌ |
| MCC Code | ✅ | ✅ | ✅ | ✅ | ✅ |
| Website | ✅ | ✅ | ❌ | ❌ | ❌ |
| Confidence Score | ✅ | ✅ | ✅ | ❌ | ❌ |
| Batch API | ✅ (100/req) | ✅ | ✅ | ❌ | ❌ |
| Starting Price | $0.01/req | $0.02/req | Custom | Custom | Custom |
| Free Tier | ✅ 100 free | ❌ | ❌ | ❌ | ❌ |
| Self-Serve Signup | ✅ Instant | ❌ Sales call | ❌ Sales call | ❌ Enterprise | ❌ Enterprise |
| Python SDK | ✅ | ✅ | ✅ | ❌ | ❌ |
| AI-Powered | ✅ Claude AI | Unknown | ✅ | ❌ | ❌ |
Why Developers Choose Easy Enrichment over Plaid Enrich
-
Half the price — Easy Enrichment starts at $0.01/request vs Plaid Enrich at $0.02/request. Volume discounts bring it down even further.
-
Instant self-serve signup — Get your API key in seconds. No sales calls, no contracts, no minimum commitments. Just sign up at easyenrichment.com and start enriching.
-
More data fields — Subscription detection, carbon footprint estimation, and confidence scores come standard. Plaid Enrich charges extra or doesn't offer these at all.
-
Built on Claude AI — Easy Enrichment is powered by Anthropic's Claude AI, delivering best-in-class accuracy for merchant name extraction and transaction categorization.
-
Simple integration — A clean, modern Python SDK with full type hints. Install with pip and start enriching in under 5 minutes.
-
No Plaid dependency — Use Easy Enrichment standalone. You don't need Plaid Link, Plaid Auth, or any other Plaid product. Works with any bank transaction data from any source.
Pricing
| Tier | Price per Request | Included Requests | Best For |
|---|---|---|---|
| Free | $0.00 | 100 requests | Testing & evaluation |
| Pay-as-you-go | $0.01 | Unlimited | Startups & small apps |
| Volume | From $0.005 | 100,000+ / month | Growth-stage fintech |
| Enterprise | Custom | Unlimited | Banks & large platforms |
See full pricing at easyenrichment.com/pricing.
Use Cases
Personal Finance Apps
Build spending insights, budgets, and financial dashboards with clean merchant data and categories. Replace messy transaction descriptions with merchant names and logos.
Subscription Management
Automatically detect and track recurring subscriptions like Netflix, Spotify, and gym memberships. Help users find and cancel forgotten subscriptions.
Accounting & Bookkeeping
Auto-categorize business expenses for accounting software. Map transactions to tax categories and generate expense reports.
Banking & Neobanks
Enhance the transaction feed in your banking app with merchant logos, clean names, and smart categories. Deliver a premium user experience.
Expense Management
Build corporate expense tracking with automatic categorization. Flag out-of-policy spending and generate compliance reports.
Spending Analytics
Power spending analytics dashboards with enriched transaction data. Show users where their money goes with beautiful charts and breakdowns.
Links
- Website: easyenrichment.com
- API Documentation: easyenrichment.com/docs
- Dashboard: easyenrichment.com/dashboard
- Pricing: easyenrichment.com/pricing
- GitHub: github.com/AI-Factory-Dev/easyenrichment-api
- npm Package: npmjs.com/package/easyenrichment
- PyPI Package: pypi.org/project/easyenrichment
- Email: hello@easyenrichment.com
License
MIT -- see LICENSE for details.
Copyright (c) 2025 Easy Enrichment.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file easyenrichment-1.0.0.tar.gz.
File metadata
- Download URL: easyenrichment-1.0.0.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26268d76666c040414bca4f8b33eaa51e24d5bfa6bc93be40179dc2e5e24a4d6
|
|
| MD5 |
301e723a914363d5b03ca688032d67e1
|
|
| BLAKE2b-256 |
4a1030c5840a6dd296ad597a0d94bbc5838a4278ed2d3250ba902d4bf60b2ec2
|
File details
Details for the file easyenrichment-1.0.0-py3-none-any.whl.
File metadata
- Download URL: easyenrichment-1.0.0-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd066c8897f7b7875cc16e51e1a62db137de094c8f39d029b396e7cc1ed722ad
|
|
| MD5 |
a9d3ac6c72946cd746223584c8ec3e88
|
|
| BLAKE2b-256 |
cc0c2aff1cf76ea92bba3800aafdee88281d903c119dacdd9f48dc39812aba95
|