Clients
Import and export
What you can bring in and take out today: the full account export, saved items as CSV, generator invoices, and client data through the API.
You should never be locked in. This page explains every way to get data into Free Invoice Automation and out again, and is clear about what exists. In short: you can export everything in your account at any time, import and export your saved items as CSV, bring your generator invoices with you when you sign up, and read or write clients in bulk through the API. A dedicated CSV import or export screen for clients is not part of the product.
What exists
| Data | Import | Export |
|---|---|---|
| Whole account (all businesses, clients, documents, payments, files) | No | Yes: Export everything (JSON, PDFs and CSV) |
| Saved items (products and services) | Yes: CSV | Yes: CSV |
| Invoices made in the free generator before sign-up | Yes: moved in automatically, once, on sign-up | Included in the account export |
| Clients | Through the API (upsert_client), one request per client | In the account export, or through the API (list_clients) |
| Reports (from the week of 25 January 2027) | No | CSV or PDF per report |
| Store customers and orders (WordPress from January 2027, Shopify from February 2027) | Created automatically by the store connector | Included in the account export |
Export everything
Export everything produces a complete copy of your account: JSON data, the PDFs of your documents, and CSV files. It covers every business in the account. Use it before you delete anything, to keep your own tax records, or simply to have a copy.
Open Settings > Data export and delete
Only the account Owner can start an export. A request from any other member, including an Admin, is refused.
Start the export
Choose Export everything. The export is prepared in the background, so you can keep working.
Download it
When the export is ready, download it from the same page.
Deleting your account deletes your documents and payments with it. Your clients and tax authorities may expect you to keep invoices for years, so export first. See Delete your account.
Through the API, the Owner (or an API key created by the Owner with the account.export scope) starts an export with POST /v1/account/exports, which returns 202 and an export id, then checks it with GET /v1/account/exports/{id} until it is ready. See Export your account and Export your data.
curl -X POST "https://api.freeinvoiceautomation.com/v1/account/exports" \
-H "Authorization: Bearer $FIA_API_KEY" \
-H "Idempotency-Key: export-2027-01-31"Saved items as CSV
Your list of products and services can be moved in and out as CSV, which is the quickest way to bring a price list from another tool.
- Import: each valid row becomes an item. Rows that cannot be imported are listed with the reason, so you can fix and re-import them. CSV files up to 5 MB are accepted (proposed limit).
- Export: downloads a CSV with every item field: name, description, SKU, unit, price, currency and default tax rate.
- Items are never deleted, only archived, so old documents always keep their lines. Each document line also keeps its own copy of the item values.
| Action | REST | Permission |
|---|---|---|
| Import items | POST /v1/items/import | items.manage |
| Export items | GET /v1/items/export | items.view |
See Saved items for the full item model.
When you open an exported CSV in a spreadsheet, cells that start with =, +, - or @ are prefixed so the spreadsheet does not run them as formulas (proposed safeguard).
Invoices from the free generator
If you made invoices in the free invoice generator before you had an account, they live in your browser only. When you create an account, they move into it once:
- The import happens one time, right after sign-up, and is safe to retry: the same invoice is never imported twice.
- Imported invoices keep the number you already gave them, so a PDF you sent earlier still matches. They do not use up numbers from your business's own sequence; new invoices start your sequence as normal.
Clients through the API
There is no CSV upload screen for clients. To move a client list in from another tool, use the API: send one create or update a client request per row. Because POST /v1/clients with an existing id updates that client, a script can be re-run safely, and an Idempotency-Key per row protects you against duplicates when a request is retried.
curl -X POST "https://api.freeinvoiceautomation.com/v1/clients" \
-H "Authorization: Bearer $FIA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: import-clients-row-17" \
-d '{ "name": "Northwind Traders", "email": "[email protected]", "default_currency": "GBP" }'To read all clients, follow next_cursor until has_more is false; see Pagination and filters. From the week of 25 January 2027 the CLI wraps the same calls (freeinvoiceautomation client upsert and client list; command names are proposed). Your AI assistant can also add clients one by one with the MCP tool upsert_client, for example from a list you paste into the chat.
Bulk scripts count toward your API rate limit and, on the Free plan, the monthly fair-use limits. See Rate limits and Fair-use limits.
Store connectors
The WordPress and WooCommerce plugin and the Shopify app create invoices, clients and payments from store orders through the same API. When Shopify asks for a customer's data or for it to be removed, the app passes that request on: the customer's client data is exported to the merchant, or redacted except what tax law requires on documents already issued.
Permissions
| Key | Needed for | Default roles |
|---|---|---|
account.export | Export everything | Owner only |
items.manage | Importing items | Owner, Admin, Editor |
items.view | Exporting items | Owner, Admin, Editor, Viewer, Accountant |
clients.create / clients.edit | Creating or updating clients through the API | Owner, Admin, Editor |
reports.export | Exporting reports as CSV or PDF | Owner, Admin, Editor, Accountant |
Errors
| Code | When |
|---|---|
permission_denied | You are not the Owner (account export) or your role lacks the items or clients key |
validation_failed | A client or item field is invalid; details.issues lists each field |
idempotency_key_reused | The same key was sent with a different body; use one key per row |
rate_limited | Too many requests in a minute; wait for Retry-After |
plan_limit_reached | A Free fair-use limit was reached |