Setting Up a Donation Connection
Connect Stripe, PayPal, Givebutter, or Donorbox so every online gift records itself — fees and all — within seconds.
A donation connection lets NP Ledger automatically record donations as they come in from platforms like Stripe, PayPal, Givebutter, or Donorbox. Instead of entering each donation by hand, your books update within seconds of each gift.
If your nonprofit receives online donations, manually entering each one takes time and risks mistakes. A donation connection records each donation automatically, tracks processing fees (the percentage each platform charges to process a donation, typically 2-3%), and holds the money in a transit account until the payout arrives in your bank -- giving you accurate, real-time books.
- A bank account in NP Ledger that matches where your donation platform sends payouts
- A revenue account for donation income (usually "Donation Revenue" -- created by default)
- An active account on the donation platform you want to connect (Stripe, PayPal, Givebutter, or Donorbox)
- Admin access to the donation platform's settings (you'll need to add a URL)
Step 1: Configure NP Ledger settings
- Go to Organization > Donation Connections. You can find this under the Organization Admin section on your Organization page, or navigate to Settings > Organization > Donation Connections.
- Enable automatic donation sync using the toggle at the top. When enabled, donations from your connected platforms will automatically appear as transactions in NP Ledger.
- Select a Deposit Account -- this is the bank account where your donation platform sends payouts (e.g., your main checking account).
- Select a Revenue Account -- this is the category NP Ledger uses to classify donation income (usually "Donation Revenue").
- Click Save Changes.
Tip: NP Ledger automatically creates a "Donations in Transit" account when you enable a donation connection. This tracks money between when a donor gives and when the payout (the deposit your donation platform sends to your bank, usually batching multiple donations together) arrives in your bank. You don't need to set this up yourself.
Step 2: Connect your platform
Each platform has its own section on the Donation Connections page. Find yours below and follow the instructions.
Stripe
- Copy the NP Ledger Connection URL shown in the Stripe section of the Donation Connections page.
- Log into your Stripe Dashboard and go to Developers > Webhooks.
- Click "Add endpoint" and paste the NP Ledger URL.
- Select these events:
checkout.session.completed,charge.refunded,charge.dispute.funds_withdrawn. - Copy the Signing Secret from Stripe and paste it into the Security Key field in NP Ledger.
- (Optional) Add a Restricted API Key to capture processing fees. By default, Stripe donations record the gross amount, but the per-donation Stripe processing fee shows as "—". To record the exact fee on each donation, create a Restricted Key in your Stripe Dashboard (Developers > API keys > Create restricted key) with Charges: Read and Balance transactions: Read permissions, then paste it into the Restricted API Key field in NP Ledger. This is recommended but optional -- donations record correctly either way.
- Click Save Changes in NP Ledger.
Note: The Restricted API Key only reads charge and fee data -- it cannot move money or change anything in your Stripe account. If you skip it, or if the key's permissions are wrong, donations still record at their gross amount and the fee simply shows as "—". Existing donations recorded before you add the key keep showing "—"; only donations received afterward capture the fee.
PayPal
- Copy the NP Ledger Connection URL from the PayPal section.
- Log into the PayPal Developer Dashboard and go to My Apps & Credentials.
- Create or select an app, then go to Webhooks.
- Add the NP Ledger URL and select these events: Payment capture completed, Payment capture refunded, Payment capture reversed.
- Copy your Webhook ID, Client ID, and Client Secret from PayPal.
- Paste all three values into the corresponding fields in NP Ledger.
- Click Save Changes in NP Ledger.
Note: PayPal requires API credentials (Client ID + Secret) in addition to the Webhook ID for signature verification.
Givebutter
- Copy the NP Ledger Connection URL from the Givebutter section.
- Log into Givebutter and go to Settings > Integrations > Webhooks.
- Add the NP Ledger URL and select events:
transaction.succeeded,refund.created. - Copy the Signature key from Givebutter and paste it into the Security Key field in NP Ledger.
- Click Save Changes in NP Ledger.
Donorbox
- Copy the NP Ledger Connection URL from the Donorbox section.
- Log into Donorbox and go to Integrations > Webhooks.
- Add the NP Ledger URL and select events:
donation.created,donation.refunded. - Copy the HMAC secret from Donorbox and paste it into the Security Key field in NP Ledger.
- Click Save Changes in NP Ledger.
Important: Donorbox webhooks require an API/Zapier addon ($17/month) or a Premium plan. Check your Donorbox plan before starting.
Step 3: Test the connection
- Back in NP Ledger, click the Check Configuration button next to your connected platform.
- A green "Connected" badge appears if everything is set up correctly.
- Make a small test donation through your platform to verify that it appears in NP Ledger within a few seconds.
Step 4: Set payout reminders (optional)
- Scroll to the Payout Reminders section on the Donation Connections page.
- Choose your preferred alert timing: Relaxed, Standard, or Tight. This controls how quickly NP Ledger reminds you about pending payouts that haven't been matched to a bank deposit yet.
- A green "Connected" badge appears next to the platform name after clicking Check Configuration
- Your test donation appears in the Recent Activity section at the bottom of the page
- The transaction appears in Recent Transactions on the dashboard
- A Supporter record is created (or updated) with the donor's name, email, and — for Stripe, Givebutter, and Donorbox — phone and mailing address. See How Automatic Donation Recording Works for what's populated per platform.
- Forgetting to select a deposit account or revenue account -- Without these, donations will be received but can't be recorded. They'll show as "Failed" in Recent Activity.
- Copying the wrong security key -- Each platform has a specific signing secret or key. Make sure you copy the webhook-specific secret, not your general API key.
- Selecting the wrong events in your platform -- Only enable the specific events listed above. Enabling extra events won't cause errors, but they'll be ignored.
- Not clicking Check Configuration -- Always test after setup. A missing or incorrect security key will silently fail on real donations.
Accountant note: Donation connections use a clearing account model. Incoming donations debit "Donations in Transit" (an asset) and credit revenue. When the payout settles to your bank, a settlement entry moves the net amount to your bank account and records the processing fee as an expense. This matches the ASC 606 timing of revenue recognition while tracking the payment processor's settlement cycle.
Ready to try NP Ledger?
Native fund accounting, Form 990 support, and smarter bookkeeping for nonprofits.