Import and reporting scripts for Actual Budget
You will need a NodeJS LTS to run this.
git clone https://github.com/ENTS-Source/actual-scripts.git
cd actual-scripts
npm install
mkdir ./data
Three pieces of information are needed to work with your data:
- Your server URL. This is typically
http://localhost:5006
unless you've configured it to run elsewhere. - Your Actual Budget password. This is what you use to log in at the URL above.
- Your Budget's ID. You can get this by going to Settings -> Show Advanced Settings -> Sync ID
To verify everything works, run npm run sync -- -u http://localhost:5006 -p PASSWORD -b SYNC-ID
.
If you get "Could not get remote files", check your password. If your password has special characters, avoid or escape them.
Most importing can be done by acquiring a CSV from your bank and giving it to the import command.
You can get your account ID by running the following command. The URL, password, and Sync ID are the same as in the setup above.
npm run accounts -- -u http://localhost:5006 -p PASSWORD -b SYNC-ID
Then you can import with something like the following:
npm run import -- -u http://localhost:5006 -p PASSWORD -b SYNC-ID -a "26d22481-5aaf-48f2-9ce6-9f9a395bf33f" -t td -f ./td.csv
Note the importer-specific instructions below.
Warning
Records which are already imported need to be removed before running the import script.
- Download a CSV from your TD Bank Account
- Edit the CSV to exclude already-imported records
- Run
npm run import -- -u url -p password -b syncId -a accountId -f ./td.csv -t td
Warning
Column order matters for this importer.
Sample CSV:
02/28/2025,GC 5555-DEPOSIT ,,140.00,55555.95
02/28/2025,MONTHLY PLAN FEE ,4.95,,55551.00
02/28/2025,ACCT BAL REBATE ,,4.95,55555.95
Headers are not included, but are:
Date,Description,Withdrawl,Deposit,Balance
- Log in to the Stripe dashboard
- Click 'Transactions' on the left
- Click 'Export' at the top right
- Select a date range and leave default columns
- Click 'Export'
- Run
npm run import -- -u url -p password -b syncId -a accountId -f ./stripe.csv -t stripe
- Log in to the PayPal Dashboard
- In the navigation menu, go to 'Activity' -> 'All Reports'
- Run the Activity Report (Balance Affecting and CSV only. "Since last download" recommended)
- Run
npm run import -- -u url -p password -b syncId -a accountId -f ./paypal.csv -t paypal
- Log in to the Square Dashboard
- Go to your Balance
- Click your primary Location
- Click 'View All Transfers'
- Fix the date range
- Click Export
- Run
npm run import -- -u url -p password -b syncId -a accountId -f ./square.csv -t square
Note
Plooto records often need manual correction post-import. Use the -s <unixmillis>
option to skip already-fixed records.
Note
This importer assumes Plooto is only used to manage outbound payments/expenses.
- Log in to Plooto
- Go to Completed Payments
- Click Export -> All Payables
- Run
npm run import -- -u url -p password -b syncId -a accountId -f ./plooto.xlsx -t plooto -s 1741472844647
Warning
These reports are based off data available in Actual Budget and may require manual edits after generation.
Simple Excel reports can be generated using the following command. Be sure to supply a company name and Fiscal Year start date (YYYY-MM-DD
) to the command. The URL, password, and Sync ID are the same as in the setup above.
npm run reports -- -u https://localhost:5006 -p PASSWORD -b SYNC-ID -c "Company Name Here" -y 2024-01-01