User Guide - SPAYD Applied
Complete guide for using the SPAYD Applied suite of applications.
Table of Contents
- SPAYD QR Generator
- Batch Payment Processor
- FioFetch Transaction Manager
SPAYD QR Generator
Overview
The SPAYD QR Generator creates standard Czech QR payment codes that work with all Czech banking apps. Generate payment requests quickly by selecting accounts, events, and entering amounts.
Live Demo: https://pexmor.github.io/spayd-applied/
Getting Started
First-Time Setup
- Open the application in your web browser
-
Add your bank account(s):
- Click the hamburger menu (☰)
- Select “Accounts”
- Click “Add Account”
- Enter account name and IBAN
- Click “Save”
- Create payment events (optional):
- Click “Events” in the menu
- Click “Add Event”
- Enter event name, select account, set default amount
- Click “Save”
Main Features
1. Generate QR Payment
Main Screen - Generate Tab

Steps:
- Select a bank account from dropdown
- Choose an event (optional) or leave as “Select Event”
- Enter the payment amount
- Enter Variable Symbol (VS) - auto-generated or manual
- Add a message (optional)
- Click “Generate QR Code”
Result:

- QR code is displayed
- Ready to scan with mobile banking app
- Payment details shown below QR
- Click “Download QR” to save as PNG
- QR automatically saved to payment history
2. Manage Accounts
Accounts Tab

Actions:
- Add Account: Click “Add Account” button
- Name: Friendly name (e.g., “My Savings”)
- IBAN: Account number (CZ format validated)
- Currency: Select from dropdown (CZK, EUR, USD, etc.)
- Edit Account: Click pencil icon next to account
- Delete Account: Click trash icon (confirmation required)
Tips:
- Add multiple accounts for different purposes
- Use descriptive names for easy selection
- Cannot delete account if used in events
3. Manage Events
Events Tab

Events are payment templates for recurring transactions.
Actions:
- Add Event: Click “Add Event” button
- Name: Event description (e.g., “Lunch with friends”)
- Account: Select target account
- Default Amount: Pre-filled amount
- Edit Event: Click pencil icon
- Delete Event: Click trash icon
Use Cases:
- Regular group expenses (lunches, dinners)
- Recurring payments (rent, utilities)
- Event-specific collections (trips, gifts)
4. View Payment History
History Tab

View all previously generated QR payments.
Features:
- Chronological list (newest first)
- Shows: date, account, amount, VS, message
- Search/filter capabilities
- Click entry to view details
- Re-generate QR from history
- Export history to JSON
Actions:
- View Details: Click on payment entry
- Clear History: Click “Clear All” (confirmation required)
- Export: Click “Export” to download JSON file
5. Monitor Sync Queue
Sync Queue Tab

Monitor webhook sync status (if configured).
Status Types:
- Pending: Waiting to sync
- In Progress: Currently syncing
- Success: Successfully synced
- Failed: Sync error (retry available)
Actions:
- Retry Failed: Click retry icon
- Clear Queue: Remove synced items
Global Configuration

