Skip to content

Transactions

Every bank and credit card transaction lands here after syncing from connected accounts. Confirm each one is categorized correctly, match payments to invoices or bills, and resolve anything AI could not decide. Categorizing creates a balanced journal entry behind the scenes — a clean list means clean financial statements.

Key capabilities

  • Automatic sync from connected accounts, with periodic fallback
  • Layered auto-categorization: bank rules, your history, cross-business patterns, then AI
  • One-click AI Categorize with suggestions you can accept, plus Undo
  • Link as Payment to settle invoices and bills, or split one payment across several bills
  • Split one transaction across several categories, including Split by items from a receipt
  • Bulk edit: category, counterparty (optionally saved as a rename), tags, Mark Reviewed, Mark Reconciled, and receipt actions
  • A Needs Review flag on every transaction and a For Review tab for uncategorized bank rows, plus Create Rule, Ask Client, and comments
  • Import from CSV, Excel, or pasted text, with an optional category column; statement PDFs and bank exports through Regent
  • Recurring Detection and Category Consistency tabs for auditing repeating charges and inconsistent coding
  • Receipts with merchant, totals, and line items read for you, and a check that each matches its charge (see Receipt Coverage)
  • Filters for bank account, category, tag, date, amount direction, source, review status, reconciliation, missing counterparty, uncategorized, and receipt status

How it works

Transactions flow in from your connected accounts. DayZero assigns a counterparty and a suggested category. High-confidence rows post a journal entry automatically; the rest wait in the uncategorized queue.

flowchart LR
  bank["Bank / card"] --> sync["DayZero sync"]
  sync --> clean["Clean counterparty"]
  clean --> engine["Categorization"]
  engine --> confident{"High confidence?"}
  confident -->|"Yes"| done["Categorized"]
  confident -->|"No"| review["Uncategorized queue"]
  review --> done

How to use it

  1. Open Transactions. Rows appear automatically from connected accounts.
  2. Click a transaction to assign a category, add a memo, apply tags, attach a receipt, or comment. Use Needs Review to flag or clear it.
  3. Use Link as Payment to match an invoice or bill, or split one payment across several bills.
  4. Click AI Categorize to run categorization over the uncategorized backlog and accept what looks right.
  5. Open the For Review tab to work the uncategorized bank rows, or filter by Uncategorized, Missing counterparty, or the Receipt column.
  6. Select rows and use Bulk Actions to set category, counterparty, or tags, then Mark Reviewed or Mark Reconciled.
  7. Click Upload to import: Upload File or Paste from Bank, pick the destination ledger, map columns, and click Preview Upload to check the counts before you upload.

Developers can create, import, and edit transactions over the API; see the Transactions API guide.

Pro tips

  • Uncategorized transactions do not appear on your P&L or Balance Sheet — clear them before close.
  • Recategorizing all transactions for a counterparty creates a bank rule for future matches.
  • Positive amounts are money in; negative are money out. For credit card imports, enter charges as positive values.
  • Filter to Missing receipt, then select the rows and press Request receipts — the client is asked, and reminded, for you. Mark bank fees, loan payments, and payroll as No receipt needed once so they stop showing as missing.
  • Migrating pre-categorized history? Map a category column at import so rows post straight to those ledgers.

In-depth guide

Sources and status

Bank-synced rows are hidden (reversible) when deleted and can be removed permanently. Manual and imported (CSV/Excel) rows delete permanently. Transfers imported from Xero or QuickBooks are removed at the source.

Each transaction tracks three states independently: posted (appears in reports), reviewed (you verified it), and reconciled (matched to a bank statement). AI Categorize runs in the background and applies results automatically when confident; high-confidence decisions also teach new bank rules.

Importing transactions

