Skip to main content
Every result returned by ParseTx — whether from the synchronous /v1/enrich endpoint or an async job — follows the same schema. Understanding each field helps you build reliable integrations: you’ll know exactly when to display a merchant logo, when to retry a failed item, and when to discard a garbage input entirely.

Example: Successful Enrichment

{
  "input": "NETFLIX.COM ON DEMAND",
  "status": "complete",
  "source": "cache",
  "merchant": "Netflix",
  "domain": "netflix.com",
  "category": "Entertainment",
  "mcc_code": "4899",
  "is_subscription": true,
  "confidence": 1
}

EnrichResultItem Fields

input
string
required
The original transaction string exactly as you submitted it — before any normalization or sanitization. This field is always present regardless of status, so you can map results back to their position in your request array.
status
string
required
The resolution status of this item. Always present. One of three values:
source
string
Present only when status is "complete". Indicates where the enrichment result came from:
  • cache — Returned from the global edge cache. Sub-50ms latency. Confidence is always 1.
  • llm — Retrieved via AI inference on a cache miss. The result is now cached for 30 days.
merchant
string
The canonical, normalized merchant name. Present when status is "complete".ParseTx always returns a consistent capitalization and spelling regardless of how the raw input was formatted — AMZN Mktp US*1A2B3C4D5, amzn.com, and Amazon Marketplace all resolve to "Amazon". This consistency is what makes the field reliable for bookkeeping deduplication and display labels.
domain
string | null
The verified primary domain of the merchant. Present when status is "complete". Null when the merchant has no known web presence (e.g. individual sellers, local cash businesses).Use this field to render merchant logos client-side via a favicon service — see the tip below.
category
string
A strictly typed category string from ParseTx’s 15-category taxonomy. Present when status is "complete". Never free-form — always one of the values documented in the Categories reference.Use this field for transaction filtering, budget bucketing, and spend analytics in your application.
mcc_code
string | null
A 4-digit Merchant Category Code conforming to ISO 18245. Present when status is "complete". Null when no MCC can be determined.MCC codes are used by payment networks to classify merchants at a finer grain than the 15-category taxonomy. They are particularly useful for accounting integrations, compliance tooling, and expense policy engines that need to distinguish, for example, 5812 (Eating Places & Restaurants) from 5814 (Fast Food Restaurants).
is_subscription
boolean
true if this merchant is known to operate on a recurring subscription model. Present when status is "complete".This field is determined based on the canonical merchant’s billing pattern, not the specific transaction string. Netflix, Spotify, and GitHub will return true. A one-time Amazon purchase will return false.Use this field to power subscription-tracking features, recurring charge alerts, or “subscriptions you might have forgotten about” views in personal finance apps.
confidence
float
A decimal score between 0.0 and 1.0 representing how confident ParseTx is in the enrichment result.
  • 1.0 — Cache hit (deterministic; verified result).
  • 0.80–0.99 — AI enrichment with high confidence. Result is cached.
  • < 0.80 — AI enrichment with lower confidence. Result is returned but not cached; subsequent requests will re-run enrichment.
  • 0.0 — Item was rejected. No enrichment was performed.
You can use this field to implement your own quality threshold: for example, only auto-categorize transactions where confidence >= 0.9 and flag lower-confidence results for manual review.

Batch Response Envelope

The top-level response object that wraps the array of EnrichResultItem results.
results
EnrichResultItem[]
required
An ordered array of enriched items. The order matches the order of the transactions array in your request — index 0 in results corresponds to index 0 in your input. This is true even for async jobs.
job_id
string | null
required
  • null for synchronous requests (POST /v1/enrich).
  • A UUID v4 string for async jobs (POST /v1/enrich/async). Use this value to poll GET /v1/enrich/jobs/{job_id} for the completed results.
status
string
required
The overall outcome of the batch:
  • complete — Every item in results has status: "complete" or status: "rejected". No retries are needed.
  • partial — At least one item returned status: "retry". The rest of the batch was processed normally. You should extract the retry items and resubmit them.

Handling the Three Status Values

complete

Enrichment succeeded.Read merchant, domain, category, mcc_code, is_subscription, and confidence from the item. Store or display as needed.

rejected

Garbage input.The string was all digits, high-entropy noise, or collapsed to empty after PII stripping. Do not retry. Log it, skip it, or surface a fallback label in your UI.

retry

Transient failure.A transient upstream error occurred for this item only. Safe to resubmit — collect all retry items from the batch and send them in a new request.
A 200 OK HTTP status code does not mean every item in the batch was successfully enriched. Always check each item’s status field and the envelope-level status field to detect partial failures.

Rendering Merchant Logos

When domain is non-null, you can render a merchant logo client-side without hosting any images. Use Google’s favicon service:
https://www.google.com/s2/favicons?domain={domain}&sz=128
For example, domain: "netflix.com" becomes:
https://www.google.com/s2/favicons?domain=netflix.com&sz=128
For higher-quality renders, try Logo.dev or the Brandfetch free tier as drop-in alternatives. ParseTx intentionally returns only the domain — not a hosted image — so you stay in full control of how logos are displayed and remain insulated from any trademark or copyright issues with binary image redistribution.

Full Batch Example

{
  "results": [
    {
      "input": "NETFLIX.COM ON DEMAND",
      "status": "complete",
      "source": "cache",
      "merchant": "Netflix",
      "domain": "netflix.com",
      "category": "Entertainment",
      "mcc_code": "4899",
      "is_subscription": true,
      "confidence": 1
    },
    {
      "input": "SQ *BLUE BOTTLE COFFEE SAN FRANCISCO CA",
      "status": "complete",
      "source": "llm",
      "merchant": "Blue Bottle Coffee",
      "domain": "bluebottlecoffee.com",
      "category": "Food & Drink",
      "mcc_code": "5812",
      "is_subscription": false,
      "confidence": 0.95
    },
    {
      "input": "123456789 garbage",
      "status": "rejected",
      "confidence": 0
    }
  ],
  "job_id": null,
  "status": "complete"
}