Moving from a spreadsheet
On this page
If you've tracked your money in a spreadsheet, your AI can read it and bring the transactions into Pennyweight, one account at a time. Your category names come with them. New to importing? Start with how importing works.
Set up the spreadsheet
Your AI can read most layouts. This one leaves nothing to guess:
| Date | Description | Amount | Category | Currency |
|---|---|---|---|---|
| 2026-09-02 | Grocery Corner | -54.18 | Groceries | |
| 2026-09-03 | Payroll Deposit | 2150.00 | Income |
- Date as YYYY-MM-DD. The rows your AI sends must use this form, so your AI converts any other format first. A date such as 03/04 can be read as either month, so tell your AI which order your sheet uses.
- Amount signed from the account's side: money out is negative, money in is positive. On a credit card, a charge is negative and a payment is positive.
- Category is optional. Each row's category is saved as written, unless one of your active rules matches the row: then the rule's category wins. A row with no category stays uncategorized unless a rule matches it. To keep every category exactly as written, ask your AI to import with rules turned off.
- Currency is optional. Fill it in only for a row in a currency other than the account's. Nothing is converted. See accounts and totals in more than one currency.
- Notes, if you keep them in their own column, carry over too.
- One tab per account. Each import goes into a single account. A tab that mixes accounts has to be split into one batch per account.
- Remove totals, subtotals and blank rows. Every row needs a date, an amount and a description, so a totals row with no date stops the import.
How to do it
- Share the file with your AI and say which account each tab belongs to.
- If an account doesn't exist yet, ask your AI to create it. Give it the account's balance just before the first row in the tab. A new manual account needs this opening balance before its first import. See add a manual account.
- Your AI shows a preview for each tab: the rows it found, any that look like duplicates, and the change to the balance. Nothing is saved yet.
- Say yes to import.
Import the transactions in export.xlsx into my Everyday Checking account.
accounts-multisheet.xlsx has one tab per account: the Checking tab is my Everyday Checking and the Card tab is my Rewards Card. Keep the categories as they are in the sheet. Show me both previews, then ask me once before saving.
What you'll see
Your AI reads the sheet and shows a preview for each account: how many rows are new, how many look like duplicates or need a look, and how the balance would change. If the sheet has a category column, the preview lists the categories it found. After you confirm, your AI reports how many rows were saved in each account, and lists any skipped row with the reason. See reading an import preview.
What carries over
Each row brings its date, amount, payee, category text, currency and notes. Tabs, formulas, running-balance columns and category groups don't move: categories arrive as one level of text. See the full list of what doesn't move.
Good to know
- Your AI does the reading. Pennyweight has no Excel importer. Your AI reads the file and sends the rows. Uploading a file straight to Pennyweight works for CSV only, so if your AI can't open an Excel file, save each tab as CSV and share those. A CSV uploaded straight to Pennyweight converts dates not written as YYYY-MM-DD only when your AI names their order. See import a CSV.
- One bad row stops the batch. If a row is missing its date, amount or description, has a date not in YYYY-MM-DD, or has an amount with a currency symbol or a thousands separator, Pennyweight refuses the whole batch. The message gives the row's number, counting from the first row your AI sent. Your AI can fix the row and send the batch again.
- Row counts are checked. Your AI can tell Pennyweight how many rows a tab has. If a different number arrives, the batch is refused, so a dropped row can't slip through.
- Transfers between tabs. A transfer from checking to your card shows up on both tabs. Import each side into its own account, then check that the pair is linked. An import links a pair on its own only when a row is categorized as a transfer and its other side matches it with clear evidence. Ask your AI to find and link the rest. See link transfers.
- Big spreadsheets. For many tabs or years of rows, ask your AI to plan the import before it starts. The plan matches each tab to an account and splits its rows into batches of about 250. See import years of history across many accounts.
- Rules run when the import is saved. A matching rule's category replaces the one from your sheet, and the preview shows how many rows your rules would change. Rules you add after the import change rows already saved only when your AI applies them. To recreate the rules you relied on, see rebuild your rules after moving.
- Check the balance. After the import, compare each account's balance with the last balance in your sheet. See after you import.