What you can build
The CRM+ API supports the integration patterns most commonly required of partner systems:- Sync donations into Virtuous — push Gifts from your platform into a nonprofit’s Virtuous instance so the donor record of truth stays complete.
- Keep donor records current — create and update Contacts as donors register, update profiles, or change addresses in your system.
- Read Virtuous data for downstream systems — pull donor and giving data to power marketing automation, accounting reconciliation, or reporting and analytics.
- Build two-way syncs — combine reads, writes, and webhook subscriptions to keep your platform and Virtuous continuously consistent.
- React to Virtuous events — receive real-time webhook notifications when Contacts or Gifts are created or updated in Virtuous, and act on them in your system.
API at a glance
| Property | Value |
|---|---|
| Base URL | https://api.virtuoussoftware.com |
| Protocol | HTTPS only — plain HTTP requests fail |
| Authentication | API Key or OAuth 2.0 Bearer token in the Authorization header |
| Request format | application/json |
| Response format | application/json (including all error responses) |
| Rate limit | 5,000 requests per hour, per credential |
How the CRM+ data model works
A handful of resources do most of the work in a typical partner integration. Understanding how they relate is the difference between a clean integration and a duplicate-record cleanup project six months in.- Contact — the household or organization record. Contacts have one or more ContactIndividuals (the people inside the household) and one or more ContactAddresses.
- Gift — a single donation. Every Gift belongs to a Contact and is allocated to one or more Designations (the Project or Campaign the gift supports).
- Transaction endpoints — the recommended path for importing Gifts and Contacts from external systems. Transactions are placed into a holding state and processed in a nightly batch with intelligent contact-matching and deduplication. This is almost always safer than calling
POST /api/ContactorPOST /api/Giftdirectly.
Where to go next
Quickstart
Get an API key and make your first authenticated call in under five minutes.
Authentication
API Key versus OAuth, how to obtain credentials, and how to attach them to requests.
Make Your First API Call
A step-by-step walkthrough with curl and JavaScript for the first request you should send.
Virtuous CRM Data Model
The Contact, Gift, and Designation hierarchy every integration depends on.
Common Workflows
Sync external donations, query records, and reconcile failed syncs.
Integration Recipes
Worked examples for Stripe, Mailchimp, fundraising platforms, and more.