{{ pageTitle }}

{{ user.name.charAt(0) }}
Total Balance
{{ formatCurrency(dashboard.balance || 0) }}
{{ formatCurrency(dashboard.monthIncome || 0) }}
{{ formatCurrency(dashboard.monthExpenses || 0) }}

Budget Status

{{ getCategoryIcon(b.category) }} {{ getCategoryName(b.category) }} {{ b.percentage }}%

Goals

{{ g.icon }}
{{ g.title }}
{{ g.percentage }}%

Recent Transactions

No transactions yet

{{ getCategoryIcon(t.category) }}
{{ t.label }}
{{ formatDate(t.timestamp) }}
{{ t.type === 'income' ? '+' : '-' }}{{ formatCurrency(t.amount) }}

Upcoming Bills

{{ getCategoryIcon(r.category) }}
{{ r.label }}
{{ r.nextDue ? formatDate(r.nextDue) : 'No date' }}
{{ formatCurrency(r.amount) }}

No transactions

No budgets set

{{ getCategoryIcon(b.category) }} {{ getCategoryName(b.category) }}
{{ formatCurrency(b.spent) }} / {{ formatCurrency(b.monthlyLimit) }}

No savings goals

{{ g.icon || '๐ŸŽฏ' }}
{{ g.title }}
Due {{ formatDate(g.deadline) }}
{{ formatCurrency(g.currentAmount) }} / {{ formatCurrency(g.targetAmount) }}
Total Income
{{ formatCurrency(stats.totalIncome || 0) }}
Total Expenses
{{ formatCurrency(stats.totalExpenses || 0) }}
Savings Rate
{{ stats.savingsRate || 0 }}%
Transactions
{{ stats.transactionCount || 0 }}

Spending by Category

{{ getCategoryIcon(cat) }} {{ getCategoryName(cat) }} {{ formatCurrency(amount) }}

Monthly Overview

{{ m.month.slice(5) }}
Income Expenses
+Mo
{{ formatCurrency(fixedTotalIncome) }}
-Mo
{{ formatCurrency(fixedTotalExpenses) }}
Net
{{ fixedTotalNet >= 0 ? '+' : '' }}{{ formatCurrency(fixedTotalNet) }}
Yr
{{ fixedTotalYearly >= 0 ? '+' : '' }}{{ formatCurrency(fixedTotalYearly) }}
YrOnly
{{ fixedYearlyOnly >= 0 ? '+' : '' }}{{ formatCurrency(fixedYearlyOnly) }}

No fixed payments

{{ getCategoryIcon(fp.category) }}
{{ fp.label }}
{{ formatCurrency(fp.amount) }}/yr โ†’ {{ formatCurrency(fp.monthlyAmount) }}/mo Paused
{{ fp.type === 'income' ? '+' : '-' }}{{ formatCurrency(fp.monthlyAmount) }}

No recurring transactions

{{ getCategoryIcon(r.category) }}
{{ r.label }}
{{ r.frequency }} ยท {{ r.nextDue ? formatDate(r.nextDue) : 'No date' }}
{{ r.type === 'income' ? '+' : '-' }}{{ formatCurrency(r.amount) }}

BNP Paribas Fortis

๐Ÿฆ
{{ bankStatus.connected ? 'Connected' : 'Not Connected' }}
Last sync: {{ formatDate(bankStatus.lastSync) }}

API Configuration

Enter your BNP Paribas Fortis PSD2 sandbox credentials

No tasks

{{ t.title }}
{{ formatDate(t.dueDate) }} {{ t.dueTime || '' }}
{{ user.name.charAt(0) }}
๐Ÿ“ท

Profile

Belgian Fuel Prices

Last updated: {{ formatDate(fuelData.lastUpdate) }}

Source: {{ fuelData.source }}

{{ fuel.icon }} {{ fuel.label }}
{{ fuelData.current[fuel.key] ? 'โ‚ฌ' + fuelData.current[fuel.key].toFixed(4) : 'โ€”' }} /L
{{ fuelData.signals[fuel.key].signal === 'buy' ? 'โœ“ BUY NOW' : fuelData.signals[fuel.key].signal === 'wait' ? 'โณ WAIT' : 'โ€” NEUTRAL' }} {{ fuelData.signals[fuel.key].diffPct > 0 ? '+' : '' }}{{ fuelData.signals[fuel.key].diffPct }}% vs 7d avg {{ fuelData.signals[fuel.key].trend === 'up' ? '๐Ÿ“ˆ Rising' : fuelData.signals[fuel.key].trend === 'down' ? '๐Ÿ“‰ Falling' : 'โžก๏ธ Stable' }}

No fuel price data yet

Price Evolution

๐Ÿ“Š Chart will appear after 2+ data points. Prices are collected each time you refresh.

๐Ÿ’ก Prices are official Belgian maximum prices from FOD Economie. The buy signal compares the current price to the 7-day moving average.

{{ toast.message }}