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!

💂‍♂️ New DonationGuard 🛡️ Automatically Protects Your Donations!

Worried about card testing attacks or spam bots flooding your donation forms, but don’t want to ruin the giving experience for your real supporters? Charitable’s DonationGuard features:

🛡️ Real-Time Bot Detection: Actively monitors every donation submission for five distinct attack signals without slowing down your human donors.

📊 Smart Traffic Scoring: Instantly evaluates activity against a learned baseline of your site’s normal donation rhythms to catch sneaky, slow-drip card testing.

🚨 Severity-Tiered Alerts: Immediately opens structured “Attack Records” and notifies you via email and admin alerts the moment a campaign starts taking fire.

🎯 Single-Click Defense: Deploy instant security using the “Recommended Settings” preset to turn on Honeypot, Time Trap, and Rate Limit modules all at once.

🚫 Automated Blocklists: Permanently stop repeat offenders by automatically blocking suspicious email addresses based on your customized rules.

Visit this page to learn more.

GiveWP Migrations New

🧤 White Glove Migration Service for GiveWP

Thinking about switching your fundraising platform from GiveWP to Charitable, but don’t want to risk losing your data or handle a complex technical setup yourself? Charitable’s White Glove Migration Service features:

👥 Flawless Donor Mapping: Safely transfer your entire supporter database with zero data loss.

📊 Complete Financial History: Meticulously preserve every historical transaction for continuous, accurate reporting.

🔄 Seamless Recurring Giving: Safely transfer active sustaining subscriptions without disrupting your incoming revenue or requiring your donors to update their information.

💳 Zero Gateway Disruptions: Keep using Stripe, PayPal, or any other GiveWP-compatible processor you already love.

🚀 Expert Technical Setup: Relax while our team handles the heavy lifting to install and configure your forms—plus, qualifying users get a full year of Charitable Pro completely free.

Visit this page to learn more.

automation Improvement

📢 New Feature Alert: Automation Connect 2.0 Is Here! 🚀

Thinking about connecting your fundraising data to tools like Mailchimp, Slack, or Google Sheets, but don’t want to hire a developer or write custom code? Charitalbe’s new automation addon has:

⚡ 17 Event Triggers: Instantly fire webhooks for a donor’s first gift, renewal payments, or reached campaign milestones.

🎯 Smart Conditional Logic: Use powerful AND/OR logic across 11 fields to only send data when it meets your exact criteria, like newsletter opt-ins.

📊 Custom Payload Control: Select from 80+ clean data fields across donor, donation, and campaign metadata so your apps get exactly what they need.

🚀 Pre-Built Platform Templates: Skip the setup from scratch with ready-to-go templates for Zapier, Make.com, n8n, HubSpot, and Slack.

🛡️ Reliable Developer Tools: Power your workflows with signed HMAC-SHA256 payloads, complete WordPress filters, and automatic retry logs.

automation Improvement

🔌 Charitable Meets Zapier: Connect to 7,000+ Apps and Automate Your Fundraising

Tired of manually copying donation data into accounting sheets or tracking down new donor signups? Put your administrative tasks on autopilot. Charitable is now officially on Zapier, giving you a powerful, no-code way to plug your fundraising directly into the rest of your favorite tools.

Every donation, donor signup, and campaign milestone can now trigger an automated workflow seamlessly.

What’s New:

♾️ Connect to 7,000+ Apps: Bridge your Charitable campaigns with everyday software like Google Sheets, QuickBooks, Slack, Mailchimp, HubSpot, Notion, Airtable, and thousands more.

⚡ 12 Powerful Triggers: Build deep workflows using smart automation triggers covering the entire donation lifecycle—including New Donation, New Donor, Subscription Cancelled, and Campaign Goal Reached.

📋 Pre-Built Action Templates: Get started in three minutes or less with our pre-made template combinations, like automatically logging new donations straight into a Google Sheet or firing custom donor welcome emails through Gmail.

🚫 Zero Code Needed: No complex webhooks or custom PHP scripts required. Just pick your trigger, choose your app, map your fields, and let Zapier handle the heavy lifting.

Ready to save hours of admin time? Grab Charitable Pro with the Automation Connect addon today and launch your first Zap!

Improvement Payments

🚀 Introducing PayPal Commerce: One Connection, Six Ways to Donate

Donors expect modern, flexible payment options when they support a cause. If they don’t see their preferred method on your donation form, they often disappear without a word. With PayPal Commerce, we are bringing a completely modernized checkout experience right to your campaigns.

Enjoy a single integration that upgrades your forms, makes giving seamless, and helps you capture every single donation.

What’s New:

🔌 One-Click Connection: Skip messy API keys and developer docs. Simply click “Connect with PayPal,” sign in to your business account, and your modern form is live in under five minutes.

💳 Six Ways to Give: Give your supporters instant access to PayPal balance, Venmo (US), Pay Later financing, major credit/debit cards, Apple Pay (Safari), and Google Pay (Chrome) all from the exact same form.

🔄 Flexible Recurring Giving: Fully supports monthly giving. Choose between the PayPal Subscriptions API (handled automatically on PayPal’s end) or Vault + Cron (handled securely right on your site).

💬 Friendly Error Recovery: No more confusing browser alerts. If a payment is declined, donors see plain-language, inline messages that guide them on how to fix the issue and complete their gift.

Ready for PayPal, modernized? Update to Charitable Pro 1.8.15+ (or Charitable Lite 1.8.11+) and connect your account today!