Skip to content

πŸš€ MonarchMoney Enhanced v0.9.0 - Bulk Transaction Operations

Choose a tag to compare

@keithah keithah released this 05 Sep 05:37
· 48 commits to main since this release

πŸŽ‰ Major New Feature: Bulk Transaction Hide/Unhide Operations

This release adds powerful bulk transaction management capabilities based on real MonarchMoney API analysis.

πŸ”„ New Bulk Operations

Core Methods Added

  • bulk_unhide_transactions(transaction_ids) - Unhide multiple transactions at once
  • bulk_hide_transactions(transaction_ids) - Hide multiple transactions from reports
  • get_hidden_transactions(limit=100) - Find all transactions hidden from reports
  • bulk_update_transactions(transaction_ids, updates) - Generic bulk updates for any fields

Real-World Usage

# Find and unhide all hidden transactions
hidden = await mm.get_hidden_transactions(limit=100)
transaction_ids = [t["id"] for t in hidden["allTransactions"]["results"]]

if transaction_ids:
    result = await mm.bulk_unhide_transactions(transaction_ids)
    print(f"Successfully unhid {result['affectedCount']} transactions")

⚑ OptimizedMonarchMoney Drop-in Replacement Fixed

The OptimizedMonarchMoney class is now a true drop-in replacement for MonarchMoney:

# Works exactly like MonarchMoney, but with optimizations
mm = OptimizedMonarchMoney(cache_enabled=True, deduplicate_requests=True)
await mm.login(email, password)  # All login methods available
accounts = await mm.get_accounts()  # All API methods available  
await mm.bulk_unhide_transactions(transaction_ids)  # New methods work too

πŸ—οΈ Implementation Highlights

  • HAR File Analysis: Based on real MonarchMoney Common_BulkUpdateTransactionsMutation GraphQL operation
  • Production Ready: Handles 6+ transactions in single operation (as demonstrated in HAR file)
  • Proper Error Handling: Input validation, GraphQL error handling, and comprehensive logging
  • Backward Compatible: No breaking changes to existing code

πŸ“‹ What's Included

  • Core Implementation: New bulk methods in TransactionService and main MonarchMoney class
  • Optimization Fix: OptimizedMonarchMoney now properly delegates all methods
  • Examples: Comprehensive demo in examples/bulk_unhide_demo.py
  • Testing: Test cases for both functionality and drop-in replacement behavior

πŸ”§ Technical Details

The implementation uses MonarchMoney's actual GraphQL mutation:

mutation Common_BulkUpdateTransactionsMutation(
    $selectedTransactionIds: [ID!]!,
    $updates: TransactionUpdateParams!,
    $expectedAffectedTransactionCount: Int!
) {
    bulkUpdateTransactions(...) {
        success
        affectedCount
        errors { message }
    }
}

πŸ“ˆ Performance Benefits

  • Bulk Operations: Update multiple transactions in single API call
  • Caching Support: Works with OptimizedMonarchMoney caching system
  • Request Deduplication: Prevents duplicate bulk operations
  • Memory Efficient: Proper validation and resource management

πŸš€ Getting Started

pip install monarchmoney-enhanced==0.9.0
from monarchmoney import MonarchMoney
# or
from monarchmoney.optimizations import OptimizedMonarchMoney

mm = MonarchMoney()
await mm.login(email, password)

# Hide internal transfers from reports
internal_transfer_ids = ["id1", "id2", "id3"] 
await mm.bulk_hide_transactions(internal_transfer_ids)

# Later, unhide them if needed
await mm.bulk_unhide_transactions(internal_transfer_ids)

πŸ”§ Version Sync Fix

  • All version files (setup.py, pyproject.toml, init.py) now properly synced to 0.9.0
  • PyPI publishing should now work correctly via GitHub Actions

Full Changelog: v0.8.0...v0.9.0

πŸ€– Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com