Guides · Actual Budget

Actual Budget CSV import: the format, a free template, and old PDF statements

Updated November 11, 2026 · 8 min read · By the Utilly team

Actual Budget can link a bank through a sync provider, but plenty of people run it with file imports only: download a CSV (or OFX) from the bank, import it into the account, done. Actual is relaxed about the CSV (you map the columns in the import window), but the sign of the amounts, the date format and the duplicate matching decide whether the import lands cleanly. Here's the format, each option in the import window, how to get old PDF statements in, and free templates with known totals so you can test first.

Short answer: open the account in Actual, press Import, pick the CSV, and in the import window match the columns to Date, Payee, Notes, Category and Amount (or Outflow and Inflow). Money out is a negative amount; turn on Flip amount if the bank's file has it the other way round. Check that the green preview date is right, then import. Actual reads CSV, QIF, OFX, QFX and CAMT, not PDF. Free templates with headers Actual maps on its own: a checking CSV (31 fictional transactions), a credit card CSV (21) and a blank CSV.

See the statement behind the template

Open Utilly's fictional September 2026 checking statement: every line, the balance check from 12,418.36 to 13,440.52, and the CSV download. Free, because the data is made up. The checking template holds those 31 lines, so you know exactly what an import should bring in.

Checking CSVCredit card CSVBlank CSV

1. The templates

Actual doesn't publish a template file. Its import window has a dropdown for each field, and when it opens it pre-selects the column whose header contains date, payee, notes, category or amount (that's how the open-source import code picks its first guess). The files here use exactly those headers, so every column lines up without touching a dropdown. An import goes into the account you opened, so there is one file per account. No sign-up.

FileWhat's in itUse it whenKnown totals
Checking CSVHeader row + the 31 lines of Utilly's fictional checking statementTesting an import into a throwaway account, or comparing your bank's file with one Actual maps cleanly20 outflows 28,575.27; 11 inflows 29,597.43; net +1,022.16
Credit card CSVHeader row + the 21 lines of the matching fictional card statement, by dateTesting a credit card account: purchases negative, the payment and a return positive19 outflows 1,939.94; 2 inflows 1,542.18; net −397.76
Blank CSVThe header row onlyPasting your own rowsNone

The rows are written from Utilly's fictional sample statements (explained on sample bank statement PDF), read by the same engine Utilly's converters use, so they can't drift from the PDFs. Payee holds the bank's text for the line; Notes and Category are empty. Amount is one signed number with two decimals, negative for money out. Dates are year-first (2026-09-01), which is the first of Actual's date formats and can't be read day-first by mistake. The checking file is plain ASCII text (valid UTF-8) with Windows line endings, about 1.5 KB.

Date,Payee,Notes,Category,Amount
2026-09-01,ACH DEBIT GUSTO PAYROLL 0912,,,-6420.18
2026-09-01,STRIPE TRANSFER ST-K2M8Q4,,,3184.27
2026-09-02,CHECK 2041,,,-1850.00
2026-09-02,ACH DEBIT AUSTIN ENERGY UTIL,,,-412.66

2. The CSV format Actual reads

Actual's Importing Transactions page says "Actual supports importing CSV, QIF, OFX, QFX and CAMT files" and recommends OFX/QFX when the bank offers it; "If your bank doesn't support downloading financial files, you can import a CSV file instead." For a CSV, the fields are:

FieldWhat Actual does with itIn the template
DateRead with the date format you pick (section 4); the preview shows it in green the way Actual reads it2026-09-01
PayeeBecomes the payee nameThe statement text, e.g. STRIPE TRANSFER ST-K2M8Q4
NotesOptional; goes into the transaction's notesEmpty
CategoryOptional; only used when the cell matches the name of an existing category exactly, otherwise left uncategorizedEmpty
AmountOne signed column: positive is an inflow, negative an outflow. Or two columns with Split amount into separate inflow/outflow columns on−6420.18 for payroll, 3184.27 for a Stripe deposit

Any field you don't need can stay unmapped: "For the "CSV Fields" dropdowns, leave them as "Choose field…" to leave the related field blank." Extra columns such as a running Balance don't have to be deleted, but check the Notes dropdown: when no header says notes, Actual's first guess for Notes is the next unused column, which can be the Balance. Set it to Choose field… or to the right column.

3. Importing a CSV, step by step

