You did not sign up for this. You volunteered to keep the books for a booster club, a rescue, a fire company, and now the donation report says $925 and the bank says $832.47 and someone on the board is going to ask about the difference. The good news is that the difference is fully explainable and the explanation takes about ninety seconds once you have seen it done.
Why is my Stripe payout less than the donations I received?
Three things happen between a donor clicking Give and money appearing in your checking account, and every one of them changes the number.
- The processor takes its fee off the top. Stripe's published US rate is 2.9% + $0.30 for domestic cards, with an extra 1.5% for international cards and 1% for currency conversion. ACH Direct Debit is 0.8% capped at $5.00. Those fees are deducted before the money is ever sent to you (verified against stripe.com/pricing, August 2026).
- Payouts are batched, not per-donation. Stripe pays on a rolling schedule (T+2 in the US for most accounts), so one deposit typically contains gifts from several different days. On a brand new account the first payout usually lands 7 to 14 days after the first payment, which is why January of your first year looks especially strange. See Stripe's payouts documentation.
- Refunds, disputes and returned ACH payments are subtracted from whatever payout is open when they settle - not from the payout that contained the original gift.
So a deposit is not "a day of donations minus a fee." It is a specific, identifiable batch. Stripe gives every payout an ID and a report of exactly which transactions it contains. That report is your reconciliation unit. If you try to tie your donation report to your bank statement day by day, you will never get it to close.
Which date is the donation date: the charge, the settlement, or the deposit?
This is where most volunteer treasurers get tangled, because all three dates are real and they mean different things.
| Date | What it is | What it is for |
|---|---|---|
| Charge / authorization date | The moment the donor's card or bank was successfully charged | This is the gift date. It goes on the receipt, on the donor's year-end statement, and in your revenue period. |
| Settlement date | When the funds clear the card networks into your Stripe balance | Internal to the processor. You almost never need it. |
| Payout / deposit date | When Stripe transfers the batch to your bank | This is the date on your bank statement. It is a cash movement, not a gift. |
Say that out loud at the board meeting and you have already answered ninety percent of the question: the donation report is dated by gift, the bank statement is dated by cash, and the two are not supposed to match line for line.
Why do we have to record donations gross instead of just the deposit?
Because the deposit is not what the donor gave you. Contribution revenue is recorded gross, with the processor's fee shown as a separate expense. If you post only the net bank amount, you understate contribution revenue and you understate expenses by the same figure. That is not a wash from a reporting standpoint: it depresses your reported gross contributions, which is the line the IRS Form 990 asks for and the line any grantmaker, audit threshold or state charitable registration threshold keys on.
The same logic applies to the donor's acknowledgment. A donor who gave $100 must receive a receipt that says $100. A receipt reading $96.80 understates what they actually contributed and misstates their deduction. Donor Merchant's PDF receipts and annual tax statements always state the gross gift for exactly this reason.
How do I record Stripe donations gross with processing fees in QuickBooks?
Set up three things once, then it is the same four entries every month.
- A bank-type clearing account called something like "Stripe Clearing" (some treasurers use Undeposited Funds; a dedicated account per processor is cleaner because it can be reconciled independently)
- An income account for contributions, ideally with classes or sub-accounts for your funds and campaigns
- An expense account called "Merchant processing fees"
Worked example: one payout, five gifts, three days, one refund
Here is a real-shaped March payout using Stripe's published US rates.
| Gift date | Donor gift (gross) | Method | Fee | Net |
|---|---|---|---|---|
| Mar 3 | $100.00 | Card | $3.20 | $96.80 |
| Mar 3 | $25.00 | Card | $1.03 | $23.97 |
| Mar 4 | $250.00 | Card | $7.55 | $242.45 |
| Mar 4 | $50.00 | Card | $1.75 | $48.25 |
| Mar 5 | $500.00 | ACH bank debit | $4.00 | $496.00 |
| Subtotal | $925.00 | $17.53 | $907.47 | |
| Feb 27 gift refunded Mar 5 | -$75.00 | Card | not returned | -$75.00 |
| Payout to bank | $832.47 |
The four entries:
- Gifts, gross. Debit Stripe Clearing $925.00, credit Contribution revenue $925.00, split by fund or campaign as needed.
- Fees. Debit Merchant processing fees $17.53, credit Stripe Clearing $17.53.
- Refund. Debit Contribution revenue (or a contra-revenue "Refunded contributions" account) $75.00, credit Stripe Clearing $75.00.
- Payout. Debit Checking $832.47, credit Stripe Clearing $832.47. This is the line that matches your bank feed.
Stripe Clearing now nets to zero for that batch. That zero is the proof. If a clearing account will not zero out, you have a missing transaction, not a mystery.
What about refunds, returned ACH payments and disputes?
Treat all three as exceptions on a list, never as a quiet subtraction from a revenue figure. Your board can absorb "we had one $75 refund in March." It cannot absorb a revenue number that silently drifted.
- Refunds: the gift amount comes back out of your balance. The original processing fee is generally not returned, so a refunded $75 gift costs the organization the fee it already paid.
- Returned ACH: bank debits can fail days after they appear to succeed (insufficient funds, closed account). The reversal hits a later payout. Do not issue a receipt for an ACH gift that has not settled.
- Disputes: Stripe's published US price is $15.00 per dispute received, and that dispute fee applies whichever way the case resolves. Winning gets the gift amount back; it does not make the dispute free.
How do I record a donation where the donor covered the processing fee?
With fee recovery turned on, a donor giving $100 can check a box and be charged roughly $103.20 (the plugin defaults to a 2.9% + $0.30 calculation and both figures are editable in settings, so match them to your actual processor rate). The common treatment is that the entire charged amount is the contribution and the actual fee is the expense: revenue $103.20, merchant fee expense about $3.29 (the processor charges its percentage on the larger amount, so the recovery covers most but not quite all of the fee). The receipt then reads $103.20, because that is what the donor gave.
Practice does vary on this point, and some CPAs prefer to split the covered fee out. Confirm the treatment with your organization's accountant once and then be consistent. This article is general information, not accounting or tax advice.
Does a December 31 online donation count for that tax year?
Yes, for the donor, if the card was charged on December 31 - even though the money lands in your bank in January. Rev. Rul. 78-38 holds that a contribution charged to a credit card is deductible in the year the charge is made, regardless of when the cardholder pays the bank. IRS Publication 1771 puts it plainly: "The date of the contribution is the date the donor gave the charitable organization the contribution."
The practical consequence is the one that generates confused January emails: your year-end donor statements will total more than any bank figure for the year, because the last few days of December are still in transit. That is correct, not an error. Note it on the statement you hand the board and move on.
Which WordPress donation plugin exports the Stripe transaction ID and the fee?
This is the part that decides whether the monthly close takes twenty minutes or a weekend. To reconcile in one pass you need six things in one export: gross amount, fee, total, the processor's transaction reference, the status, and the gift date.
Plenty of plugins do not give you that. On WordPress.org, one organization reported "a serious issue with the donation amounts shown in our WordPress/GiveWP reports compared with the real amounts visible in our Stripe account" - a gap of roughly EUR 17,000 - and asked whether they could match individual donations to Stripe transaction IDs; the reply included "we won't be able to troubleshoot those here in free support" (support thread). Another user wrote: "I need the transactionID from Stripe in the CSV export of the donation history. This is needed to match the donation with the payment transaction in accounting" (support thread).
Donor Merchant's standard donations CSV export ships those columns as first-class fields, no add-on and no form-specific export required:
ID, First Name, Last Name, Email, Amount, Fee, Total, Currency, Frequency, Status, Method, Campaign, Designation, Transaction, Tribute, Tribute Name, Note, Custom Fields, Date
Amount is the gross gift, Fee is the processing fee, Total is what was charged, and Transaction is the processor reference you paste into Stripe or PayPal search. The donors export separately carries donation counts and lifetime totals. And because Donor Merchant charges no platform fee at all, the only difference between gross and net in your reconciliation is the processor's own published rate. There is no third line to hunt for.
One more thing that matters more than it sounds: these records live in your own WordPress database, on your own hosting. A treasurer who moves away cannot take the ledger with them.
Processor rates worth checking before you close the year
| Processor | Published US rate | Note |
|---|---|---|
| Stripe cards | 2.9% + $0.30 | +1.5% international, +1% currency conversion |
| Stripe ACH Direct Debit | 0.8%, capped at $5.00 | Large gifts cost far less than by card |
| Stripe disputes | $15.00 per dispute received | Charged either way |
| PayPal standard commercial | 3.49% + $0.49 | The default if you never apply for anything |
| PayPal "Receive Donations" | 2.89% + $0.49 | |
| PayPal Confirmed Charity | 1.99% + $0.49 domestic | +1.50% international; requires application and approval |
Rates verified against stripe.com/pricing and PayPal's published merchant fees in August 2026; confirm current rates before quoting them to a board. A nonprofit that never completes PayPal's Confirmed Charity application is paying 0.90 percentage points more than it needs to on every gift. Stripe does not publish a nonprofit rate, only eligibility criteria: registered nonprofit status with valid tax documentation, at least 80% of Stripe payment volume from tax-deductible donations, and an eligible region, with membership fees, tuition, ticket sales, registration fees and auction payments excluded from that 80%. Apply and ask; do not budget against a number you read on a blog. More detail in our Stripe vs PayPal comparison for nonprofits.
How should a volunteer treasurer reconcile online donations each month?
- Export the month from Donations → Export CSV. Save it in the same folder as your count sheets. This is your source document.
- Pull the payout list from the Stripe Dashboard (Balance → Payouts) and the PayPal activity report for the same period.
- Match each bank deposit line to exactly one payout ID. Every deposit gets an owner.
- For each payout, post the gifts gross, post the fee total to merchant fees, post the payout as the transfer that clears to checking.
- List refunds, returned ACH and disputes on a short exceptions memo. Do not net them into revenue.
- Confirm the clearing account is zero for closed batches. Anything left over is either in transit or a missing entry.
- File the CSV, the payout report and the bank statement together. Next year's treasurer, or your auditor, will need all three.
Ten to twenty minutes once you have the muscle memory, and it holds up under questions.
The low-effort version for boards
If your board mostly needs a number and a trend rather than a full reconciliation, turn on the monthly summary report email in Settings → Emails. It sends totals, counts and campaign progress on a schedule, so the treasurer's report writes itself and the full close stays a monthly task rather than a monthly emergency. Cash and check gifts entered through offline donation entry land in the same records and the same export, which keeps one ledger instead of two.
This article is general information for volunteer treasurers, not accounting, legal or tax advice. Confirm revenue recognition, fee-recovery treatment and Form 990 reporting with your organization's CPA.