> For the complete documentation index, see [llms.txt](https://www.zerabooks.com/help/llms.txt).

# Upload an invoice for AI reading

Upload an invoice you already issued elsewhere and ZeraBooks reads the customer, dates and lines into a draft for you to review and approve.

## Upload the file

Use this for invoices you've already issued outside ZeraBooks, so they're recorded in your books.

1. Go to **Bills & Invoices** › **Invoices**.
2. Click **Upload Invoice** and choose one file: a PDF, PNG, JPG, WEBP or HEIC up to 14 MB.

![The Invoices header with Upload Invoice highlighted: ZeraBooks reads the file into a draft you review](https://www.zerabooks.com/help/shots/invoices-upload-button.png)

While it reads, the button says **Reading Invoice…** and a card appears on the board. The draft opens with the banner "Reading the stored invoice".

## Review the draft

When reading finishes you see "Invoice read into a draft. Review it before approval." The original document is on the left and the fields ZeraBooks read are on the right: customer, invoice number, dates and each line.

![An uploaded invoice read into a draft: the original on the left; the customer, number, dates and lines filled in on the right, then Preview](https://www.zerabooks.com/help/shots/invoices-read-into-draft.png)

1. Check the **Customer**, **Invoice Number**, **Invoice Date** and **Due Date** against the document.
2. Check every line's amount and **Category**. Replace any line on Uncategorized Income with a specific income category.
3. Click **Preview**, then **Approve**. See [Approve an invoice](https://www.zerabooks.com/help/invoices/approve-an-invoice).

Once approved, the invoice shows **Recorded — already issued.** It's in your books and doesn't need sending. Use **Send to customer** only if you want ZeraBooks to email the customer a copy.

{% hint style="info" %}
**Tip:** When everything about an uploaded invoice is already known (a customer you've confirmed before, lines that add up, categories ZeraBooks recalls rather than guesses, sensible dates, no duplicate and no payment waiting to settle it) and Autopilot's **Approve bills and invoices** is on, it can post by itself. Otherwise it waits as a draft for you.
{% endhint %}

## If something goes wrong

| Message | What it means |
| --- | --- |
| "This document is larger than 14 MB. Choose a smaller document." | Compress or re-export the file. |
| "Choose a PDF, PNG, JPG, WEBP or HEIC document." | The file type isn't supported. |
| "This file is empty. Export the document again before uploading it." | The file has no content. |
| "That source is already in ZeraBooks. Opened the existing invoice; nothing was duplicated." | You uploaded the same file before. ZeraBooks opens that invoice instead. |
| "This invoice could not be read" | The file is stored and the draft is kept, with nothing posted. Enter the invoice's details in the draft yourself; the document stays attached. |

## Frequently Asked Questions

<details>
<summary>Can I upload several invoices at once?</summary>

No. **Upload Invoice** takes one file at a time. Upload the next one when the first has been read.
</details>

<details>
<summary>Does uploading an invoice email it to my customer?</summary>

No. Uploading only records it. ZeraBooks emails the customer only when you click **Send** on the send screen.
</details>

<details>
<summary>I already sent this invoice from another system. Do I need to send it again?</summary>

No. It shows **Recorded — already issued.** Send it from ZeraBooks only if you want the customer to get another copy.
</details>

<details>
<summary>Does anything post while ZeraBooks is reading?</summary>

No. Reading only fills in a draft. The invoice reaches your books when it's approved.
</details>

<details>
<summary>What if the reading is wrong?</summary>

Correct the field in the draft before you approve. Every field is editable, and the original document stays beside the draft for comparison.
</details>

---

## Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.zerabooks.com/help/invoices/upload-an-invoice.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.

The full index is at https://www.zerabooks.com/help/llms.txt. An MCP server with `searchDocumentation`, `getPage` and `askQuestion` tools is at https://www.zerabooks.com/help/mcp.
