Skip to main content
Ally Bank → Beancount

Ally Bank CSV to Beancount

Convert an Ally Bank checking or savings download into balanced double-entry Beancount transactions — ISO dates, one already-signed amount, and nothing ambiguous left for you to configure.

Column mapping verified against a real Ally Bank export

How to export your Ally Bank transactions

  1. 1

    Log in to Ally online banking on the web and select the account you want.

  2. 2

    Scroll to Transactions History and choose the download icon above the list.

  3. 3

    Enter the date range — Ally holds up to 18 months of account activity — and pick Comma Separated Value (CSV) rather than Quicken (QFX).

  4. 4

    Paste the download below just as it is. Its header line has a space after every comma, which is Ally's own formatting and is trimmed off for you.

Ally writes ISO dates, so there is no date order to get wrong

Most US bank exports write 08/01/2026 and leave you to work out whether that means August or January. Ally writes 2026-08-01, and keeps the clock time in a Time column of its own instead of packing it into the date cell — the one export in this family with no date ambiguity at all, which is worth saying out loud because it removes the commonest silent error in CSV importing. The Amount column is already signed the way a posting on an Assets: account wants it, withdrawals negative and deposits positive. That makes the Type column reading Withdrawal or Deposit a label rather than the source of the direction, so the preset leaves it unmapped.

Beancount output

Your transactions will appear here as soon as you paste a CSV.

Ally Bank export questions

How far back can I export from Ally?

Eighteen months. That is Ally's own limit on the account activity it keeps online, and the download inherits it — you type the range in when you choose the download icon. For a longer ledger, export in successive eighteen-month slices and convert each file; Beancount does not care what order you append transactions in, only what date each one carries.

Why do my descriptions contain a whole street address?

Because that is what Ally puts in the field. A card row can read “AFTERPAY 760 Market Street, Floo SAN FRANCISCO, CA, US”, commas and all, and a transfer row carries the raw ACH descriptor with its Tran codes. The field is quoted, so nothing splits or breaks — the narrations are simply long. Trim the column in a spreadsheet before converting, or tidy the narrations in the ledger afterwards; dates and amounts are identical either way.

Do I need the Type column that says Withdrawal or Deposit?

No, which is why the preset maps three of the five columns and ignores the rest. The direction already lives in the number: Ally signs the Amount, and the Type column merely repeats in words what the minus sign has said. Presets for exports that genuinely hide the direction in a text column — the Mint archive is the one on this site — do read such a column, and this is not one of those.

Converting an export from another bank or app?

Keep the ledger you just converted

Beancount.io hosts your plain-text ledger, imports future statements for you, and keeps every number auditable.

Start Free