Getting your gift list in

How to export donations from QuickBooks, Planning Center, Breeze, Tithe.ly, PayPal, Stripe, Givebutter, Zeffy, Donorbox, Bloomerang, a bank statement or a spreadsheet — and turn them into acknowledgment letters

The generator reads whatever your system exports. You do not need to rename columns or reformat dates; it recognizes the usual headers from each platform, skips totals and title rows, joins first and last names, and ignores fee, tip and currency columns. Upload the exported .csv or .xlsx file directly (or drop it on the paste box) — the file is read in your browser and never uploaded to a server. If your tool only shows the data on screen, select the cells and paste. Below is where to find the export in each tool and what to watch for.

Everything is parsed in your browser. The file is never uploaded.

The only three columns that matter

Who gave (a name column, or first + last), when (a date), and how much (an amount). Everything else is optional. Add a Goods Value column for event tickets or auction items so the letter can state the deductible portion, and an In-kind column for donated goods so the letter describes the property instead of pricing it. An In Memory Of, In Honor Of or Tribute column (or the Tribute Type + Tribute Name pair that Bloomerang, Little Green Light and Kindful export) adds the dedication sentence to that donor's letter; see the memorial gifts page.

Name,Date,Amount,Goods Value,In-kind
Jane Doe,03/05/2025,250,,
"Smith, John",06/12/2025,"$1,000.00",,
Bob Lee,09/20/2025,150,40,
Mary O'Brien,11/02/2025,,,12 winter coats

This produces four letters: Jane and John get the plain "no goods or services" statement; Bob's letter says he received goods worth $40 (the gala dinner) so $110 is deductible; Mary's letter describes the coats and states no value.

Excel or Google Sheets

The spreadsheet you already keep.

Where the export is

  1. Make sure row 1 is a header row (Name, Date, Amount — any order, any extra columns are fine).
  2. Select the header row and every gift row, copy.
  3. Paste into the generator. Tab-separated cells are detected automatically; no need to save as CSV.

Columns you will see

Name (or First Name + Last Name), Date, Amount. Optional: Address, City, State, Zip, Email, Goods Value, Description (for in-kind gifts).

