> For the complete documentation index, see [llms.txt](https://docs.lightpost.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.lightpost.app/add-on-features/financial-management/importing-transactions.md).

# Importing Transactions

Import contributions or expenses from a CSV file, match them to categories and members, and resume an unfinished import later.

You can import contributions or expenses in bulk from a CSV file, such as an export from a previous system. Importing requires the **Manage Financial Records** permission.

### Preparing Your File

* The file must be a **.csv** file of up to **10 MB**, with a header row.
* **Amount** and **Posted Date** are required for every row.
* Optional columns: **Category**, **Contributor Name** (**User Name** for expenses) or **First Name** and **Last Name**, **Title**, **Notes**, **Source**, and **Check Number**.
* Amounts may include `$` and commas. Contributions must be positive. Expenses may be negative or in parentheses and are saved as positive amounts. Zero amounts are not allowed.
* **Source** values such as Check, Cash, Card, Bank Account, or Online are recognized. Anything else is imported as Other.

### Import Steps

1. Go to **Finance**, open the **Contributions** or **Expenses** list, and click **Import**.
2. **Upload** — drop in your CSV file.
3. **Columns** — match each column in your file to a Lightpost field. Columns are matched automatically by header name; review the preview and adjust as needed.
4. **Categories** — category values are matched to your [Finance Categories](/add-on-features/financial-management/finance-categories.md) by name or accounting code. Use **Apply category to unmatched rows** to fill in any rows without a match. Every row needs a category.
5. **Users** (optional) — contributor names are matched to people in Lightpost:
   * **Matched** — exactly one person was found.
   * **Multiple** — more than one person matched; choose the right person or leave it blank.
   * **No match** — choose a person or leave it blank.
6. Click **Import all** to finish.

{% hint style="warning" %}
Imports are all-or-nothing. If any row has a problem, nothing is imported and Lightpost takes you to the row that needs fixing.
{% endhint %}

### Resuming an Import

Your progress is saved automatically. To pick up where you left off, open **Import** again and choose **Resume import** on the unfinished import (or **Discard** it).

* Unfinished imports can be resumed for **48 hours** after the last save.
* Only the admin who started an import can resume it.

{% hint style="danger" %}
Uploading the same file again creates duplicate transactions. Resume an unfinished import instead of starting over.
{% endhint %}