Preview Upload shows Valid, To Upload, Duplicates, and Invalid Rows before anything is created. Duplicates (same amount, date, and description) are held back unless you tick Import duplicates anyway. Required columns are date, amount, and description; an optional category column is recognized under common headers such as Category, Ledger, Account, and Account Name.

  • Category names match your chart of accounts by name (case-insensitive), and matched rows post directly to that ledger.
  • Unknown names show as warnings in the preview and fall back to normal categorization. Fix the names or create the ledgers first for a one-pass import.
  • Import raw — skip categorization skips the rules and AI pass. Rows go to the mapped category, otherwise to Uncategorized Expense or Income.
  • Unless you import raw, equal-and-opposite rows in two of your accounts within a few days are paired as Transfers Between Accounts, so a transfer is never coded as income or expense. A value in the category column is never overridden.

Statements and bank exports

Statement PDF to transactions. Ask Regent to read a credit card or bank statement (PDF, screenshot, CSV, or Excel) for a ledger, for example "here is the Amex PDF, upload September". It builds an upload file you preview and import like any other. Credit card rows come out charge-positive and bank rows deposit-positive, and pending items are left out unless you ask. When the statement shows opening and closing balances, DayZero tells you whether the rows tie to them. A gap usually means a missing or duplicated row, so check before importing. Nothing is imported by this step.

Fill in who paid, from the bank's own export. A feed may show only "INCOMING WIRE" or "MOBILE DEPOSIT", while the bank's activity export carries the originator or payer. Enrich from export matches each export row to an existing transaction (same amount, date within two days, one-for-one), appends the detail to the description ("MOBILE DEPOSIT · Pearson Education"), and sets the counterparty. It starts as a preview of what would change, what did not match, and what is ambiguous. Descriptions or counterparties you edited by hand are left alone unless you choose to overwrite them, and a counterparty taken from your invoices or bills is never replaced.

Receipts and documents

Open a transaction and use Receipts & documents: drop files onto the panel, click Browse, or paste a screenshot (⌘V / Ctrl+V). PDF, JPG, PNG, WEBP, and HEIC are accepted, up to 20 files per transaction. The file is attached first and read second, so a failed read never loses your upload; use Try again or Re-read if needed. Reading captures merchant, date, payment method, subtotal, tax, tip, total, and every line item, then compares the receipt with the charge:

Verdict Meaning
Matches transaction The receipt total equals the amount charged.
Likely tip Charged a little more than the printed total with no tip line — normal for restaurants.
Charged more / less than receipt The totals disagree. Check the receipt belongs here.
Total matches, date differs Right amount, but dated more than a week from posting.
Receipt is in another currency Totals aren't compared across currencies.

If the receipt's merchant differs from the counterparty, Use as counterparty applies it and remembers it. The Receipt column shows a paperclip with the file count, tinted amber when a receipt disagrees with its charge; its filter offers Has receipt and Missing receipt, and carries into exports.

DayZero applies a receipt policy (expenses of $75 or more by default) and marks rows Missing, Requested, or Not needed. Coverage, policy settings, bulk Request receipts, and client reminders are in Receipt Coverage.

To get a receipt without uploading it yourself:

  • Import from Ramp fetches the receipts the cardholder uploaded in Ramp. It is safe to press again.
  • No receipt? Ask the client for it opens Ask Client prefilled. The client attaches a photo or PDF in their portal's Questions tab, and it lands here.
  • Ask Regent: attach a receipt in chat and name the transaction ("attach this to the Blue Bottle charge"), or ask "which expenses last month are missing a receipt?" Regent shows changes for your approval first, and won't split by a receipt whose total disagrees with the charge.

Split by items appears when a receipt has two or more priced lines and agrees with the charge. The split editor opens with one row per line, with tax, tip, and rounding spread in proportion so the rows add up exactly. Change only the lines that belong elsewhere, then save. Long receipts keep their ten largest lines and fold the rest into Other items.

Category Consistency tab

This tab shows every category each counterparty's transactions landed in, with transfers between your accounts bucketed separately so they don't read as miscategorized spend. Select the outlier rows and bulk-recategorize or re-counterparty them in place. For ambiguous descriptions (such as "Revenue Roll Payment"), use Description contains…, then Select all matching to fix every occurrence at once.

Bulk edits, row by row

Regent and the API can edit up to 500 transactions at once, each with its own description, category, counterparty, and review status. Every row is checked first: one bad row (unknown transaction, a bank account as the category, a closed period) rejects the whole request and changes nothing. See the Transactions API guide.