Transactions
API reference for Transactions endpoints and webhooks
Retrieve and refresh 24 months of historical transaction data, including geolocation, merchant, and category information.
Endpoints | |
---|---|
/transactions/sync | Get transaction data or incremental transaction updates |
/transactions/get | Fetch transaction data |
/transactions/recurring/get | Fetch recurring transaction data |
/transactions/refresh | Refresh transaction data |
/categories/get | Fetch all transaction categories |
Webhooks | |
---|---|
SYNC_UPDATES_AVAILABLE | New updates available |
INITIAL_UPDATE | Initial transactions ready |
HISTORICAL_UPDATE | Historical transactions ready |
DEFAULT_UPDATE | New transactions available |
TRANSACTIONS_REMOVED | Deleted transactions detected |
Endpoints
/transactions/sync
Get incremental transaction updates on an Item
This endpoint replaces /transactions/get
and its associated webhooks for most common use-cases.
The /transactions/sync
endpoint allows developers to subscribe to all transactions associated with an Item and get updates synchronously in a stream-like manner, using a cursor to track which updates have already been seen. /transactions/sync
provides the same functionality as /transactions/get
and can be used instead of /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 /transactions/sync
for an Item, the endpoint will return all historical transactions data associated with that Item up until the time of the API call (as "adds"), which then generates a latest_cursor
for that Item. In subsequent calls, send the latest_cursor
to receive only the changes that have occurred since the previous call.
Due to the potentially large number of transactions associated with an Item, results are paginated. The has_more
field specifies if additional calls are necessary to fetch all available transaction updates.
Whenever new or updated transaction data becomes available, /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. An Item's status.transactions.last_successful_update
field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, use the /transactions/refresh
endpoint.
Note that for newly created Items, data may not be immediately available to /transactions/sync
. Plaid begins preparing transactions data when the 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 be alerted when new data is available, listen for the SYNC_UPDATES_AVAILABLE
webhook.
Request fields and example
client_id stringYour 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. | ||
access_token requiredstringThe access token associated with the Item data is being requested for. | ||
secret stringYour 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 stringThe 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 integerThe number of transaction updates to fetch. Default: 100 Minimum: 1 Maximum: 500 Exclusive min: false | ||
options objectAn optional object to be used with the request. If specified, options must not be null .
|
1// Provide a cursor from your database if you've previously2// received one for the Item. Leave null if this is your3// first sync call for this Item. The first request will4// return a cursor.5let cursor = database.getLatestCursorOrNull(itemId);67// New transaction updates since "cursor"8let added: Array<Transaction> = [];9let modified: Array<Transaction> = [];10// Removed transaction ids11let removed: Array<RemovedTransaction> = [];12let hasMore = true;1314// Iterate through each page of new transaction updates for item15while (hasMore) {16 const request: TransactionsSyncRequest = {17 access_token: accessToken,18 cursor: cursor,19 };20 const response = await client.transactionsSync(request)21 const data = response.data;2223 // Add this page of results24 added = added.concat(data.added);25 modified = modified.concat(data.modified);26 removed = removed.concat(data.removed);2728 hasMore = data.has_more;2930 // Update cursor to the next cursor31 cursor = data.next_cursor;32}3334// Persist cursor and updated data35database.applyUpdates(itemId, added, modified, removed, cursor);
Response fields and example
added [object]Transactions that have been added to the item since cursor ordered by ascending last modified time.
| ||||||||||||||||||||||||||||||||||||||||||
modified [object]Transactions that have been modified on the item since cursor ordered by ascending last modified time.
| ||||||||||||||||||||||||||||||||||||||||||
removed [object]Transactions that have been removed from the item since cursor ordered by ascending last modified time.
| ||||||||||||||||||||||||||||||||||||||||||
next_cursor stringCursor used for fetching any future updates after the latest update provided in this response. | ||||||||||||||||||||||||||||||||||||||||||
has_more booleanRepresents 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 . | ||||||||||||||||||||||||||||||||||||||||||
request_id stringA unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive. |
1{2 "added": [3 {4 "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp",5 "amount": 2307.21,6 "iso_currency_code": "USD",7 "unofficial_currency_code": null,8 "category": [9 "Shops",10 "Computers and Electronics"11 ],12 "category_id": "19013000",13 "check_number": null,14 "date": "2022-02-03",15 "datetime": "2022-02-03T11:00:00Z",16 "authorized_date": "2022-02-03",17 "authorized_datetime": "2022-02-03T10:34:50Z",18 "location": {19 "address": "300 Post St",20 "city": "San Francisco",21 "region": "CA",22 "postal_code": "94108",23 "country": "US",24 "lat": 40.740352,25 "lon": -74.001761,26 "store_number": "1235"27 },28 "name": "Apple Store",29 "merchant_name": "Apple",30 "payment_meta": {31 "by_order_of": null,32 "payee": null,33 "payer": null,34 "payment_method": null,35 "payment_processor": null,36 "ppd_id": null,37 "reason": null,38 "reference_number": null39 },40 "payment_channel": "in store",41 "pending": false,42 "pending_transaction_id": null,43 "account_owner": null,44 "transaction_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje",45 "transaction_code": null46 }47 ],48 "modified": [49 {50 "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp",51 "amount": 98.05,52 "iso_currency_code": "USD",53 "unofficial_currency_code": null,54 "category": [55 "Service",56 "Utilities",57 "Electric"58 ],59 "category_id": "18068005",60 "check_number": null,61 "date": "2022-02-28",62 "datetime": "2022-02-28T11:00:00Z",63 "authorized_date": "2022-02-28",64 "authorized_datetime": "2022-02-28T10:34:50Z",65 "location": {66 "address": null,67 "city": null,68 "region": null,69 "postal_code": null,70 "country": null,71 "lat": null,72 "lon": null,73 "store_number": null74 },75 "name": "ConEd Bill Payment",76 "merchant_name": "ConEd",77 "payment_meta": {78 "by_order_of": null,79 "payee": null,80 "payer": null,81 "payment_method": null,82 "payment_processor": null,83 "ppd_id": null,84 "reason": null,85 "reference_number": null86 },87 "payment_channel": "online",88 "pending": false,89 "pending_transaction_id": null,90 "account_owner": null,91 "transaction_id": "yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0",92 "transaction_code": null93 }94 ],95 "removed": [96 {97 "transaction_id": "CmdQTNgems8BT1B7ibkoUXVPyAeehT3Tmzk0l"98 }99 ],100 "next_cursor": "tVUUL15lYQN5rBnfDIc1I8xudpGdIlw9nsgeXWvhOfkECvUeR663i3Dt1uf/94S8ASkitgLcIiOSqNwzzp+bh89kirazha5vuZHBb2ZA5NtCDkkV",101 "has_more": false,102 "request_id": "45QSn"103}
Was this helpful?
/transactions/get
Get transaction data
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 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.
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. An Item's 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
and HISTORICAL_UPDATE
webhooks. If no transaction history is ready when /transactions/get
is called, it will return a PRODUCT_NOT_READY
error.
Request fields and example
client_id stringYour 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 objectAn optional object to be used with the request. If specified, options must not be null .
| ||||||
access_token requiredstringThe access token associated with the Item data is being requested for. | ||||||
secret stringYour 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 requiredstringThe earliest date for which data should be returned. Dates should be formatted as YYYY-MM-DD. Format: date | ||||||
end_date requiredstringThe latest date for which data should be returned. Dates should be formatted as YYYY-MM-DD. Format: date |
1const request: TransactionsGetRequest = {2 access_token: accessToken,3 start_date: '2018-01-01',4 end_date: '2020-02-01'5};6try {7 const response = await client.transactionsGet(request);8 let transactions = response.data.transactions;9 const total_transactions = response.data.total_transactions;10 // Manipulate the offset parameter to paginate11 // transactions and retrieve all available data12 while (transactions.length < total_transactions) {13 const paginatedRequest: TransactionsGetRequest = {14 access_token: accessToken,15 start_date: '2018-01-01',16 end_date: '2020-02-01',17 options: {18 offset: transactions.length,19 },20 };21 const paginatedResponse = await client.transactionsGet(paginatedRequest);22 transactions = transactions.concat(23 paginatedResponse.data.transactions,24 );25 }26} catch((err) => {27 // handle error28}
Response fields and example
accounts [object]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.
| ||||||||||||||||||||||||||||||||||||||||||
transactions [object]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.
| ||||||||||||||||||||||||||||||||||||||||||
total_transactions integerThe 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 objectMetadata about the Item.
| ||||||||||||||||||||||||||||||||||||||||||
request_id stringA unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive. |
1{2 "accounts": [3 {4 "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp",5 "balances": {6 "available": 110,7 "current": 110,8 "iso_currency_code": "USD",9 "limit": null,10 "unofficial_currency_code": null11 },12 "mask": "0000",13 "name": "Plaid Checking",14 "official_name": "Plaid Gold Standard 0% Interest Checking",15 "subtype": "checking",16 "type": "depository"17 }18 ],19 "transactions": [20 {21 "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp",22 "amount": 2307.21,23 "iso_currency_code": "USD",24 "unofficial_currency_code": null,25 "category": [26 "Shops",27 "Computers and Electronics"28 ],29 "category_id": "19013000",30 "check_number": null,31 "date": "2017-01-29",32 "datetime": "2017-01-27T11:00:00Z",33 "authorized_date": "2017-01-27",34 "authorized_datetime": "2017-01-27T10:34:50Z",35 "location": {36 "address": "300 Post St",37 "city": "San Francisco",38 "region": "CA",39 "postal_code": "94108",40 "country": "US",41 "lat": 40.740352,42 "lon": -74.001761,43 "store_number": "1235"44 },45 "name": "Apple Store",46 "merchant_name": "Apple",47 "payment_meta": {48 "by_order_of": null,49 "payee": null,50 "payer": null,51 "payment_method": null,52 "payment_processor": null,53 "ppd_id": null,54 "reason": null,55 "reference_number": null56 },57 "payment_channel": "in store",58 "pending": false,59 "pending_transaction_id": null,60 "account_owner": null,61 "transaction_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje",62 "transaction_code": null,63 "transaction_type": "place"64 }65 ],66 "item": {67 "available_products": [68 "balance",69 "identity",70 "investments"71 ],72 "billed_products": [73 "assets",74 "auth",75 "liabilities",76 "transactions"77 ],78 "consent_expiration_time": null,79 "error": null,80 "institution_id": "ins_3",81 "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6",82 "update_type": "background",83 "webhook": "https://www.genericwebhookurl.com/webhook"84 },85 "total_transactions": 1,86 "request_id": "45QSn"87}
Was this helpful?
/transactions/recurring/get
Fetch recurring transaction streams
The /transactions/recurring/get
endpoint allows developers to receive a summary of the recurring outflow and inflow streams (expenses and deposits) from a user’s checking, savings or credit card accounts. Additionally, Plaid provides key insights about each recurring stream including the category, merchant, last amount, and more. Developers can use these insights to build tools and experiences that help their users better manage cash flow, monitor subscriptions, reduce spend, and stay on track with bill payments.
This endpoint is not included by default as part of Transactions. To request access to this endpoint and learn more about pricing, contact your Plaid account manager.
Note that unlike /transactions/get
, /transactions/recurring/get
will not initialize an Item with Transactions. The Item must already have been initialized with Transactions (either during Link, by specifying it in /link/token/create
, or after Link, by calling /transactions/get
) before calling this endpoint. Data is available to /transactions/recurring/get
approximately 5 seconds after the HISTORICAL_UPDATE
webhook has fired (about 1-2 minutes after initialization).
After the initial call, you can call /transactions/recurring/get
endpoint at any point in the future to retrieve the latest summary of recurring streams. Since recurring streams do not change often, it will typically not be necessary to call this endpoint more than once per day.
Request fields and example
client_id stringYour 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. | |
access_token requiredstringThe access token associated with the Item data is being requested for. | |
secret stringYour Plaid API secret . The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body. | |
options objectAn optional object to be used with the request. If specified, options must not be null .
| |
account_ids required[string]A list of account_ids to retrieve for the ItemNote: An error will be returned if a provided account_id is not associated with the Item. |
1const request: TransactionsGetRequest = {2 access_token: accessToken,3 account_ids : accountIds,4};5try {6 const response = await client.transactionsRecurringGet(request);7 let inflowStreams = response.data.inflowStreams;8 let outflowStreams = response.data.outflowStreams;9 }10} catch((err) => {11 // handle error12}
Response fields and example
inflow_streams [object]An array of depository transaction streams.
| |||||||||||||||||||||||
outflow_streams [object]An array of expense transaction streams.
| |||||||||||||||||||||||
updated_datetime stringTimestamp in ISO 8601 format ( YYYY-MM-DDTHH:mm:ssZ ) indicating the last time transaction streams for the given account were updated onFormat: date-time | |||||||||||||||||||||||
request_id stringA unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive. |
1{2 "updated_datetime": "2022-05-01T00:00:00Z",3 "inflow_streams": [4 {5 "account_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje",6 "stream_id": "no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc",7 "category": [8 "Transfer",9 "Payroll"10 ],11 "category_id": "21009000",12 "description": "Platypus Payroll",13 "merchant_name": null,14 "personal_finance_category": {15 "detailed": "INCOME_WAGES",16 "primary": "INCOME"17 },18 "first_date": "2022-02-28",19 "last_date": "2022-04-30",20 "frequency": "SEMI_MONTHLY",21 "transaction_ids": [22 "nkeaNrDGrhdo6c4qZWDA8ekuIPuJ4Avg5nKfw",23 "EfC5ekksdy30KuNzad2tQupW8WIPwvjXGbGHL",24 "ozfvj3FFgp6frbXKJGitsDzck5eWQH7zOJBYd",25 "QvdDE8AqVWo3bkBZ7WvCd7LskxVix8Q74iMoK",26 "uQozFPfMzibBouS9h9tz4CsyvFll17jKLdPAF"27 ],28 "average_amount": {29 "amount": -800,30 "iso_currency_code": "USD",31 "unofficial_currency_code": null32 },33 "last_amount": {34 "amount": -1000,35 "iso_currency_code": "USD",36 "unofficial_currency_code": null37 },38 "is_active": true,39 "status": "MATURE"40 }41 ],42 "outflow_streams": [43 {44 "account_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDff",45 "stream_id": "no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nd",46 "category": [47 "Service",48 "Utilities",49 "Electric"50 ],51 "category_id": "18068005",52 "description": "ConEd Bill Payment",53 "merchant_name": "ConEd",54 "personal_finance_category": {55 "detailed": "RENT_AND_UTILITIES_GAS_AND_ELECTRICITY",56 "primary": "RENT_AND_UTILITIES"57 },58 "first_date": "2022-02-04",59 "last_date": "2022-05-02",60 "frequency": "MONTHLY",61 "transaction_ids": [62 "yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0",63 "HPDnUVgI5Pa0YQSl0rxwYRwVXeLyJXTWDAvpR",64 "jEPoSfF8xzMClE9Ohj1he91QnvYoSdwg7IT8L",65 "CmdQTNgems8BT1B7ibkoUXVPyAeehT3Tmzk0l"66 ],67 "average_amount": {68 "amount": 85,69 "iso_currency_code": "USD",70 "unofficial_currency_code": null71 },72 "last_amount": {73 "amount": 100,74 "iso_currency_code": "USD",75 "unofficial_currency_code": null76 },77 "is_active": true,78 "status": "MATURE"79 }80 ],81 "request_id": "tbFyCEqkU775ZGG"82}
Was this helpful?
/transactions/refresh
Refresh transaction data
/transactions/refresh
is an optional endpoint for users of the Transactions product. It initiates an on-demand extraction to fetch the newest transactions for an Item. This on-demand extraction takes place in addition to the periodic extractions that automatically occur multiple times a day for any Transactions-enabled Item. If changes to transactions are discovered after calling /transactions/refresh
, Plaid will fire a webhook: TRANSACTIONS_REMOVED
will be fired if any removed transactions are detected, and DEFAULT_UPDATE
will be fired if any new transactions are detected. New transactions can be fetched by calling /transactions/get
.
Access to /transactions/refresh
in Production is specific to certain pricing plans. If you cannot access /transactions/refresh
in Production, contact Sales for assistance.
Request fields and example
client_id stringYour 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. |
access_token requiredstringThe access token associated with the Item data is being requested for. |
secret stringYour Plaid API secret . The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body. |
1const request: TransactionsRefreshRequest = {2 access_token: accessToken,3};4try {5 await plaidClient.transactionsRefresh(request);6} catch (error) {7 // handle error8}
Response fields and example
request_id stringA unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive. |
1{2 "request_id": "1vwmF5TBQwiqfwP"3}
Was this helpful?
/categories/get
Get Categories
Send a request to the /categories/get
endpoint to get detailed information on categories returned by Plaid. This endpoint does not require authentication.
Request fields and example
This endpoint takes an empty request body. |
1try {2 const response = await plaidClient.categoriesGet({});3 const categories = response.data.categories;4} catch (error) {5 // handle error6}
Response fields and example
categories [object]An array of all of the transaction categories used by Plaid.
| |||
request_id stringA unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive. |
1{2 "categories": [3 {4 "category_id": "10000000",5 "group": "special",6 "hierarchy": [7 "Bank Fees"8 ]9 },10 {11 "category_id": "10001000",12 "group": "special",13 "hierarchy": [14 "Bank Fees",15 "Overdraft"16 ]17 },18 {19 "category_id": "12001000",20 "group": "place",21 "hierarchy": [22 "Community",23 "Animal Shelter"24 ]25 }26 ],27 "request_id": "ixTBLZGvhD4NnmB"28}
Was this helpful?
Webhooks
You can receive notifications via a webhook whenever there are new transactions associated with an Item, including when Plaid’s initial and historical transaction pull are completed. All webhooks related to transactions have a webhook_type
of TRANSACTIONS
.
Response fields and example
request_id stringA unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive. |
1{2 "request_id": "1vwmF5TBQwiqfwP"3}
Was this helpful?
SYNC_UPDATES_AVAILABLE
Fired when an Item's transactions change. This can be due to any event resulting in new changes, such as an initial, historical, or default pull. After receipt of this webhook, the new changes can be fetched for the Item from /transactions/sync
.
Note that to receive this webhook for an Item, /transactions/sync
must have been called at least once on that Item.
webhook_type stringTRANSACTIONS |
webhook_code stringSYNC_UPDATES_AVAILABLE |
item_id stringThe item_id of the Item associated with this webhook, warning, or error |
initial_update_complete booleanIndicates if initial pull information is available. |
historical_update_complete booleanIndicates if historical pull information is available. |
1{2 "webhook_type": "TRANSACTIONS",3 "webhook_code": "SYNC_UPDATES_AVAILABLE",4 "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb",5 "initial_update_complete": true,6 "historical_update_complete": false7}
Was this helpful?
INITIAL_UPDATE
Fired when an Item's initial transaction pull is completed. Once this webhook has been fired, transaction data for the most recent 30 days can be fetched for the Item. If Account Select v2 is enabled, this webhook will also be fired if account selections for the Item are updated, with new_transactions
set to the number of net new transactions pulled after the account selection update.
webhook_type stringTRANSACTIONS |
webhook_code stringINITIAL_UPDATE |
error stringThe error code associated with the webhook. |
new_transactions numberThe number of new, unfetched transactions available. |
item_id stringThe item_id of the Item associated with this webhook, warning, or error |
1{2 "webhook_type": "TRANSACTIONS",3 "webhook_code": "INITIAL_UPDATE",4 "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb",5 "error": null,6 "new_transactions": 197}
Was this helpful?
HISTORICAL_UPDATE
Fired when an Item's historical transaction pull is completed and Plaid has prepared as much historical transaction data as possible for the Item. Once this webhook has been fired, transaction data beyond the most recent 30 days can be fetched for the Item. If Account Select v2 is enabled, this webhook will also be fired if account selections for the Item are updated, with new_transactions
set to the number of net new transactions pulled after the account selection update.
webhook_type stringTRANSACTIONS | |||||||||
webhook_code stringHISTORICAL_UPDATE | |||||||||
error objectWe use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type . In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. Error fields will be null if no error has occurred.
| |||||||||
new_transactions numberThe number of new, unfetched transactions available | |||||||||
item_id stringThe item_id of the Item associated with this webhook, warning, or error |
1{2 "webhook_type": "TRANSACTIONS",3 "webhook_code": "HISTORICAL_UPDATE",4 "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb",5 "error": null,6 "new_transactions": 2317}
Was this helpful?
DEFAULT_UPDATE
Fired when new transaction data is available for an Item. Plaid will typically check for new transaction data several times a day.
webhook_type stringTRANSACTIONS | |||||||||
webhook_code stringDEFAULT_UPDATE | |||||||||
error objectWe use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type . In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. Error fields will be null if no error has occurred.
| |||||||||
new_transactions numberThe number of new transactions detected since the last time this webhook was fired. | |||||||||
item_id stringThe item_id of the Item the webhook relates to. |
1{2 "webhook_type": "TRANSACTIONS",3 "webhook_code": "DEFAULT_UPDATE",4 "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb",5 "error": null,6 "new_transactions": 37}
Was this helpful?
TRANSACTIONS_REMOVED
Fired when transaction(s) for an Item are deleted. The deleted transaction IDs are included in the webhook payload. Plaid will typically check for deleted transaction data several times a day.
webhook_type stringTRANSACTIONS | |||||||||
webhook_code stringTRANSACTIONS_REMOVED | |||||||||
error objectWe use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type . In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. Error fields will be null if no error has occurred.
| |||||||||
removed_transactions [string]An array of transaction_ids corresponding to the removed transactions | |||||||||
item_id stringThe item_id of the Item associated with this webhook, warning, or error |
1{2 "webhook_type": "TRANSACTIONS",3 "webhook_code": "TRANSACTIONS_REMOVED",4 "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb",5 "removed_transactions": [6 "yBVBEwrPyJs8GvR77N7QTxnGg6wG74H7dEDN6",7 "kgygNvAVPzSX9KkddNdWHaVGRVex1MHm3k9no"8 ],9 "error": null10}