Charitable Documentation

Learn how to make the most of Charitable with clear, step-by-step instructions.

Gateway Processing Fee Tracking

Charitable Pro 1.8.13+ can record the actual processing fee charged by your payment gateway against each donation. When enabled, the fee appears on the individual donation admin page and is included in CSV donation exports.

Supported gateways: Stripe, PayPal (Standard / IPN)


Table of Contents


Requirements

  • Charitable Pro: Version 1.8.13 or higher
  • Gateway: Stripe or PayPal (Standard). Other gateways are not supported.

How It Works

Fee tracking is passive – it captures the fee reported by the gateway at the moment payment is confirmed, with no extra API calls.

Stripe: The processing fee is read from the balance_transaction.fee field on the Stripe charge object when the Stripe webhook processes the payment confirmation. The fee is converted from the gateway’s smallest currency unit (cents) to a decimal amount before being stored.

PayPal: The processing fee is read from the mc_fee field in the PayPal IPN notification payload. It is stored as-is since PayPal already sends it as a decimal amount.

In both cases the fee is stored once and never overwritten. If PayPal retries an IPN or Stripe fires a duplicate webhook event, the original value is preserved (idempotency).


Enabling Fee Tracking

Fee tracking is disabled by default. To enable it, add the following snippet to your theme’s functions.php or a site-specific plugin:

add_filter( 'charitable_show_gateway_processing_fee', '__return_true' );

No other configuration is needed. Once enabled, the fee will be recorded for all new Stripe and PayPal donations going forward. Existing donations are not retroactively updated.


Disabling Fee Tracking

Remove the snippet above, or explicitly return false:

add_filter( 'charitable_show_gateway_processing_fee', '__return_false' );

Disabling tracking stops new fees from being recorded. It does not delete fee data already stored against existing donations.


Where the Fee Appears

When fee tracking is enabled, a Gateway Processing Fee row appears in the donation meta section of the individual donation admin page (Donations – click any donation to view it). The value is formatted as a currency amount using the donation’s currency.

The row is hidden automatically for any gateway other than Stripe or PayPal, even if the filter is enabled.


CSV Export

When fee tracking is enabled, a Gateway Processing Fee column is included in donation CSV exports. The value is formatted as a currency amount. This column does not appear in exports when the filter is disabled.


Net Amount

A helper function is available to calculate the net amount received after fees:

Net = Donation Total - Gateway Processing Fee - Stripe Connect Application Fee (if applicable)

The Stripe Connect application fee (stored separately as _stripe_application_fee_amount) is only present on sites using Stripe Connect. For standard Stripe and PayPal donations it is zero.

To retrieve the net amount in code:

$net = charitable_gateway_fees_get_net_amount( $donation );
// Returns a formatted currency string, or false if no fee data is stored.

Notes and Limitations

  • Fee data is only recorded going forward from when the filter is enabled. There is no tool to backfill fees for older donations.
  • PayPal fee capture requires IPN to be working correctly. If IPN is not configured or is failing, no fee will be recorded.
  • Stripe fee capture requires the Stripe webhook to be active and delivering charge.succeeded or payment_intent.succeeded events with balance_transaction expanded.
  • The fee field is only shown in the donation admin meta and CSV export for Stripe and PayPal donations, even if fee data somehow exists on a donation from another gateway.
  • For Stripe Connect accounts, the platform application fee (_stripe_application_fee_amount) is stored separately and is subtracted in addition to the processing fee when calculating net amounts.

Developer Reference

Filter

charitable_show_gateway_processing_fee – Controls whether gateway fee tracking is active. Return true to enable, false to disable (default).

// Enable fee tracking site-wide.
add_filter( 'charitable_show_gateway_processing_fee', '__return_true' );

Meta keys

Meta keyDescription
_gateway_processing_feeThe gateway processing fee amount as a decimal float (for example, 0.59). Stored on the donation post.
_stripe_application_fee_amountStripe Connect platform application fee. Only present on Stripe Connect donations.

Hooks

charitable_paypal_web_accept – Action that fires when a PayPal IPN web_accept notification is received. The gateway fees module hooks into this at priority 10 to capture mc_fee.

do_action( 'charitable_paypal_web_accept', $data, $donation_id );

charitable_default_donation_fields – Filter used to register the gateway_processing_fee field in the Charitable field system. Only registered when charitable_show_gateway_processing_fee returns true.

charitable_donation_admin_meta – Filter used to hide the fee row from the donation admin meta for unsupported gateways.

charitable_export_donations_format_money_fields – Filter used to include gateway_processing_fee as a money-formatted column in CSV exports when tracking is enabled.

Still have questions? We’re here to help!

Last Modified:

What's New In Charitable

View The Latest Updates
🔔 Subscribe to get our latest updates
📧 Subscribe to Emails

Email Subscription

Join our Newsletter

We won’t spam you. We only send an email when we think it will genuinely help you. Unsubscribe at any time!

ambassadors New

🖨️ Introducing Fliers and Posters: Raise Money Away From the Screen!

