Backup & Restore
Hisaabo lets you export a complete snapshot of your organization’s data and restore it into a new, empty organization. This is useful for migrating between instances (e.g. cloud to self-hosted), creating a test copy of your data, or disaster recovery.
Exporting a backup
Section titled “Exporting a backup”Go to Settings > Data to download a full backup.
- Navigate to Settings in the sidebar
- Click the Data tab
- In the Full backup (restorable) section (owner-only), click Download backup
- A
.tar.gzarchive downloads to your browser
The archive contains all businesses, parties, items, invoices, payments, expenses, bank accounts, and other records in your organization. It uses NDJSON (newline-delimited JSON) format internally.
Limits: You can export up to 2 times per day per organization.
Who can export: Only organization owners can request a full backup. Non-owners can still use Export as CSV in the same tab to download the current business as spreadsheet-friendly CSVs (not restorable).
Restoring a backup
Section titled “Restoring a backup”Restore happens during the initial setup of a new organization — before any business is created.
- Create a new account (or log in to an existing account with no organization)
- On the Get started screen, choose Restore from a backup
- Select your
.tar.gzbackup file - Confirm the restore
- All data is imported preserving original IDs
- Click Reload to see your restored data
Using the CLI
Section titled “Using the CLI”The CLI supports both export and restore without needing a browser:
# Exporthisaabo export --tenant my-company -o backup.tar.gz
# Restore into an empty tenanthisaabo restore --tenant new-company -i backup.tar.gz --yesThe CLI commands only require authentication and a tenant — no business selection needed. See the CLI reference for full details.
Using the API
Section titled “Using the API”For programmatic access, the backup system uses a two-step token flow:
- Export: Call
selfExport.requestwith atenantIdto get a signed download URL, thenGETthat URL to stream the archive. - Import: Call
selfImport.requestwith atenantIdto get a signed upload URL, thenPOSTthe gzipped archive to that URL.
Both endpoints use protectedProcedure (session auth only) — no x-business-id header is needed.
See the API documentation for request/response schemas and code examples.
What’s included in a backup
Section titled “What’s included in a backup”The backup archive contains every table in your organization’s database:
- Businesses (all businesses in the organization)
- Parties (customers and suppliers)
- Items (products, services, variants)
- Invoices (sales, purchases, and all document types)
- Payments and payment allocations
- Expenses and expense categories
- Bank accounts and transactions
- Recurring invoice templates
- Document numbering sequences
- All other configuration and transactional data
User accounts and organization membership are not included — the backup contains business data only.
Frequently asked questions
Section titled “Frequently asked questions”Can I restore into an organization that already has data? No. Restore requires a completely empty organization (zero businesses). This prevents ID conflicts and ensures data integrity.
Can I export from cloud and restore to self-hosted (or vice versa)? Yes, as long as the Hisaabo versions are compatible. The archive includes a schema checksum that the import engine validates.
How large are backup files? It depends on your data volume. The archive is gzip-compressed, so a business with a few thousand invoices typically produces a file under 10 MB.
Is the backup encrypted?
The archive itself is not encrypted — it’s a standard gzipped tar file. If you need encryption at rest, encrypt the file after downloading (e.g. with gpg or your storage provider’s encryption).