Error Codes
Error Codes Reference
Quick reference for the error codes and error messages the app can show you, what causes them, and how to resolve them.
Overview
Cine Power Planner does not use a single application-wide error-code scheme. Most errors reach you as a plain-language message, and only some subsystems attach a stable machine-readable code. This page documents the subsystems that do, using the identifiers those subsystems actually emit — so a code you see on screen or in the browser console can be found here by searching for it verbatim.
Each family uses its own naming convention, and the convention is part of the identifier:
| Family | Convention | Example | Where you see it |
|---|---|---|---|
| Authentication & account | snake_case | invalid_login_credentials | Sign-in, sign-up, password and email changes |
| Banking (FinTS) | FINTS_ + UPPER_SNAKE | FINTS_SCA_EXPIRED | Accounting → Banking, when connecting a bank |
| Scanner / OCR | kebab-case | pdf-encrypted | Scan to PDF, Accounting → Expenses capture |
| Storage, backup & restore | i18n key | errors.outOfSpace | Saving, backup export and restore |
| Invoice email | UPPER_SNAKE | PROFILE_EMAIL_MISSING | Sending an invoice or a payment reminder |
If the error you are looking at is not listed here, it is being surfaced as a message rather than a code — see General troubleshooting steps below, and Troubleshooting.
Authentication & Account Errors
Returned by the authentication provider and translated into the message shown in the dialog. The Message shown column is the exact text the app displays.
| Code | Message shown | Cause | Solution |
|---|---|---|---|
invalid_login_credentials | Incorrect email or password. | Email/password pair did not match an account | Re-enter your password, or use Forgot Password to reset it |
email_not_confirmed | Email not confirmed. Check your inbox for a verification link. | The account exists but was never verified | Open the verification link in your inbox, then sign in again |
email_exists | This email address is already registered. Please sign in or use a different email. | Sign-up used an address that already has an account | Sign in instead, or sign up with a different address |
user_already_exists | This email address is already registered. Please sign in or use a different email. | Same as email_exists | Sign in instead, or sign up with a different address |
invalid_email | Invalid email address. | The address is malformed | Check for typos — a missing @, a stray space, a trailing dot |
weak_password | Password is too weak. | The password did not meet the minimum requirement | Use a longer password — at least 8 characters |
leaked_password | This password has been found in a data breach and cannot be used. Please choose a different password. | The password appears in a known breach corpus | Choose a different, unique password — a password manager helps |
same_password | New password must be different from the current one. | A password change reused the current password | Choose a password you have not used on this account |
session_not_found | Please sign in again and try. | The signed-in session is no longer valid | Sign in again, then retry the action |
over_request_rate_limit | Too many attempts. Please try again later. | Too many attempts in a short window | Wait a few minutes before retrying |
over_email_send_rate_limit | Too many attempts. Please try again later. | Too many verification or reset emails requested | Wait a few minutes — the previous email is still valid |
request_timeout | The server took too long to respond. Please try again in a moment. | The request exceeded its deadline | Retry — if it persists, check your connection |
During a password change,
invalid_login_credentialsmeans the current password is incorrect andweak_passwordreports the minimum explicitly: "Password is too weak (minimum 8 characters)."
Banking (FinTS) Errors
Raised when connecting to or syncing with a bank under Accounting → Banking. Every code below is stable and is shown with a recovery affordance.
| Code | Meaning | Blocking? | Solution |
|---|---|---|---|
FINTS_SCA_FAILED | The TAN was rejected. | No — retryable in the dialog | Re-enter the TAN. Confirm you approved the right request in your banking app |
FINTS_SCA_EXPIRED | The TAN window elapsed. | No — restart the dialog | Reconnect and approve the TAN more promptly |
FINTS_SESSION_EXPIRED | The banking session is no longer valid. | No — reconnect | Reconnect to the bank and retry |
FINTS_PIN_INVALID | The online-banking PIN was rejected. | No — correct and retry | Re-enter the PIN. Repeated failures can lock your bank account — check with your bank |
FINTS_NOT_IMPLEMENTED | The FinTS connector is not available. | Yes — no retry clears it | Use manual entry or a CSV / camt.053 import instead |
FINTS_PRODUCT_NOT_REGISTERED | The FinTS product registration is missing. | Yes — no retry clears it | Use manual entry or a CSV / camt.053 import instead |
FINTS_UNKNOWN | The bank returned an error the app does not map. | No | Retry once; if it persists, use the CSV / camt.053 fallback and report the code |
Blocking codes end the flow — retrying, changing the PIN or reconnecting will not clear them, so the app shows a dead-end notice with the import fallback rather than a retryable inline error.
Scanner / OCR Errors
Surfaced by the scanner-reliability pipeline (v0.226.0+) on the Scan to PDF tool and the Accounting → Expenses capture surfaces. Each kind carries an i18n key (
scanner.error.<kind>) and a UI affordance (toast/banner/modal) — the table below shows the default message and the recommended fix.
| Kind | Message | Affordance | Cause | Solution |
|---|---|---|---|---|
timeout | OCR took too long — fields can be entered manually. | toast | Per-page deadline exceeded (default 12 s; batch deadline max(45 s, pageCount × 12 s + 5 s)). | Fill the form fields manually — the attachment is preserved. Retry the OCR by tapping Run again on the capture form. |
aborted | Scan cancelled. | toast | You navigated away mid-OCR, or tapped Retake before recognition finished. | No action needed — the pipeline shut down cleanly. Re-capture or upload to try again. |
pdf-encrypted | Password-protected PDFs can't be scanned. Remove the password and try again. | banner | The PDF requires a password. The app never prompts for one (security policy). | Use PDF Tools → Decrypt locally to remove the password, then re-upload. |
pdf-decode | This PDF couldn't be read. Try saving a fresh copy. | banner | pdf.js failed to parse the file — corrupted bytes, truncated download, or a non-standard format. | Re-save the PDF via File → Save As in your PDF viewer; or run it through PDF Tools → Compress to normalize it. |
pdf-empty | No readable content found in this PDF. | banner | Either the PDF has zero pages, or the OCR fallback hit the 10-page cap and the remaining pages were skipped. | Check the page-cap warning banner; split the PDF first (PDF Tools → Split) if it has more than 10 image-only pages. |
lang-mismatch | Text language not supported. Reload to try again. | toast | Tesseract worker reported a language code outside eng / deu. | Reload the page — the language packs reload from disk. |
engine-init | Scanner failed to start. Please reload the app. | modal | The Tesseract worker / pdf.js failed to initialise (often a stale service-worker cache). | Reload the app. If the error persists, clear the browser's site data for cine-power-planner.com and reload. |
worker-crashed | Scanner stopped unexpectedly. Retry available. | banner | The Tesseract worker terminated mid-recognition (browser memory pressure or a runtime bug). | Tap Retry. If it crashes repeatedly, close other browser tabs to free memory and try a smaller image. |
quota-exceeded | Local cache is full. Older entries were cleared. | toast | The OCR cache hit the 50 MB LRU ceiling and an eviction sweep ran. | No action needed — the eviction is automatic. Fresh OCR will run for the current scan. |
unsupported-format | This file type can't be scanned. | toast | The uploaded file isn't application/pdf or image/* MIME (or has no detectable MIME at all). | Convert to PDF or JPG/PNG/HEIC first. Common offenders: .heif from non-Apple cameras, .dng raw, .webp from old Android exports. |
unknown | Something went wrong. Please try again. | toast | An unmapped exception bubbled up — usually a browser-engine quirk. | Reload the page. If it recurs, check the browser console (F12) for the underlying error and file a bug report including the device + browser version. |
Storage, Backup & Restore Errors
These surface as messages rather than codes. The identifier in the first column is the translation key, which is what appears in a bug report or the browser console.
| Key | Message shown | Cause | Solution |
|---|---|---|---|
errors.storageFull | Storage Full | Local browser storage is exhausted | Free space in Settings → Backup & Data → Cleanup, then retry |
errors.outOfSpace | You have run out of local storage space. Please free up space to save changes. | A save could not complete | Export a backup, then remove projects you no longer need locally |
errors.outOfSpaceBackups | You have run out of local storage space for backups. | Backup storage is exhausted | Delete older backups in Settings → Backup & Data → Cleanup |
errors.outOfSpaceProjectBackups | You have run out of local storage space for project backups. | Per-project backup storage is exhausted | Remove older project backups, or export and clear them |
errors.emergencyCleanup | Emergency cleanup ran. Please free up space in Settings. | The app reclaimed space automatically to keep working | Free space now — the cleanup is a last resort, not a fix |
When a restore rejects a backup file, the message names the part that failed validation:
| Key | Message shown | What it means |
|---|---|---|
errors.payload_invalid | Backup payload is missing or invalid. | The file is not a Cine Power Planner backup, or is truncated |
errors.projects_invalid | Projects must be an array. | The projects section is the wrong shape |
errors.templates_invalid | Templates must be an array. | The templates section is the wrong shape |
errors.contacts_invalid | Contacts must be an array. | The contacts section is the wrong shape |
errors.history_invalid | History must be an object when provided. | The optional history section is the wrong shape |
errors.version_invalid | Version must be numeric when provided. | The backup's version marker is not a number |
A backup that fails these checks is rejected whole — nothing is partially imported, so your existing data is left untouched. Keep more than one backup: a file damaged in transit cannot be repaired from the app.
Invoice Email Errors
Raised when sending an invoice or a payment reminder.
| Code | Cause | Solution |
|---|---|---|
PROFILE_EMAIL_MISSING | Your profile has no sender email address configured | Add a sender address in Settings, then resend |
SERVER_ERROR | The mail backend returned an error | Wait a few minutes and resend — the invoice itself is saved and safe |
General Troubleshooting Steps
If the error you are seeing is not listed above, try these steps:
- Refresh the page — resolves most transient errors
- Clear browser cache — fixes stale data issues
- Check your connection — many errors are network-related
- Update the app — older versions may have known bugs
- Export a backup — before attempting any destructive fix
- Check the console — press
F12→ Console tab for detailed error messages
For persistent issues, see Troubleshooting or contact support.
Last Updated: 2026-09-08 Version: 0.790.2
