Read a Microsoft Money .mny file and export it to clean, queryable CSV files.
Microsoft Money (and Money Plus) has been discontinued, but the .mny files it
produces are still a Jet 4.0 / Access 2000 database with a custom MSISAM page
format. The standard Windows Jet driver can't open them (it reports "Not a valid
password"), and there's no maintained CLI converter. This tool reads the file
directly with Jackcess and dumps
every table to CSV, with the opaque handle fields joined to human-readable names.
The original file is opened read-only and never modified.
- JDK 17 or newer on your
PATH(or setJAVA_HOME). - Maven — or just use the bundled wrapper (
./mvnwon macOS/Linux,mvnw.cmdon Windows), which downloads Maven on first run.
That's it. Dependencies (Jackcess + the MSISAM decoding library) are pulled automatically from Maven Central — no manual JAR management.
# Export a .mny file to a directory of CSVs
./mvnw -q compile exec:java -Dexec.args="/path/to/file.mny /path/to/outdir"On Windows:
mvnw.cmd -q compile exec:java -Dexec.args="C:\path\to\file.mny C:\path\to\outdir"The dumper writes six files into the output directory:
| File | Contents |
|---|---|
TRN.csv |
The main file. Every transaction, with account / category / payee resolved to names. |
ACCT.csv |
Accounts (balances, flags, interest rates). |
CAT.csv |
Category tree (name, alias, level, parent, tax, hidden). |
PAY.csv |
Payees (name, alias, parent, vendor/customer). |
TRN_SPLIT.csv |
Split-transaction links (child htrn → parent htrn, split index). |
TRN_XFER.csv |
Transfers between your own accounts (from/to account + amount). |
Three small inspection tools are included (same run command, different class):
# List tables with row/column counts
./mvnw -q compile exec:java -Dexec.mainClass=mny.MnySchema -Dexec.args="file.mny"
# Show column names/types for the core tables
./mvnw -q compile exec:java -Dexec.mainClass=mny.MnyCols -Dexec.args="file.mny"
# Print the first 12 transactions with resolved names
./mvnw -q compile exec:java -Dexec.mainClass=mny.MnySample -Dexec.args="file.mny"A .mny file stores its pages in the MSISAM format rather than plain Access
layout. Jackcess's default codec throws "Decoding not supported" for those pages.
The jackcess-encrypt dependency supplies the MSISAMCryptCodecHandler that decodes
them. For an unpassworded file you pass an empty password string — no actual
decryption is needed unless you set a password in Money. If your file does have a
password, edit the CryptCodecProvider("") calls in the sources to pass it.
amountis negative for spending, positive for income/credits.- Rows with a blank
categoryare usually not missing data: transfers (which Money never categorizes) and split-transaction parents (whose category lives on the child rows) both show a blank parent category. - When computing total spending, exclude transfer rows (
htrninTRN_XFER.csv) and split-parent rows (htrninTRN_SPLIT.csvashtrn_parent) to avoid double-counting. - CSVs are written with a UTF-8 BOM so Excel reads non-ASCII payees correctly.
./mvnw clean package # produces target/mny-to-csv.jar