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
| Name | Type | Required | Description |
|---|---|---|---|
accessToken | string | Yes | The Item's permanent access token. |
startDate | string | Yes | Start date in YYYY-MM-DD format (inclusive). |
endDate | string | Yes | End date in YYYY-MM-DD format (inclusive). |
options.count | number | No | Max transactions per page (max 500). |
options.offset | number | No | Pagination offset for subsequent pages. |
options.accountIds | string[] | No | Filter to specific account IDs. |
Returns
Promise<{ accounts, transactions, totalTransactions, item, requestId }>
| Field | Description |
|---|---|
transactions | Array of transaction objects for the date range. |
totalTransactions | Total transaction count across all pages — use with offset for pagination. |
accounts | Account 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
- transactions.sync(accessToken, options?) — Preferred cursor-based incremental sync method.
- transactions.refresh(accessToken) — Force-refresh transaction data for a Plaid Item.
- transactions.getRecurring(accessToken, options?) — Get recurring inflow and outflow streams.
- accounts.get(accessToken, options?) — Account metadata returned alongside transactions.
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 }