Available Settings:
- Webhook URL: External sync endpoint (optional)
- Language: Czech (CS) or English (EN)
- Auto-sync: Enable/disable automatic sync
- Default Currency: CZK, EUR, USD, etc.
Import/Export Settings:
- Export: Download all settings and data as JSON
- Import: Restore from backup file
Language Support
Switch between Czech and English:
- Click language switcher (CS/EN) in top bar
- All UI text updates immediately
- Language preference saved
Offline Mode
The app works completely offline:
- All data stored locally (IndexedDB)
- No internet required for QR generation
- Sync features require connection
Data Storage:
- Accounts, events, history stored in browser
- Data persists across sessions
- Private browsing mode: data cleared on close
Tips & Best Practices
- Organize with Events: Create events for common payments
- Use Descriptive Names: Makes selection easier
- Variable Symbols: Use unique VS for payment tracking
- Regular Backups: Export settings periodically
- Test QR Codes: Verify scanning before sharing
Troubleshooting
QR Code Won’t Scan:
- Ensure IBAN is valid (CZ format)
- Check amount is positive number
- Verify VS is numeric (if used)
- Try increasing screen brightness
Data Not Saving:
- Check browser storage settings
- Ensure cookies/storage enabled
- Try clearing browser cache
- Use latest browser version
Sync Failing:
- Verify webhook URL is correct
- Check internet connection
- Review sync queue for errors
- Test webhook endpoint separately
Batch Payment Processor
Overview
Generate multiple payment requests with email notifications. Perfect for event organizers, clubs, or businesses needing to invoice multiple people.
Access: https://pexmor.github.io/spayd-applied/app/batch.html
Getting Started
Workflow Overview
- Import or enter people data (name, email, amount, VS)
- Configure accounts and events
- Generate payment QRs for all people
- Generate email templates
- Export batch download (HTML emails + QR images)
Features
1. People Data Management
Import from Excel/CSV:
- Click “Import Data”
- Select Excel or CSV file
- Map columns: Name, Email, Amount, Variable Symbol
- Preview and confirm import
Required Columns:
- Name: Full name or identifier
- Email: Valid email address
- Amount: Payment amount (numeric)
- Variable Symbol: Unique identifier (auto-generated if empty)
Manual Entry:
- Click “Add Person”
- Fill in form fields
- Click “Save”
2. Account & Event Management
Similar to main app but uses separate storage.
Setup:
- Add bank accounts
- Create events for the batch
- Select event for batch processing
3. Generate Batch Payments
- Click “Generate All”
- System creates:
- Individual QR codes for each person
- HTML email templates
- Text email alternatives
- Preview generated emails
4. Email Preview
Features:
- Live preview of email content
- Personalized for each recipient
- Includes embedded QR code
- Payment instructions
- Contact information
Customization:
- Edit email template
- Add custom messages
- Include additional instructions
- Adjust formatting
5. Export Batch
Export Package Includes:
- Individual HTML email files
- QR code PNG images
- Text file versions
- Index/summary file
Export Options:
- ZIP Download: All files in one archive
- Individual Files: Download separately
- Email Service Format: Compatible with mail merge tools
Use Cases
- Event Invoicing: Send payment requests to attendees
- Club Memberships: Annual fee collection
- Group Expenses: Split bills for trips/events
- Small Business: Invoice multiple clients
- Educational: Collect course or workshop fees
Tips
- Prepare Data: Use Excel template for consistency
- Unique VS: Ensure Variable Symbols are unique for tracking
- Test First: Run test with 1-2 people before full batch
- Backup Data: Export people list before clearing
- Email Delivery: Use reputable email service for sending
FioFetch Transaction Manager
Overview
Fetch and manage transactions from Fio Bank API. View transaction history, configure automatic fetching, and export data.
Requires: Fio Bank API token (free from Fio Bank internet banking)
Getting Started
Option 1: Docker (Recommended)
# Build and run
./d10_build.sh && ./d20_run.sh
# Access at http://localhost:3000
See DOCKER.md for complete guide.
Option 2: Local Development
Backend:
cd fio_fetch_py
uv sync
fiofetch --fio-token YOUR_TOKEN
Frontend:
cd fio_fetch_webui
yarn install
yarn dev
Features
1. Dashboard
Overview:
- Account balance
- Recent transactions count
- Last fetch timestamp
- Quick stats
2. Transaction List
Features:
- Paginated table view
- Sortable columns
- Search/filter
- Export to JSON/CSV
Columns:
- Date
- Amount
- Counterparty
- Description
- Variable Symbol (VS)
- Type (income/expense)
3. Fetch Controls
Manual Fetch:
- Click “Fetch Now”
- Transactions downloaded from Fio API
- Stored in local database
- View in transaction list
Set History Limit:
- Prevents 422 errors from Fio API
- Set “zárazka” (checkpoint) date
- Example: Set to 3 days = only fetch last 3 days
- Useful for initial setup or large accounts
Steps:
- Enter number of days (1-365)
- Click “Set History Limit”
- Confirmation message shown
- Next fetch will respect limit
4. Configuration
Required Settings:
- Fio Token: API token from Fio Bank
- Back Date Days: Default history limit (optional)
Optional Settings:
- Auto-fetch: Enable periodic fetching
- Fetch Interval: How often to fetch (minutes)
Get Fio Token:
- Log in to Fio Bank internet banking
- Navigate to API settings
- Generate read-only token
- Copy and paste into FioFetch config
5. Data Export
Export Formats:
- JSON: Raw transaction data
- CSV: Spreadsheet-compatible
- Excel: XLSX format (planned)
Export Steps:
- Go to Transaction List
- Apply filters if needed
- Click “Export”
- Select format
- Download file
Understanding History Limit (Zárazka)
What is it?
- Checkpoint date in Fio Bank system
- Tells API: “Don’t search before this date”
- Prevents timeouts on large transaction histories
When to use:
- Initial setup (first time fetching)
- Large account with years of history
- Getting 422 errors from API
- Want to limit data fetched
How to set:
- Decide how far back to fetch (e.g., 30 days)
- Enter days in “Set History Limit”
- Click submit
- Run “Fetch Now”
Example:
- Today: 2025-11-30
- Set history limit: 7 days
- Result: Only fetch transactions from 2025-11-23 onwards
API Rate Limits
Fio Bank Restrictions:
- Minimum 30 seconds between requests
- Max 1 request per 30 seconds
- Daily limits may apply
FioFetch Handling:
- Automatic rate limiting
- Queue system for requests
- Error messages if limit exceeded
Troubleshooting
Cannot Fetch Transactions:
- Verify Fio token is valid
- Check internet connection
- Wait 30 seconds between fetches
- Try setting history limit
422 Error:
- Too much history to fetch at once
- Solution: Set history limit to smaller value
- Start with 7 days, increase gradually
Connection Timeout:
- Check Fio API status
- Verify network allows HTTPS requests
- Try again in a few minutes
No Transactions Shown:
- Check date range filters
- Verify account has transactions
- Try manual fetch
- Check transaction type filter
Docker Specific
Container Management:
# View logs
./d40_logs.sh
# Stop container
./d30_stop.sh
# Restart
docker restart fiofetch
# Check status
docker ps | grep fiofetch
Data Location:
- Config:
~/.config/fio_fetch/config.yaml
- Database:
~/.config/fio_fetch/fio.db
- Logs:
docker logs fiofetch
Backup:
# Backup data
cp -r ~/.config/fio_fetch ~/backups/fio_fetch-$(date +%Y%m%d)
Security Notes
- Protect Your Token: Keep Fio token secret
- Read-Only Token: Use read-only token (not write)
- Local Storage: Data stored locally only
- No Cloud Sync: Transactions stay on your machine
- HTTPS: Always use HTTPS for web UI
Advanced Usage
API Access:
- REST API:
http://localhost:3000/api/v1/*
- Swagger Docs:
http://localhost:3000/docs
- ReDoc:
http://localhost:3000/redoc
WebSocket:
- Real-time updates:
ws://localhost:3000/ws
- Transaction notifications
- Status updates
Custom Deployment:
- See DOCKER.md for production deployment
- Configure reverse proxy for HTTPS
- Add authentication layer if exposed to internet
Support & Resources
Documentation
Common Issues
See Troubleshooting sections above for each component.
Getting Help
- Check relevant documentation
- Review error messages carefully
- Test with demo data (FioFetch)
- Check GitHub issues
Reporting Issues
When reporting issues, include:
- Application component (main app, batch, FioFetch)
- Browser/OS version
- Steps to reproduce
- Error messages or screenshots
- Expected vs actual behavior
Happy payment processing! 💰