---
title: "Get transaction data"
method: POST
path: "/processor/transactions/get"
tags: ["plaid"]
---

# Get transaction data

`POST /processor/transactions/get`

The `/processor/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student` or `mortgage`; coverage may be limited). Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available.

Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.  Transactions are not immutable and can also be removed altogether by the institution; a removed transaction will no longer appear in `/processor/transactions/get`.  For more details, see [Pending and posted transactions](https://plaid.com/docs/transactions/transactions-data/#pending-and-posted-transactions).

Due to the potentially large number of transactions associated with a processor token, results are paginated. Manipulate the `count` and `offset` parameters in conjunction with the `total_transactions` response body field to fetch all available transactions.

Data returned by `/processor/transactions/get` will be the data available for the processor token as of the most recent successful check for new transactions. Plaid typically checks for new data multiple times a day, but these checks may occur less frequently, such as once a day, depending on the institution. To force Plaid to check for new transactions, you can use the `/processor/transactions/refresh` endpoint.

Note that data may not be immediately available to `/processor/transactions/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `transactions`, or upon the first call to `/processor/transactions/get`, if it wasn't. If no transaction history is ready when `/processor/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.

To receive Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint.

## Request body

- ProcessorTransactionsGetRequest — ProcessorTransactionsGetRequest defines the request schema for `/processor/transactions/get`
  - `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.
  - `options` ProcessorTransactionsGetRequestOptions — An optional object to be used with the request. If specified, `options` must not be `null`.
    - `count` integer — The number of transactions to fetch.
    - `offset` integer — The number of transactions to skip. The default value is 0.
    - `include_original_description` boolean, nullable — Include the raw unparsed transaction description from the financial institution.
    - `include_personal_finance_category_beta` boolean — Personal finance categories are now returned by default.
    - `include_personal_finance_category` boolean — Personal finance categories are now returned by default.
    - `include_logo_and_counterparty_beta` boolean — Counterparties and extra merchant fields are now returned by default.
  - `processor_token` string, required — The processor token obtained from the Plaid integration partner. Processor tokens are in the format: `processor-<environment>-<identifier>`
  - `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.
  - `start_date` string, date, required — The earliest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.
  - `end_date` string, date, required — The latest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.

## Response `200`

OK

- ProcessorTransactionsGetResponse — ProcessorTransactionsGetResponse defines the response schema for `/processor/transactions/get`
  - `account` AccountBase, required — A single account at a financial institution.
    - `account_id` string, required — Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. The `account_id` can also change if the `access_token` is deleted and the same credentials that were used to generate that `access_token` are used to generate a new `access_token` on a later date. In that case, the new `account_id` will be different from the old `account_id`. If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. When using a CRA endpoint (an endpoint associated with Plaid Check Consumer Report, i.e. any endpoint beginning with `/cra/`), the `account_id` returned will not match the `account_id` returned by a non-CRA endpoint. Like all Plaid identifiers, the `account_id` is case sensitive.
    - `balances` AccountBalance, required — A set of fields describing the balance for an account. For real-time values, use `/accounts/balance/get` or `/signal/evaluate` (with a Balance-only ruleset), which are fetched live from the institution at request time. Values returned by other endpoints may be cached, or adjusted by Plaid to reflect transaction activity received since the last refresh.
      - `available` number, double, nullable, required — The amount of funds available to be withdrawn from the account, as determined by the financial institution. For `credit`-type accounts, the `available` balance typically equals the `limit` less the `current` balance, less any pending outflows plus any pending inflows. For `depository`-type accounts, the `available` balance typically equals the `current` balance less any pending outflows plus any pending inflows. For `depository`-type accounts, the `available` balance does not include the overdraft limit. For `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier), the `available` balance is the total cash available to withdraw as presented by the institution. Note that not all institutions calculate the `available` balance. In the event that `available` balance is unavailable, Plaid will return an `available` balance value of `null`. Available balance may be cached and is not guaranteed to be up-to-date in real-time unless the value was returned by `/accounts/balance/get`, or by `/signal/evaluate` with a Balance-only ruleset. If `current` is `null` this field is guaranteed not to be `null`, unless you have opted into enabling [limited-purpose checking accounts](https://plaid.com/docs/auth/#enabling-limited-purpose-checking-accounts-for-rent-or-mortgage), which always have `null` values for both `available` and `current` balance.
      - `current` number, double, nullable, required — The total amount of funds in or owed by the account. For `credit`-type accounts, a positive balance indicates the amount owed; a negative amount indicates the lender owing the account holder. For `loan`-type accounts, the current balance is the principal remaining on the loan, except in the case of student loan accounts at Sallie Mae (`ins_116944`). For Sallie Mae student loans, the account's balance includes both principal and any outstanding interest. Similar to `credit`-type accounts, a positive balance is typically expected, while a negative amount indicates the lender owing the account holder. For `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier), the current balance is the total value of assets as presented by the institution. Note that balance information may be cached unless the value was returned by `/accounts/balance/get` or by `/signal/evaluate` with a Balance-only ruleset; if the Item is enabled for Transactions, the balance will be at least as recent as the most recent Transaction update. If you require real-time balance information, use the `available` balance as provided by `/accounts/balance/get` or `/signal/evaluate` called with a Balance-only `ruleset_key`. When returned by `/accounts/balance/get`, this field may be `null`. When this happens, `available` is guaranteed not to be `null`, unless you have opted into enabling [limited-purpose checking accounts](https://plaid.com/docs/auth/#enabling-limited-purpose-checking-accounts-for-rent-or-mortgage), which always have `null` values for both `available` and `current` balance.
      - `limit` number, double, nullable, required — For `credit`-type accounts, this represents the credit limit. For `depository`-type accounts, this represents the pre-arranged overdraft limit, which is common for current (checking) accounts in Europe. In North America, this field is typically only available for `credit`-type accounts.
      - `iso_currency_code` string, nullable, required — The ISO-4217 currency code of the balance. Always null if `unofficial_currency_code` is non-null.
      - `unofficial_currency_code` string, nullable, required — The unofficial currency code associated with the balance. Always null if `iso_currency_code` is non-null. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s.
      - `last_updated_datetime` string, date-time, nullable — Timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the last time the balance was updated. This field is returned only when the institution is `ins_128026` (Capital One).
    - `mask` string, nullable, required — The last 2-4 alphanumeric characters of either the account's displayed mask or the account's official account number. Note that the mask may be non-unique between an Item's accounts.
    - `name` string, required — The name of the account, either assigned by the user or by the financial institution itself
    - `official_name` string, nullable, required — The official name of the account as given by the financial institution
    - `type` 'investment' | 'credit' | 'depository' | 'loan' | 'brokerage' | 'other', required — `investment:` Investment account. In API versions 2018-05-22 and earlier, this type is called `brokerage` instead. `credit:` Credit card `depository:` Depository account `loan:` Loan account `other:` Non-specified account type See the [Account type schema](https://plaid.com/docs/api/accounts#account-type-schema) for a full listing of account types and corresponding subtypes.
    - `subtype` '401a' | '401k' | '403B' | '457b' | '529' | 'auto' | 'brokerage' | 'business' | 'cash isa' | 'cash management' | 'cd' | 'checking' | 'commercial' | 'construction' | 'consumer' | 'credit card' | 'crypto exchange' | 'ebt' | 'education savings account' | 'fhsa' | 'fixed annuity' | 'gic' | 'health reimbursement arrangement' | 'home equity' | 'hsa' | 'isa' | 'ira' | 'keogh' | 'lif' | 'life insurance' | 'limited purpose checking' | 'line of credit' | 'lira' | 'loan' | 'lrif' | 'lrsp' | 'money market' | 'mortgage' | 'mutual fund' | 'non-custodial wallet' | 'non-taxable brokerage account' | 'other' | 'other insurance' | 'other annuity' | 'overdraft' | 'paypal' | 'payroll' | 'pension' | 'prepaid' | 'prif' | 'profit sharing plan' | 'qshr' | 'rdsp' | 'resp' | 'retirement' | 'rlif' | 'roth' | 'roth 401k' | 'roth 403B' | 'roth 457b' | 'roth pension' | 'roth profit sharing plan' | 'roth thrift savings plan' | 'rrif' | 'rrsp' | 'sarsep' | 'savings' | 'sep ira' | 'simple ira' | 'sipp' | 'stock plan' | 'student' | 'thrift savings plan' | 'tfsa' | 'trust' | 'ugma' | 'utma' | 'variable annuity', nullable, required — See the [Account type schema](https://plaid.com/docs/api/accounts/#account-type-schema) for a full listing of account types and corresponding subtypes.
    - `verification_status` 'automatically_verified' | 'pending_automatic_verification' | 'pending_manual_verification' | 'unsent' | 'manually_verified' | 'verification_expired' | 'verification_failed' | 'database_matched' | 'database_insights_pass' | 'database_insights_pass_with_caution' | 'database_insights_fail' — Indicates an Item's micro-deposit-based verification or database verification status. This field is only populated when using Auth and falling back to micro-deposit or database verification. Possible values are: `pending_automatic_verification`: The Item is pending automatic verification. `pending_manual_verification`: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the code. `automatically_verified`: The Item has successfully been automatically verified. `manually_verified`: The Item has successfully been manually verified. `verification_expired`: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link. `verification_failed`: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link. `unsent`: The Item is pending micro-deposit verification, but Plaid has not yet sent the micro-deposit. `database_insights_fail`: The Item's numbers have been verified using Plaid's data sources and have signal for being invalid and/or have no signal for being valid. Typically this indicates that the routing number is invalid, the account number does not match the account number format associated with the routing number, or the account has been reported as closed or frozen. Only returned for Auth Items created via Database Auth. `database_insights_pass`: The Item's numbers have been verified using Plaid's data sources: the routing and account number match a routing and account number of an account recognized on the Plaid network, and the account is not known by Plaid to be frozen or closed. Only returned for Auth Items created via Database Auth. `database_insights_pass_with_caution`: The Item's numbers have been verified using Plaid's data sources and have some signal for being valid: the routing and account number were not recognized on the Plaid network, but the routing number is valid and the account number is a potential valid account number for that routing number. Only returned for Auth Items created via Database Auth. `database_matched`: (deprecated) The Item has successfully been verified using Plaid's data sources. Only returned for Auth Items created via Database Match. `null` or empty string: Neither micro-deposit-based verification nor database verification are being used for the Item.
    - `verification_name` string — The account holder name that was used for micro-deposit and/or database verification. Only returned for Auth Items created via micro-deposit or database verification. This name was manually-entered by the user during Link, unless it was otherwise provided via the `user.legal_name` request field in `/link/token/create` for the Link session that created the Item.
    - `verification_insights` AccountVerificationInsights — Insights from performing database verification for the account. Only returned for Auth Items using Database Auth.
      - `name_match_score` integer, nullable — Indicates the score of the name match between the given name provided during database verification (available in the [`verification_name`](https://plaid.com/docs/api/products/auth/#auth-get-response-accounts-verification-name) field if using standard Database Auth, or provided in the request if using `/auth/verify`) and matched Plaid network accounts. If defined, will be a value between 0 and 100. Will be undefined if name matching was not enabled for the database verification session or if there were no eligible Plaid network matches to compare the given name with.
      - `network_status` AccountVerificationInsightsNetworkStatus, required — Status information about the account and routing number in the Plaid network.
        - `has_numbers_match` boolean, required — Indicates whether we found at least one matching account for the ACH account and routing number.
        - `is_numbers_match_verified` boolean, required — Indicates if at least one matching account for the ACH account and routing number is already verified.
      - `previous_returns` AccountVerificationInsightsPreviousReturns — Information about known ACH returns for the account and routing number.
        - `has_previous_administrative_return` boolean, required — Indicates whether Plaid's data sources include a known administrative ACH return for this account and routing number.
      - `account_number_format` 'valid' | 'invalid' | 'unknown', required — Indicator of account number format validity for institution. `valid`: indicates that the account number has a correct format for the institution. `invalid`: indicates that the account number has an incorrect format for the institution. `unknown`: indicates that there was not enough information to determine whether the format is correct for the institution.
    - `persistent_account_id` string — A unique and persistent identifier for accounts that can be used to trace multiple instances of the same account across different Items for depository accounts. This field is currently supported only for Items at institutions that use Tokenized Account Numbers (i.e., Chase, PNC, and US Bank). Because these accounts have a different account number each time they are linked, this field may be used instead of the account number to uniquely identify an account across multiple Items for payments use cases, helping to reduce duplicate Items or attempted fraud. In Sandbox, this field is populated for TAN-based institutions (`ins_56`, `ins_13`, `ins_127990`) as well as the OAuth Sandbox institution (`ins_127287`); in Production, it will only be populated for accounts at applicable institutions.
    - `holder_category` 'business' | 'personal' | 'unrecognized', nullable — Indicates the account's categorization as either a personal or a business account. This field is currently in beta; to request access, contact your account manager.
  - `transactions` Transaction[], required — An array containing transactions from the account. Transactions are returned in reverse chronological order, with the most recent at the beginning of the array. The maximum number of transactions returned is determined by the `count` parameter.
    - `account_id` string, required — The ID of the account in which this transaction occurred.
    - `amount` number, double, required — The settled value of the transaction, denominated in the transaction's currency, as stated in `iso_currency_code` or `unofficial_currency_code`. For all products except Income: 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. For Income endpoints, values are positive when representing income.
    - `iso_currency_code` string, nullable, required — The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-null.
    - `unofficial_currency_code` string, nullable, required — The unofficial currency code associated with the transaction. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s.
    - `category` string[], nullable — 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). All Transactions implementations are recommended to use the new `personal_finance_category` instead of `category`, as it provides greater accuracy and more meaningful categorization. If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights.
    - `category_id` string, nullable — 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). All Transactions implementations are recommended to use the new `personal_finance_category` instead of `category`, as it provides greater accuracy and more meaningful categorization. If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights.
    - `check_number` string, nullable — The check number of the transaction. This field is only populated for check transactions.
    - `date` string, date, required — For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted. Both dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DD` ). To receive information about the date that a posted transaction was initiated, see the `authorized_date` field.
    - `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.
    - `name` string, required — The merchant name or transaction description. Note: While Plaid does not currently plan to remove this field, it is a legacy field that is not actively maintained. Use `merchant_name` instead for the merchant name. If the `transactions` object was returned by a Transactions endpoint such as `/transactions/sync` or `/transactions/get`, this field will always appear. If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights.
    - `merchant_name` string, nullable — The merchant name, as enriched by Plaid from the `name` field. This is typically a more human-readable version of the merchant counterparty in the transaction. For some bank transactions (such as checks or account transfers) where there is no meaningful merchant name, this value will be `null`.
    - `original_description` string, nullable — The string returned by the financial institution to describe the transaction. For transactions returned by `/transactions/sync` or `/transactions/get`, this field will only be included if the client has set `options.include_original_description` to `true`.
    - `payment_meta` PaymentMeta, required — Transaction information specific to inter-bank transfers. If the transaction was not an inter-bank transfer, all fields will be `null`. If the `transactions` object was returned by a Transactions endpoint such as `/transactions/sync` or `/transactions/get`, the `payment_meta` key will always appear, but no data elements are guaranteed. If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights.
      - `reference_number` string, nullable, required — The transaction reference number supplied by the financial institution.
      - `ppd_id` string, nullable, required — The ACH PPD ID for the payer.
      - `payee` string, nullable, required — For transfers, the party that is receiving the transaction.
      - `by_order_of` string, nullable, required — The party initiating a wire transfer. Will be `null` if the transaction is not a wire transfer.
      - `payer` string, nullable, required — For transfers, the party that is paying the transaction.
      - `payment_method` string, nullable, required — The type of transfer, e.g. 'ACH'
      - `payment_processor` string, nullable, required — The name of the payment processor
      - `reason` string, nullable, required — The payer-supplied description of the transfer.
    - `pending` boolean, required — When `true`, identifies the transaction as pending or unsettled. Pending transaction details (name, type, amount, category ID) may change before they are settled. Not all institutions provide pending transactions.
    - `pending_transaction_id` string, nullable, required — The ID of a posted transaction's associated pending transaction, where applicable. Not all institutions provide pending transactions.
    - `account_owner` string, nullable, required — This field is not typically populated and only relevant when dealing with sub-accounts. A sub-account most commonly exists in cases where a single account is linked to multiple cards, each with its own card number and card holder name; each card will be considered a sub-account. If the account does have sub-accounts, this field will typically be some combination of the sub-account owner's name and/or the sub-account mask. The format of this field is not standardized and will vary based on institution.
    - `transaction_id` string, required — The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive.
    - `transaction_type` 'digital' | 'place' | 'special' | 'unresolved' — Please use the `payment_channel` field, `transaction_type` will be deprecated in the future. `digital:` transactions that took place online. `place:` transactions that were made at a physical location. `special:` transactions that relate to banks, e.g. fees or deposits. `unresolved:` transactions that do not fit into the other three types.
    - `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.
    - `website` string, nullable — The website associated with this transaction, if available.
    - `authorized_date` string, date, nullable, required — The date that the transaction was authorized. For posted transactions, the `date` field will indicate the posted date, but `authorized_date` will indicate the day the transaction was authorized by the financial institution. If presenting transactions to the user in a UI, the `authorized_date`, when available, is generally preferable to use over the `date` field for posted transactions, as it will generally represent the date the user actually made the transaction. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DD` ).
    - `authorized_datetime` string, date-time, nullable, required — Date and time when a transaction was authorized in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ). For posted transactions, the `datetime` field will indicate the posted date, but `authorized_datetime` will indicate the day the transaction was authorized by the financial institution. If presenting transactions to the user in a UI, the `authorized_datetime`, when available, is generally preferable to use over the `datetime` field for posted transactions, as it will generally represent the date the user actually made the transaction. This field is returned for select financial institutions and comes as provided by the institution. It may contain default time values (such as 00:00:00). This field is only populated in API version 2019-05-29 and later.
    - `datetime` string, date-time, nullable, required — Date and time when a transaction was posted in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ). For the date that the transaction was initiated, rather than posted, see the `authorized_datetime` field. This field is returned for select financial institutions and comes as provided by the institution. It may contain default time values (such as 00:00:00). This field is only populated in API version 2019-05-29 and later.
    - `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. This field replaces the `transaction_type` field.
    - `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.
    - `business_finance_category` BusinessFinanceCategory, nullable — Information describing the intent of the transaction. Most relevant for business finance use cases, but not limited to such use cases.
      - `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.
    - `transaction_code` 'adjustment' | 'atm' | 'bank charge' | 'bill payment' | 'cash' | 'cash advance' | 'cashback' | 'cheque' | 'direct debit' | 'interest' | 'late fee' | 'membership fee' | 'payment' | 'purchase' | 'refund' | 'returned item fee' | 'standing order' | 'transfer' | 'null', nullable, required — An identifier classifying the transaction type. This field is populated for European institutions, as well as certain institutions in the United States. For institutions where this classification is not available, this field is set to `null`. `adjustment:` Bank adjustment `atm:` Cash deposit or withdrawal via an automated teller machine `bank charge:` Charge or fee levied by the institution `bill payment`: Payment of a bill `cash:` Cash deposit or withdrawal `cash advance:` Cash advance drawn against a credit card or line of credit `cashback:` Cash withdrawal while making a debit card purchase `cheque:` Document ordering the payment of money to another person or organization `direct debit:` Automatic withdrawal of funds initiated by a third party at a regular interval `interest:` Interest earned or incurred `late fee:` Fee associated with a late or past-due payment `membership fee:` Annual or recurring membership fee `payment:` One-off outbound payment not classified as a bill payment, direct debit, or standing order `purchase:` Purchase made with a debit or credit card `refund:` Merchant credit or return, such as a refund of a prior purchase `returned item fee:` Fee for a returned item, such as a returned check or stop payment `standing order:` Payment instructed by the account holder to a third party at a regular interval `transfer:` Transfer of money between accounts
    - `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` TransactionCounterparty[] — 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.
      - `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.
    - `merchant_entity_id` string, nullable — A unique, stable, Plaid-generated ID that maps to the merchant. In the case of a merchant with multiple retail locations, this field will map to the broader merchant, not a specific location or store.
    - `client_customization` ClientCustomization, nullable — 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.
  - `total_transactions` integer, required — The total number of transactions available within the date range specified. If `total_transactions` is larger than the size of the `transactions` array, more transactions are available and can be fetched via manipulating the `offset` parameter.
  - `request_id` string, required — A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.

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