Enrich locally-held transaction data

POST /transactions/enrich

The /transactions/enrich endpoint enriches raw transaction data generated by your own banking products or retrieved from other non-Plaid sources.

Request Body

Required

TransactionsEnrichRequest defines the request schema for /transactions/enrich.

Parameters

client_id
string
Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.
secret
string
Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.
account_type
required, string
The account type for the requested transactions (either depository or credit).
transactions
required, array[object]
An array of transaction objects to be enriched by Plaid. Maximum of 100 transactions per request.
id
required, string
A unique ID for the transaction used to help you tie data back to your systems.
user_id
string
The Plaid generated ID that identifies the end user for whom you would like to enrich transactions.
client_user_id
string
A unique user id used to group transactions for a given user, as a unique identifier from your application. Personally identifiable information, such as an email address or phone number, should not be used in the client_user_id.
client_account_id
string
A unique account id used to group transactions for a given account, as a unique identifier from your application. Personally identifiable information, such as an email address or phone number, should not be used in the client_account_id.
account_type
string
The account type associated with the transaction. For a full list of valid types and subtypes, see the Account schema.
account_subtype
string
The account subtype associated with the transaction. For a full list of valid types and subtypes, see the Account schema.
description
required, string
The raw description of the transaction. If you have location data in available an unstructured format, it may be appended to the description field.
amount
required, number
The absolute value of the transaction (>= 0). When testing Enrich, note that amount data should be realistic. Unrealistic or inaccurate amount data may result in reduced quality output.
direction
required, string
The direction of the transaction from the perspective of the account holder: OUTFLOW - Includes outgoing transfers, purchases, and fees. (Typically represented as a negative value on checking accounts and debit cards and a positive value on credit cards.) INFLOW - Includes incoming transfers, refunds, and income. (Typically represented as a positive value on checking accounts and debit cards and a negative value on credit cards.)
iso_currency_code
required, string
The ISO-4217 currency code of the transaction e.g. USD.
location
object
A representation of where a transaction took place. Use this field to pass in structured location information you may have about your transactions. Providing location data is optional but can increase result quality. If you have unstructured location information, it may be appended to the description field.
country
string
The country where the transaction occurred.
region
string
The region or state where the transaction occurred.
city
string
The city where the transaction occurred.
address
string
The street address where the transaction occurred.
postal_code
string
The postal code where the transaction occurred.
mcc
string
Merchant category codes (MCCs) are four-digit numbers that describe a merchant’s primary business activities.
date_posted
string
The date the transaction posted, in ISO 8601 (YYYY-MM-DD) format.
options
object
An optional object to be used with the request.
include_legacy_category
boolean
Include legacy_category and legacy_category_id in the response (in addition to the default personal_finance_category). Categories are based on Plaid’s legacy taxonomy. For a full list of legacy categories, see /categories/get.
personal_finance_category_version
string
Optional parameter that specifies which version of the personal finance category taxonomy to return. The v2 taxonomy is defined here. The legacy v1 taxonomy is defined here. If you enabled any Financial Insights products before October 2025 you will receive a default of v1 taxonomy and may request v2 by explicitly setting this field to v2. If you enabled any Financial Insights products on or after October 2025 you may only receive v2 taxonomy.

Response

TransactionsEnrichResponse defines the response schema for /transactions/enrich.

Response Properties

