The simplest, most affordable transaction enrichment API. Turn raw bank transaction descriptions like
AMZN MKTP US*2K4X9Y1Z0into structured merchant data — name, category, logo, contact info, and more — with a single API call.
Most transaction enrichment providers — Plaid Enrich, Mastercard Ethoca, Visa Merchant Search, Ntropy — require enterprise contracts, sales calls, and hidden pricing. Easy Enrichment is different:
| Feature | Easy Enrichment | Plaid Enrich | Ntropy | Mastercard Ethoca | Visa Merchant Search |
|---|---|---|---|---|---|
| Public pricing | 1-2¢/call | Contact sales | Contact sales | Enterprise only | Enterprise only |
| Free trial | 20 free calls | 200 calls | 2,000 calls | No | No |
| No sales call needed | Sign up & go | Depends | Depends | Required | Required |
| Batch support | Up to 100/req | Yes | Yes | N/A | N/A |
| Response time | ~500ms | ~200ms | ~100ms | N/A | N/A |
| AI-powered | Claude AI | ML models | Custom LLM | Rule-based | Rule-based |
| Subscription detection | Yes | Yes | Yes | No | No |
| Logo URLs | Yes | Yes | No | Yes | No |
| Carbon footprint | Yes | No | No | No | No |
| Minimum commitment | $0 | Varies | Free tier | Enterprise | Enterprise |
- Indie developers and startups building fintech apps who don't want to negotiate enterprise contracts
- Personal finance apps that need merchant names, logos, and categories
- Accounting software that needs clean transaction categorization
- Banks and neobanks looking for a simple, cost-effective enrichment layer
- Anyone who tried to parse
POS DEBIT VISA CHECK CARD 4821 TARG*T 000009834and gave up
curl -X POST https://api.easyenrichment.com/enrich \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"description": "AMZN MKTP US*2K4X9Y1Z0"}'Response:
{
"success": true,
"data": {
"merchant_name": "Amazon",
"category": "Shopping",
"categories": ["E-commerce", "Shopping", "Retail"],
"subcategory": "Online Marketplace",
"business_type": "E-commerce Platform",
"mcc_code": "5942",
"is_chain": true,
"is_subscription": false,
"is_online_only": true,
"domain": "amazon.com",
"logo_url": "https://img.logo.dev/amazon.com?token=pk_xxx&size=128",
"brand_id": "amazon_us",
"country": "US",
"contact_phone": "+1-888-280-4331",
"contact_email": "cs-reply@amazon.com",
"support_url": "https://www.amazon.com/gp/help/customer/display.html",
"co2_category": "medium",
"confidence": 0.98,
"description": "Amazon Marketplace purchase"
},
"billing": {
"cost_cents": 1,
"balance_cents": 19
}
}Sign up at easyenrichment.com to get your API key. 20 free calls included — no credit card required.
https://api.easyenrichment.com
Include your API key in the Authorization header:
Authorization: Bearer enrich_xxxxxxxxxxxx
Get your API key from the dashboard after signing up.
Security: Never expose your API key in client-side code, mobile apps, or public repositories. Use it only from your backend server.
Enrich one transaction description.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
description |
string | Yes | Raw bank transaction description |
Example:
curl -X POST https://api.easyenrichment.com/enrich \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"description": "UBER *TRIP HELP.UBER.COM"}'Enrich up to 100 transactions in a single request. Each transaction is billed individually.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
transactions |
string[] | Yes | Array of descriptions (max 100) |
Example:
curl -X POST https://api.easyenrichment.com/enrich/batch \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"transactions": [
"NETFLIX.COM",
"SPOTIFY SUBSCRIPTION",
"AMZN MKTP US*2K4X9Y1Z0"
]
}'Check your current usage and limits.
curl https://api.easyenrichment.com/usage \
-H "Authorization: Bearer YOUR_API_KEY"Check your current credit balance.
curl https://api.easyenrichment.com/payments/balance \
-H "Authorization: Bearer YOUR_API_KEY"Every successful enrichment returns these fields:
| Field | Type | Description |
|---|---|---|
merchant_name |
string | Clean, readable merchant name |
category |
string | Primary spending category |
categories |
string[] | All applicable categories |
subcategory |
string | Specific sub-category |
business_type |
string | Type of business (e.g., "Streaming Service") |
mcc_code |
string | Standard Merchant Category Code |
is_chain |
boolean | Part of a chain/franchise? |
is_subscription |
boolean | Recurring payment? |
is_online_only |
boolean | Online-only merchant? |
domain |
string | Merchant website |
logo_url |
string | Direct URL to merchant logo |
brand_id |
string | Unique brand identifier |
country |
string | Country code (ISO 3166-1) |
contact_phone |
string | Support phone number |
contact_email |
string | Support email |
support_url |
string | Help/support page URL |
co2_category |
string | Carbon footprint (low/medium/high) |
confidence |
number | Confidence score (0-1) |
description |
string | Human-readable description |
Transparent, public pricing. No sales calls. No enterprise contracts.
| Purchase | Credits | Per API Call | Savings |
|---|---|---|---|
| $10 | 500 | 2.0¢ | — |
| $25 | 1,666 | 1.5¢ | 25% off |
| $50 | 4,166 | 1.2¢ | 40% off |
| $100 | 10,000 | 1.0¢ | 50% off |
- Free trial: 20 API calls on signup, no credit card
- No monthly fees. Buy credits, use them whenever
- Never expires. Credits don't have an expiration date
- Enterprise? Contact us for custom volume pricing
- Plaid Enrich: ~$1.50/user/month, requires sales call, US/Canada only
- Ntropy: Free tier then custom pricing, requires approval
- Mastercard Ethoca: Enterprise contracts only, aimed at card issuers
- Visa Merchant Search: Enterprise only, designed for acquirers/issuers
- Easy Enrichment: 1¢/call, sign up in 30 seconds, works globally
| HTTP Code | Meaning |
|---|---|
200 |
Success |
400 |
Bad request — invalid parameters |
401 |
Unauthorized — bad or missing API key |
402 |
Payment required — insufficient balance |
429 |
Rate limited — slow down |
500 |
Server error |
Error response:
{
"success": false,
"error": {
"code": "INSUFFICIENT_BALANCE",
"message": "Insufficient balance. Please add funds."
}
}| Limit | Value |
|---|---|
| Per minute | 100 requests |
| Per day | 10,000 requests |
Need more? Contact us for higher limits.
import requests
API_KEY = "YOUR_API_KEY"
def enrich(description):
r = requests.post(
"https://api.easyenrichment.com/enrich",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"description": description}
)
return r.json()
result = enrich("STARBUCKS STORE 12345")
print(result["data"]["merchant_name"]) # "Starbucks"
print(result["data"]["category"]) # "Food & Drink"
print(result["data"]["is_chain"]) # Trueconst API_KEY = 'YOUR_API_KEY';
async function enrich(description: string) {
const res = await fetch('https://api.easyenrichment.com/enrich', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ description }),
});
return res.json();
}
const result = await enrich('STARBUCKS STORE 12345');
console.log(result.data.merchant_name); // "Starbucks"curl -X POST https://api.easyenrichment.com/enrich \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"description": "STARBUCKS STORE 12345"}'import requests
API_KEY = "YOUR_API_KEY"
transactions = [
"NETFLIX.COM",
"UBER *TRIP",
"SPOTIFY P1234",
"AMZN MKTP US",
"STARBUCKS #9281"
]
r = requests.post(
"https://api.easyenrichment.com/enrich/batch",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"transactions": transactions}
)
for item in r.json()["data"]["results"]:
print(f"{item['merchant_name']:20} | {item['category']}")Enrich transaction feeds to show clean merchant names, logos, and spending categories. Replace cryptic bank descriptions with something users can actually understand.
Automatically categorize expenses using MCC codes and category data. Detect subscriptions and recurring charges for better cash flow analysis.
Add merchant logos and clean names to transaction history. Detect subscription payments. Provide carbon footprint data for eco-conscious customers.
Cross-reference merchant data, domains, and contact info to flag suspicious transactions. Use confidence scores to identify potential mismatches.
Enrich large transaction datasets for spending analysis, market research, or competitive intelligence. Batch API handles up to 100 transactions per request.
Q: How accurate is the enrichment?
A: Our AI achieves 90%+ accuracy across common merchants. The confidence field tells you exactly how confident the model is for each result.
Q: What languages/countries are supported? A: The API works with transaction descriptions from any country and in any language. It performs best with English, Spanish, Portuguese, French, and German descriptions.
Q: Are results cached? A: Yes. Repeated queries for the same description are served from cache at no additional cost. Cache TTL is 7 days for high-confidence results.
Q: Is there an SLA? A: We target 99.9% uptime. For SLA guarantees, contact us about enterprise plans.
Q: Can I try before I buy? A: Yes. Sign up for free at easyenrichment.com and get 20 free API calls. No credit card required.
| Language | Package | Install |
|---|---|---|
| Node.js / TypeScript | npm install easyenrichment |
|
| Python | pip install easyenrichment |
import EasyEnrichment from 'easyenrichment';
const client = new EasyEnrichment({ apiKey: 'YOUR_API_KEY' });
const result = await client.enrich('AMZN MKTP US*2K4X9Y1Z0');
console.log(result.data.merchant_name); // "Amazon"from easyenrichment import EasyEnrichment
client = EasyEnrichment(api_key="YOUR_API_KEY")
result = client.enrich("AMZN MKTP US*2K4X9Y1Z0")
print(result["data"]["merchant_name"]) # "Amazon"- Website: easyenrichment.com
- API Docs: easyenrichment.com/docs
- Dashboard: easyenrichment.com/dashboard
- Pricing: easyenrichment.com/pricing
- npm: npmjs.com/package/easyenrichment
- PyPI: pypi.org/project/easyenrichment
- Contact: easyenrichment.com/contact
- Status: api.easyenrichment.com/health
Built by Easy Enrichment — Transaction enrichment that just works.