How Donation Fees Appear in Salesforce NPSP
Last updated: February 24, 2026
When WeGive syncs a donation to Salesforce NPSP, fee-related data is spread across three objects: the Opportunity, the Payment, and GAU Allocations. How fees appear on each object — and whether the donor covered fees or not — is important to understand, especially if you generate tax receipts or financial reports from Salesforce.
At a Glance
Here's a $100 donation with $3.50 in processing fees, shown both ways:
Donor Covers Fees (Donor is charged $103.50)
Object | Field | Value |
Opportunity |
| $100.00 |
Payment |
| $100.00 |
Payment |
| $3.50 |
Payment |
| $3.50 |
GAU Allocation |
| $100.00 (or split across funds) |
Donor Does NOT Cover Fees (Donor is charged $100.00)
Object | Field | Value |
Opportunity |
| $100.00 |
Payment |
| $100.00 |
Payment |
| $0.00 |
Payment |
| $3.50 |
GAU Allocation |
| $100.00 (or split across funds) |
Key takeaway: The Opportunity, Payment Amount, and GAU Allocations are the same in both scenarios. The only difference is the Donor_Cover_Amount__c field on the Payment.
Opportunity
The Opportunity Amount always reflects the base donation amount — what the donor intended to give to the organization. It does not include any fee amounts, regardless of whether the donor covered fees or not.
There are no fee-related fields on the Opportunity by default. The Opportunity does not indicate whether fees were covered, how much the fees were, or what the donor was actually charged.
What this means: If you're looking at an Opportunity in Salesforce, you're seeing the donation amount — not the total charge to the donor's payment method. A $100 Opportunity could represent a $100 charge (fees not covered) or a $103.50 charge (fees covered), and you can't tell the difference from the Opportunity alone.
Payment
The Payment record is where all fee data lives. WeGive creates a Payment under each Opportunity with the following fee-related fields:
Field | What It Contains |
| Base donation amount (same as Opportunity Amount) |
| Dollar amount the donor paid to cover fees. $0.00 if fees were not covered. |
| Total processing fees on the transaction — present regardless of who covered them. |
How to determine fee coverage from Salesforce data
There is no boolean "fee covered" field. To determine whether a donor covered fees, check if npsp__Donor_Cover_Amount__c is greater than zero.
Calculating key amounts from Payment fields
You Want To Know | Formula |
What the donor was actually charged |
|
What the organization nets after fees (when not covered) |
|
The tax-deductible amount |
|
GAU Allocations
GAU Allocations represent how a donation is split across funds (General Accounting Units). Each allocation contains:
Field | What It Contains |
| The dollar amount designated to that fund |
| Reference to the fund/GAU |
| Reference to the parent Opportunity |
GAU Allocations have no fee fields. They reflect only the designated fund amounts from the base donation.
Example: $100 donation split across two funds, donor covers $3.50 fee
Record | Amount |
GAU Allocation → General Fund | $60.00 |
GAU Allocation → Building Fund | $40.00 |
Total across allocations | $100.00 |
Payment → Donor Cover Amount | $3.50 |
The covered fee ($3.50) does not appear on any allocation. It exists only on the Payment record.
Example: Same donation, donor does NOT cover fees
Record | Amount |
GAU Allocation → General Fund | $60.00 |
GAU Allocation → Building Fund | $40.00 |
Total across allocations | $100.00 |
Payment → Donor Cover Amount | $0.00 |
Payment → Total Transaction Fees | $3.50 |
The allocations are identical. The $3.50 fee is absorbed by the organization and visible only on the Payment.
Tax Receipts
If you use WeGive's built-in receipts, the correct tax-deductible amount is calculated automatically — no action needed.
If you generate tax receipts from Salesforce data, you need to account for covered fees. The entire amount the donor paid — including the covered fee — is tax-deductible.
Recommended: Create a Formula Field
Create a formula field on the Payment object to calculate the correct receipt amount:
Field Label: Tax Deductible Amount
Type: Currency
Formula:
npe01__Payment_Amount__c + npsp__Donor_Cover_Amount__c
Use this field in your receipt templates instead of the Payment Amount alone. The formula works correctly for both scenarios — when fees are covered ($100 + $3.50 = $103.50) and when they're not ($100 + $0 = $100).
Legacy Integrations
If your WeGive Salesforce integration is configured as a legacy integration, the following fields are not synced to the Payment record:
npsp__Donor_Cover_Amount__cnpsp__Total_Transaction_Fees__cnpsp__Gateway_Payment_ID__cnpsp__Batch_Number__c
This means legacy integrations have no fee visibility in Salesforce. If you need fee data and are on a legacy integration, contact WeGive support to discuss upgrading.
Custom Field Mapping
If the default fields don't meet your needs, you can map additional fee data to custom Salesforce fields using WeGive's Mapping Rules.
Available fee fields for mapping:
WeGive Field | Description |
| Processing fee amount (dollars) |
| Amount donor covered for fees (dollars) — $0 if not covered |
| Actual fees paid (cents) |
| Actual fees paid (dollars) |
To configure: Go to Salesforce Integration settings → Mapping Rules and add a rule mapping the WeGive field to your custom Salesforce field.
Summary
Question | Answer |
Does the Opportunity show covered fees? | No — base donation only, no fee fields |
Does the Payment show covered fees? | Yes — |
Do GAU Allocations include fees? | No — fund amounts only, no fee fields |
Is there a "fee covered" yes/no field? | No — check if |
Are Opportunity amounts different when fees are covered? | No — same either way |
What should a tax receipt show? |
|
Do legacy integrations sync fee data? | No — fee fields are excluded |