From Actual's docs:

  1. Download the transactions from your bank as CSV (or OFX/QFX if it offers it).
  2. "Open the account you want to import transactions into."
  3. "Press the Import button and select the file."
  4. "Select the CSV option."
  5. "Set up the fields to match the CSV file": check the column chosen for each field and the date format.
  6. "Once you're happy with the settings, press Import."

No account yet? Add one with + Add account in the sidebar, choose Create a local account, and enter a name and the balance. For a back-fill, use the balance from the day before the first transaction you'll import, so the account lands on the statement's closing balance (section 8). Checking and credit cards belong on budget; "Off budget accounts don't affect the budget".

4. The import options

OptionWhat it doesWhen to use it
Date formatSix choices: YYYY MM DD, YY MM DD, MM DD YYYY, MM DD YY, DD MM YYYY, DD MM YY. Actual's docs: "the green date is how Actual interprets the date"When the preview dates are wrong or missing (a US bank's 09/01/2026 is MM DD YYYY)
DelimiterComma, semicolon, pipe, tab or tilde. "If the file can't be imported at all, try changing the CSV delimiter to match your file."European bank files often use semicolons
Skip start lines / Skip end linesIgnores that many lines at the top or bottomBank files with an account summary above the table or a total below it
File has header rowOn by default; the first row is treated as column namesTurn off if the first row is already a transaction
Flip amount"negate all of the amounts in the CSV file"Card exports that show purchases as positive
Split amount into separate inflow/outflow columnsMaps two columns to Outflow and Inflow instead of one Amount ("also known as debit and credit")Bank files with Debit and Credit columns
Multiply amountMultiplies every amount; "This can be useful if you want to make an approximate currency conversion."Rarely
Clear transactions on importOn by default; imported transactions are marked clearedLeave it on for bank statements, which only contain cleared lines
Merge with existing transactionsOn by default; matches the file against what's already in the account (section 6)Leave it on unless you deliberately want every row added

5. Old transactions and PDF statements

File import is the way to back-fill months a bank sync doesn't reach, but only from a file Actual reads: CSV, QIF, OFX, QFX or CAMT. Banks often offer downloads for a limited stretch of history, while PDF statements usually go back further, and Actual can't read a PDF. The route that works:

  1. Convert each PDF statement to CSV with a bank statement PDF to CSV converter (or the card version). Utilly's clean CSV is Date,Description,Amount,Balance with money out negative, which is the sign Actual expects.
  2. In the import window, check that Payee is Description and Amount is Amount, set Notes to Choose field… (Actual may pre-select Balance there), and pick YYYY MM DD as the date format.
  3. Import one month first and compare the account balance with the statement's closing balance. Then import the rest, oldest first.
  4. Reconcile against each statement's closing balance with the lock icon; Actual's tip: "Remember to use a negative number for the balance on credit or loan accounts".

6. Duplicates and matching

"Actual will automatically try to avoid duplicate transactions. This works best with OFX/QFX files since they provide rich data about transactions." A CSV has no transaction ID, so for CSV rows the second step does the work: "Actual will look for transactions around the same date, with the same amount, and with a similar payee." What that means in practice:

  • "It will always favor the imported transaction." When it matches a manually entered transaction, the date is updated to the bank's. "This means you can manually enter a transaction, and later it will be matched when you import it from a file."
  • Re-importing a file that overlaps one you already imported is fine with Merge with existing transactions on: lines already there are matched, not added again.
  • Deleted lines come back by default. With merging on, a Reimport deleted transactions checkbox appears, and "When checked (the default for file imports), any transactions that were previously imported and then deleted will be reimported." Untick it if you deleted lines on purpose.

7. Credit card accounts

In Actual a credit card is an on-budget account whose balance is negative when you owe money, so purchases are negative amounts and payments positive, the same sign as a bank account. The credit card template follows that: 19 purchases and interest negative, the payment and a return positive. Many card exports show purchases as positive; turn on Flip amount for those. Utilly's card CSV already has purchases negative, so no flip is needed.

8. Checking the import against known totals

Import the templates into new local accounts with a 0 balance in a test budget, never into accounts you rely on. Then compare:

