PHPackages                             siegerhansma/acumulus-php - 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. siegerhansma/acumulus-php

ActiveLibrary[API Development](/categories/api)

siegerhansma/acumulus-php
=========================

PHP wrapper for the Acumulus API

0.5(11y ago)035PHPPHP &gt;=5.4.0

Since Jul 22Pushed 11y ago1 watchersCompare

[ Source](https://github.com/siegerhansma/acumulus)[ Packagist](https://packagist.org/packages/siegerhansma/acumulus-php)[ RSS](/packages/siegerhansma-acumulus-php/feed)WikiDiscussions master Synced 6d ago

READMEChangelogDependencies (4)Versions (2)Used By (0)

Unofficial Acumulus PHP SDK
===========================

[](#unofficial-acumulus-php-sdk)

Official Acumulus documentation:

This package uses [Guzzle](https://github.com/guzzle/guzzle) to make the cUrl requests to Acumulus. Because of its dependency to Guzzle, this package requires PHP &gt;= 5.4 to function.

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

[](#installation)

### Via composer

[](#via-composer)

Add the package to your composer.json file

```
    "require": {
        "siegerhansma/acumulus": "~1.0"
    },

```

Configuration
-------------

[](#configuration)

All of the provider classes take a config array as parameter.

```
    $config['contractcode'] = 123456;
    $config['username'] = "xxxxxxxxx";
    $config['password'] = "xxxxxxxxx";

```

You could put these variables in a specific config file.

Usage
-----

[](#usage)

Every class and function is fully documented in the [online documentation](http://www.trixoict.nl/acumulus/namespaces/Siegerhansma.AcumulusPhp.html).

### Request

[](#request)

The calls in the API can be called via specific classes corresponding to the categories on the official API docs. To start, create a new instance of the provider class you need.

```
    $client = new \Siegerhansma\AcumulusPhp\Providers\ContactsProvider($config);

```

After that, all the calls in that class will be available via the $client variable.

```
    $client->getContactDetails(14036242)->sendRequest();

```

When the method is called, you can chain the sendRequest method to that. This method actually sends the request to the Acumulus API. The same principle stands for the other provider classes.

### Response

[](#response)

The sendRequest method returns the response given by Acumulus. The response is being cast to an array for multiple records or an instance of the model for a single record.

In the example below is the response of the getAvailableContacts method on the ContactsProvider.

#### Example response

[](#example-response)

```
array(3) {
  [0] =>
  class Siegerhansma\AcumulusPhp\Models\Contact#68 (27) {
    protected $contactid =>
    string(7) "1234567"
    protected $contactname1 =>
    string(13) "Contactname 1"
    protected $contactname2 =>
    NULL
    protected $contacttypeid =>
    string(1) "3"
    protected $contacttypename =>
    string(7) "Relatie"
    protected $contactperson =>
    NULL
    protected $contactsalutation =>
    NULL
    protected $contactaddress1 =>
    string(9) "Address 1"
    protected $contactaddress2 =>
    NULL
    protected $contactpostalcode =>
    NULL
    protected $contactcity =>
    string(10) "Leeuwarden"
    protected $contactcountryid =>
    NULL
    protected $contactcountrycode =>
    NULL
    protected $contactcountryname =>
    NULL
    protected $contacttelephone =>
    NULL
    protected $contactfax =>
    NULL
    protected $contactemail =>
    NULL
    protected $contactwebsite =>
    NULL
    protected $contactbankaccountnumber =>
    NULL
    protected $contactiban =>
    NULL
    protected $contactbic =>
    NULL
    protected $contactmark =>
    NULL
    protected $contactvatnumber =>
    NULL
    protected $contactvatstandard =>
    NULL
    protected $contacttemplateid =>
    NULL
    protected $contactnotes =>
    NULL
    protected $contactstatus =>
    NULL
  }
  [1] =>
  class Siegerhansma\AcumulusPhp\Models\Contact#91 (27) {
    protected $contactid =>
    string(7) "3216549"
    protected $contactname1 =>
    string(13) "Contactname 2"
    protected $contactname2 =>
    NULL
    protected $contacttypeid =>
    string(1) "3"
    protected $contacttypename =>
    string(7) "Relatie"
    protected $contactperson =>
    NULL
    protected $contactsalutation =>
    NULL
    protected $contactaddress1 =>
    string(9) "Address 2"
    protected $contactaddress2 =>
    NULL
    protected $contactpostalcode =>
    NULL
    protected $contactcity =>
    string(8) "Drachten"
    protected $contactcountryid =>
    NULL
    protected $contactcountrycode =>
    NULL
    protected $contactcountryname =>
    NULL
    protected $contacttelephone =>
    NULL
    protected $contactfax =>
    NULL
    protected $contactemail =>
    NULL
    protected $contactwebsite =>
    NULL
    protected $contactbankaccountnumber =>
    NULL
    protected $contactiban =>
    NULL
    protected $contactbic =>
    NULL
    protected $contactmark =>
    NULL
    protected $contactvatnumber =>
    NULL
    protected $contactvatstandard =>
    NULL
    protected $contacttemplateid =>
    NULL
    protected $contactnotes =>
    NULL
    protected $contactstatus =>
    NULL
  }
  [2] =>
  class Siegerhansma\AcumulusPhp\Models\Contact#69 (27) {
    protected $contactid =>
    string(5) "00001"
    protected $contactname1 =>
    string(13) "Contactname 3"
    protected $contactname2 =>
    NULL
    protected $contacttypeid =>
    string(1) "3"
    protected $contacttypename =>
    string(7) "Relatie"
    protected $contactperson =>
    NULL
    protected $contactsalutation =>
    NULL
    protected $contactaddress1 =>
    string(9) "Address 3"
    protected $contactaddress2 =>
    NULL
    protected $contactpostalcode =>
    NULL
    protected $contactcity =>
    NULL
    protected $contactcountryid =>
    NULL
    protected $contactcountrycode =>
    string(2) "NL"
    protected $contactcountryname =>
    NULL
    protected $contacttelephone =>
    NULL
    protected $contactfax =>
    NULL
    protected $contactemail =>
    NULL
    protected $contactwebsite =>
    NULL
    protected $contactbankaccountnumber =>
    NULL
    protected $contactiban =>
    NULL
    protected $contactbic =>
    NULL
    protected $contactmark =>
    NULL
    protected $contactvatnumber =>
    NULL
    protected $contactvatstandard =>
    NULL
    protected $contacttemplateid =>
    NULL
    protected $contactnotes =>
    NULL
    protected $contactstatus =>
    NULL
  }
}

```

### Models

[](#models)

For the responses you get from Acumulus, there are several models being used. There models are integral copies of the responses and have their own getters and setters. For a list of all the models and the methods that you can use on them, check out the API documentation [here](http://trixoict.nl/acumulus/namespaces/Siegerhansma.AcumulusPhp.Models.html)

### Adding an invoice

[](#adding-an-invoice)

By far the most difficult task this package does is adding an invoice to Acumulus. I've tried to create this as easy as possible, but the call being made is pretty complex. One thing to note is that Acumulus looks at the customer emailadress as being the unique identifier of a customer. So if a customer doesn't have an email yet, this package will automatically create a unique emailaddress for that customer to prevent creating multiple customers. However, before you make this call it's recommended that you make sure that the customer has an email. To (hopefully) make this a little bit easier for you, I made an InvoiceBuilder class. Here's an example of how to use this.

```

    // Instantiate a new InvoiceBuilder object
    $invoiceBuilder = new InvoiceBuilder;

    // Create a new contact by instantiating a new Contact model or get it from the API
    $builder = new \Siegerhansma\AcumulusPhp\ContactsProvider($config);
    $contact = $builder->getContactDetails(123456)->sendRequest();

    // Set the customer by passing in the Contact model
    $invoiceBuilder->setCustomer($contact);

    // Instantiate a new Invoice model and set Invoice specific settings
    $invoice = new Invoice;
    $invoice
        ->setTemplate('Standaard');

    // Pass in the Invoice model
    $invoiceBuilder->setInvoiceData($invoice);

    // Create a new InvoiceLine object and set the fields
    // Use this in a loop for multiple lines
    $invoiceLine = new InvoiceLine;
    $invoiceLine
        ->setItemnumber(102)
        ->setProduct("Awesome product")
        ->setUnitprice(19.95)
        ->setQuantity(3);
    $invoiceBuilder->addLine($invoiceLine);

    // Pass the InvoiceBuilder into the addInvoice method on the InvoicesProvider and call the build method on it
    $invoiceSender = new \Siegerhansma\AcumulusPhp\InvoicesProvider($config);
    $response = $invoiceSender->addInvoice($invoiceBuilder->build())->sendRequest();

```

In the response from Acumulus you will get an array with the following fields:

- invoicenumber
- token
- entryid

LICENSE
-------

[](#license)

[The MIT License (MIT)](https://www.tldrlegal.com/l/mit)

Copyright (c) 2014 Sieger Hansma

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

TODO
----

[](#todo)

A lot still to do, here's what:

- Write more tests
- Make documentation
- Support [Picklists](https://apidoc.sielsystems.nl/acumulus-api/picklists)

If you have any questions, feedback or if you encounter a bug, please leave an issue or a pull request.

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

4318d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/3443339?v=4)[Sieger Hansma](/maintainers/siegerhansma)[@siegerhansma](https://github.com/siegerhansma)

---

Top Contributors

[![siegerhansma](https://avatars.githubusercontent.com/u/3443339?v=4)](https://github.com/siegerhansma "siegerhansma (14 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/siegerhansma-acumulus-php/health.svg)

```
[![Health](https://phpackages.com/badges/siegerhansma-acumulus-php/health.svg)](https://phpackages.com/packages/siegerhansma-acumulus-php)
```

###  Alternatives

[tencentcloud/tencentcloud-sdk-php

TencentCloudApi php sdk

3731.2M42](/packages/tencentcloud-tencentcloud-sdk-php)[convertkit/convertkitapi

Kit PHP SDK for the Kit API

2167.1k1](/packages/convertkit-convertkitapi)[mapado/rest-client-sdk

Rest Client SDK for hydra API

1125.9k2](/packages/mapado-rest-client-sdk)

PHPackages © 2026

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