Watch for

  • "Smith, John" in one cell is fine — it becomes John Smith.
  • Totals, blank rows and a title above the header are skipped and reported, not turned into letters. Excel's Data → Subtotal layout ("Ann Wu Total", "Grand Total" rows) is understood — the subtotal rows are skipped and only the gift rows count. Footer rows from Google Sheets formulas ("Total", "Average", "Max", "Count") are skipped too — nobody gets a "Dear Average" letter. Month, quarter or appeal dividers typed alone in the Name column ("January 2025", "Q2", "Fall Appeal 2025", "Week of 3/2") are skipped and listed — nobody gets a "Dear January" letter either, while real donors named May or June Carter still do. A two-row header or a blank spacer column is fine.
  • Amounts like $1,000.00 or (250.00) are read correctly; negatives are flagged as refunds.
  • Year-end statements merge the same donor typed different ways — "JANE DOE", "Doe, Jane" and "Jane Doe" with the address filled in on only one row are one person and get one statement with the full total. Two people who share a name are kept apart only if the sheet shows two different addresses.
  • A giving grid with one column per month (Name | Jan | Feb | … | Dec | Total) or per quarter (Q1 2025 | Q2 2025 …) is understood: each filled cell becomes one gift for that month, the Total column and any total row are skipped, and the letter says "During January 2025 …" because only the month is known. Put the year in the header ("Jan 2025") or it is assumed (a year in the sheet title or in the first header such as "Pledge 2025", else the current year) and the warnings tell you so. The name column may be headed with the sheet's title ("Pledge 2025", "Building Fund", "Family") instead of "Name" — it is still found. A fiscal-year grid with a year row above the month row (merged "2024" over Jul–Dec and "2025" over Jan–Jun) is read too: each month takes the year above it. A giving-history grid with one column per YEAR (Name | 2024 | 2025, or FY2024 | FY2025, "2025 Total") works the same way: only the column for the tax year you pick is used, and the letter says "During 2025 …". Year tags on ordinary headers ("Pledge 2025 | Paid 2025", "Dues FY2025 | Donation 2025") are ignored when the column is matched. For a per-gift letter that states the exact day, use a Date column instead. A weekly offering-envelope ledger with one column per Sunday (Env # | Family | 1/5 | 1/12 | 1/19 | 1/26 | Total, or Sun 1/5/2025 …) is read too: every filled cell becomes a dated gift, the Total column is skipped so nothing is counted twice, and a missing year is taken from the sheet title ("2025 Offerings") or assumed and flagged. Month headers Excel shows as 1/25, 2/25, 3/25 are still read as January–March 2025. An Excel or Google Sheets PivotTable copied as-is (Row Labels | Sum of Amount, with Grand Total) is understood too: dates or months listed under each donor become that donor's gifts, continuation rows with a blank name take the donor above, and the "<name> Total" / "Grand Total" rows are dropped so nothing is counted twice. If the pivot only shows one total per donor, no gift dates are known — add the date field to the rows (or export the gift list itself).
  • A church ledger with one column per fund and no Amount column (Env # | Name | Date | General | Building | Missions, or Tithe | Offering) is understood too: the fund columns on each row are added into one gift and the letter shows the split — "$150.00 ($100.00 General, $50.00 Building)". Envelope and check numbers are never mistaken for money, and a Total column is ignored so nothing is counted twice. A "Non-Deductible" column (camp fees, materials, book sales — the label Realm, Planning Center and ACS use) is left out of the letters and listed in the notice; a donor whose only money is in that column gets no letter. The Total / Grand Total footer row is skipped, never summed and never addressed as a donor.
  • Greetings handle how rosters write names: "Mr. and Mrs. Robert Chen" → Dear Mr. and Mrs. Chen; "The Garcia Family" → Dear Garcia Family; "Rev. Thomas O'Neil III" → Dear Rev. O'Neil; ALL-CAPS names are written in normal case. Add a Salutation column to override any greeting.

QuickBooks Online

Organizations whose bookkeeper records donations as sales receipts or deposits.

Where the export is

  1. Reports → search for "Sales by Customer Detail" (or "Transaction List by Customer").
  2. Set the report period to the full tax year (January 1 – December 31) and run it.
  3. Use the export icon → Export to Excel (or CSV), open it, select everything and paste.

Columns you will see

QuickBooks gives Date, Transaction Type, Num, Customer, Memo/Description, Amount. "Customer" is read as the donor name.

Watch for

  • The three title lines QuickBooks prints above the header (organization name, report name, period) are skipped automatically.
  • Grouped layout is understood: the donor-name heading above each block is carried down to its transaction rows, and the "Total for …" subtotal rows and the grand total are skipped (one summary line tells you how many).
  • The "Deposit Detail" report works too: each dated "Deposit" row is the bank-deposit total and gets no letter, while the Sales Receipt / Payment lines under it (which carry the payer but no date) take the deposit's date. A one-line note tells you how many gifts were dated that way, and warns if a deposit total does not add up to its lines.
  • If a gift was recorded as a bare Deposit with no customer name on any line, there is nobody to address — add the name in the spreadsheet (or record the gift as a Sales Receipt) first.
  • QuickBooks Desktop works the same way: Reports → Sales → Sales by Customer Detail → Excel. Its extra columns (Type, Num, Item, Qty, Sales Price, Balance) are ignored and "Amount" is used. Rows of type Invoice are skipped with an explanation — an invoice is a bill you sent, not money received; acknowledge the Payment rows instead (Transaction List by Customer shows them), or record gifts as Sales Receipts.

Venmo, Cash App or Square

PTAs, booster clubs and small groups that collect by phone or card reader.

Where the export is

  1. Venmo (business profile): Statements → pick the month(s) → Download CSV. Cash App for Business: Activity → Statements → Export CSV. Square: Dashboard → Transactions → set dates → Export → Transactions CSV.
  2. Open the file, select everything including the header, paste. One month at a time is fine — paste several statements one after another into the same box.

Columns you will see

Venmo: From (payer), Amount (total), Note, Type/Status. Cash App: Name of sender/receiver, Amount, Notes, Transaction Type. Square: Customer Name, Gross Sales, Date, Description, Event Type.

Watch for

  • Money you sent out (reimbursements, cash-outs, transfers to the bank) shows as a negative amount and is excluded with a note; only money received becomes a letter.
  • Square's Gross Sales (what the donor paid) is used, not Net Total after fees. A Refund event cancels its own row AND the original payment it matches (same customer, same amount, not later) — both rows say so by line number — so a donor is never thanked for money that went back; a "Partial Refunds" amount is netted out of the gift with a note.
  • Square's full Transactions CSV (50+ columns) is understood as a unit: the "Tip" column is money the payer added for YOUR organization (Square tips go to the merchant, not to Square), so it is added to Gross Sales with a notice; "Description" (Transactions CSV) or "Item" (Items Detail CSV, with Qty / Price Point Name / Gross Sales) is the item sold, never an in-kind gift ("Pancake Breakfast Ticket x2" or "Gala Dinner Ticket" stays a cash row flagged as a likely purchase; a "Donation" item is a plain gift); "Source: Invoices" means the payment came through a Square invoice and is kept; Card, Card Entry Methods, Device, Staff, Location and Channel columns are ignored. A memo such as "Memorial donation - Bob Lee" prints the dedication.
  • Venmo's title line ("Account Statement - (@handle) - January 1, 2025 to January 31, 2025") and the balance and disclaimer rows at the bottom are skipped; "From" is the donor, "Amount (total)" the gift, "Note" the memo.
  • Venmo statements have a leading blank column and title lines above the header — both are skipped automatically. Venmo often shows only a display name; if a donor's handle is all you have, add the real name before pasting.
  • A payment with Goods-and-services or a ticket note ("2 gala tickets") is probably quid pro quo — add a Goods Value column so the letter states the deductible portion.
  • Venmo "Charge" rows (a request you sent) list your organization in From and the payer in To; the payer is credited, so your own name never gets a letter.
  • Cash App's statement (Transaction ID, Date with an EST/EDT stamp, Transaction Type, Amount, Fee, Net Amount, Status, Notes, Name of sender/receiver) is read as a unit: only "Received P2P" rows become letters; "Sent P2P" and "Cash out" are negative and skipped; the time-zone stamp keeps the written day. Fire-company and church food-sale memos ("chicken bbq 4 dinners", "sub sale", "2 quarts soup", "take out") get the purchase warning, while "boot drive" or "donation at the chicken bbq" stay plain gifts.
  • Sales mixed in with gifts — spirit wear, yearbook ads, cookie dough, pizza night, dance tickets, scrip gift cards — are flagged from the Note: a buyer who got goods worth the price made a purchase, not a contribution, and should be left off the giving statement.

Bank statement (Zelle and ACH)

Fire companies, PTAs, little leagues and small churches whose only giving record is the checking account.

Where the export is

  1. Chase: Accounts → the checking account → Download account activity → CSV. Bank of America: the account → Download → Microsoft Excel/CSV. Wells Fargo: Download Account Activity → Comma Delimited. Credit unions: Transactions → Export → CSV.
  2. Open the file, select everything including the header row (Details / Posting Date / Description / Amount / Balance, or Date / Description / Amount / Running Bal.), paste.
  3. Credit-union and some bank files have two money columns instead of one — Debit / Credit, Withdrawals / Deposits or Amount Debit / Amount Credit. Paste them as they are: the Credit (Deposits) column becomes the gift and the Debit column is treated as money out.

Columns you will see

There is no name column. The payer is read out of the Description: "Zelle payment from JOHN SMITH 19283746" (Chase), "Zelle Transfer Conf# abc123; LINDA PARK" (Bank of America), "ZELLE FROM JOHN SMITH ON 01/15 REF # …" (Wells Fargo) and "ORIG CO NAME:FIDELITY CHARITABLE …" (an ACH grant or company gift). ALL-CAPS bank names are title-cased for the greeting.

Watch for

  • Only lines that name a payer can become letters. A PayPal, Venmo, Stripe or Square payout is one deposit covering many gifts — it is explained, not turned into a donor called "PayPal"; paste that platform's own report for those gifts.
  • "REMOTE ONLINE DEPOSIT", "Counter Credit" and mobile check deposits are batches of checks and cash with no payer on the bank line. List those gifts from your deposit slip or giving log (Name, Date, Amount) and paste them as extra rows.
  • Debits, checks you wrote, card purchases, transfers from your savings account, interest and reversals are skipped with a one-line explanation — nothing to fix. A Zelle "payment to" line is money out, so it is skipped too. Bank statements cannot tell a refund from a reimbursement, so a "payment to" is NOT netted against that person's earlier gift automatically — if you refunded a gift, delete the original "payment from" row as well so the donor is not thanked for money they got back. (Processor exports that label the row Refund — PayPal, Square, Stripe, Classy, Facebook, Venmo — are netted for you.)
  • A Zelle memo after the confirmation number ("… 48596877 Boot drive") is kept as the gift note; the bank's codes (QUICKPAY_CREDIT, ACH_CREDIT) are dropped.
  • An ACH credit from Fidelity Charitable, Schwab Charitable or Vanguard Charitable is a donor-advised-fund grant and gets the DAF thank-you wording (no deductibility statement), the same as when it arrives as a check.

PayPal

Donate buttons, PayPal Giving Fund payouts, Venmo-for-charity.

Where the export is

  1. Activity → Statements / Download → choose a custom date range covering the tax year and the CSV format.
  2. Open the file, keep the Completed payments received, paste.

Columns you will see

Date, Name, From Email Address, Gross, Fee, Net. "Gross" is used as the gift amount — the donor gave the gross amount; PayPal's fee is your expense, not theirs.

Watch for

  • Rows with status Refunded, Reversed or Pending are excluded from letters. The full Activity download also lists PayPal's own balance moves — "Payment Hold", "Payment Release", "General Currency Conversion", "General Withdrawal" — under the name "PayPal" with no donor; those are skipped with a one-line reason, so a released hold never becomes a second $100 letter or a letter addressed to PayPal.
  • PayPal Giving Fund payouts arrive as one lump from "PayPal Giving Fund" — the generator recognizes it as a pass-through grantor and writes a courtesy letter without the tax-receipt wording. Thank the individual donors from the Giving Fund's donor report instead.
  • Fees, currency conversion and tip columns are ignored.
  • The "Type" column ("Donation Payment", "Website Payment", "Subscription Payment") only says which button took the money. Donate buttons are routinely used to sell gala tables and spirit wear, so the "Item Title" decides: "Gala Ticket — Table #3" or "Spirit Wear Hoodie" gets a sale warning even when the Type says Donation; "Monthly Gift" or "Donation #1042" is a plain gift.
  • The full activity download has BOTH a one-cell "Shipping Address" and split "Address Line 1" / "Town/City" / "State/Province…" / "Zip/Postal Code" / "Country" columns. The split columns are used, so the mailing block prints each line once; non-US countries become the last line.

Stripe

Donation forms built on Stripe Checkout or Payment Links.

Where the export is

  1. Payments → Export → set the date range to the tax year, columns "Default" (or add Customer Name / Customer Email), download CSV.
  2. Open it, select everything, paste.

Columns you will see

Created (UTC), Amount, Customer Email, Customer Description / Customer Name, Status. Amount is in dollars in the export.

Watch for

  • Only rows with Status = Paid / Succeeded are used; Failed and Refunded rows are excluded.
  • "Created (UTC)" timestamps are Greenwich time, so a gift charged at 9 pm Eastern on December 31 is written as January 1. The generator converts a UTC column to your computer's time zone and lists every gift whose day changed, so year-end gifts stay in the right tax year.
  • If your form puts the donor's name only in the Description column, rename that column "Name" in the spreadsheet before pasting.
  • "Card Name" and "Card Address Line1 / Line2 / City / State / Zip / Country" (add them under More columns when exporting) are assembled into the mailing address; an "Amount Refunded" that covers the whole charge drops the row, a partial one nets it out with a note.

Givebutter

Campaign pages, events, and recurring donors.

Where the export is

  1. Dashboard → Transactions → filter by the tax year → Export (CSV).
  2. Upload the file with “Upload .csv / .xlsx” in the generator (or open it, select everything, paste).

Columns you will see

First Name, Last Name, Email, Amount, Date, Payment Method, Campaign, Status. First + Last are joined into one donor name.

Watch for

  • Givebutter's own year-end statements are fine too — use this tool when you want your wording, your letterhead, or letters for gifts that arrived outside Givebutter (checks, cash, DAF grants).
  • Donor-covered fees: the amount the donor actually paid is deductible. Givebutter exports a separate "Fees Covered" column; the tool reads "Amount" only and shows one notice with the fee total, so if you want the letters to match Givebutter's receipts add the two columns together (Amount + Fees Covered) in your spreadsheet before pasting.
  • Ticket purchases for events need a Goods Value column (the fair market value of the dinner or ticket) so the letter can state the deductible portion.
  • Peer-to-peer campaigns: the "Team" and "Member" columns name the volunteer whose page took the gift, not the donor — the letter goes to First/Last Name and the fundraiser is kept as a note. "Dedication" (memory / honor) beside "Dedication Name" prints as "in memory of Grandma Fox"; a "Tip" to Givebutter is ignored; a "Match Request" is a pending employer match, so the letter stays addressed to the person.

RallyUp, Snowball, Fundraise Up, Flipcause, Classy, Mightycause (peer-to-peer & campaign platforms)

Groups that run online campaigns, pancake breakfasts, raffles or peer-to-peer drives on a fundraising platform and want letters in their own name.

Where the export is

  1. Reports / Transactions / Donations → set the tax year → Export (CSV or XLSX).
  2. Upload the file with “Upload .csv / .xlsx” in the generator (or open it, select everything, paste).

Columns you will see

Date, Name (or First + Last), Email, Activity / Campaign, Type, Gross (or Amount), Fee, Net, Reward / Perk, Reward Value; Flipcause adds Transaction Type, Item, Quantity and Tax Deductible Amount. Gross is the gift; Fee and Net are ignored; a Reward (perk) with its Reward Value becomes the goods-or-services value.

Watch for

  • Perks: a tote bag worth $15 on a $250 gift gets the §6115 disclosure ($235 deductible). A ticket row whose Reward Value equals the payment is a purchase and gets no letter.
  • Raffle / 50-50 rows are flagged: money paid for a chance to win is not a contribution, so leave those rows off or let the warning remind you.
  • Flipcause prints its own Tax Deductible Amount; the tool derives the goods value from it (Gross − deductible) and warns if the two disagree with a separate Fair Market Value column.
  • Donor-covered fees: the letters acknowledge the Amount / Gross column; if the platform shows a separate "Fees covered" column you get one notice with the total so you can add it in if you want letters to match the platform's receipts.
  • Classy transactions export: "Charged At" is the gift date, "Member Name" is the supporter (the donor — unlike Givebutter, where Member is the volunteer fundraiser), "Fundraising Page Name" / "Fundraising Team Name" are kept as notes, and "Gross Transaction Amount" already contains the "Fees Covered" (Gross − Fees Covered = Donation Gross Amount), so the letters use the gross figure and the notice tells you NOT to add the fee again. "Dedication Type" + "Dedication Honoree Name" print as "in memory of …"; a "Fair Market Value" on a ticket row produces the deductible-portion sentence.

Cheddar Up (PTA / PTO / booster payments)

PTAs, PTOs, booster clubs and scout troops that collect dues, spirit wear, field-trip fees and donations on one Cheddar Up page.

Where the export is

  1. Manage → Collections (or Reports → Payments) → set the date range → Export (CSV / XLSX).
  2. Upload the file with “Upload .csv / .xlsx” in the generator (or open it, select everything, paste). One export can cover all collections — the item names tell the tool what each payment was.

Columns you will see

Payment Date, Payer Name, Payer Email, Collection, Item Name, Quantity, Item Price, Amount, Fees, Net, Payment Method, Payment Status, Note. "Amount" (what the payer paid) is the gift; Item Price, Fees and Net are ignored; Collection + Item Name + Note travel into the memo.

Watch for

  • Only the "Donation" items are contributions. A T-shirt, yearbook, gala ticket, field-trip fee or registration row is a purchase, so it gets the purchase warning instead of a clean "no goods or services" letter — leave those off the giving statement, or add a Goods Value column with the item's fair market value if the payer deliberately paid more than it was worth.
  • "PTA Membership" rows are flagged as dues: a $10–$15 family membership whose only perks are voting and the newsletter is fully deductible, and the letter says so; a level above $75 that includes a dinner or a shirt needs the benefit valued.
  • A plain donation collected inside a "2026 Membership & Giving" collection is still a donation — the collection name does not turn it into dues.
  • Rows whose Payment Status is Refunded are excluded with the reason shown; a payer who bought a membership and gave a donation on the same day gets one letter that lists both lines.
  • Whether the column is called "Item", "Item Name" or "Product", next to Quantity / Item Amount it names what was bought — it is never read as an in-kind (non-cash) gift, so a "Spirit Wear Hoodie" row stays a $35 cash payment with the purchase warning rather than a letter describing donated clothing.

Eventbrite, RunSignup and other ticketing sites

Galas, 5Ks, trivia nights and any event sold through a ticketing page with a "Donation" ticket type or add-on.

Where the export is

  1. Eventbrite: Manage event → Orders (or Attendees) → Export → Attendee summary / Orders report (CSV or XLSX). RunSignup: Participants → Download. Upload the file with “Upload .csv / .xlsx” in the generator (or open it, select everything, paste).

Columns you will see

Order Date, First Name, Last Name, Email, Quantity, Ticket Type (or Ticket Name / Registration Type), Total Paid, Ticket Price, Eventbrite Fees, Order Type. "Total Paid" is the gift (what the buyer actually paid, not the per-ticket price), First + Last are joined, fee and Order Type columns are ignored.

Watch for

  • Rows whose Ticket Type is "Donation" (or any donation / contribution / sponsor level) are plain gifts and get a normal letter. Rows for a priced ticket ("Spring Gala Dinner", "5K Runner", "VIP Reception") are marked as ticket orders: a ticket priced at what the guest receives is a purchase, not a contribution, so the letter carries a warning instead of being sent as is.
  • Gala or dinner tickets priced above the meal's value ARE partly deductible — add a column such as "Meal value per seat" with the fair market value; it is multiplied by Quantity and the letter states the §6115 good-faith estimate and the deductible excess.
  • $0 tickets (free admission, comp seats) are skipped with the reason "Free ticket" — nothing to fix.
  • Eventbrite's fee columns are what the buyer paid Eventbrite, not money you received; they are ignored, and "Total Paid" is acknowledged as the payment the attendee made.
  • Zeffy Ticketing exports ("Ticket total" + "Extra donation" + "Total amount") work the same way: the ticket total is read as the value of what the buyer received and the total as the payment, so a $250 payment for $200 of tickets gets the §6115 letter (deductible $50) and a payment equal to the ticket price is skipped as a purchase. The extra-donation column is already inside the total and is not added twice.

Auction software (Auctria, Greater Giving, OneCause, Charity Auctions Today) and Qgiv

Gala committees and school foundations that ran a live/silent auction, a paddle raise or fund-a-need, or sold event registrations through Qgiv.

Where the export is

  1. Auctria: Reports → Bidder statements / Purchases → Export CSV. Greater Giving: Reports → Bidder Statement or Package Sales → Export. OneCause: Reports → Purchases (Transactions) → Export. Qgiv: Reporting → Transactions → Export. Upload the file or paste it.

Columns you will see

Bidder # (ignored), First + Last Name (or Bidder Name), Item / Package Name, Bid (Winning Bid, Price Paid), FMV (Fair Market Value), Donation (paddle raise, round-up, fund-a-need), Total Paid, Tax Deductible Amount, Paid, Payment Date. Qgiv: Transaction Date, First/Last Name, Amount, Form Name, Restriction, Transaction Type, Status, Dedication Type/Name.

Watch for

  • The winning bid is a payment for the item the bidder took home, so the letter is the quid-pro-quo disclosure: it names the item, states its fair market value and the deductible excess (bid − FMV). A bid at or below FMV is skipped — nothing is deductible and a plain receipt is enough.
  • A separate "Donation" column (paddle raise beside a $0 bid, or a round-up on top of a bid) is added to the bid; when a "Total Paid" column exists it is used as the payment instead, so nothing is counted twice. Fund-a-need rows with FMV 0 get a clean no-goods-or-services letter.
  • "Tax Deductible Amount" from the software is respected when present; if it disagrees with bid − FMV, fix the FMV in the software first — the IRS wants your good-faith estimate of value, not the auction software's default.
  • Qgiv "Event Registration" rows are flagged as ticket purchases, "Refunded" rows are skipped, and "Dedication Type / Name" prints the in-honor / in-memory line.

Shopify store with a “Donation” product

Thrift stores, museum shops, school spirit-wear stores and any nonprofit that sells a "Donation" product (or round-up) in its Shopify store.

Where the export is

  1. Shopify admin → Orders → Export → choose the date range → “Plain CSV file” → Export orders. Upload the file with “Upload .csv / .xlsx” in the generator.

Columns you will see

Name (the ORDER number — #1001), Email, Financial Status, Paid at, Subtotal, Shipping, Taxes, Total, Lineitem quantity, Lineitem name, Lineitem price, Billing Name, Billing Address1 / City / Zip / Province / Country, Payment Method, Refunded Amount. The buyer is read from Billing Name (Shipping Name if there is no billing address), the money from Subtotal (what was paid for the products, before shipping and tax), the date from Paid at, and Financial Status decides whether the order counts (paid yes; refunded, pending, voided no).

Watch for

  • Shopify's "Name" column is the order number, not a person — it is never used as the donor's name, so you will not see "Dear #1001".
  • "Lineitem name" tells a gift from a sale: an order for the "Donation" product gets a normal letter; an order for "Logo T-Shirt - M" or any other product is a purchase and the letter carries a warning instead of being sent as is.
  • An order with several line items appears in the export as extra rows with every order column blank. Those rows are folded into the order's first row (items joined with +). If a donation and a product were bought together, the letter warns that the subtotal covers both — put the donation amount alone on that row and regenerate.
  • Shipping and tax are never part of a gift; Subtotal excludes them. Refunded orders are skipped; a partial refund in "Refunded Amount" is subtracted and noted on the letter.
  • A trimmed sheet works too: Billing Name, Subtotal, Lineitem name and Financial Status are enough — the other 50 Shopify columns can be deleted first.
  • Bonfire (t-shirt campaigns) payout CSVs have a separate "Donation" column beside Item / Item Price / Total: only the Donation column is acknowledged, a shirt-only order is skipped as a purchase, and a shirt + donation order gets a letter for the donation alone with a note that the shirt is not included. Classy transaction exports (Donation / Registration / Ticket types with a Fair Market Value column) and GoFundMe Charity exports need no preparation.

Zeffy

Free fundraising forms; common with very small organizations.

Where the export is

  1. Dashboard → Payments (or Donations) → set the date range → Export.
  2. Upload the file with “Upload .csv / .xlsx” in the generator (or open it, select everything, paste).

Columns you will see

First Name, Last Name, Email, Amount, Date, Form / Campaign. Address columns, if present, are used in the letter header.

Watch for

  • Zeffy already emails a receipt per gift; the year-end summary letter is still what donors' tax preparers ask for in January.
  • The optional "Tip to Zeffy" / "Contribution to Zeffy" column is the donor's gift to Zeffy, not to you. When the export has a Donation Amount column the letters use it; when it only has Total amount, the tip is subtracted so the letter states what you actually received (a notice shows the total taken off). "Eligible amount" and "Advantage amount" columns (ticketed events) are read as the deductible part and the goods/services value, so the letter prints the quid-pro-quo sentence automatically.
  • "Extra donation" (the add-on gift a ticket buyer leaves for you) is already inside Zeffy's "Total amount" — Zeffy's own reconciliation guide says not to add it again. The letters follow that rule: the extra is counted once, inside the total, and a notice confirms it was not added twice.

Donorbox

Embedded donation forms with recurring plans.

Where the export is

  1. Donations → Export → pick the tax year → download CSV.
  2. Upload the file with “Upload .csv / .xlsx” in the generator (or open it, select everything, paste).

Columns you will see

Donor Name (or First/Last), Donor Email, Amount, Date, Status, Campaign, Payment Method, address fields.

Watch for

  • Recurring plans export as one row per charge, which is exactly what you want — the year-end letter lists each charge and totals them.
  • Rows marked Refunded or Failed are excluded.
  • Fees: Donorbox's "Amount" is what the donor was charged and "Net Amount" is what you received, so when "Donor Pays Fees" is Yes the covered fee is already inside Amount (Amount − Processing Fee = Net Amount). The letters use Amount — the same figure as Donorbox's own receipt — and the notice tells you not to add the fee again. (Only when there is no Net column to check against does the notice suggest adding a covered fee yourself.)
  • Tributes: the "In Honor Of" / "In Memory Of" column is a Yes/No flag and the person is in "Honoree Name" — the pair is read together ("Your gift was made in honor of Robert Chen."). A "Designation" like "Gala Ticket" is flagged as a probable purchase so you can add the goods value.

Give Lively

Free fundraising pages, text-to-donate and event ticketing for 501(c)(3)s.

Where the export is

  1. Nonprofit Portal → Donations → set the date range → Export (CSV).
  2. Upload the file with “Upload .csv / .xlsx” in the generator (or open it, select everything, paste).

Columns you will see

Order Date (UTC), First Name, Last Name, Email, Gross Amount, Fee Covered, Net Amount, Payment Status, Page Type, Campaign/Page Name, Dedication Type, Dedication Name, Donor Advised Fund, Receipt Sent Date (UTC), address fields.

Watch for

  • "Order Date (UTC)" is read in Greenwich time and converted; the notice tells you if a late-evening gift moved to the next day (matters only at year end).
  • "Receipt Sent Date (UTC)" means Give Lively already e-mailed an automatic receipt — your letter is a personal thank-you or year-end statement, and the notice says so.
  • "Payment Status" Refunded / Disputed rows: a refund gets no letter; an open dispute (chargeback) keeps the row but the letter carries a WARNING to hold it until the bank decides.
  • "Page Type" = Event (or a campaign name ending in "Ticket") is flagged as a probable purchase — add the goods value so the letter shows the deductible part. A "Donor Advised Fund" column or a payer called "Give Lively Foundation" / "Charity Navigator Giving Basket" makes the letter a thank-you, not a tax receipt, because the sponsor already issued one.

Planning Center Giving

Churches on Planning Center; also Church Center app gifts.

Where the export is

  1. Giving → Reports → "By donation" → set the date range to the tax year.
  2. Click the download arrow to export the CSV, open it, select everything, paste.

Columns you will see

Received Date, Completed Date, Donor, Payment Status, Fund, Fund GL Code, Amount, Refund Amount, Fees, Net Amount, Batch, Campus. "Received Date" and the gross "Amount" are used; Fees, Net Amount, Refund Amount, GL codes and Donor ID are ignored.

Watch for

  • Rows whose Payment Status is Refunded, Failed or Pending are excluded automatically; only Succeeded gifts get letters.
  • One row per fund: a gift split across General and Missions appears as two rows for the same donor, and the year-end letter lists both and totals them.
  • Planning Center can send its own statements — use this tool when you want your wording, letterhead, or letters that cover gifts outside Planning Center (checks recorded elsewhere, DAF grants, in-kind).
  • Split gifts are one letter: Planning Center (and Tithe.ly, Breeze) write a donation split across funds as two rows with the same person and date — General $100 + Missions $25. In per-gift mode those rows are combined into one letter that lists each line with its fund and the $125.00 total, instead of two letters for one gift. Two different people who share a name are kept apart when their addresses differ. The "Label" column is read as a memo ("Memorial - Grandpa Joe" → tribute flag; "Camp registration" → fee warning) and "Batch" stays in the memo for tracing but is never printed as a fund.
  • A "Refunded" Yes/No column (Planning Center, Tithe.ly) or an "Amount Refunded" / "Refund Amount" column (Stripe, Square) is honored: a fully refunded gift gets no letter and the row explains why; a partial refund is subtracted so the letter states the net amount actually kept. When the refund is its own line (Classy, PayPal, Square, Facebook/PayPal Giving Fund, Venmo) while the original still says Success, the refund row cancels the matching original gift — same donor, same amount, not later — and a smaller refund becomes a "net it to $X" warning on that donor's only larger gift. A bounced check or returned ACH ("Returned", "NSF", NACHA R01…) in a status column is treated like a failed payment. The "Fee" column is never subtracted — the donor's deductible gift is the gross amount.
  • Check Number, Batch and Fund travel into the memo ("check #2041 · Batch 12 · Building Fund") so you can trace a line back to the deposit; repeated values are kept once.
  • Youth camp, retreat, VBS or mission-trip registration fees that run through Giving are flagged: a payment that buys a child's place at camp is a fee, not a contribution (Rev. Rul. 83-104), while gifts to a Camp Fund or campership stay ordinary gifts.

Breeze, Tithe.ly, Givelify, Pushpay, Realm, Vanco, Aplos

Church management and giving platforms.

Where the export is

  1. Breeze: Giving → Contributions → set the date range → Export (Excel/CSV). Tithe.ly: Giving → Transactions → Export. Givelify: Analytics Studio → Donations → set the dates → Export CSV. Pushpay: Transactions → Export CSV. Realm: Reports → Predefined → Giving → Detailed Giving → Export (.csv). Aplos: Contributions → Export.
  2. Upload the file with “Upload .csv / .xlsx” in the generator (or open it, select everything, paste).

Columns you will see

Breeze: Date, First Name, Last Name, Amount, Fund(s), Method, Check #, Note, Person ID. Tithe.ly: Date, Name, Email, Amount, Fee, Net, Giving Type, Fund/Campaign, Status, Memo. Givelify: Donation Date, Donor First/Last Name, Envelope, Donation Amount, Fee, Net Amount, Recurring, Address. Pushpay / Vanco: Date, Donor (or Contributor Name), Fund Name, Amount, Status. Realm: Giver, Date, Fund, Amount, Payment Type, Memo. Aplos: Date, Contact, Purpose, Fund, Amount.

Watch for

  • "Fund Name", "Campaign Name" and similar columns are read as the gift's label, never as the donor — the donor comes from Donor / Giver / Contact / Contributor Name or First + Last Name.
  • Status values that mean the money has not settled yet (Pushpay "Processing", ACH "Scheduled") are excluded along with Refunded and Failed rows; re-export after they complete.
  • "In memory of …" or "In honor of …" typed into the Memo or Note column becomes the dedication sentence in the letter, even without a separate tribute column.
  • Fee and Net columns are ignored; the donor gave the full Amount. Check numbers and Person IDs are never mistaken for amounts.
  • Envelope or fund names that are really a collection for one person — "Pastor's Anniversary", "Pastor Appreciation Fund", "Clergy Appreciation Month", "Youth Pastor's Birthday", "Love offering for Rev. Brown" (Givelify, Tithe.ly, ChurchTrac) — get the designated-gift warning: if the church only passed the money to the pastor it is a personal gift, not a deductible contribution (Rev. Rul. 62-113). Memorials for a late pastor, "Church Anniversary" and a "Pastor's Discretionary Fund" that the church controls stay plain gifts. A campaign label that ends in "Ticket" (Give Lively / Classy "Gala 2026 - Ticket") gets the purchase warning.
  • Aplos and Realm print a Yes/No "Tax Deductible" column. Rows marked No (camp fees, dinner tickets, dues) are excluded with an explanation instead of getting a letter that wrongly says "no goods or services were provided". If a payment was partly a gift, put the deductible dollar amount in that column or add a Goods Value column. Aplos' "Non-Tax Deductible Amount" (NTD) column is read as the value of goods or services — $0 on a plain gift changes nothing, $100 on a $150 gala row produces the correct "estimated value $100, deductible $50" disclosure. ACS, Shelby and some Realm contribution statements have no Amount column at all — the payment is split into "Deductible" and "Non-Deductible" columns. That layout is read directly: the two are added into the payment, the Non-Deductible part becomes the value received (so a $60 + $40 banquet row gets the quid pro quo wording with $60 deductible), and a row with only the Non-Deductible column filled gets no letter and says why. Aplos' "Contributions by Contact" report (contact name on its own line, gifts under it, a "Total for …" line that also subtotals the non-deductible column, Grand Total) is read as a grouped report: the name carries down to each gift and every total line is skipped.
  • A Notes cell that is really the treasurer's to-do about a match — "matched by employer? ask", "match pending", "will be matched", "submitted matching gift form" — does not turn the donor's own gift into a company matching-gift letter. The letter stays addressed to the person for their own amount, with a reminder that the company's matching payment gets its own letter when it arrives.
  • Breeze loose-plate cash with no name ("Anonymous" or a blank name) is listed under problems and skipped — nobody can be acknowledged for it, which is correct.
  • One family's own contribution statement copied from Realm, Breeze, Planning Center, ACS or ShelbyNext (church name, "Contribution Statement", the period, then "Smith, John & Mary" and the mailing address above a Date | Fund | Check # | Amount table) has no Name column because the whole page is one donor. It is read as one donor: the name and address from the heading go on every gift row, the Total row and the "No goods or services" footer are skipped, and you get one letter listing every gift. The church name alone is never guessed as the donor. For many donors at once, export the gift list instead.
  • A hand-kept sheet whose Notes cell says "stock – 10 sh MSFT" or "Gift of 25 shares AAPL via Schwab" with no Type column is read as a gift of securities: the letter names the shares and leaves the dollar amount out, as the IRS requires (the donor sets the value). "2 gala tickets" in a note is not stock.
  • Fund names you already labelled as not deductible — "Youth Trip (Non-Deductible)", "Camp Fees - Not Tax Deductible", "Bookstore [NTD]" — are honoured: those rows are listed under problems with the fund name and get no letter, so a camp fee never appears on a giving statement. A positive label like "Tax-Deductible Building Gift" is unaffected.
  • A Benevolence gift whose memo names a beneficiary ("for the Smith family") still gets a letter, but with a warning: a gift the donor earmarked for a specific person is deductible only if the church kept full control over how the money was used (Rev. Rul. 62-113). "For the Smith Family Scholarship" or "in memory of the Smith family" are a fund and a tribute, not an earmark, and raise no warning.
  • A "Giving by Fund" report (one block per fund: a "General Fund" heading, the gifts, a Total row, then the next fund) works as pasted. The fund heading is carried onto the gifts beneath it and the letter reads "$250.00 (Building Fund)"; the Total rows are skipped; a donor who appears under several funds gets one letter listing each gift.

Bloomerang, Little Green Light, Kindful, Network for Good, DonorPerfect, Neon CRM, Salesforce NPSP

Donor databases used by small nonprofits.

Where the export is

  1. Bloomerang: Transactions (or a saved report) → filter by date → Export CSV. Little Green Light: Gifts → search by gift date → Export. Kindful: Transactions → Export. Network for Good: Donations → Export. DonorPerfect: Reports → Gift listing → Export. Neon CRM: Reports → Donation report → Export. Salesforce (Nonprofit Success Pack): Reports → an Opportunities report with Account Name, Primary Contact, Close Date, Amount, Stage → Export → Details Only, CSV.
  2. Upload the file with “Upload .csv / .xlsx” in the generator (or open it, select everything, paste).

Columns you will see

Transaction Date / Gift Date, Name (or Constituent Name, First + Last), Amount / Gift Amount, Fund, Campaign, Appeal, Transaction Type / Gift Type, Non-Deductible Amount or Deductible Amount, Tribute Type + Tribute Name, Note.

Watch for

  • Name and greeting columns are understood the way CRMs export them: "Addressee" (Little Green Light, DonorPerfect, Raiser's Edge) is the mailing name, not the street; "Envelope Name", "Formal Name" and "Mailing Name" are names too. A "Salutation" / "Informal Salutation" / "Preferred Name" column drives the greeting — when both a Formal and an Informal Salutation are present the informal one is used, and a cell that already says "Dear Mr. Chen," is printed as-is (never "Dear Dear").
  • "Non-Deductible Amount" is used as the goods/services value, and "Deductible Amount" is subtracted from the gift to find it — so gala tickets and auction purchases get the correct "estimated value of goods and services" sentence without any editing. The exception is a Deductible Amount of $0 (or Non-Deductible = the whole gift) on a DAF grant, foundation grant, PayPal Giving Fund payout, IRA QCD, bequest or employer match: CRMs record that because the payer takes no deduction, not because anything was received, so those rows keep their specialised wording instead of being dropped as a "purchase".
  • Rows whose type is a bare "Pledge" (a promise, not a payment) or a "Soft Credit" (credit for someone else's gift) are excluded with an explanation; "Pledge Payment" rows are real payments and are kept. A Yes in a "Soft Credit" Yes/No column does the same (the DAF sponsor or matching company on the hard-credit row gets the receipt), while a "Soft Credits" column that merely names the credited person leaves the gift alone. Bloomerang also exports the recurring plan itself as a "Recurring Donation" row next to the actual "Recurring Donation Payment" charges — the plan row is skipped so a $25/month donor is not thanked for a phantom extra $25. An "Acknowledgement Status" of "Do Not Acknowledge" keeps the row but puts a WARNING on that letter so it is not mailed blindly.
  • A pledge summary report (Pledge Date, Pledged Amount, Amount Paid, Balance, Last Payment Date) works too: the letter uses Amount Paid and the payment date, never the pledge date or the pledged total; a partly paid pledge gets a note with the balance, and an unpaid pledge is skipped with an explanation. For installments on several dates, export the payment detail instead so each date is listed.
  • ID columns (Contact ID, Donor ID, Account ID, Transaction ID) are never mistaken for the donor's name — a row with a blank name and a filled "Company Name" uses the company. A "Non-Cash", "In Kind" or "In-Kind" type is read as an in-kind gift whether the amount is $0 or an internal estimate ($500 for a used laptop — Little Green Light, Bloomerang and DonorPerfect record one); the Note / Gift Note column becomes the item description ("12 folding chairs") and the letter describes the property without ever printing a value, as IRS Pub 1771 requires.
  • An "Acknowledgment Status" (Bloomerang), "Acknowledged" (Little Green Light) or "Thank You Sent" (Kindful) column is a bookkeeping flag, not a payment status: rows marked Yes / Sent / a date are kept and a notice lists which gifts already got a letter, so you can drop them or keep them for a year-end summary. On an in-kind row, a "Non-Deductible Amount" equal to the recorded value is ignored (the donor received nothing in return; the letter prints no value anyway) instead of turning the gift into a "purchase".
  • Exports with both an "In Honor Of" and an "In Memory Of" column work: whichever is filled sets the dedication sentence ("Your gift was made in memory of Robert Chen.").
  • DonorPerfect gift listings use two-letter codes in "Gift Type" — CK check, CC credit card, CA cash, IK in-kind, ST stock, EFT — and they are read that way, so an IK row becomes an in-kind letter. The one-letter "Record Type" column is read too: G is a gift, P is a pledge (a promise — skipped until the payments arrive) and S is a soft credit (someone else's money — no letter), so a 5-year pledge row never inflates the donor's total. "Gift Narrative" is the memo ("In memory of Helen Chen" sets the dedication; "Printer donated" names the item), "General Ledger" and "Solicitation" stay in the memo as the fund and appeal, "Fair Market Value" on a ticket or dinner row is the goods value for the quid pro quo sentence (on an in-kind row it is ignored), and a bare number in "Reference" is left out. Raiser's Edge NXT exports work the same way: "Receipt amount" below "Gift amount" gives the goods value, a $0 receipt amount on a donor-advised-fund sponsor keeps the DAF wording, and a free-text "Reference" is kept as the memo.
  • Prefixed address columns ("Donor Address 1", "Donor City", "Donor State", "Donor Zip" — Network for Good, Kindful, Classy) are assembled into a proper mailing block; "Donor Phone", "Donor Title", "Donor Gender" and similar profile columns are ignored. A "Country" column prints only when it is not the United States (ISO codes like CA or GB are spelled out) and turns on the international-donor note.
  • Salesforce NPSP opportunity reports are read the way the data model works: "Opportunity Name" ("Jane Smith Donation 1/15/2026") is a generated label and never the donor; for an individual the "Account Name" is the household ("Smith Household") so the "Primary Contact" becomes the donor, while an organization account ("Acme Widgets Inc.", "Schwab Charitable") keeps its own name with the contact as Attn. Stage "Pledged" is a promise and is skipped; "Closed Won" / "Posted" are received; "Closed Lost" / "Withdrawn" are nothing. Record type "In-Kind Gift" with a "Fair Market Value" describes the item and never prints the value; "Matching Gift" names the employer; a "Grant" from a company (Inc./LLC) is a real receipt for the company, while a foundation grant is a receipt-and-purpose letter for the funder's 990-PF file. A free-text "Description" column is the memo even when an "In-Kind Description" column also exists.
  • These databases print their own year-end statements; the usual reason to use this tool is a one-off letter with custom wording (DAF grant, QCD, in-kind gift, memorial) or a letterhead PDF/Word file you can edit.

Benevity / YourCause / Bright Funds (workplace giving)

Employee donations and company matches that arrive as a monthly disbursement from a corporate-giving platform.

Where the export is

  1. Benevity Causes portal → Donations → Disbursement reports → open the month → Download (CSV). YourCause NPOconnect → Payments → Payment detail → Export.
  2. Open the file and paste it whole — title lines ("Charity Name", "Period Ending", "Disbursement ID") are skipped automatically and the real header row is found below them.

Columns you will see

Company, Donation Date, Donor First Name, Donor Last Name, Email, Address, Comment, Source, Total Donation to be Acknowledged, Match Amount, Cause Support Fee. The donor is First + Last; "Company" is read as the employer, not the donor. The amount is the donation to be acknowledged — fees and the match column are ignored.

Watch for

  • These are courtesy letters, not tax receipts: the platform's foundation (American Online Giving Foundation for Benevity, Blackbaud Giving Fund for YourCause) is the charity of record and already receipted the employee. The letter says so and names the employer.
  • "Not shared by donor" / "Anonymous" rows are skipped — there is nobody to address.
  • Rows with $0 donation and only a Match Amount are a company match with no employee gift; they are explained and skipped (the foundation is the donor of record for the match too).
  • Use the Donation Date from the report, not the disbursement or period-ending date.

Facebook / Instagram fundraisers & GoFundMe (payout reports)

Birthday fundraisers and charity campaigns paid out through PayPal Giving Fund or Network for Good.

Where the export is

  1. Meta: Nonprofit Manager → Payouts → Download payout report (Donation-level). PayPal Giving Fund: Donor Report in your PPGF account. GoFundMe Charity: Reports → Donations export.
  2. Paste the whole file. The donor is Donor First Name + Last Name; the "Charity Name" and "Campaign Owner" columns are recognised as you / the organizer and never used as the donor.

Columns you will see

Donation Date, Donor First Name, Donor Last Name, Donor Email Address, Donation Amount, Payment Processor Fee, Net Payout Amount, Payout Date, Source Name, Fundraiser Title. Donation Amount and Donation Date are used; Net Payout and Payout Date are ignored.

Watch for

  • These gifts legally came from PayPal Giving Fund (or Network for Good), which already issued the receipt. The letter is a thank-you that says so — it does not read as a tax receipt.
  • "Anonymous" and "Hidden" donors (people who hid their name on Facebook) are skipped.
  • If donations landed in YOUR OWN PayPal or Stripe account (GoFundMe Pay, a Donate button on your business account), you are the donee and owe the receipt — add the word "direct" to a Notes column and regenerate.

Google Forms / Jotform / Cognito Forms sign-up

Pledge drives, auction check-out and "I'll bring a check" forms whose answers land in a responses sheet, and Jotform / Cognito Forms payment forms.

Where the export is

  1. Google Forms: open the Responses sheet (Form → Responses → Sheets icon), select everything including the question row, copy and paste.
  2. Jotform: Submissions → Download → Excel/CSV. Keep "Payment: Total" and "Payment Status" (Pending / Failed rows are skipped). If the export only has a "Products" column, the amount is read out of the product text ("Donation (Amount: 60.00 USD, Quantity: 1)" → $60) and a ticket or T-shirt item is flagged as a purchase. When a "Donation Amount" cell is empty on a product row but a "Total" / "Payment: Total" column exists, that column wins (it is what the card was charged, after any coupon) and the notice says whether it agreed with the product math.
  3. Cognito Forms: Entries → Export. "Name (First)" + "Name (Last)" are joined, "Payment_Status" Unpaid rows are skipped, "Entry Number" is ignored.

Columns you will see

Timestamp, Your name, Email address, How much are you donating today? (or "What amount would you like to pledge?"), How did you pay?, Anything you'd like us to know? — question-style headers are understood: Timestamp is the date, "Your name" is the donor, "How much…" is the amount (a pledge question is kept as the pledge), "How did you pay?" is a memo, and the free-text question is read as notes (so "In memory of my mother, Rose Ray" becomes the dedication).

Watch for

  • A form response is a promise, not a payment. Add a "Paid?" column and mark Yes as checks arrive: a pledge question + Paid? = Yes becomes the gift (paid in full); No or blank rows stay pledges and get no letter. Or simply delete unpaid rows.
  • The Timestamp is when the form was filled in, which may not be the date the check arrived; add a "Date received" column if they differ.
  • Amounts typed as "$100", "100" or "one hundred"? The first two work; words do not — fix them in the sheet.

Bank or credit-union statement

Checks and cash deposits with no donor software at all.

Where the export is

  1. Download the year's transactions as CSV from online banking.
  2. Delete every row that is not a donation (fees, transfers, bills). Add a Name column and type the donor for each deposit.
  3. Paste.

Columns you will see

Date, Description, Amount (credits). When most rows have a cash amount, the bank's "Description" column (MOBILE DEPOSIT, CHECK 1042) is kept as a note rather than mistaken for an in-kind item, and it is never used as the donor name — so add a real Name column.

Watch for

  • A deposit that bundles several checks is one row — split it into one row per donor so each person gets the right total.
  • A check dated December 30 but deposited January 3 belongs to the year it was mailed; fix the date by hand.

Before you print: a five-minute check

  1. Read the numbers under the paste box. Gifts parsed, letters, total cash. If the total does not match your books, the problem is in the paste, not the letters.
  2. Open the problems list. Each skipped row says why (no name, no amount, refund, duplicate header). Fix in the spreadsheet and paste again.
  3. Check the tax year. Year-end mode uses only gifts dated in the chosen year and tells you how many it set aside.
  4. Look at one DAF or pass-through letter. Grants from Fidelity Charitable, Schwab Charitable, Vanguard Charitable, community foundations and PayPal Giving Fund get a thank-you without tax-receipt wording, because the individual already received their deduction from the fund.
  5. Preview a letter with a benefit. If a donor paid for a gala ticket, the letter must show the good-faith value and the deductible remainder. If it does not, your export has no Goods Value column — add one.

No export at all?

A shoebox of checks or a list in an email works too. Type one gift per line in the generator — Maria Alvarez donated $250 on Feb 2, 2026, or simply John Smith 100 — and it reads the donor name, date and amount from each line. Columns copied out of a PDF or an email (separated by spaces instead of tabs) are understood as well. A warning asks you to check every amount, because free text has no header row to confirm which number is the gift. If your paste collapses onto a single line (some chat windows and forms drop line breaks), the generator says so instead of guessing.

Something did not parse?

Paste the header row and one or two anonymized rows (fake names, real column layout) into the contact form and we will add support. Real donor data should never be sent to us — the generator is designed so it never has to be.

Platform menu names change; if a step no longer matches, look for "Export", "Download" or "CSV" on the transactions or donations screen. This page is general information, not tax advice. See the plain-English guide to the IRS rules.