Skip to main content

Module bank

Module bank 

Source
Expand description

The money watch (docs/accounting.md, “The bank”): your bank’s own export (OFX, CAMT.053, or its CSV) read into sioul-bank.toml, then held against the recurring payments of your budgets. Nobody looks when it goes badly (the ostrich effect, Olafsson & Pagel 2017), and a debit that stops does not say so: Sioul notices, and says it calmly and early.

  • Missed: a payment expected (rent, a standing order, wages) that did not pass in the days around its date.
  • Changed: one that passed with another amount.
  • Short: the balance, carried forward with what is expected, would go below zero on a day; how much is missing then, and the reserve that covers it.

No red balance, no “late” badge: a sentence, and what to do about it.

Structs§

Account
An account as kept: its last balance known.
Bank
What sioul-bank.toml holds.
Columns 🔒
A CSV’s columns, found by their names.
Expected
One payment expected ahead.
Imported
What an import added.
Movement
One movement of an account: money in positive, out negative.
Statement
What an export says.
Watch
The watch: its findings, the balance known, the days ahead.

Enums§

Finding
What the watch found, each said in a sentence by the window.

Constants§

MANIFEST

Functions§

carry 🔒
The balance from start on as_of, carried day by day with flows, as seen from today to horizon; and the first day from today it goes below floor with a payment out: that day, the flow that takes it there, the balance then.
expected 🔒
What is expected on an account from as_of to horizon: its movements read after the balance, then the recurring payments and planned lines of budgets (every budget’s when None) not seen yet, daily spending spread over its days; in date order.
fnv 🔒
matches 🔒
Whether a movement stands for a payment expected on date: a word of the payment’s name in the movement’s, or the same amount within days.
parse_amount
An amount as banks write it: “-62,00”, “1 234,56”, “1,234.56”, “+780.00 EUR”, “(62.00)”.
parse_date
A date as banks write it: “20261002”, “2026-10-02”, “02/10/2026”, “02.10.2026”, “02/10/26”.
parse_date_ordered 🔒
The same, the month first when month_first (“10/13/2026”, as PayPal’s American download writes it).
path 🔒
The element down names, by local names (namespaces aside).
read
Reads an export, whatever its form. words: a CSV’s column names, the statuses of rows left out, the lines above its header (words::BankWords).
read_camt 🔒
ISO 20022 camt.053: booked entries, and the closing booked balance. A file may hold several statements (one a day): every one of the first one’s account is read, and the newest closing balance kept.
read_csv 🔒
A bank’s CSV, PayPal’s and Stripe’s too: the header row found by its words (date, label or name, amount or net, or debit and credit), ; or ,, decimal commas; a balance written above it read too (as some French banks write it: “Solde (EUROS) ;1 234,56” under “Date ;03/10/2026”), or one on each row (PayPal). Net amounts, fees deducted, when given; rows in another currency than most of the file’s, and those refused, cancelled or pending, left out.
read_ofx 🔒
OFX, SGML (1.x) or XML (2.x): tags read in order, closing tags or not.
signed 🔒
An amount with its side: a debit (DBIT) negative.
text_at 🔒
The text of the element down names; none when it holds only spaces (the line break before a child, as in <Sts> around its <Cd> from camt.053.001.08 on).
watch
Holds the movements against the ledger’s recurring payments and planned lines, their labels compared without filler (words::BankWords::filler).
words 🔒
The words of a label that can name a payment: folded, three letters at least, no number, none of filler: the words that name nothing, “the”, “pour”, and what every bank line says (“PRLV SEPA”, “CARTE”, “VIREMENT”; words::BankWords::filler). “Choir, the year’s fee” is not “CB BAKERY OF THE PORT”.

Type Aliases§

XmlNode 🔒