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

# Upload a bank or card statement

Upload one account's PDF, CSV or Excel statement, up to 10 MB. ZeraBooks imports the transactions, categorizes them and checks the printed balances.

## Before you upload

- **ZeraBooks has no bank feeds.** Download the statement from your bank's website and upload it here.
- **One statement, one account.** Upload a single statement for a single bank account or credit card. Add the account first if it isn't listed; see [Add bank and credit-card accounts](https://www.zerabooks.com/help/banks-and-cards/add-bank-and-credit-card-accounts).
- **File type and size.** PDF, CSV or Excel, up to 10 MB. The statement needs dates, descriptions and amounts.

## Upload a statement

{% stepper %}
{% step %}
### Open the upload

In the left navigation, click **Banks & Cards**, then click **Upload statement** above the register. You can also use **Add Transaction** › **Import Bank Transactions**, or search for "Import bank transactions" with <kbd>⌘</kbd> <kbd>K</kbd>.

![Banks & Cards with an account selected and the Upload statement button highlighted](https://www.zerabooks.com/help/shots/banks-upload-statement-button.png)
{% endstep %}

{% step %}
### Check your categories (first time only)

The first time you upload for a business, ZeraBooks shows **Review {company}'s categories**: the categories it will sort your transactions into. Click **Open Category Manager** if one you use is missing, or click **Continue to upload**. Tick **Don't show this reminder again for this business** to skip it next time.
{% endstep %}

{% step %}
### Choose the account and the file

1. Under **Bank or credit card**, choose the account this statement belongs to.
2. Click **Browse** or drag the file onto the drop area.
3. Click **Import Statement**.

![The Import Bank Transactions dialog: choose the account, drop the statement file, then Import Statement](https://www.zerabooks.com/help/shots/banks-import-dialog-steps.png)
{% endstep %}

{% step %}
### Wait for the import

A status pill shows **Importing statement…** while ZeraBooks reads and categorizes the file. When it's done, it shows how many transactions were imported and for which month, any warnings, and a **Reconcile →** link. The page jumps to the statement's account and month.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
**Tip:** Upload statements in order, month by month. Each statement's opening balance is checked against the previous statement's closing balance. See [How ZeraBooks proves a statement](https://www.zerabooks.com/help/banks-and-cards/how-zerabooks-proves-a-statement).
{% endhint %}

## If the upload is blocked

| Message | What to do |
| --- | --- |
| **Choose your starting point first** | Click **Continue company setup** and choose whether the business is new or has existing books. |
| **Bring in your opening balances first** | Click **Continue opening books** and finish the opening books before uploading new activity. |
| "We couldn't check this business's starting point. Try again before uploading." | Click **Try again**. |

## Upload errors

| Message | What it means |
| --- | --- |
| "Choose one bank or credit card statement as a PDF, CSV or Excel file." | The file isn't a PDF, CSV or Excel file. |
| "Upload one account's statement at a time." | You dropped more than one file. |
| "File too large: ~X MB (max 10 MB)." | Split the statement or export a smaller date range. |
| "Can't read that file as a bank statement. Upload a PDF, CSV, or Excel export." | ZeraBooks couldn't find statement lines in the file. |
| **Statement already imported** | This exact file, or lines it contains, is already in the account. Nothing was imported. |
| "This statement contains more than 10,000 readable rows…" | Split the file into periods that don't overlap. |
| "This is a {type} statement…, but {account} is a {type}. Nothing was imported." | You chose a bank account for a card statement, or the other way round. Pick the matching account. |
| "This statement identifies its currency as…" | The statement's currency doesn't match the account's. Nothing was imported. |
| "This first statement already has an opening balance…" | The company was set up with no earlier activity. Add the earlier balances in Opening books, then retry. |

## Frequently Asked Questions

<details>
<summary>What files can I upload?</summary>

A PDF, CSV or Excel file of one account's statement, up to 10 MB. There is no page limit: long PDFs are read in chunks. A statement can hold up to 10,000 rows.
</details>

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

No. Upload one account's statement at a time. While one import is running, **Upload statement** is disabled; start the next when the pill shows the result.
</details>

<details>
<summary>What happens if I upload the same statement twice?</summary>

It's refused and the pill says **Statement already imported**. If a different file repeats any transaction already imported from another statement, the whole file is refused and nothing is imported.
</details>

<details>
<summary>My new statement overlaps the last one. What happens?</summary>

If only the dates overlap and no transaction repeats, it imports with a warning to spot-check the boundary dates. If any transaction repeats, nothing is imported.
</details>

<details>
<summary>What if the statement doesn't balance?</summary>

It still imports, with a warning that starts "Statement does not tie". Open the month in Reconciliations to find the difference. See [Fix a month that doesn't tie](https://www.zerabooks.com/help/reconciliations/fix-a-month-that-doesnt-tie).
</details>

<details>
<summary>I uploaded a statement into the wrong account. How do I undo it?</summary>

Remove it with **Account actions** › **Remove a statement…**, then upload it into the right account. See [Remove a statement](https://www.zerabooks.com/help/banks-and-cards/remove-a-statement).
</details>

<details>
<summary>Will ZeraBooks categorize the transactions automatically?</summary>

Yes. Every line gets a category when it's imported. Lines it can't decide land in Uncategorized and count toward **need review**. See [Review and fix categories](https://www.zerabooks.com/help/banks-and-cards/review-and-fix-categories).
</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/banks-and-cards/upload-a-statement.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.
