← Help Center

Creating an Invoice

Last updated: 2026-06-13

There are four ways to add an invoice in Duefy:

1. Manual entry

Click + New Invoice from the Dashboard or the Invoices page. Pick a client, fill in the amount, due date, and an optional note, then hit Save. Start sending reminders now is checked by default, so collection begins on your reminder schedule the moment you save. Uncheck it to add the invoice as pending (nothing is sent) and activate it later from the invoice page. If the invoice is already past its due date, Duefy flags that activating it will send a reminder shortly.

No clients yet? The form replaces the picker with an "Add your first client" card. You need at least one client before you can create an invoice — Duefy walks you through adding one, then drops you back at the invoice form.

Invoice number already used? Duefy suggests the next available number in the same prefix family (e.g. if INV-0041 is taken, it suggests INV-0042) — update the field and save again.

2. CSV / Excel import

Go to Invoices → Import. Drop in a CSV or .xlsx file with these columns (in order):

invoice_number, client_email, amount, amount_paid, currency,
issue_date, due_date, contact_name, company_name, phone, notes

Duefy will auto-create any client that doesn't yet exist (matched by client_email). Dates can be ISO strings (2026-04-08) or Excel serial numbers — both are recognized.

amount_paid is optional. A row with amount_paid equal to the amount imports as paid, a smaller non-zero value as partial (both are kept for your records and never enter the reminder sequence), and 0 as unpaid. If you leave it out entirely, Duefy won't guess — the row shows "Set status" for you to choose.

After upload, Duefy parses the file and shows a Review page so you can see what will be created, what will be skipped (duplicates or rows with errors), and which clients are new vs already in your workspace. Each row's payment Status is a colored pill — click it on any row you're adding to set Unpaid / Partially paid / Paid in full on the spot. Nothing is written until you click Confirm and import (rows left as "Set status" import as unpaid). Use Cancel to discard the upload without changes.

Importing never sends anything. Unpaid invoices come in as pending, and right after import you land on a "Review these invoices" page where you pick which ones Duefy should actually email. That page is conservative (recent, reachable invoices are pre-selected; likely-already-paid ones are set aside), and when you click Add to reminders it asks you to confirm — a safety net so an invoice that was already paid can't quietly trigger reminders to a customer who already paid you. You can add a few now and come back for the rest — added invoices drop off the list while the page stays open, and an Undo stays available until the first reminder goes out. You can also flip any row's status to Paid there to skip it. (The same Review page is reachable any time from the Invoices page, not just right after an import.)

3. PDF or photo upload

Drag any PDF invoice — or a photo of one (JPG, PNG, or an iPhone HEIC) — into Invoices → Import → PDF. Duefy's AI extracts the invoice number, amount, due date, and client info, then shows you a preview before saving. Always double-check the parsed numbers before confirming.

Missing client name on the document? If the invoice shows a client email that's already in your client list, Duefy fills the name in from that client automatically (you'll see "Matched an existing client by email" under the field) — no confidence penalty, and the invoice attaches to that client on import. If the email isn't on file yet, Duefy pre-fills a name guessed from the email address (e.g. john.smith@… → "John Smith") and asks you to confirm it before importing.

Missing client email on the document? A client email is required to import — reminders are sent by email, so an invoice without one could never be chased. If the document shows a client name that matches exactly one client in your list, Duefy fills the email in from that client (you'll see "Matched an existing client by name — email filled from your client list") and the invoice attaches to them. If the name matches nothing — or matches more than one client — the email field stays empty and you'll need to type it (or skip that invoice) before the import button will proceed.

Importing from a PDF, photo, forwarded email, or WhatsApp message is AI-extracted and included on every plan: Solo gets 50 imports per month, Pro and Team are unlimited. The monthly count is shared across PDF/photo uploads, email forwarding, and WhatsApp. CSV/Excel import is always unlimited, so a large one-time backlog is best brought in that way.

If the AI flags an upload as Low confidence (it couldn't recognise the invoice number, client name, amount, or due date cleanly), you'll see a red banner on that card and a checkbox: "I have reviewed these fields". You have to tick it before that invoice can be saved — this is a safety net so an AI mis-reading (vendor swapped with client, amount off by a digit) can't quietly land in your dashboard.

4. Phone capture, share, and WhatsApp

Open Invoices → Capture on your phone to take a photo, pick an image, or upload a PDF. For frequent use, install Duefy to your Home Screen from the browser menu. On Android, the installed Duefy app can also receive PDF/photo invoices from the system share sheet.

You can also forward invoices to your private Duefy capture address from any mailbox. If a forwarded email has several PDF invoices attached, Duefy reads each one and creates a separate invoice — any attachment that isn't an invoice (a terms sheet or cover letter) is skipped. If WhatsApp capture is enabled for your account, Settings → WhatsApp capture shows a one-time link code. Tap Open WhatsApp on your phone (or scan the QR code from a computer) to open the chat with the LINK <code> message already typed — just hit send. Once linked, send invoice PDFs or photos in that chat. Because you sent it deliberately, Duefy auto-creates the invoice when the AI is confident and a client matches (otherwise it waits for you to finish). Either way the invoice starts as pending — nothing is chased until you approve it.

Where captures wait for you. When Duefy can't process a capture on its own — low AI confidence, an unreadable file, missing details, no matching client, or it may not even be an invoice — it lands in the To confirm card at the top of the Invoices page (under Needs action). Open that card for the full list of captures awaiting a hand. Each row shows what the AI read (amount, invoice number, due date) and why it was flagged, with two actions: Review opens a pre-filled invoice form so you can confirm or fix it — like a manual add, Start sending reminders now is on by default, so confirming a capture both adds it and starts collection (uncheck to add it as a draft) — and Dismiss drops it from the queue when it isn't an invoice (or you don't want it). You can sort the queue by any column header and drag column edges to resize, just like the invoice and client lists. To connect a mailbox or change how invoices come in, use the Capture channels link on that page. The Needs action panel on your Dashboard mirrors these same items (To confirm, To review, overdue chasing, and unread client replies), so you can jump in from either place. WhatsApp capture is inbound-only: Duefy never sends WhatsApp reminders.


Once an invoice is active, Duefy will email reminders automatically based on your sequence.

Was this helpful?