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.tomlholds. - 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§
Functions§
- carry 🔒
- The balance from
startonas_of, carried day by day withflows, as seen from today tohorizon; and the first day from today it goes belowfloorwith a payment out: that day, the flow that takes it there, the balance then. - expected 🔒
- What is expected on an account from
as_oftohorizon: its movements read after the balance, then the recurring payments and planned lines ofbudgets(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 🔒