Skip to main content

Varo Believe to Monarch

Convert Varo Believe credit card PDF statements to Monarch Money CSV format. No more manual data entry — point the tool at your statements and get a Monarch-ready CSV in seconds.

Why Varo Believe specifically? Varo's regular checking and savings accounts connect to Monarch Money directly via Plaid. Only Varo Believe (the secured credit card) lacks Plaid support, so transactions must be imported manually from the monthly PDF statement.

GUI CLI
GUI screenshot CLI screenshot

Features

  • 🖥️ User-Friendly GUI: Graphical interface for non-technical users (also available as standalone executables)
  • 📄 Hybrid PDF Extraction: Uses PyMuPDF for table-based extraction and pdfplumber for text-based parsing to capture all transactions, including multi-line descriptions that span page boundaries
  • 🔄 Parallel Processing: Process multiple PDFs concurrently with configurable worker count
  • 📊 Progress Tracking: Rich progress bars with per-file status
  • 💰 Smart Amount Handling: Automatically applies correct sign per section (purchases negative, payments positive, etc.)
  • 🎯 Intelligent Section Detection: Identifies and categorizes Purchases, Payments/Credits, Fees, and Secured Account transactions
  • 🏦 Account Mapping: Maps transactions to the correct account (Varo Believe Card vs Varo Secured Account)
  • 🏷️ Auto-Categorization: Secured Account transactions are automatically tagged as Transfer in the Category column; credit card transactions are left uncategorized for Monarch to classify
  • 📊 Account Summary: After each run the tool prints the exact balance and limit values to enter when creating accounts in Monarch Money
  • 📝 Monarch-Ready Output: CSV with the exact columns Monarch Money expects

Installation

Option 1: Standalone Executable (Recommended for Non-Technical Users)

Download the pre-built executable for your OS from the Releases page:

  • Windows: varo-to-monarch-windows.exe
  • macOS (Apple Silicon): varo-to-monarch-macos-apple-silicon.app.zip (M1/M2/M3/M4, extract and run)
  • macOS (Intel): varo-to-monarch-macos-intel.app.zip (pre-2020 Macs, extract and run)
  • Linux: varo-to-monarch-linux

No installation required — just download and run.

macOS: opening an unsigned app

Because the app isn't notarized by Apple, macOS will block it the first time. To open it:

  1. Extract the .zip and double-click VaroToMonarch.app — you'll see a "cannot be opened" alert. Click Done (not Move to Trash).
  2. Open System Settings → Privacy & Security and scroll down to the Security section.
  3. You'll see a message like "VaroToMonarch was blocked" — click Open Anyway.
  4. A final confirmation prompt appears — click Open.

You only need to do this once. After that, double-clicking the app works normally. This is standard macOS behavior for any app downloaded outside the App Store — see Apple's documentation for more details.

Option 2: Install via pip PyPI

pip install varo-to-monarch

Option 3: From Source

git clone https://github.com/Blacksuan19/varo-believe-to-monarch.git
cd varo-believe-to-monarch
pip install .

Usage

GUI

Standalone executable: double-click the downloaded file.

Installed package:

vtm-gui

The GUI lets you:

  1. Select the folder containing your Varo PDF statements
  2. Choose the output CSV path (defaults to varo_monarch_combined.csv in the input folder)
  3. Optionally set a filename pattern, worker count, and whether to include the source filename column

Click Convert to Monarch CSV and watch the progress bar. Once complete, an Account Summary panel appears showing the exact balance and limit values to enter when creating accounts in Monarch Money.

CLI

Basic usage — convert all PDFs in a folder:

vtm path/to/statements

Output is written to path/to/statements/varo_monarch_combined.csv by default. An account summary is printed after each run showing the exact values to enter when creating accounts in Monarch Money.

All options:

vtm [OPTIONS] [FOLDER]

Arguments:
  FOLDER  Directory containing Varo PDF statements

Options:
  -o, --output PATH               Output CSV file path
  -p, --pattern TEXT              Glob pattern for PDFs (default: *.pdf)
  -w, --workers INT               Parallel workers (default: auto)
      --include-file-names /
      --no-include-file-names     Include/exclude SourceFile column (default: include)
  -h, --help                      Show this message and exit

Examples:

# Custom output path
vtm ./statements --output ~/monarch_import.csv

# Process only a specific statement
vtm ./statements --pattern "2025-12.pdf"

# Use 4 parallel workers
vtm ./statements --workers 4

# Omit the source filename column from output
vtm ./statements --no-include-file-names

Output Format

Column Description
Date Transaction date (MM/DD/YYYY)
Merchant Name Full transaction description
Category Transfer for Secured Account transactions; empty for credit card
Account Varo Believe Card or Varo Secured Account
Amount Signed amount (negative = debit, positive = credit)
Tags Always vtm-import — identifies transactions added by this tool
SourceFile Source PDF filename (omitted with --no-include-file-names)

Importing into Monarch Money

