← Back to Documentation

Wallet Data Export/Import Format

This documentation covers Wallet Export (ZIP/CSV) for backup, data transfer, and migration. For personal data export under GDPR, see GDPR Data Export.

Export Types

Wallet Export (ZIP Archive)

Complete backup of a single wallet's data. Use this for backup, data transfer between devices, or migration.

  • Location: Data Management > Export
  • Format: ZIP archive containing CSV files
  • Contents: Transactions, categories, budget plans, and metadata

GDPR Export (JSON)

Personal data export for GDPR compliance. Contains all your user data across all wallets.

View GDPR Export Documentation →

ZIP Archive Format

The wallet export creates a ZIP archive named CrispBudget_Export_{timestamp}.zip containing the following files:

  • transactions.csv — All transaction records
  • categories.csv — Custom category definitions (optional)
  • budget_plans.csv — Budget plan history (optional)
  • metadata.json — Export metadata including currency and version

Categories and budget plans files are only included if the wallet has custom categories or budget plans.

Import Methods

CrispBudget automatically detects the file format based on the file extension:

Complete Backup

ZIP Import

Import a complete wallet backup including transactions, categories, and budget plans. The app extracts and validates all files automatically.

.zip
Easy to Edit

CSV Import

Import transactions from a single CSV file. Perfect for manual editing in spreadsheet apps or importing from other tools.

.csv or .txt

File Structure

The ZIP archive contains the following files:

  • transactions.csv — Transaction data
  • categories.csv — Category settings
  • budget_plans.csv — Budget plans
  • metadata.json — Metadata (currency, version info, etc.)

Transactions (transactions.csv)

Column Definitions

Column Type Required Description
Date String Yes Date (ISO 8601 format: YYYY-MM-DD)
Amount String Yes Amount (decimal format: e.g., "10.50")
Category String Yes Category name
Merchant String No Merchant name (max 200 characters)
Note String No Note/memo (max 500 characters)
Duration String No Split duration in days (1-365)
IsPrivate String No Private flag ("true" or "false")
Items String No Item breakdown (JSON array format, see details below)

Example

Date,Amount,Category,Merchant,Note,Duration,IsPrivate,Items
2025-01-13,15.00,Food,Starbucks,Morning coffee,,,
2025-01-12,85.00,Groceries,Whole Foods,Weekly groceries,7,,
2025-01-10,45.99,Shopping,Target,Household supplies,,false,

Categories (categories.csv)

Column Type Required Description
Name String Yes Category name (max 50 characters, unique within wallet)
Icon String Yes SF Symbols icon name (e.g., "cart.fill")
Color String Yes Hex color code (e.g., "22C55E")
SortOrder String Yes Display order (starting from 0)

Example

Name,Icon,Color,SortOrder
Food,fork.knife,F97316,0
Groceries,cart.fill,22C55E,1
Transport,car.fill,0EA5E9,2

Budget Plans (budget_plans.csv)

Column Type Required Description
StartDate String Yes Start date (ISO 8601 format: YYYY-MM-DD)
DailyAmount String Yes Daily budget amount (decimal format)

Example

StartDate,DailyAmount
2025-01-01,30.00
2025-02-01,25.00

Metadata (metadata.json)

Export files include a JSON file with the following information:

{
  "currencyCode": "USD",
  "walletName": "Personal",
  "exportDate": "2025-01-13T12:00:00Z",
  "formatVersion": "1.0",
  "totalTransactions": 150
}

Import Requirements

  • Currency code must match the target wallet
  • Date, Amount, and Category are required fields
  • Amounts must be in decimal format (e.g., 10.50)
  • Dates must be in ISO 8601 format (YYYY-MM-DD)
  • Non-existent category names will be created automatically
  • Use UTF-8 encoding (BOM recommended)
  • CSV quoting and escaping follows RFC 4180

Character Encoding

CSV files are exported in UTF-8 encoding. A BOM (Byte Order Mark) is included at the beginning for Excel compatibility.

Items Column Details

For transactions with multiple items (e.g., grocery receipts), you can store item details in the Items column as a JSON array.

Field Definitions

Field Type Required Description
name String Yes Item name
amount String Yes Amount (decimal format: e.g., "5.00")
quantity Number No Quantity (default: 1)
category String No Category name (uses parent transaction's category if omitted)
duration Number No Split duration in days (1-365)
amountType String No Amount type: "unit" (unit price) or "total" (total price), default: "unit"

Example

[
  {
    "name": "Milk",
    "amount": "4.99",
    "quantity": 2,
    "category": "Groceries",
    "amountType": "unit"
  },
  {
    "name": "Weekly groceries",
    "amount": "70.00",
    "quantity": 1,
    "category": "Food",
    "duration": 7,
    "amountType": "total"
  }
]

Note: Quotes must be escaped in CSV format (" → "")