For single imports or small batches, the AI Helper is the fastest path: attach the document to chat, the AI reads the fields, asks for confirmation, saves. No form to open, no CSV to prepare.
For large batches (>50 expenses from an already-clean sheet) use the Excel import: see Importing from Excel.
What works
| Document type | Works? |
|---|---|
| PDF bill (gas, electricity, water, phone) | ✓ |
| Photographed receipt (JPG/PNG) | ✓ |
| PDF invoice (accountant, hotel, travel) | ✓ |
| Bank statement PDF (single line or whole file) | ✓ — with caveats, see below |
| Email confirming a payment | ✓ — copy/paste the text into chat |
| Excel/CSV | Better to use the Excel import |
| Blurry photo of a bill from afar | Often fails, retry with a better photo |
Single-bill flow
- Open the Helper in ChatGPT
- Attach the PDF (drag-and-drop or attach button)
- Type "Add this bill" (or nothing — the Helper gets it from context)
- The Helper extracts the fields and shows them in a structured
card:
Gas bill · Eni Amount: € 187.40 · Due: April 7, 2026 Suggested Center: Milan home · Recurring: every 2 months [✓ Confirm & save] [Edit]
- Click Confirm and the expense enters FamSpend
The suggested Center is based on the bill's sender + your past expenses (e.g. the AI knows you put Eni bills in Milan home because you've done so the last 4 times).
Bank statement flow
The bank statement is the most powerful but riskiest case: a single call can import 50+ entries.
- Attach the PDF statement
- Specify the period if needed ("import only April 2026")
- The Helper extracts all transactions, groups them by likely
Cost Center, and shows:
Found 47 transactions between April 1 and 30.
• 12 in Milan home (€ 1,420) • 8 in Car (€ 230) • 5 in Groceries & daily (€ 380) • 22 in Unassigned (€ 670) [✓ Confirm & import] [Review the 22 unassigned] [Cancel]
- Review the 22 ambiguous ones before confirming — the Helper doesn't invent Centers, it leaves rows it wasn't confident about unassigned
For statements we only import outgoing transactions, not income (even if the statement contains them). Income goes via the form or its dedicated flow.
What does NOT come over automatically
- Associated people — the Helper doesn't know who pays, defaults all to You. You edit afterward if needed
- Custom labels / notes — skipped, it's a free-form field
- Paid status — defaults to pending. The Helper assumes you want to plan; if you want to import as paid, say so ("these are already paid")
When the Helper gets it wrong
It happens. Poorly formatted PDFs, blurry receipts, mixed-currency amounts. Typical cases:
- Wrong amount — confuses thousands and decimals (
1.200read as1200.00instead of1.20). Always verify before confirming - Wrong Center — the AI suggests the most common Center, but for rare expenses it can miss. Edit in the popup before confirming
- Misread date — on ambiguous due dates (mixed formats) the Helper explicitly asks "is it May 4 or April 5?" instead of guessing
The rule: the Helper never saves without your explicit OK. If it's wrong, you see and correct it.
Privacy: what happens to the PDF
The PDF attached in chat is processed:
- ChatGPT extracts the PDF text (OpenAI server)
- The Helper structures the data and sends it to the FamSpend API
- The expense is saved in your workspace
OpenAI doesn't use the PDF content for model training (it's in the Custom GPT policy). FamSpend stores only the extracted structured fields, not the original PDF.
If the bill contains sensitive data you don't want on OpenAI (e.g. clear-text VAT number, detailed address), consider whether to prefer manual entry or to redact the data before attaching.