PHPackages                             kairos/zohoinvoiceconnectorbundle - 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. kairos/zohoinvoiceconnectorbundle

ActiveLibrary

kairos/zohoinvoiceconnectorbundle
=================================

Zoho invoice bundle for symfony2

301PHP

Since Dec 18Pushed 11y ago3 watchersCompare

[ Source](https://github.com/kairosagency/ZohoInvoiceConnectorBundle)[ Packagist](https://packagist.org/packages/kairos/zohoinvoiceconnectorbundle)[ RSS](/packages/kairos-zohoinvoiceconnectorbundle/feed)WikiDiscussions master Synced 6d ago

READMEChangelogDependenciesVersions (1)Used By (0)

Zoho invoice connector bundle
=============================

[](#zoho-invoice-connector-bundle)

This php 5.4+ bundle is aimed at easing the integration of zoho invoice api in a symfony2 app.

It currently handles, contacts / customers, items and invoices.

Bundle philosophy
-----------------

[](#bundle-philosophy)

This bundle was create to delegate our app invoice management to zoho invoice. We wanted to connect stuff from our backoffice to zoho invoice for example :

- our users are connected to zoho contacts
- our plans are connected to zoho items

In order to achieve that we built a collection of traits that include all the needed elements in your local database and implemented lifecycle events to synchronize local object with zoho remote objects.

When you'll persist a connected entity (eg: an user), the bundle will make an api call to create a remote object (eg : a contact) on zoho side, then it will get the zoho object id and store this reference in your database.

Each time you'll make changes to your entity, it will be synced with zoho. When an api call fails, the error messages are logged as error in your logs and the corresponding entity has a "synced" flag set to false (if the api call is successful, the flag is set tu true).

Bundle usage
------------

[](#bundle-usage)

### Bundle setup

[](#bundle-setup)

Add first in your config.yml these informations :

```
kairos_zoho_invoice_connector:
    auth_token: your auth token (mandatory)
    organization_id: your org id (mandatory)
    default_tax_id: default tax id (optional)

```

Then add your bundle in your AppKernel.php

```
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            ...
            new Kairos\ZohoInvoiceConnectorBundle\KairosZohoInvoiceConnectorBundle(),
            ...
        );
    ....
    }
}
```

### Entities setup

[](#entities-setup)

In your *user* entity which should correspond to your customer, add the corresponding trait :

```
namespace Acme\AcmeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Kairos\ZohoInvoiceConnectorBundle\Model as ZohoInvoiceConnector;

/**
 * @ORM\Table(name="user")
 * @ORM\Entity
 */
class User
{
    use ZohoInvoiceConnector\Contact\ContactConnector;

    ....
}
```

In your *product* entity which should correspond to zoho items, add the corresponding trait :

```
namespace Acme\AcmeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Kairos\ZohoInvoiceConnectorBundle\Model as ZohoInvoiceConnector;

/**
 * @ORM\Table(name="product")
 * @ORM\Entity
 */
class Product
{
    use ZohoInvoiceConnector\Item\ItemConnector;

    ....
}
```

In your *invoice* entity which should correspond to zoho invoices, add the corresponding trait :

```
namespace Acme\AcmeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Kairos\ZohoInvoiceConnectorBundle\Model as ZohoInvoiceConnector;

/**
 * @ORM\Table(name="invoice")
 * @ORM\Entity
 */
class Invoice
{
    use ZohoInvoiceConnector\Invoice\InvoiceConnector;

    ....
}
```

To create an invoice :

```
// get a product
$product = .....

// get a customer
$user = ...

// create an invoice
$invoice  = new Invoice();

$invoice
    ->addItem(array('item_id' => $product->getZohoItemId(), 'quantity' => 1))
    ->setZohoCustomerId($user->getZohoContactId())
    ->addZohoContactPerson($user->getZohoContactPersonId())
    ->setSendInvoice(true); // will send and email with the invoice to the contact person

// then persist and flush
$em->persist($invoice);
$em->flush();
```

Synchronization command
-----------------------

[](#synchronization-command)

Sometimes zoho sync will fail, so your entity will have its "synced" set to false. You can use symfony command "php app/console kairos:zohoinvoiceconnector:sync" to trigger a manual synchronization with zoho invoice api on all unsynced entities.

Todo
----

[](#todo)

- Add tests
- Improve Zoho Api support (through zoho invoice api client)
- support more kind of zoho objects (recurring invoices, taxes, etc.)

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

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

### Community

Maintainers

![](https://www.gravatar.com/avatar/aaed077462170a057d6e9871d0981affee94d9c2bc0a783c33866dbe6d913bb5?d=identicon)[kairosagency](/maintainers/kairosagency)

---

Top Contributors

[![t0k4rt](https://avatars.githubusercontent.com/u/498106?v=4)](https://github.com/t0k4rt "t0k4rt (30 commits)")[![Matthiew](https://avatars.githubusercontent.com/u/1763663?v=4)](https://github.com/Matthiew "Matthiew (1 commits)")

### Embed Badge

![Health badge](/badges/kairos-zohoinvoiceconnectorbundle/health.svg)

```
[![Health](https://phpackages.com/badges/kairos-zohoinvoiceconnectorbundle/health.svg)](https://phpackages.com/packages/kairos-zohoinvoiceconnectorbundle)
```

PHPackages © 2026

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