---
title: "Enhance locally-held transaction data"
method: POST
path: "/beta/transactions/v1/enhance"
tags: ["plaid"]
---

# Enhance locally-held transaction data

`POST /beta/transactions/v1/enhance`

The `/beta/transactions/v1/enhance` endpoint enriches raw transaction data provided directly by clients.

The product is currently in beta.

## Request body

- TransactionsEnhanceGetRequest — TransactionsEnhanceGetRequest defines the request schema for `/beta/transactions/v1/enhance`.
  - `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` string, required — The type of account for the requested transactions (`depository` or `credit`).
  - `transactions` ClientProvidedRawTransaction[], required — An array of raw transactions to be enhanced.
    - `id` string, required — A unique ID for the transaction used to help you tie data back to your systems.
    - `description` string, required — The raw description of the transaction.
    - `amount` number, double, required — The value of the transaction with direction. (NOTE: this will affect enrichment results, so directions are important). Negative (-) for credits (e.g., incoming transfers, refunds) Positive (+) for debits (e.g., purchases, fees, outgoing transfers)
    - `iso_currency_code` string, required — The ISO-4217 currency code of the transaction e.g. USD.

## Response `200`

OK

- TransactionsEnhanceGetResponse — TransactionsEnhanceGetResponse defines the response schema for `/beta/transactions/v1/enhance`.
  - `enhanced_transactions` ClientProvidedEnhancedTransaction[], required — An array of enhanced transactions.
    - `id` string, required — Unique transaction identifier to tie transactions back to clients' systems.
    - `description` string, required — The raw description of the transaction.
    - `amount` number, double, required — The value of the transaction, denominated in the account's currency, as stated in `iso_currency_code`. Positive values when money moves out of the account; negative values when money moves in. For example, debit card purchases are positive; credit card payments, direct deposits, and refunds are negative.
    - `iso_currency_code` string, required — The ISO-4217 currency code of the transaction.
    - `enhancements` Enhancements, required — A grouping of the Plaid produced transaction enhancement fields.
      - `merchant_name` string, nullable — The name of the primary counterparty, such as the merchant or the financial institution, as extracted by Plaid from the raw description.
      - `website` string, nullable — The website associated with this transaction, if available.
      - `logo_url` string, nullable — The URL of a logo associated with this transaction, if available. The logo will always be a 100×100 pixel PNG file.
      - `check_number` string, nullable — The check number of the transaction. This field is only populated for check transactions.
      - `payment_channel` 'online' | 'in store' | 'other', required — 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.
      - `category_id` string, nullable, required — The ID of the category to which this transaction belongs. For a full list of categories, see [`/categories/get`](https://plaid.com/docs/api/products/transactions/#categoriesget).
      - `category` string[], required — A hierarchical array of the categories to which this transaction belongs. For a full list of categories, see [`/categories/get`](https://plaid.com/docs/api/products/transactions/#categoriesget).
      - `location` Location, required — A representation of where a transaction took place. Location data is provided only for transactions at physical locations, not for online transactions. Location data availability depends primarily on the merchant and is most likely to be populated for transactions at large retail chains; small, local businesses are less likely to have location data available.
        - `address` string, nullable, required — The street address where the transaction occurred.
        - `city` string, nullable, required — The city where the transaction occurred.
        - `region` string, nullable, required — The region or state where the transaction occurred. In API versions 2018-05-22 and earlier, this field is called `state`.
        - `postal_code` string, nullable, required — The postal code where the transaction occurred. In API versions 2018-05-22 and earlier, this field is called `zip`.
        - `country` string, nullable, required — The ISO 3166-1 alpha-2 country code where the transaction occurred.
        - `lat` number, double, nullable, required — The latitude where the transaction occurred.
        - `lon` number, double, nullable, required — The longitude where the transaction occurred.
        - `store_number` string, nullable, required — The merchant defined store number where the transaction occurred.
      - `personal_finance_category` PersonalFinanceCategory, nullable — 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](https://plaid.com/documents/pfc-taxonomy-all.csv) 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](https://plaid.com/docs/transactions/pfc-migration/).
        - `primary` string, required — A high level category that communicates the broad category of the transaction.
        - `detailed` string, required — A granular category conveying the transaction's intent. This field can also be used as a unique identifier for the category.
        - `confidence_level` string, nullable — 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` 'v1' | 'v2' — Indicates which version of the personal finance category taxonomy is being used. [View PFCv2 and PFCv1 taxonomies](https://plaid.com/documents/pfc-taxonomy-all.csv). If you enabled Transactions or Enrich before December 3, 2025 you will receive the `v1` taxonomy by default and may request `v2` by explicitly setting this field to `v2` in the request. If you enabled Transactions or Enrich on or after December 3, 2025, you may only receive the `v2` taxonomy.
      - `personal_finance_category_icon_url` string — The URL of an icon associated with the primary personal finance category. The icon will always be a 100×100 pixel PNG file.
      - `counterparties` Counterparty[] — The counterparties present in the transaction. Counterparties, such as the merchant or the financial institution, are extracted by Plaid from the raw description.
        - `name` string, required — The name of the counterparty, such as the merchant or the financial institution, as extracted by Plaid from the raw description.
        - `entity_id` string, nullable — A unique, stable, Plaid-generated ID that maps to the counterparty.
        - `type` 'merchant' | 'financial_institution' | 'payment_app' | 'marketplace' | 'payment_terminal' | 'income_source', required — 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` string, nullable, required — The website associated with the counterparty.
        - `logo_url` string, nullable, required — The URL of a logo associated with the counterparty, if available. The logo will always be a 100×100 pixel PNG file.
        - `confidence_level` string, nullable — 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` string, nullable, required — 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` CounterpartyNumbers, nullable — Account numbers associated with the counterparty, when available. This field is currently only filled in for select financial institutions in Europe.
          - `bacs` CounterpartyNumbersBACS, nullable — Identifying information for a UK bank account via Bacs.
            - `account` string, nullable — The Bacs account number for the account.
            - `sort_code` string, nullable — The Bacs sort code for the account.
          - `international` CounterpartyNumbersInternational, nullable — Account numbers using the International Bank Account Number and BIC/SWIFT code format.
            - `iban` string — International Bank Account Number (IBAN).
            - `bic` string, nullable — Business Identifier Code (BIC) for this counterparty.

## Other responses

- `default` — Error response

---

[API](https://skmtc.net/plaid/apis/the-plaid-api.md) · [All operations](https://skmtc.net/plaid/apis/the-plaid-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/plaid/the-plaid-api/versions/64c4514ea59b/schema)
