CSV import and export
Import subscriptions from another app or export their basic fields to a spreadsheet; use JSON backups for a full migration.
CSV is good for migrating and for spreadsheets, but it only holds the basics of each subscription. To keep the full ledger, use a full backup.
- Export a full backup, then open Settings → Data → Import CSV.
- Choose the file and check the subscription count and new payment methods in the preview.
- Choose Add to existing or Replace all. Appending the same file again creates duplicates.
- Open imported subscriptions and check currencies, cycles, dates and payment methods.
Export
Section titled “Export”Settings → Data → Export CSV downloads subscriptions-YYYY-MM-DD.csv (UTF-8 with BOM, so Excel opens it correctly). The columns are:
Name,Currency,Price,Category,Cycle,Starts,Ends,Tags,Payment Account,URL,Notes| Column | Content |
|---|---|
| Cycle | Daily, Weekly, Monthly, Yearly, Lifetime, or e.g. Every 3 months |
| Starts, Ends | YYYY-MM-DD |
| Tags | Space-separated |
| Payment Account | Payment method name |
Price is the current price. Phases, price history, charges, shared plans and paid-for records aren’t exported.
Import
Section titled “Import”Settings → Data → Import CSV. It accepts CSVs exported by the Subscriptions app for iOS / macOS as well as Calends’ own export — both use the same header. Column names are case-insensitive and can be in any order; Start and End work for Starts and Ends, and Payment Method for Payment Account.
How columns are read:
| Column | Rule |
|---|---|
| Name | Required. Rows without a name (blank lines, totals) are skipped. |
| Currency | Defaults to CNY. |
| Price | Currency symbols and other non-numeric characters are stripped. |
| Category | Defaults to “Other”. New category names are added to your categories. |
| Cycle | Understands Daily, Weekly, Monthly, Quarterly, Yearly, Annually, Lifetime, One time, Once and Every N days / weeks / months / years; anything else becomes monthly. |
| Starts, Ends | M/D/YYYY or YYYY-MM-DD; a missing start date becomes today. End dates in the past import as cancelled. |
| Tags | Space- or comma-separated. |
| Payment Account | Matched to an existing payment method by name; otherwise a new one is created, with its type guessed from the name (Alipay, WeChat, PayPal, phone credit, App Store, credit card, bank card). Foreign-currency subscriptions with no account (TRY, NGN, PHP, INR, PKR, EGP) go to that region’s App Store balance, e.g. “App Store TR balance”. |
You get a preview first — how many subscriptions, and which payment methods will be created. Then choose:
- Add to existing: appended to your current subscriptions. Every import creates new subscriptions, so importing the same file twice gives you duplicates;
- Replace all: erases your current subscriptions and payment methods and replaces them with the CSV.
Imported subscriptions only have the basics. Add price changes, plan switches and charges in the editor afterwards if you need them.