Enrich 
=======

#### API reference for the Enrich endpoint 

For how-to guidance, see the [Enrich documentation](https://plaid.com/docs/enrich/index.html.md) .

| Endpoints |  |
| --- | --- |
| [/transactions/enrich](https://plaid.com/docs/api/products/enrich/index.html.md#transactionsenrich) | Send transaction data and retrieve enrichments |

\=\*=\*=\*=

#### /transactions/enrich 

#### Enrich locally-held transaction data 

The [/transactions/enrich](https://plaid.com/docs/api/products/enrich/index.html.md#transactionsenrich) endpoint enriches raw transaction data generated by your own banking products or retrieved from other non-Plaid sources.

#### Request fields 

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.

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.

required, string

The account type for the requested transactions (either `depository` or `credit`).

required, \[object\]

An array of transaction objects to be enriched by Plaid. Maximum of 100 transactions per request.

required, string

A unique ID for the transaction used to help you tie data back to your systems.

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.

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.

Format: `double`

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.)

Possible values: `INFLOW`, `OUTFLOW`

required, string

The ISO-4217 currency code of the transaction e.g. USD.

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.

string

The country where the transaction occurred, formatted as an ISO 3166-1 alpha-2 country code ("US" or "CA").

string

The region or state where the transaction occurred, formatted as the official two-letter US state or Canadian province postal code, e.g. "CT" or "QC".

string

The city where the transaction occurred.

string

The street address where the transaction occurred.

string

The postal code where the transaction occurred.

string

Merchant category codes (MCCs) are four-digit numbers that describe a merchant's primary business activities.

string

The date the transaction posted, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format.

Format: `date`

object

An optional object to be used with the request.

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](https://plaid.com/docs/api/products/transactions/index.html.md#categoriesget) .

Default: `false`

string

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 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 2025, you may only receive the `v2` taxonomy.

Possible values: `v1`, `v2`

```bash
curl -X POST https://sandbox.plaid.com/transactions/enrich \
  -H 'Content-Type: application/json' \
  -d '{
    "client_id": "${PLAID_CLIENT_ID}",
    "secret": "${PLAID_SECRET}",
    "account_type": "depository",
    "transactions": [
      {
        "id": "6135818adda16500147e7c1d",
        "description": "PURCHASE WM SUPERCENTER #1700",
        "amount": 72.10,
        "direction": "OUTFLOW",
        "iso_currency_code": "USD",
        "location": {
          "city": "Poway",
          "region": "CA"
        },
        "mcc": "5310",
        "date_posted": "2022-07-05"
      },
      {
        "id": "3958434bhde9384bcmeo3401",
        "description": "DD DOORDASH BURGERKIN 855-123-4567 CA",
        "amount": 28.34,
        "direction": "OUTFLOW",
        "iso_currency_code": "USD"
      }
  ]
}'

```

```java
List transactionsToEnrich = Arrays.asList(
  new ClientProvidedTransaction()
    .id("1")
    .direction(EnrichTransactionDirection.OUTFLOW)
    .isoCurrencyCode("USD")
    .amount(72.10)
    .location(
      new ClientProvidedTransactionLocation().city("Poway").region("CA")
    )
    .description("PURCHASE WM SUPERCENTER #1700"),
  new ClientProvidedTransaction()
    .id("2")
    .direction(EnrichTransactionDirection.OUTFLOW)
    .isoCurrencyCode("USD")
    .amount(28.34)
    .description("DD DOORDASH BURGERKIN 855-123-4567 CA")
);

TransactionsEnrichRequest transactionsEnrichRequest = new TransactionsEnrichRequest()
  .accountType("depository").transactions(transactionsToEnrich);

Response response = client()
  .transactionsEnrich(transactionsEnrichRequest)
  .execute();

List enrichedTransactions = response.body().getEnrichedTransactions();

```

```go
ctx := context.Background()
outflowDirection, _ := plaid.NewEnrichTransactionDirectionFromValue("OUTFLOW")

transactionsToEnrich := []plaid.ClientProvidedTransaction{
  {
    Id:              "1",
    Description:     "PURCHASE WM SUPERCENTER #1700",
    Amount:          72.10,
    IsoCurrencyCode: "USD",
    Location: &plaid.ClientProvidedTransactionLocation{
      City:   plaid.PtrString("Poway"),
      Region: plaid.PtrString("CA"),
    },
    Direction:       outflowDirection,
  },
  {
    Id:              "2",
    Description:     "DD DOORDASH BURGERKIN 855-123-4567 CA",
    Amount:          28.34,
    IsoCurrencyCode: "USD",
    Direction:       outflowDirection,
  },
}

enrichGetResp, httpResp, err := client.PlaidApi.TransactionsEnrich(ctx).TransactionsEnrichRequest(
  *plaid.NewTransactionsEnrichRequest(
    "depository", transactionsToEnrich,
  ),
).Execute()
if err != nil {
  // handle error
}
enrichedTransactions := enrichGetResp.GetEnrichedTransactions()

```

```ruby
transactions_to_enrich = [
  Plaid::ClientProvidedTransaction.new({
    id: "1",
    description: "PURCHASE WM SUPERCENTER #1700",
    amount: 72.10,
    direction: Plaid::EnrichTransactionDirection::OUTFLOW,
    location: Plaid::ClientProvidedTransactionLocation.new({
      city: "Poway",
      region: "CA",
    }),
    iso_currency_code: "USD",
  }),
  Plaid::ClientProvidedTransaction.new({
    id: "2",
    description: "DD DOORDASH BURGERKIN 855-123-4567 CA",
    amount: 28.34,
    direction: Plaid::EnrichTransactionDirection::OUTFLOW,
    iso_currency_code: "USD",
  }),
]

transactions_enrich_get_request = Plaid::TransactionsEnrichRequest.new

transactions_enrich_get_request.account_type = "depository"
transactions_enrich_get_request.transactions = transactions_to_enrich

response = client.transactions_enrich(transactions_enrich_get_request)
enriched_transactions = response.enriched_transactions

```

```python
transactions_to_enrich = [
  ClientProvidedTransaction(
      id="1",
      description="PURCHASE WM SUPERCENTER #1700",
      amount=72.10,
      iso_currency_code="USD",
      location=ClientProvidedTransactionLocation(
          city="Poway",
          region="CA",
      ),
      direction=EnrichTransactionDirection(value="OUTFLOW")
  ),
  ClientProvidedTransaction(
      id="2",
      description="DD DOORDASH BURGERKIN 855-123-4567 CA",
      amount=28.34,
      iso_currency_code="USD",
      direction=EnrichTransactionDirection(value="OUTFLOW")
  ),
]

enrich_req = TransactionsEnrichRequest(
    account_type="depository",
    transactions=transactions_to_enrich
)

response = client.transactions_enrich(enrich_req)
enriched_transactions = response['enriched_transactions']

```

```node
const transactionsToEnrich: Array = [
  {
    id: '1',
    description: 'PURCHASE WM SUPERCENTER #1700',
    amount: 72.1,
    iso_currency_code: 'USD',
    location: {
      city: 'Poway',
      region: 'CA',
    },
    direction: EnrichTransactionDirection.Outflow,
  },
  {
    id: '2',
    description: 'DD DOORDASH BURGERKIN 855-123-4567 CA',
    amount: 28.34,
    iso_currency_code: 'USD',
    direction: EnrichTransactionDirection.Outflow,
  },
];

const request: TransactionsEnrichRequest = {
    account_type: 'depository',
    transactions: transactionsToEnrich,
};

const response = await client.transactionsEnrich(request);
const enrichedTransactions = response.data.enriched_transactions;

```

#### Response fields 

\[object\]

A list of enriched transactions.

string

The unique ID for the transaction as provided by you in the request.

string

The raw description of the transaction.

number

The absolute value of the transaction (>= 0)

Format: `double`

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.)

Possible values: `INFLOW`, `OUTFLOW`

string

The ISO-4217 currency code of the transaction e.g. USD.

object

A grouping of the Plaid produced transaction enrichment fields.

\[object\]

The counterparties present in the transaction. Counterparties, such as the merchant or the financial institution, are extracted by Plaid from the raw description.

string

The name of the counterparty, such as the merchant or the financial institution, as extracted by Plaid from the raw description.

nullable, string

A unique, stable, Plaid-generated ID that maps to the counterparty.

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)

