Import a CSV export
On this page
A CSV export from your bank or another app can become transactions in one of your Pennyweight accounts. Your AI reads the file and sends Pennyweight the rows. You see a preview first, and nothing is saved until you say yes.
Before you start
An import goes into one account that already exists. If the account isn't in Pennyweight yet, ask your AI to add a manual account first, with the balance it held on the first day the file covers.
How to do it
- Share the CSV with your AI and say which account it belongs to.
- Your AI reads each row as a date, an amount and a merchant. Pennyweight needs dates as YYYY-MM-DD, so your AI converts other date formats.
- Your AI asks Pennyweight for a preview and tells you what it found.
- Say yes. Your AI saves the import and tells you how it went.
Import iso.csv into my Everyday Checking account.
What you'll see
Before anything is saved, your AI tells you how many rows are new, how many look like duplicates of transactions already in the account, and how many need a second look. The preview can also show the account's balance after the import. See reading an import preview for what each label means.
After you confirm, your AI reports how many transactions were imported. Rows skipped as duplicates are listed with the reason.
Bank CSVs
Bank exports often differ from the tidy shape above:
- Dates written as MM/DD/YYYY or DD/MM/YYYY.
- An amount with no sign, next to a column such as Type that says Debit or Credit.
- Separate Debit and Credit columns.
Your AI can read these columns and convert them: ISO dates, money out as a negative amount, money in as a positive one.
Import us-mmdd.csv into my Rainy Day Savings account. It's my bank's export.
Uploading the file directly (advanced)
Pennyweight can also read a CSV file itself. Your AI uploads the file, Pennyweight reads its columns, and you get the same preview:
- It takes CSV files only. For a PDF or a screenshot, see import a PDF or screenshot statement.
- Your AI sends the file's contents. A link to the file isn't accepted.
- The file can be at most 5 MiB.
- Amounts can be one signed column, a money-out and money-in pair (such as Debit and Credit, Outflow and Inflow, or Paid out and Paid in), CR or DR on every amount, or an amount with no sign next to a Type column that says Debit or Credit. A file that mixes these layouts is refused with the rows named, and nothing is imported.
- Dates written as YYYY-MM-DD work as they are. For other dates, your AI has to tell Pennyweight the file's date order: MM/DD/YYYY, DD/MM/YYYY, DD.MM.YYYY or YYYYMMDD. Pennyweight never guesses it. A date that fits neither the named order nor YYYY-MM-DD blocks the whole file, and nothing is imported. See CSV import says dates must be YYYY-MM-DD.
- Only a column headed Category or Categories becomes the category. A Type column never does.
- Nothing is saved until you confirm.
The headers the upload recognizes are listed in the CSV format reference.
Good to know
- A new manual account needs an opening balance. If a manual account has none, the import can't be saved until you give one: the balance at the start of the file's period, or a confirmed $0. When your AI sends the rows itself, the preview warns it about this before it tries to save. An account added in Settings needs one too. See set or correct an opening balance.
Preview importing iso.csv into my Holiday Fund account. Don't save anything yet. Do you need anything from me before it can be saved?
- Categories and your rules. When your AI includes the file's category column, each row's category is written as it appears in the file. Your AI can also map those labels onto categories you already use. Your active rules run when the import is saved, and a matching rule outranks the file's category. The preview tells your AI how many rows your rules would categorize. Rows with no category and no matching rule stay uncategorized. To keep the file's categories, ask your AI to import without applying your rules.
- One account per import. A file that covers several accounts needs one import per account.
- Accounts linked to your bank. Import only history older than what the bank feed already has. A row counts as a duplicate when its date, amount and merchant match a transaction already in the account. A row with the same date and amount but a differently worded merchant usually shows as a near match, and it is imported unless you tell your AI to skip it. A row dated differently from the feed's copy shows as new. See find and fix duplicates.
- Large files. Pennyweight takes up to 5,000 rows per import call, so your AI sends a longer file in parts.
- Changed your mind? You can undo an import. If an import is refused, see import errors.