Note: CSV imports are available on web only (not the mobile app). If you need to undo an import, delete the account in Monarch — it will offer to remove the imported transactions at that point. See Monarch's full import guide for reference.

  1. On the Monarch web app, go to Accounts and click + Add Account.

  2. Click "Import transaction & balance history", then "Import transactions".

  3. Upload the generated CSV file.

  4. Monarch will auto-detect the column mappings (Date, Merchant Name, Account, Amount) — confirm them and proceed.

  5. On the "Assign CSV accounts to Monarch accounts" screen you'll see two entries. For each one, open the dropdown and choose "Create a new account" with the appropriate type:

    CSV Account Account type to create Balance / Limit
    Varo Believe Card Credit Card Current balance and credit limit — shown in the Account Summary printed by the tool
    Varo Secured Account Checking or Savings Balance — shown in the Account Summary printed by the tool
  6. Choose how to handle overlapping transactions:

    • Prioritize CSV — replaces any existing transactions in the date range
    • Prioritize Monarch — keeps existing data, only imports earlier missing ones
    • Import all — imports everything, may create duplicates
  7. Review the summary and click Import transactions to finish.

Tip: On repeat imports, select the existing Monarch accounts instead of creating new ones to avoid duplicates.

How It Works

The tool uses a two-pass hybrid extraction strategy:

  1. Table extraction (PyMuPDF) — detects and extracts transaction tables directly from the PDF structure. Handles Purchases, Fees, Payments and Credits, and Secured Account Transactions sections.

  2. Text parsing (pdfplumber) — line-by-line fallback for transactions that table detection misses. All pages are flattened into a single line list before parsing so that multi-line descriptions split across page boundaries are correctly merged.

  3. Deduplication — results from both passes are merged; rows already captured by table extraction are not duplicated from the text pass.

  4. Section-based classification — each transaction is assigned the correct account and amount sign based on which section it appears in:

    Section Sign Account
    Purchases negative Varo Believe Card
    Fees negative Varo Believe Card
    Payments and Credits positive Varo Believe Card
    Secured Account Transactions from PDF Varo Secured Account
  5. Post-processing — description-based rules override section assignments where needed (e.g. transfer descriptions always go to Varo Secured Account regardless of which table they appear in).

Supported Transaction Types

Varo Believe Card

  • Credit card purchases
  • Fees and charges
  • Payments and credits

Varo Secured Account

  • Transfers from Secured Account to Believe Card (Trf from Vault to Charge C Bal)
  • Transfers from Secured Account to Checking (Transfer from Vault to DDA)
  • Deposits into Secured Account (Move Your Pay - Chk to Believe)

Requirements

  • Python 3.8 or higher

Troubleshooting

No transactions extracted:

  • Make sure the PDFs are genuine Varo Bank statements
  • Check that the files are not password-protected or corrupted

Missing transactions:

  • The tool handles multi-page statements automatically
  • Try --workers 1 to rule out any concurrency issues

Wrong amounts or accounts:

  • Open an issue on GitHub with a redacted sample statement

Development

# Clone and install
git clone https://github.com/Blacksuan19/varo-believe-to-monarch.git
cd varo-believe-to-monarch
pip install -e .

# Version bump
bumpver update --patch   # 0.4.0 → 0.4.1
bumpver update --minor   # 0.4.0 → 0.5.0

Contributing

Contributions are welcome! Please submit a Pull Request.

License

GNU General Public License v3 — see LICENSE for details.

Disclaimer

This tool is not affiliated with, endorsed by, or connected to Varo Bank or Monarch Money. Use at your own risk. Always verify converted data before importing into Monarch Money.

Acknowledgments

Thanks to leetmastah for testing the Windows and macOS binaries.

Metadata

Release files for varo-to-monarch 0.4.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for varo-to-monarch 0.4.12
File Size Uploaded Provenance Actions
varo_to_monarch-0.4.12.tar.gz 34.8 kB With provenance Details for varo_to_monarch-0.4.12.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for varo-to-monarch 0.4.12
File Interpreter ABI Platform Actions
varo_to_monarch-0.4.12-py3-none-any.whl Python 3 none any Details for varo_to_monarch-0.4.12-py3-none-any.whl

Total release size: 67.8 kB

Release files / varo_to_monarch-0.4.12.tar.gz

Download URL varo_to_monarch-0.4.12.tar.gz
Size 34.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9e6d2c33bfdb8e9a35b54c86cee391f8874b47c13e6d38c1d5d3e21921151def
BLAKE2b-256 checksum
How to use checksums
5879889c20478ad96152afc7d82add510bd0d4e80ab8a1559aecf5a9d11c6283
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 22, 2026.

Transparency log

Release files / varo_to_monarch-0.4.12-py3-none-any.whl

Download URL varo_to_monarch-0.4.12-py3-none-any.whl
Size 33.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
34757e8c2506b15790dd80034c3dea9045bbc1fbad2cd0390261b3ec3d68bad8
BLAKE2b-256 checksum
How to use checksums
fbb656c7b162cf3c1dff5c186e89e4d39b624d100d9996665c2d52e67682292f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 22, 2026.

Transparency log

Security for varo-to-monarch 0.4.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for varo_to_monarch-0.4.12.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page