Plaid Transactions Expert
Purpose
Provide expert guidance on Plaid Transactions, the product for retrieving and monitoring banking transaction history.
When to Use
Auto-invoke when users mention:
- Plaid Transactions product
- Banking transaction history
- Transaction sync or updates
- Transaction categorization
- Recurring transactions
- Transaction webhooks
- Historical transaction data
Knowledge Base
Plaid Transactions documentation in .claude/skills/api/plaid/docs/
Search patterns:
Grep "transaction|/transactions/get|/transactions/sync" .claude/skills/api/plaid/docs/ -iGrep "transaction.*category|recurring" .claude/skills/api/plaid/docs/ -iGrep "transaction.*webhook|historical.*transaction" .claude/skills/api/plaid/docs/ -i
Coverage Areas
Transaction Retrieval
- /transactions/sync (recommended)
- /transactions/get (legacy)
- Historical data (up to 24 months)
- Real-time updates
- Pagination
Transaction Data
- Transaction details
- Merchant information
- Category classification
- Location data
- Payment channel
Categorization
- Automatic categorization
- Category taxonomy
- Personal finance categories
- Detailed categories
- Category confidence scores
Updates & Webhooks
- SYNC_UPDATES_AVAILABLE
- DEFAULT_UPDATE
- TRANSACTIONS_REMOVED
- Real-time notifications
- Update polling strategies
Advanced Features
- Recurring transaction detection
- Income insights
- Transaction enrichment
- Personal finance management
- Spending analysis
Response Format
## [Transactions Topic]
[Overview of feature]
### API Request
```javascript
// Recommended: Transactions Sync
const response = await client.transactionsSync({
access_token: accessToken,
cursor: lastCursor,
});
const { added, modified, removed, next_cursor } = response.data;
Response Structure
{
"added": [{
"transaction_id": "...",
"amount": 12.50,
"date": "2024-01-15",
"name": "Starbucks",
"merchant_name": "Starbucks",
"category": ["Food and Drink", "Restaurants"],
"category_id": "13005000",
"pending": false
}],
"modified": [],
"removed": []
}
Integration Pattern
Initial Sync:
- Call /transactions/sync without cursor
- Process added transactions
- Store next_cursor
- Repeat until has_more = false
Ongoing Sync:
- Listen for SYNC_UPDATES_AVAILABLE webhook
- Call /transactions/sync with stored cursor
- Process added/modified/removed
- Update stored cursor
Best Practices
- Use /transactions/sync (not /transactions/get)
- Store cursor for incremental updates
- Implement webhook handlers
- Handle removed transactions
- Respect rate limits
- Process pending status changes
Common Patterns
Spending Analysis:
const spending = transactions
.filter(t => t.amount > 0) // Positive = debit
.reduce((sum, t) => sum + t.amount, 0);
Source: .claude/skills/api/plaid/docs/[filename].md
## Key Endpoints
- `/transactions/sync` - Sync transactions (recommended)
- `/transactions/get` - Get transactions (legacy)
- `/transactions/recurring/get` - Recurring transactions
- `/transactions/refresh` - Force refresh
## Webhooks
- `SYNC_UPDATES_AVAILABLE` - New transaction data
- `DEFAULT_UPDATE` - Periodic updates (legacy)
- `TRANSACTIONS_REMOVED` - Deleted transactions
## Always
- Reference Plaid documentation
- Recommend /transactions/sync over /transactions/get
- Explain cursor-based pagination
- Include webhook integration
- Handle pending transactions
- Show categorization usage
- Consider rate limits