Skip to content

Record Payments

Payments record money applied to a bill. Tracker uses active payments in the bill's cycle to calculate paid, remaining, overpaid, due-soon, late, and missed states.

This page covers how to record a payment, where payments come from, how autopay and bank-payment overrides interact with manual entries, and how debt balances are affected when you pay down a bill.

How do I record a payment?

From Tracker or a bill's payment history, enter:

  • Amount
  • Paid date
  • Optional method
  • Optional note
  • For autopay-enabled bills, an Autopay failed — paid manually checkbox on edit, allowing retroactive flagging of past failures (stored in payments.autopay_failure)

Tracker also supports quick payment actions and month-level bill skipping.

Where do payments come from?

Payments may be recorded manually or created from linked transactions. Each payment has a payment_source value:

Source Meaning
manual Recorded by the user from Tracker or the payment ledger
file_import Created from a CSV / XLSX / user-DB import (was historically import; corrected to file_import for canonical value set)
provider_sync Auto-matched from a SimpleFIN merchant rule (also covers transaction-match entries)

The source is used to:

  • Avoid double-counting bank balance pending deductions (only manual and transaction_match count; provider_sync is already reflected in the live bank balance)
  • Decide whether a manual payment is provisional and can be overridden by a later bank payment
  • Surface merchant-rule auto-matches in the Data → Bank Sync Auto-matched — review panel for the last 7 days, with an Undo button

How does autopay work?

Autopay bills can move from pending to assumed_paid when the daily worker runs on or after their due date. Users can still confirm or correct actual payment records. The Tracker AP badge shows a 12-month confidence score and a verification nudge; the BillModal autopay panel exposes the same data with a Mark verified button. See Bills for the full trust indicator and Mark verified workflow.

What happens when a manual and a bank payment overlap?

Manual payments entered from Tracker count immediately and let the user close out a bill before the bank has seen the debit. When a matching bank-backed payment clears for the same bill cycle, the bank payment becomes the accounting source of truth:

  • The manual payment is preserved as history with override metadata and a BillModal badge/note.
  • Overridden manual payments are excluded from Tracker, Summary, Calendar, Analytics, Categories, starting amount summaries, drift checks, notifications, status counts, bank pending deductions, trends, overdue checks, and debt balance deltas.
  • If the bank match is undone, the provisional manual payment is reactivated.

How do I review auto-matched payments?

Every merchant-rule auto-match in the last 7 days appears in a collapsible Auto-matched — review panel on Data → Bank Sync. Each entry shows the payee, date, amount, and the bill it was matched to. An Undo button reverses the match, restores the bill balance (including any interest), and reverts the transaction to unmatched. The panel appears only when there are reviewable items and auto-refreshes after each Sync Now or Backfill.

The unmatch flow on a linked transaction in BillModal opens a two-option dialog: Unmatch this payment only (single confirmation) or Review all similar matches (a checklist of all linked transactions for the bill whose payee normalizes to the same prefix, with All/None quick-selects and an optional "Remove merchant rule" checkbox). The new POST /api/transactions/unmatch-bulk endpoint handles mixed provider_sync (restores balance + soft-deletes payment) and transaction_match (standard unmatch service) entries in a single database transaction.

How do payments affect debt balances?

Payments can carry a balance delta for debt tracking. Snowball calculations use the bill's current balance, APR, and minimum payment. Interest accrues once per calendar month per debt bill — bills.interest_accrued_month records the last-charged month and prevents double-charging when multiple payments are recorded in the same month. payments.interest_delta stores the interest component per payment so delete, restore, and edit paths can correctly reverse only the payment component.

Next steps