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

Amount

$100.00

Payment

npe01__Payment_Amount__c

$100.00

Payment

npsp__Donor_Cover_Amount__c

$3.50

Payment

npsp__Total_Transaction_Fees__c

$3.50

GAU Allocation

npsp__Amount__c

$100.00 (or split across funds)

Donor Does NOT Cover Fees (Donor is charged $100.00)

Object

Field

Value

Opportunity

Amount

$100.00

Payment

npe01__Payment_Amount__c

$100.00

Payment

npsp__Donor_Cover_Amount__c

$0.00

Payment

npsp__Total_Transaction_Fees__c

$3.50

GAU Allocation

npsp__Amount__c

$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

npe01__Payment_Amount__c

Base donation amount (same as Opportunity Amount)

npsp__Donor_Cover_Amount__c

Dollar amount the donor paid to cover fees. $0.00 if fees were not covered.

npsp__Total_Transaction_Fees__c

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

npe01__Payment_Amount__c + npsp__Donor_Cover_Amount__c

What the organization nets after fees (when not covered)

npe01__Payment_Amount__c - npsp__Total_Transaction_Fees__c

The tax-deductible amount

npe01__Payment_Amount__c + npsp__Donor_Cover_Amount__c


GAU Allocations

GAU Allocations represent how a donation is split across funds (General Accounting Units). Each allocation contains:

Field

What It Contains

npsp__Amount__c

The dollar amount designated to that fund

npsp__General_Accounting_Unit__c

Reference to the fund/GAU

npsp__Opportunity__c

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__c

  • npsp__Total_Transaction_Fees__c

  • npsp__Gateway_Payment_ID__c

  • npsp__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

fee_amount

Processing fee amount (dollars)

fee_covered_amount

Amount donor covered for fees (dollars) — $0 if not covered

calculated_fees_paid

Actual fees paid (cents)

calculated_fees_paid_dollars

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 — npsp__Donor_Cover_Amount__c

Do GAU Allocations include fees?

No — fund amounts only, no fee fields

Is there a "fee covered" yes/no field?

No — check if Donor_Cover_Amount__c > 0

Are Opportunity amounts different when fees are covered?

No — same either way

What should a tax receipt show?

Payment_Amount__c + Donor_Cover_Amount__c

Do legacy integrations sync fee data?

No — fee fields are excluded