X Enterprises
fastify-xplaid

transactions.get(accessToken, startDate, endDate, options?)

Fetch transactions by date range for a Plaid Item.

transactions.get(accessToken, startDate, endDate, options?)

Fetches transactions within a date range. Use for one-off historical queries, reporting, and data exports. For ongoing sync prefer transactions.sync.

Signature

fastify.xplaid.transactions.get(
  accessToken: string,
  startDate: string,
  endDate: string,
  options?: {
    count?: number      // max 500
    offset?: number
    accountIds?: string[]
  }
): Promise<{
  accounts: PlaidAccount[]
  transactions: Transaction[]
  totalTransactions: number
  item: PlaidItem
  requestId: string
}>

Params

NameTypeRequiredDescription
accessTokenstringYesThe Item's permanent access token.
startDatestringYesStart date in YYYY-MM-DD format (inclusive).
endDatestringYesEnd date in YYYY-MM-DD format (inclusive).
options.countnumberNoMax transactions per page (max 500).
options.offsetnumberNoPagination offset for subsequent pages.
options.accountIdsstring[]NoFilter to specific account IDs.

Returns

Promise<{ accounts, transactions, totalTransactions, item, requestId }>

FieldDescription
transactionsArray of transaction objects for the date range.
totalTransactionsTotal transaction count across all pages — use with offset for pagination.
accountsAccount metadata for accounts included in the response.

Throws

  • [xPlaid] accessToken is required and must be a non-empty string
  • [xPlaid] startDate is required and must be a non-empty string
  • [xPlaid] endDate is required and must be a non-empty string
  • Plaid API errors — shape: { message, statusCode, plaidError }.

Examples

Basic — monthly report

fastify.get("/reports/monthly", async (request) => {
  const { year, month } = request.query;
  const startDate = `${year}-${month.padStart(2, "0")}-01`;
  const endDate = `${year}-${month.padStart(2, "0")}-31`;

  const item = await getPlaidItem(request.user.id);
  const { transactions, totalTransactions } = await fastify.xplaid.transactions.get(
    item.accessToken,
    startDate,
    endDate,
    { count: 500 }
  );

  return { transactions, total: totalTransactions };
});

Realistic — paginated full-range fetch

async function fetchAllTransactions(accessToken, startDate, endDate) {
  const PAGE = 500;
  let offset = 0;
  let all = [];

  while (true) {
    const { transactions, totalTransactions } = await fastify.xplaid.transactions.get(
      accessToken,
      startDate,
      endDate,
      { count: PAGE, offset }
    );
    all = all.concat(transactions);
    offset += transactions.length;
    if (offset >= totalTransactions) break;
  }
  return all;
}

See also


AI Context

package: "@xenterprises/fastify-xplaid"
method: fastify.xplaid.transactions.get(accessToken, startDate, endDate, options?)
use-when: Fetch transactions by date range — use transactions.sync instead for incremental updates
params: accessToken, startDate (YYYY-MM-DD), endDate (YYYY-MM-DD), options (count, offset, accountIds)
returns: { transactions, accounts, totalTransactions, item, requestId }
Copyright © 2026