Get Transactions
get_transactionsFetch financial transactions with flexible filters for date range, account, category, and more. Control output detail with compact or verbose mode.
Instructions
Fetch transactions with flexible date filtering and smart output formatting.
Args: limit: Maximum number of transactions to return (default: 100, max: 1000) offset: Number of transactions to skip for pagination (default: 0) start_date: Filter transactions from this date onwards. Supports natural language like 'last month', 'yesterday', '30 days ago' NOTE: If you provide start_date without end_date, end_date will auto-default to 'today' end_date: Filter transactions up to this date. Supports natural language NOTE: If you provide end_date without start_date, start_date will auto-default to 'this month' account_id: Filter by specific account ID (converted to list internally) category_id: Filter by specific category ID (converted to list internally) tag_ids: Comma-separated tag IDs to filter by (e.g., "tag1,tag2") has_attachments: Filter to transactions with (True) or without (False) attachments has_notes: Filter to transactions with (True) or without (False) notes hidden_from_reports: Include hidden transactions (True), exclude them (False), or show all (None) is_split: Filter to split transactions only (True) or non-split (False) is_recurring: Filter to recurring transactions only (True) or non-recurring (False) verbose: Output format control (default: False) - False (compact mode): Returns essential fields only (~80% smaller) Fields included: id, date, amount, merchant, plaidName, category, account, pending, needsReview, notes
- True (verbose mode): Returns ALL fields including:
Essential fields (same as compact) PLUS:
• hideFromReports (bool)
• reviewStatus (str: "needs_review" | "reviewed" | null)
• isSplitTransaction (bool)
• isRecurring (bool)
• attachments (list of attachment objects)
• tags (list of tag objects)
• createdAt (ISO timestamp)
• updatedAt (ISO timestamp)
• __typename (GraphQL metadata)
• Full nested objects with all their fields
Use verbose=False for most queries to reduce token usage.
Use verbose=True when you need: timestamps, split info, attachment details,
or are updating transactions (need full context).Key Transaction Fields: Core Identifiers: - id: Unique transaction ID (required for updates) - date: Transaction date (YYYY-MM-DD format) - amount: Transaction amount (negative = expense, positive = income)
Merchant Information:
IMPORTANT: Monarch normalizes merchant names for cleaner UI
- merchant.name: User-facing display name shown in Monarch UI (normalized/cleaned)
Example: "Chipotle" for all Chipotle locations
- plaidName: Original bank statement text from Plaid/institution (raw data)
Example: "CHIPOTLE 4963", "CHIPOTLE MEX GR ONLINE", "CHIPOTLE 1879"
Use this to see location numbers or original descriptors
- Multiple transactions from different locations share the same merchant.name
- Use plaidName to distinguish between specific locations/variants
Categorization:
- category.id: Category ID (for filtering/updates)
- category.name: Category display name (e.g., "Restaurants & Bars")
- tags: List of tag objects applied to transaction
Account Info:
- account.id: Account ID where transaction occurred
- account.displayName: Account name (e.g., "Main Credit Card")
Status Flags:
- pending: True if transaction hasn't cleared yet
- needsReview: True if flagged for user review
- reviewStatus: "needs_review", "reviewed", or null
- hideFromReports: True if hidden from budget/reports
Transaction Types:
- isSplitTransaction: True if split into multiple categories
- isRecurring: True if part of a recurring series
User Annotations:
NOTE: These are different fields with different purposes
- notes: Free-form user memo/annotation (e.g., "Business lunch with client")
- merchant_name: The merchant's display name (e.g., "Olive Garden")
- Both are editable, but serve different purposes in the UI
- attachments: List of receipt/document attachments
Metadata (verbose mode only):
- createdAt: When transaction was first imported
- updatedAt: Last modification timestamp
- __typename: GraphQL type informationReturns: JSON string containing transaction list
Common Filter Examples: - Unreviewed transactions: has_notes=False, needs_review=True - Split transactions: is_split=True - Transactions with receipts: has_attachments=True - Manual transactions: synced_from_institution=False
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| start_date | No | ||
| end_date | No | ||
| account_id | No | ||
| category_id | No | ||
| tag_ids | No | ||
| has_attachments | No | ||
| has_notes | No | ||
| hidden_from_reports | No | ||
| is_split | No | ||
| is_recurring | No | ||
| verbose | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| transactions | Yes | ||
| count | Yes | ||
| verbose | Yes |