Possible values: `merchant`, `financial_institution`, `payment_app`, `marketplace`, `payment_terminal`, `income_source`

nullable, string

The website associated with the counterparty.

nullable, string

The URL of a logo associated with the counterparty, if available. The logo will always be 100×100 pixel PNG file.

nullable, 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.

nullable, 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.

nullable, object

Account numbers associated with the counterparty, when available. This field is currently only filled in for select financial institutions in Europe.

nullable, object

Identifying information for a UK bank account via BACS.

nullable, string

The BACS account number for the account.

nullable, string

The BACS sort code for the account.

nullable, object

Account numbers using the International Bank Account Number and BIC/SWIFT code format.

nullable, string

International Bank Account Number (IBAN).

Min length: `15`

Max length: `34`

nullable, string

Bank identifier code (BIC) for this counterparty.

Min length: `8`

Max length: `11`

nullable, string

A unique, stable, Plaid-generated ID that maps to the primary counterparty.

deprecated, nullable, string

The ID of the legacy category to which this transaction belongs. For a full list of legacy categories, see [/categories/get](https://plaid.com/docs/api/products/transactions/index.html.md#categoriesget) .

We recommend using the `personal_finance_category` for transaction categorization to obtain the best results.

deprecated, nullable, \[string\]

A hierarchical array of the legacy categories to which this transaction belongs. For a full list of legacy categories, see [/categories/get](https://plaid.com/docs/api/products/transactions/index.html.md#categoriesget) .

We recommend using the `personal_finance_category` for transaction categorization to obtain the best results.

object

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.

nullable, string

The street address where the transaction occurred.

nullable, string

The city where the transaction occurred.

nullable, string

The region or state where the transaction occurred. In API versions 2018-05-22 and earlier, this field is called `state`.

nullable, string

The postal code where the transaction occurred. In API versions 2018-05-22 and earlier, this field is called `zip`.

nullable, string

The ISO 3166-1 alpha-2 country code where the transaction occurred.

nullable, number

The latitude where the transaction occurred.

Format: `double`

nullable, number

The longitude where the transaction occurred.

Format: `double`

nullable, string

The merchant defined store number where the transaction occurred.

nullable, string

The URL of a logo associated with this transaction, if available. The logo will always be 100×100 pixel PNG file.

nullable, string

The name of the primary counterparty, such as the merchant or the financial institution, as extracted by Plaid from the raw description.

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.

Possible values: `online`, `in store`, `other`

nullable, 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.

nullable, 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](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/index.html.md) .

string

A high level category that communicates the broad category of the transaction.

string

A granular category conveying the transaction's intent. This field can also be used as a unique identifier for the category.

nullable, 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.

string

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 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 2025, you may only receive the `v2` taxonomy.

Possible values: `v1`, `v2`

string

The URL of an icon associated with the primary personal finance category. The icon will always be 100×100 pixel PNG file.

nullable, string

The website associated with this transaction.

string

A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.

Response Object

```json
{
  "enriched_transactions": [
    {
      "id": "6135818adda16500147e7c1d",
      "description": "PURCHASE WM SUPERCENTER #1700",
      "amount": 72.1,
      "direction": "OUTFLOW",
      "iso_currency_code": "USD",
      "enrichments": {
        "counterparties": [
          {
            "name": "Walmart",
            "type": "merchant",
            "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png",
            "website": "walmart.com",
            "entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM",
            "confidence_level": "VERY_HIGH",
            "phone_number": "+18009256278"
          }
        ],
        "entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM",
        "location": {
          "address": "13425 Community Rd",
          "city": "Poway",
          "region": "CA",
          "postal_code": "92064",
          "country": "US",
          "store_number": "1700",
          "lat": 32.959068,
          "lon": -117.037666
        },
        "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png",
        "merchant_name": "Walmart",
        "payment_channel": "in store",
        "personal_finance_category": {
          "detailed": "GENERAL_MERCHANDISE_SUPERSTORES",
          "primary": "GENERAL_MERCHANDISE",
          "confidence_level": "VERY_HIGH"
        },
        "phone_number": "+18009256278",
        "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png",
        "website": "walmart.com"
      }
    },
    {
      "id": "3958434bhde9384bcmeo3401",
      "description": "DD DOORDASH BURGERKIN 855-123-4567 CA",
      "amount": 28.34,
      "direction": "OUTFLOW",
      "iso_currency_code": "USD",
      "enrichments": {
        "counterparties": [
          {
            "name": "DoorDash",
            "type": "marketplace",
            "logo_url": "https://plaid-counterparty-logos.plaid.com/doordash_1.png",
            "website": "doordash.com",
            "entity_id": "YNRJg5o2djJLv52nBA1Yn1KpL858egYVo4dpm",
            "confidence_level": "VERY_HIGH",
            "phone_number": "+18001234567"
          },
          {
            "name": "Burger King",
            "type": "merchant",
            "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png",
            "website": "burgerking.com",
            "entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1",
            "confidence_level": "VERY_HIGH",
            "phone_number": null
          }
        ],
        "location": {
          "address": null,
          "city": null,
          "region": null,
          "postal_code": null,
          "country": null,
          "store_number": null,
          "lat": null,
          "lon": null
        },
        "entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1",
        "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png",
        "merchant_name": "Burger King",
        "payment_channel": "online",
        "personal_finance_category": {
          "detailed": "FOOD_AND_DRINK_FAST_FOOD",
          "primary": "FOOD_AND_DRINK",
          "confidence_level": "VERY_HIGH"
        },
        "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_FOOD_AND_DRINK.png",
        "phone_number": null,
        "website": "burgerking.com"
      }
    }
  ],
  "request_id": "Wvhy9PZHQLV8njG"
}
```