CheckChecking CSVCredit card CSVIf it's wrong
Transactions3121Fewer: some rows were matched to existing ones (section 6) or skipped with Skip start/end lines
Outflows28,575.27 (20)1,939.94 (19)A different total means the wrong column is mapped to Amount
Inflows29,597.43 (11)1,542.18 (2)Same as above
Account balance after import+1,022.16−397.76The opposite sign means Flip amount is needed (or was turned on by mistake)
DatesSept 1–30, 2026Sept 1–30, 2026Other months or blank dates mean the wrong date format
Statement balance12,418.36 → 13,440.52owed 2,846.12 → 3,243.88Create the account with the opening balance (−2,846.12 for the card) and it ends on the closing one

The data is fictional (Example Community Bank and Sample Customer LLC don't exist; both statements say SAMPLE STATEMENT, FICTIONAL DATA FOR DEMONSTRATION ONLY). Replace every row before using the template for real.

9. Problems and fixes

ProblemFix
The file won't import at allChange the delimiter (semicolon and tab are common). If it's a PDF or an Excel file, convert or save it as CSV first
Dates are blank or wrongPick the matching date format; if your format isn't in the list, Actual's docs say to "check that the date column is correctly selected from your CSV file"
Spending came in as incomeDelete the import and import again with Flip amount on
Debit and Credit columns, one always emptyTurn on Split amount into separate inflow/outflow columns and map both
Summary lines imported as transactionsUse Skip start lines / Skip end lines, or delete those lines from the file
Column names imported as a transactionTurn on File has header row; turn it off if the first transaction disappeared
Categories not filled inThe cell must equal an existing category name exactly; otherwise categorize in Actual after the import
Deleted transactions came backUntick Reimport deleted transactions next time

Coming from YNAB or Monarch Money with the same bank history? YNAB's CSV import uses Outflow and Inflow columns, and Monarch Money needs an Account column. For Quicken, see importing a CSV into Quicken; for GnuCash, GnuCash CSV import.

Get PDF statements into Actual Budget

PDF statements, downloaded or scanned, get a free preview with the balance check, no sign-up. The clean CSV has one signed Amount column, money out negative, the way Actual reads it. Files are processed in memory and not stored.

Utilly isn't affiliated with Actual Budget. The rules, steps and quotes above are from Actual's documentation and its open-source import code, checked November 11, 2026; the templates weren't imported into a live Actual budget, and the import window may differ from what's described if it changes. Sources: Importing Transactions, Accounts Overview, Reconciliation, the CSV import window's source code. If a screen differs, follow Actual's current docs.

FAQ

What CSV format does Actual Budget need?

No fixed layout. When you import a CSV, Actual shows dropdowns for Date, Payee, Notes, Category and Amount (or Outflow and Inflow) and you pick the column for each. It pre-selects columns whose headers contain those words, so a file headed Date, Payee, Notes, Category, Amount maps itself. Money out is a negative Amount.

Is there an Actual Budget CSV template?

Actual doesn't publish one. Utilly has free CSVs headed Date, Payee, Notes, Category, Amount, no sign-up: a checking file with 31 fictional transactions, a credit card file with 21, both with known totals, and a blank file.

What date formats does Actual Budget import?

The CSV import offers six: YYYY MM DD, YY MM DD, MM DD YYYY, MM DD YY, DD MM YYYY and DD MM YY. The preview shows the date in green the way Actual reads it; if it's wrong, change the date format in the import window.

Can Actual Budget import a PDF bank statement?

No. Actual imports CSV, QIF, OFX, QFX and CAMT files. Convert the PDF statement to CSV first, then import the CSV into the account.

Does Actual Budget import categories from a CSV?

Only when the cell matches an existing category name exactly. Otherwise the transaction comes in uncategorized and you categorize it in Actual.

How does Actual Budget avoid duplicate transactions?

It matches OFX/QFX transaction IDs first, then looks for transactions around the same date, with the same amount and a similar payee. When it finds a match it keeps one transaction and favors the imported one, updating the date to the bank's.

Why are my amounts reversed in Actual Budget?

The bank's file uses the opposite sign. Turn on Flip amount in the import window to negate every amount, or, for separate debit and credit columns, turn on Split amount into separate inflow/outflow columns.

Related tools

  • Bank reconciliation checker: compare a bank statement to your books and list missing, duplicate and mismatched transactions.
  • Receipt to CSV: turn PDF or photo receipts and invoices into CSV, Excel, or QuickBooks and Xero bill imports.