---
title: "Get incremental transaction updates on a processor token"
method: POST
path: "/processor/transactions/sync"
tags: ["plaid"]
---

# Get incremental transaction updates on a processor token

`POST /processor/transactions/sync`

This endpoint replaces `/processor/transactions/get` and its associated webhooks for most common use-cases.

The `/processor/transactions/sync` endpoint allows developers to subscribe to all transactions associated with a processor token and get updates synchronously in a stream-like manner, using a cursor to track which updates have already been seen. `/processor/transactions/sync` provides the same functionality as `/processor/transactions/get` and can be used instead of `/processor/transactions/get` to simplify the process of tracking transactions updates.

This endpoint provides 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 `/investments/transactions/get` instead.

Returned transactions data is grouped into three types of update, indicating whether the transaction was added, removed, or modified since the last call to the API.

In the first call to `/processor/transactions/sync` for a processor token, the endpoint will return all historical transactions data associated with that processor token up until the time of the API call (as "adds"), which then generates a `next_cursor` for that processor token. In subsequent calls, send the `next_cursor` to receive only the changes that have occurred since the previous call.

Due to the potentially large number of transactions associated with a processor token, results are paginated. The `has_more` field specifies if additional calls are necessary to fetch all available transaction updates. Call `/processor/transactions/sync` with the new cursor, pulling all updates, until `has_more` is `false`.

When retrieving paginated updates, track both the `next_cursor` from the latest response and the original cursor from the first call in which `has_more` was `true`; if a call to `/processor/transactions/sync` fails when retrieving a paginated update, which can occur as a result of the [`TRANSACTIONS_SYNC_MUTATION_DURING_PAGINATION`](https://plaid.com/docs/errors/transactions/#transactions_sync_mutation_during_pagination) error, the entire pagination request loop must be restarted beginning with the cursor for the first page of the update, rather than retrying only the single request that failed.

Whenever new or updated transaction data becomes available, `/processor/transactions/sync` will provide these updates. 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, use the `/processor/transactions/refresh` endpoint.

Note that for newly created processor tokens, data may not be immediately available to `/processor/transactions/sync`. Plaid begins preparing transactions data when the corresponding Item is created, but the process can take anywhere from a few seconds to several minutes to complete, depending on the number of transactions available.

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

## Request body

- ProcessorTransactionsSyncRequest — ProcessorTransactionsSyncRequest defines the request schema for `/processor/transactions/sync`
  - `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.
  - `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.
  - `cursor` string — The cursor value represents the last update requested. Providing it will cause the response to only return changes after this update. If omitted, the entire history of updates will be returned, starting with the first-added transactions on the item. Note: The upper-bound length of this cursor is 256 characters of base64.
  - `count` integer — The number of transaction updates to fetch.
  - `options` TransactionsSyncRequestOptions — An optional object to be used with the request. If specified, `options` must not be `null`.
    - `include_original_description` boolean, nullable — Include the raw unparsed transaction description from the financial institution. This field is disabled by default. If you need this information in addition to the parsed data provided, contact your Plaid Account Manager or submit a [Support request](https://dashboard.plaid.com/support/new/product-and-development/product-troubleshooting/product-functionality).
    - `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.

## Response `200`

OK

- ProcessorTransactionsSyncResponse — ProcessorTransactionsSyncResponse defines the response schema for `/processor/transactions/sync`
  - `added` Transaction[], required — Transactions that have been added to the Item since `cursor` ordered by ascending last modified time.
    - `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 is in beta and will be omitted unless the client is both enrolled in the closed beta program and 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.
  - `modified` Transaction[], required — Transactions that have been modified on the Item since `cursor` ordered by ascending last modified time.
    - `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 is in beta and will be omitted unless the client is both enrolled in the closed beta program and 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.
  - `removed` RemovedTransaction[], required — Transactions that have been removed from the Item since `cursor` ordered by ascending last modified time.
    - `transaction_id` string — The ID of the removed transaction.
  - `next_cursor` string, required — Cursor used for fetching any future updates after the latest update provided in this response. The cursor obtained after all pages have been pulled (indicated by `has_more` being `false`) will be valid for at least 1 year. This cursor should be persisted for later calls. If transactions are not yet available, this will be an empty string.
  - `has_more` boolean, required — Represents if more than requested count of transaction updates exist. If true, the additional updates can be fetched by making an additional request with `cursor` set to `next_cursor`. If `has_more` is true, it’s important to pull all available pages, to make it less likely for underlying data changes to conflict with pagination.
  - `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-02-21** `5de70cc1e6ca` — 4 breaking, 13 warning, 17 info
  - the response property `removed/items/transaction_id` became optional for the status `200`
  - removed the required property `account` from the response with the `200` status
  - removed the required property `removed/items/account_id` from the response with the `200` status
  - removed the required property `transactions_update_status` from the response with the `200` status
  - …30 more

[Change history](https://skmtc.dev/plaid/apis/the-plaid-api/changes/processor/transactions/sync/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/5de70cc1e6ca/schema)
