Connecting to ZohoInvoice
To authenticate to ZohoInvoice, and connect to your own data or to allow other users to connect to their data, you can use the OAuth standard.
Using OAuth Authentication
First, you will need to register an OAuth application with ZohoInvoice. To do so, go to Zoho Developer Console, add a new Client (Server-based application) and set a valid OAuth redirect URL. Your Oauth application will be assigned a client id and a client secret. Additionally, you will need to set the relevant Domain (com, eu, in, com.au, com.cn, jp, ca, sa), defaults to com.
After setting the following connection properties, you are ready to connect:
- AuthScheme: Set this to OAuth.
- InitiateOAuth: Set this to GETANDREFRESH. You can use InitiateOAuth to manage the process to obtain the OAuthAccessToken.
- OAuthClientId: Set this to the client_id that is specified in you app settings.
- OAuthClientSecret: Set this to the client_secret that is specified in you app settings.
- CallbackURL: Set this to the Redirect URI that is specified in your app settings
- Domain: Set this to the domain for your ZohoInvoice account (e.g., com, eu, in, com.au). Defaults to com.
- Organization: Optionally set this to the Id of the Zoho Invoice organization to use. To obtain a list of available organization Ids, query the Organizations table.
Example Connection String
Profile=C:\profiles\ZohoInvoice.apip;ProfileSettings='Domain=your_domain;Organization=your_organization_id';AuthScheme=OAuth;InitiateOAuth=GETANDREFRESH;OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;CallbackUrl=your_callback_url;
Available Tables
The ZohoInvoice API Profile provides access to the following tables:
- Organizations: Returns the list of organizations associated with the authenticated user.
- Contacts: Returns the list of all contacts in the organization.
- ContactAddresses: Returns the addresses of a contact, including billing, shipping, and additional addresses (requires ContactId).
- ContactComments: Returns the comments associated with a contact (requires ContactId).
- ContactDetails: Returns the full details of a specific contact (requires ContactId).
- ContactPersons: Returns the contact persons associated with a contact (requires ContactId).
- ContactRefunds: Returns the refunds associated with a contact (requires ContactId).
- Invoices: Returns the list of all invoices in the organization.
- InvoiceCredits: Returns the credits applied to a specific invoice (requires InvoiceId).
- InvoiceDetails: Returns the full details of a specific invoice (requires InvoiceId).
- InvoiceLineItems: Returns the line items of a specific invoice (requires InvoiceId).
- InvoicePayments: Returns the payments applied to a specific invoice (requires InvoiceId).
- Items: Returns the list of all products and services (items) in the organization.
- Expenses: Returns the list of all expenses in the organization.
- ExpenseDetails: Returns the full details of a specific expense (requires ExpenseId).
- ExpenseLineItems: Returns the line items of a specific expense (requires ExpenseId).
- Estimates: Returns the list of all estimates in the organization.
- EstimateComments: Returns the comments associated with a specific estimate (requires EstimateId).
- EstimateDetails: Returns the full details of a specific estimate (requires EstimateId).
- EstimateLineItems: Returns the line items of a specific estimate (requires EstimateId).
- Payments: Returns the list of all payments received in the organization.
- PaymentDetails: Returns the full details of a specific payment (requires PaymentId).
- Creditnotes: Returns the list of all credit notes in the organization.
- CreditnoteDetails: Returns the full details of a specific credit note (requires CreditnoteId).
- CreditnoteInvoices: Returns the invoices associated with a specific credit note (requires CreditnoteId).
- CreditnoteLineItems: Returns the line items of a specific credit note (requires CreditnoteId).
- CreditnoteRefunds: Returns the refunds associated with a specific credit note (requires CreditnoteId).
- CreditnoteRefundDetails: Returns the details of a specific credit note refund (requires CreditnoteRefundId).
- CreditnotesRefunds: Returns the list of all credit note refunds in the organization.
- Refunds: Returns the list of all refunds in the organization.
- Projects: Returns the list of all projects in the organization.
- ProjectDetails: Returns the full details of a specific project (requires ProjectId).
- ProjectInvoices: Returns the invoices associated with a specific project (requires ProjectId).
- ProjectTasks: Returns the tasks associated with a specific project (requires ProjectId).
- ProjectUsers: Returns the users assigned to a specific project (requires ProjectId).
- RecurringExpenses: Returns the list of all recurring expenses in the organization.
- RecurringExpenseDetails: Returns the full details of a specific recurring expense (requires RecurringExpenseId).
- RecurringInvoices: Returns the list of all recurring invoices in the organization.
- RecurringInvoiceDetails: Returns the full details of a specific recurring invoice (requires RecurringInvoiceId).
- RecurringInvoiceLineItems: Returns the line items of a specific recurring invoice (requires RecurringInvoiceId).
- RetainerInvoices: Returns the list of all retainer invoices in the organization.
- RetainerInvoiceDetails: Returns the full details of a specific retainer invoice (requires RetainerInvoiceId).
- RetainerInvoicePayments: Returns the payments associated with a specific retainer invoice (requires RetainerInvoiceId).
- TimeEntries: Returns the list of all time entries in the organization.
- PriceLists: Returns the list of all price lists in the organization.
- Users: Returns the list of all users in the organization.
- CurrentUser: Returns the details of the currently authenticated user.
- Employees: Returns the list of all employees in the organization.
Usage Examples
Organizations:
SELECT * FROM Organizations
Contacts:
SELECT * FROM Contacts SELECT * FROM Contacts WHERE ContactName = 'John Smith'
ContactAddresses:
SELECT * FROM ContactAddresses WHERE ContactId = '903000000026049'
ContactComments:
SELECT * FROM ContactComments WHERE ContactId = '903000000026049'
ContactDetails:
SELECT * FROM ContactDetails WHERE ContactId = '903000000026049'
ContactPersons:
SELECT * FROM ContactPersons WHERE ContactId = '903000000026049'
ContactRefunds:
SELECT * FROM ContactRefunds WHERE ContactId = '903000000026049'
Invoices:
SELECT * FROM Invoices SELECT * FROM Invoices WHERE Status = 'sent'
InvoiceCredits:
SELECT * FROM InvoiceCredits WHERE InvoiceId = '903000000000335'
InvoiceDetails:
SELECT * FROM InvoiceDetails WHERE InvoiceId = '903000000000335'
InvoiceLineItems:
SELECT * FROM InvoiceLineItems WHERE InvoiceId = '903000000000335'
InvoicePayments:
SELECT * FROM InvoicePayments WHERE InvoiceId = '903000000000335'
Items:
SELECT * FROM Items
Expenses:
SELECT * FROM Expenses
ExpenseDetails:
SELECT * FROM ExpenseDetails WHERE ExpenseId = '903000000049001'
ExpenseLineItems:
SELECT * FROM ExpenseLineItems WHERE ExpenseId = '903000000049001'
Estimates:
SELECT * FROM Estimates SELECT * FROM Estimates WHERE Status = 'draft'
EstimateComments:
SELECT * FROM EstimateComments WHERE EstimateId = '903000000000455'
EstimateDetails:
SELECT * FROM EstimateDetails WHERE EstimateId = '903000000000455'
EstimateLineItems:
SELECT * FROM EstimateLineItems WHERE EstimateId = '903000000000455'
Payments:
SELECT * FROM Payments
PaymentDetails:
SELECT * FROM PaymentDetails WHERE PaymentId = '903000000000567'
Creditnotes:
SELECT * FROM Creditnotes
CreditnoteDetails:
SELECT * FROM CreditnoteDetails WHERE CreditnoteId = '903000000000678'
CreditnoteInvoices:
SELECT * FROM CreditnoteInvoices WHERE CreditnoteId = '903000000000678'
CreditnoteLineItems:
SELECT * FROM CreditnoteLineItems WHERE CreditnoteId = '903000000000678'
CreditnoteRefunds:
SELECT * FROM CreditnoteRefunds WHERE CreditnoteId = '903000000000678'
CreditnoteRefundDetails:
SELECT * FROM CreditnoteRefundDetails WHERE CreditnoteRefundId = '903000000000789'
CreditnotesRefunds:
SELECT * FROM CreditnotesRefunds
Refunds:
SELECT * FROM Refunds
Projects:
SELECT * FROM Projects
ProjectDetails:
SELECT * FROM ProjectDetails WHERE ProjectId = '903000000074001'
ProjectInvoices:
SELECT * FROM ProjectInvoices WHERE ProjectId = '903000000074001'
ProjectTasks:
SELECT * FROM ProjectTasks WHERE ProjectId = '903000000074001'
ProjectUsers:
SELECT * FROM ProjectUsers WHERE ProjectId = '903000000074001'
RecurringExpenses:
SELECT * FROM RecurringExpenses
RecurringExpenseDetails:
SELECT * FROM RecurringExpenseDetails WHERE RecurringExpenseId = '903000000082001'
RecurringInvoices:
SELECT * FROM RecurringInvoices
RecurringInvoiceDetails:
SELECT * FROM RecurringInvoiceDetails WHERE RecurringInvoiceId = '903000000091001'
RecurringInvoiceLineItems:
SELECT * FROM RecurringInvoiceLineItems WHERE RecurringInvoiceId = '903000000091001'
RetainerInvoices:
SELECT * FROM RetainerInvoices
RetainerInvoiceDetails:
SELECT * FROM RetainerInvoiceDetails WHERE RetainerInvoiceId = '903000000100001'
RetainerInvoicePayments:
SELECT * FROM RetainerInvoicePayments WHERE RetainerInvoiceId = '903000000100001'
TimeEntries:
SELECT * FROM TimeEntries
PriceLists:
SELECT * FROM PriceLists
Users:
SELECT * FROM Users
CurrentUser:
SELECT * FROM CurrentUser
Employees:
SELECT * FROM Employees
Connection Properties
The connection string properties are the various options that can be used to establish a connection. This section provides a complete list of the options you can configure in the connection string for this provider.
| Property | Description |
| AuthScheme | The scheme used for authentication. Accepted entries are None or OAuth. Allowed values are: BASIC, NONE, NTLM, OAUTH, APIKEY, OAUTH_CLIENT, OAUTH_PASSWORD |
| CallbackURL | Identifies the URL users return to after authenticating to API via OAuth (Custom OAuth applications only). |
| Domain | Determines the domain where authentication calls will be sent to. Allowed values are: MIXPANEL, EU.MIXPANEL, IN.MIXPANEL, .COM, .EU, .COM.AU, .IN, COM, EU, COM.AU, IN, JP, COM.CN, CA, SA, .COM.CN, .JP, .CA, .SA |
| InitiateOAuth | Specifies the process for obtaining or refreshing the OAuth access token, which maintains user access while an authenticated, authorized user is working. Allowed values are: OFF, REFRESH, GETANDREFRESH |
| OAuthAccessToken | Specifies the OAuth access token used to authenticate requests to the data source. This token is issued by the authorization server after a successful OAuth exchange. |
| OAuthClientId | Specifies the client ID (also known as the consumer key) assigned to your custom OAuth application. This ID is required to identify the application to the OAuth authorization server during authentication. |
| OAuthClientSecret | Specifies the client secret assigned to your custom OAuth application. This confidential value is used to authenticate the application to the OAuth authorization server. (Custom OAuth applications only.). |
| OAuthExpiresIn | Specifies the duration in seconds, of an OAuth Access Token's lifetime. The token can be reissued to keep access alive as long as the user keeps working. |
| OAuthRefreshToken | Specifies the OAuth refresh token used to request a new access token after the original has expired. |
| OAuthSettingsLocation | Specifies the location of the settings file where OAuth values are saved. |
| OAuthTokenTimestamp | Displays a Unix epoch timestamp in milliseconds that shows how long ago the current access token was created. |
| OAuthVerifier | Specifies a verifier code returned from the OAuthAuthorizationURL . Used when authenticating to OAuth on a headless server, where a browser can't be launched. Requires both OAuthSettingsLocation and OAuthVerifier to be set. |
| Organization | The Id of the Zoho Invoice organization to use. |
| Scope | Scope(s) to use when authenticating, that control access to specific information. |