Call POST /transactions/enrich with an array of transaction objects containing id, description (merchant name or transaction description from the bank), amount, direction (inflow/outflow), and optionally iso_currency_code and account_type
The enriched response returns for each transaction: personal_finance_category (primary and detailed taxonomy codes from PFC v2), personal_finance_category_icon_url, counterparty[] (normalized merchant name, entity type, website, logo_url), location, and payment_meta
Map the personal_finance_category.detailed codes to your internal GL or budget categories using the PFC v2 taxonomy CSV (download from Plaid's developer docs); build a mapping table that you maintain as the taxonomy evolves
Use counterparty[0].name as the display merchant name instead of the raw bank description string; check counterparty[0].confidence_level (HIGH, MEDIUM, LOW) and fall back to the raw description for LOW confidence matches
For recurring transaction detection, look for recurrence signals in payment_meta (payment_processor, payer, ppd_id for ACH) and complement with your own frequency analysis over the transaction history
Monitor the personal_finance_category_confidence field (if present) and route LOW confidence categorizations to a manual review queue or a secondary categorization model
Known gotchas
Enrich is a separate product from Transactions — it processes raw transaction strings you provide; it does not require a linked Plaid item and can be called with data from any source, but you must have the Enrich product enabled on your Plaid account
PFC v2 taxonomy codes change between taxonomy versions; pin your mapping table to a specific taxonomy version and build an update process — do not assume codes are stable indefinitely across Plaid releases
The counterparty array can contain multiple entries (e.g., a payment processor and the underlying merchant); use entity_type to distinguish and take the most specific non-processor entry as the display merchant
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp