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

👤 Creator Profiles: Put a Face to Every Peer-to-Peer Campaign

Ambassadors 3.3.0 now provies Creator Profiles — giving your supporters a permanent, shareable public home that turns one-time fundraisers into ongoing relationships.

👤 Public Creator Pages: Give every fundraiser an instant, clean landing page at /creator/their-name/ to showcase their custom avatar, bio, and a browsable grid of their campaigns.

📊 Proof of Impact: Boost donor trust by displaying site-wide milestones on the profile—like total funds raised and total donor counts.

💳 Interactive Hover Cards: When donors hover over a creator’s name on a campaign page, a compact card expands with their bio and social handles right at the moment of decision.

📍 Responsible Location Sharing: Allow creators to safely show local supporters where they are based using only city, state, and country details.

🛠️ Self-Serve Customization: Fundraisers can update their own profiles and link up to six social networks directly from the My Campaigns hub, saving you admin time.

Ready to empower your advocates? Update to Ambassadors 3.3.0 and turn on “Enable Public Creator Page” today!

Improvement Payments

📱 Turn Mobile Scrollers Into Donors: Meet Charitable’s Mollie Upgrade

Losing mobile supporters because they hate typing out long card numbers on their phones? Charitable’s updated Mollie integration features:

⚡ One-Tap Wallet Checkout: Enable donors to complete their gifts instantly using Apple Pay or Google Pay with a simple face scan, fingerprint, or tap.

💰 No Extra PCI Burden: Skip complex domain verification and security compliance since all wallet transactions run safely through Mollie’s hosted checkout.

🛠️ Custom Cancel Routing: Keep the experience predictable by automatically sending donors who back out to your cancellation page, or use developer filters to route them to a custom page.

Visit this page to learn more.

ambassadors improved New

Moderation and Directory Screens In Ambassadors 3.0

Ambassadors 3.0 has new features: moderation and directory screens… now easily see those who are earning donations on your peer to peer network – including campaign creators that might need to be verified – all in one place. Generate reports, email ambassadors and campaign creators directly and more.

🚀 See when campaign creators and ambassadors have updated their campaigns, what donors/donation they have brought in and more.

🎉 Manually add ambassadors and campaign creators, and approve them in one-click!

Visit this page to learn more.

New Payments

⚡ Unlock India-Based Donations: Meet Charitable’s Native Razorpay Integration

Trying to collect donations in India? Charitable’s native Razorpay integration features:

⚡ Instant UPI Integration: Accept fast, local donations directly inside your form via apps like PhonePe, Google Pay, Paytm, and BHIM without sending donors away from your site.

📲 Auto-Generated Campaign QRs: Instantly render scannable QR codes encoding a UPI deep link directly on your public campaign pages and sidebars for an effortless “scan-to-give” experience.

💰 Dual Local & Global Reach: Headline your campaigns in INR while seamlessly accepting major international currencies like USD, EUR, GBP, and CAD to maximize global support.

🔁 Seamless Recurring Giving: Fully integrates with the Charitable Recurring addon to manage automatic monthly subscriptions directly through Razorpay without extra code.

↩️ Automatic Two-Way Sync: Keep your books perfectly clean with two-way refund syncing—issue a refund inside WordPress or your Razorpay dashboard and both sides update automatically.

🔒 Webhook-Verified Security: Automatically protect your donation records using HMAC-signed webhook verification to ensure every status update represents real money cleared on the rails.

Visit this page to learn more.

Integration New

🎉 New Built-in PushEngage Integration

Struggling with falling email open rates and rising ad costs just to keep your supporters engaged? Charitable’s built-in PushEngage integration features:

🔔 Zero-Fee Direct Messaging: Deliver crisp, instant pop-up notifications straight to your donors’ desktops and mobile devices.

⏱️ Four Smart Automated Triggers: Automatically send updates for immediate donation thank yous, full-list campaign launches, urgent “ending soon” alerts, and goal milestone celebrations.

📈 Group Momentum Broadcasts: Turn private milestones into public wins by automatically broadcasting alerts to your entire subscriber list the moment a campaign hits 50%, 75%, or 100% of its goal.

📊 Automatic Analytics Tracking: Monitor exactly where your incoming notification traffic is coming from with built-in attribution that requires zero complex configuration.

Visit this page to learn more.