All Collections
Integrations
Integrating with Zoho
Integrating with Zoho
Updated over a week ago

Through its integration with Zoho, Digifabster optimizes business workflows, enabling seamless data exchange and efficient order management.

How to connect

1. From Zoho API Console (https://api-console.zoho.com) we need client_id and client_secret

2. From organization in Zoho Books (https://books.zoho.com/app#/organizations) we need zoho_organization_id

3. In Zoho API Console (https://api-console.zoho.com) you need set up correct redirect url (https://digifabster.com/manage/complete_zoho_registration/ by default)

Status Flow

Triggers

In this case a request will be sent to Zoho when the Digifabster Order gets one of the processing statuses.

By default they are:

– Manufacturing status: Placed

Payment status: Paid.

NOTE: The set of statuses can be configured.

Records mapping

By establishing the correspondence between data fields in our database and those in the Zoho system, we ensure that information is accurately interpreted and utilized.

By default in Zoho we create: Contact, Contact Person, Sales Order, Invoice.

Contact

By default we sent – contact_name, company_name, billing_address, shipping_address.

  • contact_name – DF Order company name

(contact_name is derived from the DF Order address or from the first and last names, depending on whether the billing or delivery addresses exists)

  • company_name – DF Order company name

(company_name is derived from the DF Order address or from the first and last names, depending on whether the billing or delivery addresses exists)

  • billing_address – DF Order billing address

  • shipping_address – DF Order delivery address

Both of addresses uses next mapping:

"address": df_address.street_address,

"street2": df_address.apartment,

"city": df_address.city,

"state": df_address.state,

"zip": df_address.postcode,

"country": df_address.country,

NOTE: A set of fields can be configured.

Contact Person

By default we sent – contact_id, first_name, last_name, email

  • contact_id Zoho Contact ID which was created in a previous step

  • first_name – DF Order first name

  • last_name – DF Order last name

  • email – DF Order email

NOTE: A set of fields can be configured.

Sales Order

By default we sent – customer_id, date, line_items, delivery_method, shipment_date, contact_persons.

  • customer_id – Zoho Contact ID which was created in a previous step

  • date – DF Order creation date

    • example: 2021-10-26

  • line_items – DF Order purchases (description, quantity, rate, discount)

  • description – string with next data

    • Order #<df_order_id>, Model <df_model_title>, Material <df_material_title>: <df_material_description>, Notes: <df_order_notes>

  • quantity – DF Purchase amount

    • example: “10”

  • rate – DF Purchase unit price

    • example “1000.01”

  • discount – DF Order full discount

    • example: “85”

    • formula: (1 - (1 - purchase.discount_rate) * (1 - order.discount_rate)) * 100

  • delivery_method – DF Order delivery type title

    • example: “Pick Up” or your custom shipping title (string) or delivery title from EasyPost (string)

  • shipment_date – DF Order shipment date

    • example: 2021-10-26

  • contact_persons – array with contact persons ids which were created in a previous step

NOTE: A set of fields can be configured

We sent the DF Order startup cost to Zoho Books as one of the line items.

Invoice

By default we sent – customer_id, date, line_items, reference_number, contact_persons

  • customer_id – Zoho Contact ID which was created in a previous step

  • date – DF Order creation date

    • example: 2021-10-26

  • line_items – DF Order purchases (same as Sales Order line items)

  • reference_number – Zoho Sales Order number which was created in a previous step

  • contact_persons – array with contact persons ids which were created in a previous step

Create or Update logic

After first creating an entity (Sales Order, Invoice) we store sales_order_id, invoice_id in DF, which are used to update already existing entities in Zoho Books.

We send an entity update request to Zoho every time we change an order in DF, as long as its status matches the trigger conditions (see Status Flow)

For a Contact, we first query all contacts, then match the contact from DF with the contact from Zoho by contact_name (it is unique to Zoho). If we find a contact in Zoho, we update it and then use it to create a Sales Order and Invoice, otherwise we first create a new contact in Zoho.

We don’t update the contact_name in Contact entity.

We don't update Contact Persons, we only create them and add them to the Contact entity.

For Contact Persons, we first query for all contact_persons at the required contact_id (it is needed for Sales Order and Invoice), then we send a creation request with a new contact_person (it will be added to contact persons array).

Updating occurs with the same set of fields that are relevant for each entity (Contact, Sales Order, Invoice).

After successfully creating entities in Zoho Books, inside DF it will be displayed like this:

Webhooks

We don’t provide webhooks for Zoho Books integration and only work one way (DF -> Zoho Books)

Taxes

If you want DF to be able to send to Zoho Books Tax, you must provide tax_id.

Here are quick instructions on how to get it:

1. You need to know your refresh_token (we can give it to you after connecting, or you can get it through the API as described in the documentation: https://www.zoho.com/books/api/v3/oauth/#overview)

3. Now, along with the access_token, you can make a request for a list of Taxes in your Zoho Books:

NOTE: to find <client_id>, <client_secret> and <organization_id> you can see in How to connect

Did this answer your question?