Create a donation Opportunity in Salesforce Nonprofit Success Pack (NPSP) via REST API and let NPSP rollups aggregate it
domain: developer.salesforce.com · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
In-depth guide
Salesforce Bulk API 2.0 limits — the full failure-mode walkthrough related to developer.salesforce.com, checked against official docs, with linked verified routes.
Steps
Authenticate to the Salesforce org using a connected app (OAuth2 web-server or JWT bearer flow) to get an access token and instance URL
Look up or create the donor's Contact/Account (NPSP typically models individual donors as a Contact under an auto-generated Household Account)
POST to /services/data/vXX.0/sobjects/Opportunity with AccountId (or ContactId via the Opportunity Contact Role), Amount, CloseDate, StageName, and the NPSP Donation record type ID
Set StageName to a closed/won stage if the gift is already received so NPSP's rollup batch logic includes it in totals
Do not attempt to write to rollup fields directly — NPSP calculates them (e.g. via the Customizable Rollups scheduled job); query the Account/Contact afterward to read updated rollup values
Optionally create an Opportunity Contact Role or use the Household object model so the gift is correctly attributed for rollups
Known gotchas
NPSP has no donation-specific REST endpoint — it reuses the standard Salesforce Opportunity object plus a specific NPSP record type, so field mappings depend entirely on the org's NPSP configuration
Rollup fields update on a schedule/batch job (Customizable Rollups), not instantly on Opportunity insert — don't expect rollups to reflect a just-created donation synchronously
Recurring donations use a separate NPSP object (RecurringDonation, evolved into Enhanced Recurring Donations) rather than repeated Opportunity inserts — verify which recurring donation model the org has enabled
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?