Skip to main content
Firefly III provides multiple methods to export your financial data for backup, external analysis, or migration to other systems.

Export methods

API export

Programmatic data export via REST API

CSV export

Export transactions and accounts as CSV

Command-line export

Bulk export using artisan commands

Database backup

Complete database backup for disaster recovery

API export

The Firefly III API provides comprehensive endpoints for exporting all your financial data.

Available export endpoints

Export transactions with full details:
# Export all transactions for a date range
curl -X GET "https://your-firefly.local/api/v1/transactions?start=2024-01-01&end=2024-12-31&limit=500" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Includes:
  • Transaction details
  • Splits
  • Categories, budgets, tags
  • Foreign amounts
  • Notes and attachments

Pagination

API responses are paginated. To export all data:
#!/bin/bash
page=1
while true; do
  response=$(curl -s "https://your-firefly.local/api/v1/transactions?page=$page" \
    -H "Authorization: Bearer YOUR_TOKEN")
  
  # Save page data
  echo "$response" >> transactions_page_$page.json
  
  # Check if more pages exist
  if ! echo "$response" | grep -q '"next"'; then
    break
  fi
  
  page=$((page + 1))
done
Set a higher limit parameter (max 500) to reduce the number of requests needed

CSV export

Export transactions and accounts as CSV files for use in Excel, Google Sheets, or other applications.

Transaction CSV export

1

Navigate to transactions

Go to Transactions > List all transactions
2

Apply filters

Filter transactions by:
  • Date range
  • Accounts
  • Categories
  • Budgets
  • Tags
3

Export

Click Export and select CSV format
4

Download

Your CSV file will be generated and downloaded

CSV format

Exported CSV includes these columns:
ColumnDescription
IDTransaction journal ID
DateTransaction date
DescriptionTransaction description
Source accountSource account name
Destination accountDestination account name
AmountTransaction amount
CurrencyCurrency code
CategoryCategory name
BudgetBudget name
TagsComma-separated tags
NotesTransaction notes
External IDExternal identifier
CSV exports use semicolon (;) as separator by default. Configure in your user preferences.

Command-line export

For bulk exports and automation, use the artisan command:
php artisan firefly-iii:export-data \
  --user=1 \
  --token=your-access-token \
  --start=2024-01-01 \
  --end=2024-12-31 \
  --export_directory=/path/to/export \
  --export-transactions \
  --export-accounts \
  --export-budgets \
  --export-categories \
  --export-tags \
  --export-rules \
  --export-piggies

Command options

--user
integer
default:"1"
User ID to export data for
--token
string
required
User’s access token for authentication
--start
date
Start date for transaction export (YYYY-MM-DD)
--end
date
End date for transaction export (YYYY-MM-DD)
--export_directory
string
default:"./"
Directory to save export files
--export-transactions
boolean
Export transactions
--export-accounts
boolean
Export accounts
--export-budgets
boolean
Export budgets
--export-categories
boolean
Export categories
--export-tags
boolean
Export tags
--export-recurring
boolean
Export recurring transactions
--export-rules
boolean
Export rules
--export-subscriptions
boolean
Export bills/subscriptions
--export-piggies
boolean
Export piggy banks
--force
boolean
Overwrite existing export files

Output format

The command creates CSV files:
export_directory/
├── transactions_2024-01-01_2024-12-31.csv
├── accounts.csv
├── budgets.csv
├── categories.csv
├── tags.csv
├── rules.csv
├── recurring.csv
├── subscriptions.csv
└── piggy_banks.csv

Automated exports

Schedule regular exports using cron:
# Add to crontab (crontab -e)
# Export data monthly
0 0 1 * * cd /var/www/firefly-iii && php artisan firefly-iii:export-data --user=1 --token=YOUR_TOKEN --export-transactions --export-accounts --export_directory=/backups/monthly/$(date +\%Y-\%m)
Store access tokens securely. Consider using environment variables or secret management systems.

Export for analysis

Export data for analysis in external tools:

Excel/Google Sheets

  1. Export transactions as CSV
  2. Open in Excel/Sheets
  3. Use pivot tables and charts for analysis
  4. Create custom reports

Python/R analysis

import requests
import pandas as pd

# Fetch data via API
headers = {'Authorization': 'Bearer YOUR_TOKEN'}
response = requests.get(
    'https://your-firefly.local/api/v1/transactions',
    headers=headers,
    params={'start': '2024-01-01', 'end': '2024-12-31', 'limit': 500}
)

# Convert to DataFrame
data = response.json()['data']
transactions = pd.json_normalize(data)

# Analyze
print(transactions.groupby('attributes.category_name')['attributes.amount'].sum())

Business Intelligence tools

Connect BI tools directly to Firefly III:
  1. Power BI: Use API connector
  2. Tableau: Connect via API or database
  3. Metabase: Connect to PostgreSQL/MySQL database
  4. Grafana: Create custom dashboards with database queries
For direct database access, ensure you have read-only credentials and understand the database schema

Migration exports

Export data for migration to another system:

Complete export

For full data portability:
# Export everything
php artisan firefly-iii:export-data \
  --user=1 \
  --token=YOUR_TOKEN \
  --export-transactions \
  --export-accounts \
  --export-budgets \
  --export-categories \
  --export-tags \
  --export-recurring \
  --export-rules \
  --export-subscriptions \
  --export-piggies

# Also backup attachments
tar -czf attachments.tar.gz storage/upload

# Backup database
pg_dump firefly > firefly_backup.sql
# or for MySQL:
mysqldump firefly > firefly_backup.sql

To other Firefly III instance

Use the Data Importer:
  1. Export from source using command above
  2. Configure Data Importer with source Firefly III URL
  3. Authenticate and import data
  4. Verify imported data

Best practices

Schedule automated exports:
  • Weekly transaction exports
  • Monthly complete exports
  • Store in multiple locations
  • Test restoration periodically
Protect exported data:
  • Encrypt sensitive exports
  • Use secure storage locations
  • Implement access controls
  • Delete old exports securely
After exporting:
  • Check file sizes are reasonable
  • Verify data completeness
  • Test import/restore process
  • Keep export logs
Maintain documentation:
  • Export schedule
  • Storage locations
  • Retention policies
  • Recovery procedures

Troubleshooting

Problem: Large exports timing outSolutions:
  • Export in smaller date ranges
  • Increase PHP max_execution_time
  • Use command-line instead of web interface
  • Increase API pagination limit
Problem: Exported data incompleteSolutions:
  • Check date range filters
  • Verify account filters
  • Ensure all export flags are enabled
  • Check user permissions
  • Review export logs for errors
Problem: Special characters corrupted in CSVSolutions:
  • Ensure UTF-8 encoding
  • Check CSV separator settings
  • Try different CSV reader (Excel, LibreOffice)
  • Export via API as JSON instead

Backup & restore

Complete backup procedures

Data import

Import data into Firefly III

API reference

API documentation for exports

Data operations

Bulk data operations via API