A lot of peer-to-peer fundraising happens away from a screen: at the finish line of a 5K, on a school noticeboard, in an office kitchen. Charitable Ambassadors 3.4.7 adds 2 printables, a fundraiser flier carrying each fundraiser’s own story and QR code, and a recruitment poster that signs new fundraisers up. Both open as a normal web page and print straight from the browser. Why this is important:

  • 🏁 A flier for every fundraiser: Each one carries that fundraiser’s own photo, story and goal, with a QR code that opens their page rather than your main campaign.
  • 📌 A poster that recruits: It shows “Now Recruiting” above your campaign name with a large QR code that opens your sign-up form, so someone can start fundraising without waiting on a link from you.
  • 🪄 No design tool needed: Both printables render as a normal web page and print from the browser, with no PDF plugin and no designer.
  • 📄 2 flier layouts: Hand out carries the full story for giving to friends and family, and Post up carries a short hook with 5 tear-off tabs for a noticeboard.
  • 🛡️ Off until you switch it on: Fliers stay off after the update until you enable them under Charitable » Ambassadors » Other » Fliers, and only the owner or an administrator can open one.

Check out our announcement here.

Improvement Payments

💸 Introducing Tiered Rates for Fee Relief: Match the Ask to the Gift!

Fee Relief asks your donors one short question at checkout: would you like to cover the processing fee on this gift? Until now that question used a single rate for every donation on a gateway, so a $10 gift and a $500 gift were asked for the same percentage. Fee Relief 1.3.0 lets you set as many donation bands as you like, each carrying its own rate. Why this is important:

  • 🪙 Gentler on small gifts: A fixed transaction cost is a far bigger share of a $10 donation than a $500 one, so bands let you ask for less at the bottom.
  • 🎚️ As many bands as you need: Each band carries its own percentage and its own fixed amount, and the top band runs on with no upper limit.
  • 🛑 An optional ceiling: A Maximum fee field stops any donor being asked for more than a number you choose, however large the gift.
  • 🔌 Set per payment gateway: Stripe can run on four bands while Windcave and Payfast stay on a single rate, because bands belong to a gateway and not to your whole site.
  • 🛡️ Nothing changes until you say so: Your current rates stay exactly as they are until you switch Use Tiered Rates on under Charitable » Settings » Advanced » Fee Relief.

Check out our announcement here.

Donations Improvement

📊 Your Pro Dashboard Can Now Compare, Export, and Score!

Most fundraising dashboards only tell you how much you have raised. Charitable Pro 1.8.19 rebuilds the dashboard and the Reports Overview around the harder questions: whether anything is broken, whether this period beat the last one, and which single change would make the most difference today. Why this is important:

  • 📈 Every figure has a trend: Pick a period and the tiles and the chart move together, with each total shown against the previous period.
  • 🗓️ Charts that stay readable: Short ranges group donations day by day, while longer ranges group by week or month, so a full year reads as a curve instead of a flat line.
  • 🔀 Compare any 2 periods: Not just consecutive ones, so you can ask how this December did against last December. That matters because fundraising is seasonal.
  • 📤 Export the whole summary: Send the full overview out as CSV or PDF, ready for a board pack or a funder report.
  • 🎯 Score your setup for free: Have your fundraising setup scored, so the one change worth making next is the one you can see.

Check out our announcement here.

Feature New

🎟️ Introducing Charitable Events: Sell Tickets Inside Your Campaigns!

Most nonprofits sell event tickets in one tool and collect donations in another, which leaves two sets of reports and a manual match at the end of the year. Charitable Events brings both together, selling tickets through the same donation forms and payment gateways you already run in Charitable. Why this is important:

  • 🎟️ Every ticket is a donation: Ticket sales run through the gateway you already use and count toward the campaign goal, with everything managed under Charitable » Events.
  • 📱 QR check-in from any phone: Each attendee gets their own QR code on the receipt, and volunteers scan at the door through a check-in link that needs no WordPress account.
  • 🧾 Receipts ready for tax time: Give each ticket type a fair market value, and Charitable puts the correct tax-deductible amount on every donor receipt.
  • 📋 Attendee details at checkout: Ask every guest for a meal choice, shirt size, or access needs, with a separate attendee record created for each ticket.
  • 🗓️ Blocks and calendars included: Three editor blocks plus Sugar Calendar and The Events Calendar support put your events where supporters already look.

Check out our announcement here.

ai New

🚀 Unleash AI Power in Charitable!

Your AI assistant can now build, edit, and manage your Charitable fundraising campaigns directly — just by asking. With Charitable Pro adding write support for the WordPress Abilities API, tools like ChatGPT, Claude, and Cursor can handle full administrative actions safely through MCP. Why this is important:

  • 🤖 Campaign creation in plain language: Prompt your assistant with a goal like “Set up a fundraiser for the shelter with a $5,000 goal”, and it builds a real draft campaign complete with suggested donation tiers.
  • 🎨 Instant donation form tweaks: Add custom fields, change button colors, or reorder elements without diving into form settings.
  • 📝 Offline gift logging: Tell your assistant about cash or check gifts, and it will match donor emails and record transactions into your history.
  • 🛡️ Safety and control by default: Write access stays strictly off until turned on in Charitable » Tools » AI MCP, keeping read-only reporting safe by default.
  • 📜 Full audit logging: Every change made by an AI assistant is tracked under Charitable » Tools » Logs, so you always know who (or what) updated your site.

Check out our announcement here.