AnchorAnchor
Modules

Banking & Reconciliation

Import bank statements, match transactions, and reconcile multiple accounts in Anchor, including ZAR and foreign-currency accounts for SA books.

Bank Accounts

Create bank accounts linked to your chart of accounts. Each account owns its own statement imports, transactions, and reconciliation workflow.

Fields

FieldDescription
Account NameDisplay name (e.g., "Business Checking")
Account NumberMasked number for display
Bank NameName of the bank
CurrencyAccount currency
CountryCountry or region of the account
Account TypeChecking, savings, credit card, cash, loan, investment, or other
Accent ColorVisual identity used across the banking UI
GL AccountChart of accounts link

Add a transaction manually

If a statement import skipped a few lines (parse error, incomplete file, etc.), you do not need to re-import everything:

  1. Open the bank or credit-card account.
  2. Click Add transaction (header, or on the Transactions tab).
  3. Enter date, type (Money out for purchases/charges, Money in for payments/refunds), description, and amount. Add more rows if needed.
  4. Save — lines appear under Transactions → To do.
  5. Categorize (or match invoice/bill) as usual — pick the category, VAT/tax, and optional customer/supplier there (same as for imported lines), then tick them on the statement check if you use Reconcile.

Duplicates of existing lines (same date, amount, description) are not added again.

Importing Transactions

Import bank statements into a specific bank account:

  1. Navigate to your bank account
  2. Click Import Statement
  3. Upload a file or paste raw statement data
  4. Preview detected rows, duplicates, warnings, and date ranges
  5. Confirm the import

Supported formats:

  • CSV
  • TSV
  • QIF
  • OFX / QFX / QBO
  • CAMT.052 / CAMT.053 / CAMT.054
  • MT940 / MT942
  • BAI2
  • JSON lines (json_lines) — structured API import (POST …/transactions/import-lines). Amounts are integer cents; lines stay unreconciled (no bank-rule auto-reconcile on ingest).

Every imported transaction stores provenance such as the import batch and source format.

The banking UI loads all transactions for an account (paginated API, max 100 per request, walked client-side) so credit-card months with 50+ lines are fully visible — filters and counts apply to the complete set.

Apply bank rules after import

Structured API imports intentionally do not auto-categorise on ingest. After lines appear under Transactions:

  1. Configure patterns under Settings → Bank Rules:
    • Get Suggestions — mines descriptions you already categorised the same way at least twice and proposes “description contains … → account” rules. Create rule saves immediately; Review opens the editor first. Patterns already covered by an active rule are omitted. Generic words (payment, transfer, service, etc.) are never suggested — prefer merchant names.
    • Categorise to account — fee/interest/merchant → chart account.
    • Settle open invoice/bill — pin a contact; create a payment when the bank amount matches open documents (exact amount, document number in the narrative, or optional FIFO). Choose review first to queue proposals, or post immediately on Apply.
  2. Open the bank account → TransactionsApply bank rules.
  3. Matching to-do lines use the first matching rule (by priority). Settle proposals appear in a review panel (Confirm / Dismiss). Optional auto-settle on classic statement import requires both the rule’s “Settle on import” and the org flag bankRuleAutoSettleEnabled (API import-lines never auto-settle).

Use Assign in bulk or the bank line Match invoice / Match bill button for one-offs. Tick one or more open invoices (or bills) for the same customer/supplier, set how much of the deposit applies to each. For Match invoice, allocated may be less than the bank amount — the remainder is held on account as a customer credit (overpayment) and can be applied later from the invoice. Match bill still requires allocated = bank amount. Use Fill FIFO to auto-fill oldest-due first. ⋯ → Find & match links existing payments/journals or a single open document. Bank rules settle design: docs/design/bank-rules-settlement.md; multi-doc match: docs/design/multi-invoice-bank-match.md.

Category default tax

When you Assign to a category, Record as expense, Split, or Assign in bulk, picking a chart account applies that account’s default tax (if set under Chart of Accounts → Settings). Bank rules use rule-level tax when set; otherwise they inherit the account default at apply time.

Bank notification email

Each organisation has a stable bank notification address:

{your-organisation-id}@anchorapp.co.za

Shown on Accounting → Banking (copy button). Forward bank alerts and statement emails to that address. Anchor matches the local-part to your organisation and stores the message (metadata + body snippet). Hosted Anchor has object storage configured, so supported attachments can be kept for import into a bank account via API/MCP. Without object storage (self-hosted), notifications still appear as received in the Banking panel for visibility.

StatusMeaning
receivedCaptured; review in the banking panel list
parsedAn attachment was imported into a bank account
failed / ignoredCould not process or not for this org

Live open-banking feeds are separate and not enabled yet. Design: docs/design/platform-email-and-bank-notification-ingest.md.

MCP: get_bank_notification_email, list_bank_notifications, import_bank_notification.

Live Connections

Live bank connections are not enabled yet.

  • The banking UI shows No bank connected
  • Statement imports and email notification ingest are the active automated paths today
  • Salt Edge / partner bank feeds are planned for a future release

Reconciliation

Reconciliation matches bank transactions to your accounting records.

Transaction list

Each row shows the statement date (bank day). After a line is posted to the books (categorise, match, transfer, etc.), the list also shows when it was recorded (In books date/time).

Edit details (until period close)

On a bank line, use Edit details / Details to correct:

  • Statement date
  • Description
  • Reference and payee
  • Amount (and money in / money out) — only while the line is still unreconciled and not yet in the books (not categorised, matched, or part of a transfer / finished statement check)

Allowed while the date is not period-locked (Settings → period lock / closed fiscal year). If the line is already in the books, use Undo first to change the amount, then edit and re-categorise or re-match. When a linked journal is still posted, its date and description update with the bank line (no void/recreate). Locked periods return an error until unlocked.

API: PATCH /api/v1/bank-transactions/:id (optional amount in integer cents). MCP: update_bank_transaction.

On Transactions and Reconcile, the search box matches:

  • Description, reference, and payee (substring, case-insensitive)
  • Amount when the whole query looks like money (e.g. 5.50, R5.50, 5,50, 201, 201.00)

Amounts are stored as integer cents. A decimal query is major units (5.50 → R5.50). A digits-only query matches both as cents and as whole rands (550 finds R5.50 and R550.00). Sign is ignored (money in and money out both match). Reconcile also matches the statement date string.

Transaction Statuses

  • Unreconciled — Not yet matched to your books / statement workflow
  • Reconciled (status) — In your books (categorised or matched); may still need to be ticked on a statement check
  • On a statement checkreconciliationId set: ticked on an open check, or closed into a completed check
  • Excluded — Intentionally ignored

Statement check workflow

  1. Navigate to the bank account → Reconcile
  2. Check a statement — enter the statement period (start and end dates, e.g. 1 Mar–23 Mar 2025) and opening/closing balances (session stays In progress)
  3. The tick list shows only bank lines dated in that period (plus any already ticked on this check)
  4. If you chose the wrong dates (e.g. wrong year), use Edit period on the in-progress banner — ticks outside the new range are cleared automatically
  5. Tick lines that appear on the statement — ticks save immediately and survive page refresh
  6. Untick to remove a line from the open check
  7. Finish statement check when done (or Mark N on statement & finish for an explicit final set)

Lines must already be in your books (categorised or matched to an invoice/bill) before they can be ticked.

Design detail: docs/design/statement-check-draft-ticks.md.

The fuzzy matcher on the bank account page still suggests matches based on amount, date, reference, and description.

On this page