enriched_transactions
required, array[object]
A list of enriched transactions.
id
required, string
The unique ID for the transaction as provided by you in the request.
client_user_id
string
A unique user id used to group transactions for a given user, as a unique identifier from your application. Personally identifiable information, such as an email address or phone number, should not be used in the client_user_id.
client_account_id
string
A unique account id used to group transactions for a given account, as a unique identifier from your application. Personally identifiable information, such as an email address or phone number, should not be used in the client_account_id.
account_type
string
The account type associated with the transaction. For a full list of valid types and subtypes, see the Account schema.
account_subtype
string
The account subtype associated with the transaction. For a full list of valid types and subtypes, see the Account schema.
description
required, string
The raw description of the transaction.
amount
required, number
The absolute value of the transaction (>= 0)
direction
string
The direction of the transaction from the perspective of the account holder: OUTFLOW - Includes outgoing transfers, purchases, and fees. (Typically represented as a negative value on checking accounts and debit cards and a positive value on credit cards.) INFLOW - Includes incoming transfers, refunds, and income. (Typically represented as a positive value on checking accounts and debit cards and a negative value on credit cards.)
iso_currency_code
required, string
The ISO-4217 currency code of the transaction e.g. USD.
enrichments
required, object
A grouping of the Plaid produced transaction enrichment fields.
check_number
string
The check number of the transaction. This field is only populated for check transactions.
counterparties
required, array[object]
The counterparties present in the transaction. Counterparties, such as the merchant or the financial institution, are extracted by Plaid from the raw description.
name
required, string
The name of the counterparty, such as the merchant or the financial institution, as extracted by Plaid from the raw description.
entity_id
string
A unique, stable, Plaid-generated ID that maps to the counterparty.
type
required, string
The counterparty type. merchant: a provider of goods or services for purchase financial_institution: a financial entity (bank, credit union, BNPL, fintech) payment_app: a transfer or P2P app (e.g. Zelle) marketplace: a marketplace (e.g DoorDash, Google Play Store) payment_terminal: a point-of-sale payment terminal (e.g Square, Toast) income_source: the payer in an income transaction (e.g., an employer, client, or government agency)
website
required, string
The website associated with the counterparty.
logo_url
required, string
The URL of a logo associated with the counterparty, if available. The logo will always be 100Ă—100 pixel PNG file.
confidence_level
string
A description of how confident we are that the provided counterparty is involved in the transaction. VERY_HIGH: We recognize this counterparty and we are more than 98% confident that it is involved in this transaction. HIGH: We recognize this counterparty and we are more than 90% confident that it is involved in this transaction. MEDIUM: We are moderately confident that this counterparty was involved in this transaction, but some details may differ from our records. LOW: We didn’t find a matching counterparty in our records, so we are returning a cleansed name parsed out of the request description. UNKNOWN: We don’t know the confidence level for this counterparty.
phone_number
required, string
The phone number associated with the counterparty in E. 164 format. If there is a location match (i.e. a street address is returned in the location object), the phone number will be location specific.
account_numbers
object
Account numbers associated with the counterparty, when available. This field is currently only filled in for select financial institutions in Europe.
bacs
object
Identifying information for a UK bank account via BACS.
international
object
Account numbers using the International Bank Account Number and BIC/SWIFT code format.
entity_id
string
A unique, stable, Plaid-generated ID that maps to the primary counterparty.
legacy_category_id
string
The ID of the legacy category to which this transaction belongs. For a full list of legacy categories, see /categories/get. We recommend using the personal_finance_category for transaction categorization to obtain the best results.
legacy_category
array[string]
A hierarchical array of the legacy categories to which this transaction belongs. For a full list of legacy categories, see /categories/get. We recommend using the personal_finance_category for transaction categorization to obtain the best results.
location
required, object
A representation of where a transaction took place
address
required, string
The street address where the transaction occurred.
city
required, string
The city where the transaction occurred.
region
required, string
The region or state where the transaction occurred. In API versions 2018-05-22 and earlier, this field is called state.
postal_code
required, string
The postal code where the transaction occurred. In API versions 2018-05-22 and earlier, this field is called zip.
country
required, string
The ISO 3166-1 alpha-2 country code where the transaction occurred.
lat
required, number
The latitude where the transaction occurred.
lon
required, number
The longitude where the transaction occurred.
store_number
required, string
The merchant defined store number where the transaction occurred.
logo_url
required, string
The URL of a logo associated with this transaction, if available. The logo will always be 100Ă—100 pixel PNG file.
merchant_name
required, string
The name of the primary counterparty, such as the merchant or the financial institution, as extracted by Plaid from the raw description.
payment_channel
required, string
The channel used to make a payment. online: transactions that took place online. in store: transactions that were made at a physical location. other: transactions that relate to banks, e.g. fees or deposits.
phone_number
required, string
The phone number associated with the counterparty in E. 164 format. If there is a location match (i.e. a street address is returned in the location object), the phone number will be location specific.
personal_finance_category
required, object
Information describing the intent of the transaction. Most relevant for personal finance use cases, but not limited to such use cases. See the taxonomy CSV file for a full list of personal finance categories. If you are migrating to personal finance categories from the legacy categories, also refer to the migration guide.
primary
required, string
A high level category that communicates the broad category of the transaction.
detailed
required, string
A granular category conveying the transaction’s intent. This field can also be used as a unique identifier for the category.
confidence_level
string
A description of how confident we are that the provided categories accurately describe the transaction intent. VERY_HIGH: We are more than 98% confident that this category reflects the intent of the transaction. HIGH: We are more than 90% confident that this category reflects the intent of the transaction. MEDIUM: We are moderately confident that this category reflects the intent of the transaction. LOW: This category may reflect the intent, but there may be other categories that are more accurate. UNKNOWN: We don’t know the confidence level for this category.
version
string
The version of the personal finance category requested. Possible values are “v1” and “v2”
personal_finance_category_icon_url
required, string
The URL of an icon associated with the primary personal finance category. The icon will always be 100Ă—100 pixel PNG file.
recurrence
object
Insights relating to expenses and deposits that are predicted to occur on a scheduled basis, such as biweekly, monthly, or annually. Common examples include loan payments, bill payments, subscriptions, and payroll income. This is a beta field, available to all users.
is_recurring
boolean
Whether or not the transaction is periodically recurring.
frequency
string
Describes the frequency of the transaction stream. WEEKLY: Assigned to a transaction stream that occurs approximately every week. BIWEEKLY: Assigned to a transaction stream that occurs approximately every 2 weeks. SEMI_MONTHLY: Assigned to a transaction stream that occurs approximately twice per month. This frequency is typically seen for inflow transaction streams. MONTHLY: Assigned to a transaction stream that occurs approximately every month. ANNUALLY: Assigned to a transaction stream that occurs approximately every year. DAILY: Assigned to a transaction stream that occurs approximately every day. DYNAMIC: Assigned to a transaction stream that varies in recurrence frequency. This frequency is typically seen for inflow streams in the gig economy. UNKNOWN: Assigned to a transaction stream that isn’t recurring in nature.
website
required, string
The website associated with this transaction.
client_customization
object
Custom client fields
custom_entity_id
string
Custom entity ID that maps to a merchant or counterparty. This is different from the merchant_entity_id as well as the entity_id on the counterparties object to meet client specific needs.
request_id
string
A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.