Request
`POST /v1/enrich` accepts one descriptor. No batch input.
Request body
{
"raw_description": "SQ *JOES COFFEE 0421 TORONTO",
"amount": 6.75,
"currency": "CAD",
"country": "CA",
"date": "2026-05-22",
"mcc": "5814",
"merchant_name": null
}Response
High-confidence reviewed matches may return website and logo variants. Low-confidence results prefer warnings over false certainty.
Response body
{
"normalized_merchant": "joes coffee",
"display_name": "Joe's Coffee",
"category": "Food and Drink",
"subcategory": "Coffee Shop",
"website": null,
"logos": { "preferred": null, "variants": [] },
"confidence": 0.72,
"recurring_hint": false,
"processor_hint": "square",
"signals": ["removed_square_prefix"],
"warnings": ["local_merchant_identity_not_verified"]
}Logo variants
The website does not use merchant logos as visual examples. The contract explains supported variant fields so applications can decide whether to render a reviewed asset.
| Field | Use |
|---|---|
format, width, height | Choose SVG, PNG, WebP, or ICO assets that fit row, receipt, and detail surfaces. |
theme, background, shape | Select light, dark, transparent, square, rounded, or monochrome-safe variants. |
purpose, source, confidence | Prefer reviewed assets and suppress logo rendering when identity evidence is weak. |
Privacy behavior
The API rejects card numbers, account numbers, full statements, emails, phone numbers, addresses, and customer-identifying free text before parsing, queueing, logging, or third-party use.
Limits
| Area | Requirement |
|---|---|
| Descriptor | 1-256 characters normally; longer descriptors need privacy checks and warnings. |
| Signals | At most 20 bounded enum codes. |
| Online path | No LLM calls, crawlers, logo providers, or third-party enrichment APIs. |