Troubleshooting
What goes wrong with Investment Portfolio Manager, how to recognise it, and what to do.
| Message / symptom | Cause | What to do |
|---|---|---|
| "…cannot be confirmed: Selling N but only M held…" | the sale (or a later one) would oversell | find the missing purchase or opening position; short positions are not supported |
| "This leaves a cash balance of −X…" | the event is not funded (borrowing/margin not supported) | record the deposit or opening cash first; turn cash control off only for a portfolio whose cash really lives elsewhere |
| "…only N settled on D; this portfolio's policy only allows selling settled holdings" | the purchase has not settled on the sale date | check settlement dates or the portfolio policy |
| "…net … does not equal gross … charges" | statement or entry figures disagree | check charges; adjust the portfolio's amount tolerance only for genuine rounding |
| "broker account … does not hold EUR…" | currency not configured on the account | add the currency to the broker account; nothing is converted silently |
| "…is a derivative…catalogued but cannot be traded" | release one supports cash equities and ETFs only | — |
| Valuation shows INCOMPLETE | a holding has no price on or before the date, or a currency has no rate | enter/import the price or rate; the line is never valued at zero |
| Price shown STALE | newer price older than the threshold | import a newer price or raise price stale days deliberately |
| Overview card Stale | the ledger, a policy or prices changed since the run | Recalculate |
| "Policy version N has been used by a calculation" | used versions are frozen | add a new version with a later effective date |
| Import: "This exact file … was already imported" | same SHA-256 for this account (renamed copies too) | cancel the earlier batch if you really mean to re-import |
| Import: "The file is not UTF-8" | legacy export | set the profile encoding, e.g. cp1256 |
| Import: "Choose the date format…" / "is not a date in the … format" | format not set, or the file is in another order | set the right format; ambiguous dates are never guessed |
| Import: "'1.234,50' contains '.', but…" | separators differ from the profile | set decimal/thousands separators |
| Import: "Column … holds a formula" | XLSX cell contains a formula | export values only (formulas are never evaluated) |
| Import: totals mismatch (batch issue) | rows missing, extra or mis-read | compare the statement; the batch cannot be committed until fixed |
| Import: rows "Duplicate candidate" | no reference and same economics as an existing event, repeated reference, or reference of a reversed event | a reviewer decides import/skip with a reason |
| Import: rows "Already in ledger" | the broker reference is confirmed already | nothing to do; they are never imported twice |
| Import: "Dated on or before the migration cut-off" | activity already inside the opening balance | expected; an administrator may clear the cut-off deliberately |
| Import stays "Queued for the background job" | large file waiting for the cron | check Scheduled Actions → process queued statement imports is active |
| Reconciliation: "timing" items | the other basis (trade vs settled) agrees | usually accept as settlement timing |
| Reconciliation: "policy" cost differences | broker computes cost differently (e.g. excluding fees) | accept as a policy difference if the methods differ |
| Accounting: proposals blocked | policy not approved, FVOCI selected, account missing, or no Odoo rate for a foreign currency | complete and approve the policy; add the Odoo currency rate |
| Accounting: entry dated later than the event | the event date is in a locked period | expected: Odoo's first open date is used and recorded on the proposal |
| Accounting: "difference detected" on a posted proposal | the ledger changed after posting | reverse and correct through accounting; the bridge never rewrites posted entries |
| Bridge uninstall refused | posted entries are linked | see security-and-operations.md, "Uninstall" |
Logs: the product logs no statement content. For support, send the batch's Download results CSV (you may redact names) and the batch's Source & provenance tab (SHA-256, profile version, parser version).