Batch Payment Import

Last updated: August 27, 2026

Use Batch Payment Import to record a stack of offline gifts, such as checks, cash, or DAF and IRA distributions, from a single CSV. Nothing is added to your Payments until you review the batch and submit it.

Find it under Settings > Batch Payment Imports.

Before you start

Your CSV needs one row per gift. Three values are required on every row:

Column

Format

Example

Amount

Numbers only, two decimals, no currency symbol or commas

1250.00

Gift date

ISO 8601 in UTC

2026-08-27T12:00:00Z

Donor identifier

An email, a WeGive donor ID, your CRM ID, or a name with a mailing address

dana.whitfield@example.com

Strongly recommended

These are not required, but leaving them out is what creates review work and duplicate donors. Every one of them saves you time later.

Column

Why it matters

WeGive donor ID, or your CRM ID

The strongest possible match. A row carrying one of these matches with full confidence and never needs review.

Email

The next strongest match, and the only value we can use to spot the same donor twice in one file. Two rows sharing an email produce one donor with two gifts.

State

Without it we cannot name-match at all, so a row with no email and no state always creates a new donor.

Street, city, postal, country

Makes the state match reliable, and makes a newly created donor usable for mail.

First and last name, or company name

Determines whether we create a person or an organization, and what the new record is called. A company name creates an organization.

Fund

Every payment needs one. Send it per row, or set a default for the whole batch.

Payment type

Tells us check, cash, or another offline type. Without it, everything takes the batch default.

Check number

Maps to Tracking number / check no. and is what you will search on when reconciling a single gift months from now.

Batch or deposit reference

Ties the gifts back to the bank deposit they arrived in. Map it to a custom field, or use the batch name.

Also supported

Campaign, fundraiser, campaign event, pledge, recurring plan, description, tags, tribute name, tribute email, tribute message, soft credit email, phone, address line 2, payment status, an external reference, UTM values, and your organization's custom fields.

Two of these are worth a second look:

  • External reference. If you send your own unique ID per gift, a row that repeats an ID already in the batch is flagged as an error instead of importing. That is your guard against accidentally importing the same deposit twice.

  • Soft credit email. It must exactly match an existing donor's primary email. An email we cannot find puts the row in error rather than importing without the soft credit.

Formatting

Two notes that cause most of the avoidable errors:

  • Postal codes need their leading zeros. Spreadsheet apps strip them, turning 06784 into 6784. Format the column as text before saving.

  • Save as CSV, not as a spreadsheet file. Re-check your dates after saving, since some apps rewrite them.

Step 1, create the batch

  1. Go to Settings > Batch Payment Imports and click New batch.

  2. Give the batch a Batch name. Name it for the deposit it represents, for example August 26, 2026. The name shows in your imports list and on every transaction the batch creates, so it is how you find these gifts later.

  3. Choose your CSV file and click Continue.

Step 2, map your columns

WeGive reads your header row and maps the columns it recognizes. Check every row of the mapping screen, then set anything it missed.

Click a column's dropdown and type to search the available fields. Choose Ignore column for anything you do not want imported.

If a column you need has no matching field, that field is not supported for import yet. Note it and contact support rather than forcing it into another field.

Turn on Save mapping as template and give the template a name. The next time you import a file with the same columns, choose it from Apply template instead of mapping everything again.

Step 3, set batch defaults

Defaults fill in any row that does not bring its own value, so you do not need a column for something that is the same across the whole file.

You can set a default fund, campaign, fundraiser, campaign event, pledge, checkout, recurring plan, soft credit supporter, payment type, and payment date, plus UTM values and your organization's custom fields.

Leave Default payment type on Use row value if your file has a payment type column. A mapped column always wins over the matching default.

Step 4, choose your commit settings

These lock once any payment in the batch is committed, so decide them now.

Setting

What we recommend

Trigger engagements on commit

Off for imported history. Off suppresses receipts, automations, and CRM sync for every payment in the batch. Turn it on only when you want donors to receive receipts for these gifts.

Auto-accept all suggested updates

Off. Off means a matched donor's record is left alone when your file has different values, and the differences are shown for you to accept row by row.

Expected batch total (USD)

Enter your deposit total, for example 1922.43. Submitting is blocked until the committed payments add up to it. Leave it blank to skip this check.

Click Continue, review the summary, and start parsing.

Step 5, work the review queue

Parsing sorts every row into a tab so you can see what needs attention.

Tab

What to do

Ready

A donor was matched confidently. Nothing needed unless you want to change something.

Needs review

Either no donor was found, or more than one donor matched and we will not guess. Decide each row.

Errored

Something on the row could not be read, such as an unusable amount or date. Fix the value and re-parse, or skip the row.

Skipped

Rows you have excluded. They will not be imported.

Open a row to see its donor panel. You have four choices:

  • Search for a donor in the box at the top of the panel to attach the gift to someone the match did not find.

  • Action on commit sets what happens to the donor record: use the matched donor with no changes, update the matched donor with your row's values, or create a new donor from your row's values.

  • Edit the fields in the panel. Your edits are saved as overrides and are what gets written. Fields you leave empty stay empty on a new record.

  • Skip row to leave the gift out of the batch entirely.

When a row is right, click Confirm as new contact or accept the match, then Commit to batch. Use Create all as new contacts to clear the whole queue at once, but only when you are confident none of these donors already exist.

Committing does not create anything. It stages the row and locks in your donor decision.

Step 6, submit

When Uncommitted reaches zero, click Submit all and confirm.

You will see a summary of how many were submitted, skipped, and errored. Click View transactions to open your Payments table filtered to this batch. Check the row count and the total against your deposit before you close it out.

Common questions

Will this create duplicate donors? Not for donors we can identify. Rows are matched against your existing donors before any new record is created, and two rows in the same file that share an email produce one donor with two gifts. Rows with no email and no address are the exception, since there is nothing to match on. See the Batch Payment Import reference for exactly how matching works.

Why did a donor I know exists come back as no match found? Most often because the row has no email and the donor has no mailing address on file in that state, or because the row has no state at all. Name matching depends on both. Adding the donor's WeGive ID or your CRM ID to the file is the reliable fix.

Why is a row still blocked after I picked a donor? Check whether the batch has an expected total set. Committed payments must add up to it before the batch can be submitted.

Can I undo a submitted batch? No. Submitting creates real transactions. Archive a batch you no longer want before submitting it. If a batch has already been submitted, contact support to have the transactions reversed.

Where do check numbers go? Map your check number column to Tracking number / check no. on the payment. You do not need to put it in the description.