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

# Get transaction data

`POST /transactions/get`

Note: All new implementations are encouraged to use `/transactions/sync` rather than `/transactions/get`. `/transactions/sync` provides the same functionality as `/transactions/get` and improves developer ease-of-use for handling transactions updates.

The `/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`; coverage may be limited). For transaction history from investments accounts, use the [Investments endpoint](https://plaid.com/docs/api/products/investments/) instead. 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 `/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 an Item, 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 `/transactions/get` will be the data available for the Item 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 find out when the Item was last updated, use the [Item Debugger](https://plaid.com/docs/account/activity/#troubleshooting-with-item-debugger) or call `/item/get`; the `item.status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, you can use the `/transactions/refresh` endpoint.

Note that data may not be immediately available to `/transactions/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `transactions`, or upon the first call to `/transactions/get`, if it wasn't. To be alerted when transaction data is ready to be fetched, listen for the [`INITIAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#initial_update) and [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhooks. If no transaction history is ready when `/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.

## Request body

- TransactionsGetRequest — TransactionsGetRequest defines the request schema for `/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` TransactionsGetRequestOptions — An optional object to be used with the request. If specified, `options` must not be `null`.
    - `account_ids` string[] — A list of `account_ids` to retrieve for the Item Note: An error will be returned if a provided `account_id` is not associated with the Item.
    - `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.
    - `days_requested` integer — This option only applies to calls for Items that were not initialized with Transactions during Link and are now adding the Transactions product to the Item for the first time. In these cases, this option controls the maximum number of days of transaction history that Plaid will request from the financial institution. For developer accounts created after December 3, 2023, if no value is specified, this will default to 90 days. For developer accounts created on December 3, 2023 or earlier, if no value is specified, this will default to 730 days until June 24, 2024, at which point it will default to 90 days. If Transactions has already been added to the Item prior to this call, this field will have no effect. We strongly recommend that customers utilizing [Recurring Transactions](https://plaid.com/docs/api/products/transactions/#transactionsrecurringget) request at least 180 days of history for optimal results.
  - `access_token` string, required — The access token associated with the Item data is being requested for.
  - `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

- TransactionsGetResponse — TransactionsGetResponse defines the response schema for `/transactions/get`
  - `accounts` AccountBase[], required — An array containing the `accounts` associated with the Item for which transactions are being returned. Each transaction can be mapped to its corresponding account via the `account_id` field.
    - `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. Like all Plaid identifiers, the `account_id` is case sensitive.
    - `balances` AccountBalance, required — A set of fields describing the balance for an account. Balance information may be cached unless the balance object was returned by `/accounts/balance/get`.
      - `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 realtime unless the value was returned by `/accounts/balance/get`. If `current` is `null` this field is guaranteed not to be `null`.
      - `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. 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`; if the Item is enabled for Transactions, the balance will be at least as recent as the most recent Transaction update. If you require realtime balance information, use the `available` balance as provided by `/accounts/balance/get`. When returned by `/accounts/balance/get`, this field may be `null`. When this happens, `available` is guaranteed not to be `null`.
      - `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 oldest acceptable balance when making a request to `/accounts/balance/get`. This field is only used and expected when the institution is `ins_128026` (Capital One) and the Item contains one or more accounts with a non-depository account type, in which case a value must be provided or an `INVALID_REQUEST` error with the code of `INVALID_FIELD` will be returned. For Capital One depository accounts as well as all other account types on all other institutions, this field is ignored. See [account type schema](https://en.wikipedia.org/wiki/ISO_8601) for a full list of account types. If the balance that is pulled is older than the given timestamp for Items with this field required, an `INVALID_REQUEST` error with the code of `LAST_UPDATED_DATETIME_OUT_OF_RANGE` will be returned with the most recent timestamp for the requested account contained in the response.
    - `mask` string, nullable, required — The last 2-4 alphanumeric characters of an account's official account number. Note that the mask may be non-unique between an Item's accounts, and it may also not match the mask that the bank displays to the user.
    - `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' | 'brokerage' | 'cash isa' | 'crypto exchange' | 'education savings account' | 'ebt' | 'fixed annuity' | 'gic' | 'health reimbursement arrangement' | 'hsa' | 'isa' | 'ira' | 'lif' | 'life insurance' | 'lira' | 'lrif' | 'lrsp' | 'non-custodial wallet' | 'non-taxable brokerage account' | 'other' | 'other insurance' | 'other annuity' | 'prif' | 'rdsp' | 'resp' | 'rlif' | 'rrif' | 'pension' | 'profit sharing plan' | 'retirement' | 'roth' | 'roth 401k' | 'rrsp' | 'sep ira' | 'simple ira' | 'sipp' | 'stock plan' | 'thrift savings plan' | 'tfsa' | 'trust' | 'ugma' | 'utma' | 'variable annuity' | 'credit card' | 'paypal' | 'cd' | 'checking' | 'savings' | 'money market' | 'prepaid' | 'auto' | 'business' | 'commercial' | 'construction' | 'consumer' | 'home equity' | 'loan' | 'mortgage' | 'overdraft' | 'line of credit' | 'student' | 'cash management' | 'keogh' | 'mutual fund' | 'recurring' | 'rewards' | 'safe deposit' | 'sarsep' | 'payroll' | 'null', 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' | 'manually_verified' | 'verification_expired' | 'verification_failed' | 'database_matched' | 'database_insights_pass' | 'database_insights_pass_with_caution' | 'database_insights_fail' — The current verification status of an Auth Item initiated through Automated or Manual micro-deposits. Returned for Auth Items only. `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 micro-deposit. `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. `database_matched`: The Item has successfully been verified using Plaid's data sources. `database_insights_pass`: The Item's ACH numbers have been verified using Plaid's data sources and have strong signal for being valid. Note: Database Insights is currently a beta feature, please contact your account manager for more information. `database_insights_pass_with_caution`: The Item's ACH numbers have been verified using Plaid's data sources and have some signal for being valid. Note: Database Insights is currently a beta feature, please contact your account manager for more information. `database_insights_fail`: The Item's ACH numbers have been verified using Plaid's data sources and have signal for being invalid and/or have no signal for being valid. Note: Database Insights is currently a beta feature, please contact your account manager for more information.
    - `verification_insights` AccountVerificationInsights — Insights from performing database verification for the account.
      - `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 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 is currently only supported for Chase Items. Because Chase accounts have a different account number each time they are linked, this field may be used instead of the account number to uniquely identify a Chase account across multiple Items for payments use cases, helping to reduce duplicate Items or attempted fraud. In Sandbox, this field may be populated for any account; in Production and Development, it will only be populated for Chase accounts.
  - `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 transactions's currency, as stated in `iso_currency_code` or `unofficial_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, 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 `iso_currency_code`s.
    - `category` string[], nullable, 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). 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, 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). 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
      - `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. 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 be omitted unless 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.
    - `pending_transaction_id` string, nullable, required — The ID of a posted transaction's associated pending transaction, where applicable.
    - `account_owner` string, nullable, required — The name of the account owner. This field is not typically populated and only relevant when dealing with sub-accounts.
    - `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 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/transactions-personal-finance-category-taxonomy.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.
    - `transaction_code` 'adjustment' | 'atm' | 'bank charge' | 'bill payment' | 'cash' | 'cashback' | 'cheque' | 'direct debit' | 'interest' | 'purchase' | 'standing order' | 'transfer' | 'null', nullable, required — An identifier classifying the transaction type. This field is only populated for European institutions. For institutions in the US and Canada, 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 `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 `purchase:` Purchase made with a debit or credit card `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 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 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.
    - `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.
  - `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.
  - `item` Item, required — Metadata about the Item.
    - `item_id` string, required — The Plaid Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. Like all Plaid identifiers, the `item_id` is case-sensitive.
    - `institution_id` string, nullable — The Plaid Institution ID associated with the Item. Field is `null` for Items created via Same Day Micro-deposits.
    - `webhook` string, nullable, required — The URL registered to receive webhooks for the Item.
    - `error` PlaidError, nullable, required — Errors are identified by `error_code` and categorized by `error_type`. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-`null` error object will only be part of an API response when calling `/item/get` to view Item status. Otherwise, error fields will be `null` if no error has occurred; if an error has occurred, an error code will be returned instead.
      - `error_type` 'INVALID_REQUEST' | 'INVALID_RESULT' | 'INVALID_INPUT' | 'INSTITUTION_ERROR' | 'RATE_LIMIT_EXCEEDED' | 'API_ERROR' | 'ITEM_ERROR' | 'ASSET_REPORT_ERROR' | 'RECAPTCHA_ERROR' | 'OAUTH_ERROR' | 'PAYMENT_ERROR' | 'BANK_TRANSFER_ERROR' | 'INCOME_VERIFICATION_ERROR' | 'MICRODEPOSITS_ERROR', required — A broad categorization of the error. Safe for programmatic use.
      - `error_code` string, required — The particular error code. Safe for programmatic use.
      - `error_message` string, required — A developer-friendly representation of the error code. This may change over time and is not safe for programmatic use.
      - `display_message` string, nullable, required — A user-friendly representation of the error code. `null` if the error is not related to user action. This may change over time and is not safe for programmatic use.
      - `request_id` string — A unique ID identifying the request, to be used for troubleshooting purposes. This field will be omitted in errors provided by webhooks.
      - `causes` unknown[] — In the Assets product, a request can pertain to more than one Item. If an error is returned for such a request, `causes` will return an array of errors containing a breakdown of these errors on the individual Item level, if any can be identified. `causes` will only be provided for the `error_type` `ASSET_REPORT_ERROR`. `causes` will also not be populated inside an error nested within a `warning` object.
        - unknown
      - `status` integer, nullable — The HTTP status code associated with the error. This will only be returned in the response body when the error information is provided via a webhook.
      - `documentation_url` string — The URL of a Plaid documentation page with more information about the error
      - `suggested_action` string, nullable — Suggested steps for resolving the error
    - `available_products` Products[], required — A list of products available for the Item that have not yet been accessed. The contents of this array will be mutually exclusive with `billed_products`.
    - `billed_products` Products[], required — A list of products that have been billed for the Item. The contents of this array will be mutually exclusive with `available_products`. Note - `billed_products` is populated in all environments but only requests in Production are billed. Also note that products that are billed on a pay-per-call basis rather than a pay-per-Item basis, such as `balance`, will not appear here.
    - `products` Products[] — A list of products added to the Item. In almost all cases, this will be the same as the `billed_products` field. For some products, it is possible for the product to be added to an Item but not yet billed (e.g. Assets, before `/asset_report/create` has been called, or Auth or Identity when added as Optional Products but before their endpoints have been called), in which case the product may appear in `products` but not in `billed_products`.
    - `consented_products` Products[] — A list of products that have gone through consent collection for the Item. Only present for those enabled in the [Data Transparency](https://plaid.com/docs/link/data-transparency-messaging-migration-guide) beta. If you are not enrolled in Data Transparency, this field is not used.
    - `consent_expiration_time` string, date-time, nullable, required — The RFC 3339 timestamp after which the consent provided by the end user will expire. Upon consent expiration, the item will enter the `ITEM_LOGIN_REQUIRED` error state. To circumvent the `ITEM_LOGIN_REQUIRED` error and maintain continuous consent, the end user can reauthenticate via Link’s update mode in advance of the consent expiration time. Note - This is only relevant for certain OAuth-based institutions. For all other institutions, this field will be null.
    - `update_type` 'background' | 'user_present_required', required — Indicates whether an Item requires user interaction to be updated, which can be the case for Items with some forms of two-factor authentication. `background` - Item can be updated in the background `user_present_required` - Item requires user interaction to be updated
  - `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

## Changes

- **2024-04-17** `943c632a075c` — 4 warning
  - added the new `profile` enum value to the `item/available_products/items/` response property for the response status `200`
  - added the new `profile` enum value to the `item/billed_products/items/` response property for the response status `200`
  - added the new `profile` enum value to the `item/consented_products/items/` response property for the response status `200`
  - added the new `profile` enum value to the `item/products/items/` response property for the response status `200`
- **2024-02-21** `5de70cc1e6ca` — 24 warning, 102 info
  - removed the request property `options/personal_finance_category_version`
  - removed the optional property `accounts/items/holder_category` from the response with the `200` status
  - removed the optional property `accounts/items/verification_insights/name_match_score` from the response with the `200` status
  - removed the optional property `accounts/items/verification_name` from the response with the `200` status
  - …122 more

[Change history](https://skmtc.dev/plaid/apis/the-plaid-api/changes/transactions/get/post.md)

---

[API](https://skmtc.dev/plaid/apis/the-plaid-api.md) · [All operations](https://skmtc.dev/plaid/apis/the-plaid-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/plaid/the-plaid-api/revisions/a5b45bccb4e8/schema)
