PHPackages                             luketowers/php-donorperfect-api - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. luketowers/php-donorperfect-api

ActiveLibrary[API Development](/categories/api)

luketowers/php-donorperfect-api
===============================

PHP wrapper for the DonorPerfect API

v1.0.0(2y ago)44064MITPHPPHP &gt;=7.2

Since Apr 5Pushed 2y ago1 watchersCompare

[ Source](https://github.com/LukeTowers/php-donorperfect-api)[ Packagist](https://packagist.org/packages/luketowers/php-donorperfect-api)[ Docs](https://github.com/luketowers/php-donorperfect-api)[ RSS](/packages/luketowers-php-donorperfect-api/feed)WikiDiscussions develop Synced 5d ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (0)

About
=====

[](#about)

A simple PHP wrapper around the [DonorPerfect API](https://uploads.softerware.com/doclib/DP/Manuals/DPO_SUP_Manual_XML_API_Documentation.pdf). Currently targets DonorPerfect Online Version 2020.12. See  for the online API documentation.

Installation
------------

[](#installation)

Install via [Composer](https://getcomposer.org/) by running `composer require luketowers/php-donorperfect-api` in your project directory.

Usage
-----

[](#usage)

In order to use this wrapper library you will need to provide credentials to access DonorPerfect's API.

You will either need a user login and password for the account you are trying to access or an API key issued by emailing DonorPerfect support.

Examples
--------

[](#examples)

### Initialize API:

[](#initialize-api)

```
use LukeTowers\DonorPerfectPHP\DonorPerfect;

// Initialize the client with an API key and app name (max 20 characters)
$api = new DonorPerfect('my_api_key_here', 'NameOfMyApp');

// Initialize the client with a user login and password and app name (max 20 characters)
$api = new DonorPerfect(['login' => 'MyUsername', 'pass' => 'MyPassword'], 'NameOfMyApp');
```

### Call one of the predefined DP actions

[](#call-one-of-the-predefined-dp-actions)

```
// Call one of the predefined DP actions
$result = $api->dp_donorsearch(['donor_id' => 1]);

// Call a predefined DP action not yet implemented in this library
$result = $api->call('dp_actionname', DonorPerfect::prepareParams(['donor_id' => 1], $arrayOfParamConfigsExpected));
```

### Run a custom MS SQL statement through the API

[](#run-a-custom-ms-sql-statement-through-the-api)

```
$pageStart = 1;
$pageEnd = 500;

// Run a custom MS SQL statement through the API
$result = $api->callSql("
    SELECT
        *
    FROM (
        SELECT
            ROW_NUMBER() OVER(ORDER BY dp.donor_id ASC) AS row_number,
            dp.donor_id,
            dp.first_name,
            dp.middle_name,
            dp.last_name,
            dp.email,
            dp.address,
            dp.address2,
            dp.city,
            dp.state,
            dp.zip,
            dp.country,
            dp.gift_total
        FROM dp
        LEFT JOIN dpudf ON dpudf.donor_id = dp.donor_id
        WHERE
            (dp.nomail_reason != 'IA'
            AND dp.nomail_reason != 'DE')
            OR dp.nomail_reason IS NULL
    ) AS tmp
    WHERE tmp.row_number BETWEEN {$pageStart} AND {$pageEnd}
");
```

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity19

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

 Bus Factor1

Top contributor holds 51.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

772d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/7253840?v=4)[Luke Towers](/maintainers/LukeTowers)[@LukeTowers](https://github.com/LukeTowers)

---

Top Contributors

[![LukeTowers](https://avatars.githubusercontent.com/u/7253840?v=4)](https://github.com/LukeTowers "LukeTowers (27 commits)")[![RonAbarbanel](https://avatars.githubusercontent.com/u/19804896?v=4)](https://github.com/RonAbarbanel "RonAbarbanel (25 commits)")

---

Tags

hacktoberfestphpphp-libraryphpapiperfectDonorPerfectDonor

### Embed Badge

![Health badge](/badges/luketowers-php-donorperfect-api/health.svg)

```
[![Health](https://phpackages.com/badges/luketowers-php-donorperfect-api/health.svg)](https://phpackages.com/packages/luketowers-php-donorperfect-api)
```

###  Alternatives

[openai-php/laravel

OpenAI PHP for Laravel is a supercharged PHP API client that allows you to interact with the Open AI API

3.7k7.6M74](/packages/openai-php-laravel)[hubspot/api-client

Hubspot API client

23414.2M16](/packages/hubspot-api-client)[theodo-group/llphant

LLPhant is a library to help you build Generative AI applications.

1.5k311.5k5](/packages/theodo-group-llphant)[resend/resend-php

Resend PHP library.

564.7M21](/packages/resend-resend-php)[checkout/checkout-sdk-php

Checkout.com SDK for PHP

553.3M7](/packages/checkout-checkout-sdk-php)[scriptdevelop/whatsapp-manager

Paquete para manejo de WhatsApp Business API en Laravel

762.6k](/packages/scriptdevelop-whatsapp-manager)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
