Skip to main content

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