Routing Covered Processing Fees to a Fund
When a donor covers the processing fee on a gift, an org can choose where
that covered-fee amount is tracked. This is a fee-configuration setting on
the org’s donor portal profile, available under Profile Settings >
Fees — it applies to every gift the fee-cover option touches, not just
gifts split across multiple designations.
The two fee-routing modes
An org’s donor portal profile has two mutually-exclusive settings that
determine where a covered fee lands:
- Dedicated fee fund. The org designates a specific fund (GAU) to
receive all covered-fee amounts. Every gift’s covered fee is allocated
to that one fund as its own line, separate from the donor’s chosen
designation(s). This is the setting to use when a customer asks “can I
route the covered fee to a specific fund/GAU.”
- Split fees among allocations. Instead of a dedicated fund, the fee
is divided proportionally across the gift’s own designation(s) and
folded into each allocation’s amount — no separate fee line appears.
These are configured per-org on the donor portal profile (dashboard:
Profile Settings > Fees; underlying fields fund_for_fees_id and
split_fees_among_allocations on the donor_portals table).
How it’s enforced
- The dedicated-fee-fund mode is the default fee-allocation path: when a
transaction creates its fee allocation, it points the allocation’s
fund_id at the donor portal’s configured fund_for_fees_id unless
the org has split-fees-among-allocations turned on instead.
- This routing is independent of whether the gift itself is a single-
designation or multi-designation split gift — the fee-fund setting
governs covered-fee handling on ANY gift with fee coverage enabled,
not only split gifts.
- CRM sync respects the same setting: for example, the Virtuous
scheduled-donation designation builder resolves the org’s dedicated fee
fund and pushes the covered fee to it as its own designation line,
falling back to proportional splitting only if the dedicated fund is
unset, unsynced, or split-fees-among-allocations is otherwise required
to keep the sync total balanced.
Where multi-designation giving intersects with this
If an org also has multi-designation giving enabled, both fee-routing
modes still apply exactly as described above — the presence of multiple
donor-selected designations doesn’t change which fund a covered fee
lands in. See the multi-designation allocation article’s “How processing
fees appear” section for how a dedicated fee fund shows up as an extra
allocation row on a split gift specifically.
Sources
app/Models/Transaction.php — fee allocation defaults to
donorPortal->fund_for_fees_id when creating the fee allocation.
app/Models/DonorPortal.php — fund_for_fees_id column, fundForFees
relation.
app/Models/Organization.php — fee-allocation-capability check reads
split_fees_among_allocations and fund_for_fees_id.
app/Integrations/Virtuous.php — buildScheduledDonationDesignations()
resolves the dedicated fee fund and pushes it as its own designation
line, with fallback to splitting.
app/Actions/ScheduledDonations.php — recurring-plan designation
rebuild accounts for a dedicated fee fund’s recorded fee amount.
wegive-dashboard-v2/src/components/views/PortalProfilesSettings.vue
and portal-profiles-settings.types.ts — dashboard fields for
fund_for_fees_id and split_fees_among_allocations under the org’s
profile settings.
Last modified on September 15, 2026