Complete the Plaid Link flow to obtain a public_token, then exchange it for an access_token via POST to https://production.plaid.com/item/public_token/exchange.
To initialize the transaction sync cursor, POST to https://production.plaid.com/transactions/sync with the access_token and an empty (or absent) cursor to get the first batch of transactions and a next_cursor value.
On subsequent syncs, pass the stored next_cursor value to /transactions/sync; the response returns added, modified, and removed transaction arrays representing changes since the last sync.
Each transaction object includes account_id, amount (negative for credits/deposits, positive for debits in Plaid convention), date, name, merchant_name, and a personal_finance_category object for classification.
Persist the latest next_cursor value after each successful sync page; iterate until has_more is false.
Map Plaid account_id values to your internal GL accounts or bank accounts to route transactions to the correct ledger lines.
Known gotchas
Plaid transaction amounts use a sign convention where positive values represent money leaving the account (debits/expenses) and negative values represent money entering (credits/deposits)—the opposite of some accounting conventions.
The transactions/sync endpoint may return historical backfill in the initial calls; filter by date if you only want recent transactions for ongoing bookkeeping.
Item access tokens can become invalid if the user changes their banking credentials; implement the Plaid webhook for ITEM_LOGIN_REQUIRED to detect and prompt re-authentication.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp