1C:Enterprise has a new REST web-service interface. It's based on the OData standard www.odata.org.

API endpoint: https://apps7.accountingsuite.com/a/{tenant_id}/odata/standard.odata

The API is now enabled for all production databases. As soon as you activate your free 30-day trial, you can instantly play around with our API.

A nice client we suggest using for testing is the apigee web console. This client makes it easy to send GET and POST requests, along with the ability to pass in Headers, and Body entries.

Our API supports all major catalog and document modules of AccountingSuite along with a few other modules. For sample purposes, we will be using Catalog_Products, Catalog_Companies, Catalog_Addresses, ChartOfAccounts_ChartOfAccounts, and Document_GeneralJournalEntry. This is the typical naming format for our metadata types. You can get support for this API (knowledge base, tickets, and live chat) at help.accountingsuite.com

You can get support for the API (knowledge base, tickets, and live chat) at accountingsuite.com/support.

Register your application

The first step in connecting your application with AccountingSuite is registering it. To do this make a request submitting appname, redirect_uri, and apisecretkey of your developer account (Settings / Development / apisecretkey). Make sure your redirect_uri starts with "http://" or "https://" to ensure it redirects to the correct url. For example:

curl https://oauth.accountingsuite.com/register_app \
-d '{"appname": "Rapid CRM","redirect_uri": "https://dev.company_name.com/accountingsuite_oauth", "apisecretkey": "dGmlayoUnlNcitybVTMu"}'

You will receive back your client_id (application ID), for example:

{"client_id": "O4JaqvBTe2YKhh3iOX2z"}

Send your users to AccountingSuite

Add a Connect with AccountingSuite button to your application to link your users to our endpoint:

https://oauth.accountingsuite.com/authorize?response_type=code&client_id=O4JaqvBTe2YKhh3iOX2z&state=12345

The state parameter is an arbitrary string we will pass back to you, useful for CSRF protection.

If a user already has an AccountingSuite account, they'll be able to give you secure access in just a few clicks. After the user connects, we'll redirect them back to the redirect_uri you provided:

HTTP/1.1 302 Found
Location: https://redirect_uri?code=knbujs4awcvux04qmf7z&tenant_id=1100515&state=12345

Or, if the authorization was denied, we'll include an error instead:

HTTP/1.1 302 Found
Location: https://redirect_uri?error=access_denied&state=12345

After the user has connected

Using the code parameter we sent back to your redirect_uri endpoint, you should make a POST request to our oauth_token endpoint:

curl -X POST https://oauth.accountingsuite.com/oauth_token \
  -d client_secret=dGmlayoUnlNcitybVTMu \
  -d client_id=O4JaqvBTe2YKhh3iOX2z \
  -d code=knbujs4awcvux04qmf7z \
  -d grant_type=authorization_code

client_secret parameter in the request is the apisecretkey of your developer account.

AccountingSuite will generate a base64 encoding of the client's api credentials. base64(api:apisecretkey) We return this value to you as the ACCESS_TOKEN, along with the tenant_id, which you can use for all API communications. You're done!

{
  "token_type": "Basic",
  "access_token": ACCESS_TOKEN,
  "tenant_id": "1100515"
}
{
  "error": "invalid_grant",
  "error_description": "Authorization code does not exist: AUTHORIZATION_CODE"
}

Using a Client

Sometimes, you just need an apisecretkey to your own account, without going through the hassle of creating an entire OAuth flow. We hear ya. You can just grab the apisecretkey in Settings / Development, and generate your ACCESS_TOKEN.

This can be done by base64 encoding {api:apisecretkey}. For example, api:dGmlayoUnlNcitybVTMu will be YXBpOmRHbWxheW9VbmxOY2l0eWJWVE11. The key also needs the word Basic infront of the code. So the header will look like so:

Authorization: Basic YXBpOmRHbWxheW9VbmxOY2l0eWJWVE11


In order to process a single object one should first read the whole list and then to pick up a certain entry from it.

To get a list of all entries of a kind: Addresses / contacts:

Example request:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Catalog_Addresses?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



A single entry can be picked up from the list and processed by its Ref_key (a.k.a. guid). Using a guid in a query string, we command the database to call a certain entry

To get a specific object of a kind Addresses / contacts:

Example requests:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Catalog_Addresses(guid'b1b178d1-605b-11e3-8058-e3003205b13a')?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



To create an object, you have to pass in the BODY (-d) of the request a JSON entry with desired fields

To create an object

Example requests:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Catalog_Addresses?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Body:



Example response:



In order to process a single object one should first read the whole list and then to pick up a certain entry from it.

To get a list of all entries of a kind: Customer / Vendor Central:

Example request:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Catalog_Companies?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



A single entry can be picked up from the list and processed by its Ref_key (a.k.a. guid). Using a guid in a query string, we command the database to call a certain entry

To get a specific object of a kind Customer / Vendor Central:

Example requests:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Catalog_Companies(guid'b1b178d0-605b-11e3-8058-e3003205b13a')?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



To create an object, you have to pass in the BODY (-d) of the request a JSON entry with desired fields

To create an object

Example requests:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Catalog_Companies?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Body:



Example response:



In order to process a single object one should first read the whole list and then to pick up a certain entry from it.

To get a list of all entries of a kind: Items:

Example request:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Catalog_Products?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



A single entry can be picked up from the list and processed by its Ref_key (a.k.a. guid). Using a guid in a query string, we command the database to call a certain entry

To get a specific object of a kind Items:

Example requests:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Catalog_Products(guid'000f189a-68cf-11e3-8058-e3003205b13a')?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



To create an object, you have to pass in the BODY (-d) of the request a JSON entry with desired fields

To create an object

Example requests:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Catalog_Products?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Body:



Example response:



In order to process a single object one should first read the whole list and then to pick up a certain entry from it.

To get a list of all entries of a kind: UoM sets:

Example request:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Catalog_UnitSets?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



A single entry can be picked up from the list and processed by its Ref_key (a.k.a. guid). Using a guid in a query string, we command the database to call a certain entry

To get a specific object of a kind UoM sets:

Example requests:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Catalog_UnitSets(guid'd8d68e0e-8ff2-11e4-80c3-002590f2d21f')?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



To create an object, you have to pass in the BODY (-d) of the request a JSON entry with desired fields

To create an object

Example requests:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Catalog_UnitSets?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Body:



Example response:



In order to process a single object one should first read the whole list and then to pick up a certain entry from it.

To get a list of all entries of a kind: Chart of accounts:

Example request:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/ChartOfAccounts_ChartOfAccounts?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



A single entry can be picked up from the list and processed by its Ref_key (a.k.a. guid). Using a guid in a query string, we command the database to call a certain entry

To get a specific object of a kind Chart of accounts:

Example requests:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/ChartOfAccounts_ChartOfAccounts(guid'69c37e3a-69aa-11e3-8058-e3003205b13a')?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



To create an object, you have to pass in the BODY (-d) of the request a JSON entry with desired fields

To create an object

Example requests:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/ChartOfAccounts_ChartOfAccounts?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Body:



Example response:



In order to process a single object one should first read the whole list and then to pick up a certain entry from it.

To get a list of all entries of a kind: Cash sale:

Example request:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_CashSale?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



A single entry can be picked up from the list and processed by its Ref_key (a.k.a. guid). Using a guid in a query string, we command the database to call a certain entry

To get a specific object of a kind Cash sale:

Example requests:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_CashSale(guid'1a5719f1-6069-11e3-8058-e3003205b13a')?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



To create an object, you have to pass in the BODY (-d) of the request a JSON entry with desired fields

To create an object

Example requests:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_CashSale?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Body:



Example response:



At this point, the document is created and saved, but it will not reflect in the General Ledger. To do this, the document must be posted. After any document is created, retrieve the Ref_Key from the response and make the following API call.

Example request:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_CashSale(guid'1a5719f1-6069-11e3-8058-e3003205b13a')/Post()?$format=json -H "Authorization: Basic ACCESS_TOKEN"

In order to process a single object one should first read the whole list and then to pick up a certain entry from it.

To get a list of all entries of a kind: Payment:

Example request:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_Check?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



A single entry can be picked up from the list and processed by its Ref_key (a.k.a. guid). Using a guid in a query string, we command the database to call a certain entry

To get a specific object of a kind Payment:

Example requests:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_Check(guid'821acd85-54ce-11e4-80c3-002590f2d21f')?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



To create an object, you have to pass in the BODY (-d) of the request a JSON entry with desired fields

To create an object

Example requests:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_Check?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Body:



Example response:



At this point, the document is created and saved, but it will not reflect in the General Ledger. To do this, the document must be posted. After any document is created, retrieve the Ref_Key from the response and make the following API call.

Example request:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_Check(guid'821acd85-54ce-11e4-80c3-002590f2d21f')/Post()?$format=json -H "Authorization: Basic ACCESS_TOKEN"

In order to process a single object one should first read the whole list and then to pick up a certain entry from it.

To get a list of all entries of a kind: Deposit:

Example request:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_Deposit?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



A single entry can be picked up from the list and processed by its Ref_key (a.k.a. guid). Using a guid in a query string, we command the database to call a certain entry

To get a specific object of a kind Deposit:

Example requests:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_Deposit(guid'da5686a0-847f-11e3-8058-e3003205b13a')?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



To create an object, you have to pass in the BODY (-d) of the request a JSON entry with desired fields

To create an object

Example requests:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_Deposit?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Body:



Example response:



At this point, the document is created and saved, but it will not reflect in the General Ledger. To do this, the document must be posted. After any document is created, retrieve the Ref_Key from the response and make the following API call.

Example request:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_Deposit(guid'da5686a0-847f-11e3-8058-e3003205b13a')/Post()?$format=json -H "Authorization: Basic ACCESS_TOKEN"

In order to process a single object one should first read the whole list and then to pick up a certain entry from it.

To get a list of all entries of a kind: Journal entry:

Example request:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_GeneralJournalEntry?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



A single entry can be picked up from the list and processed by its Ref_key (a.k.a. guid). Using a guid in a query string, we command the database to call a certain entry

To get a specific object of a kind Journal entry:

Example requests:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_GeneralJournalEntry(guid'3c595133-588a-11e4-80c3-002590f2d21f')?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



To create an object, you have to pass in the BODY (-d) of the request a JSON entry with desired fields

To create an object

Example requests:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_GeneralJournalEntry?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Body:



Example response:



At this point, the document is created and saved, but it will not reflect in the General Ledger. To do this, the document must be posted. After any document is created, retrieve the Ref_Key from the response and make the following API call.

Example request:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_GeneralJournalEntry(guid'3c595133-588a-11e4-80c3-002590f2d21f')/Post()?$format=json -H "Authorization: Basic ACCESS_TOKEN"

In order to process a single object one should first read the whole list and then to pick up a certain entry from it.

To get a list of all entries of a kind: Bill payment:

Example request:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_InvoicePayment?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



A single entry can be picked up from the list and processed by its Ref_key (a.k.a. guid). Using a guid in a query string, we command the database to call a certain entry

To get a specific object of a kind Bill payment:

Example requests:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_InvoicePayment(guid'1c653034-5b10-11e3-8058-e3003205b13a')?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



To create an object, you have to pass in the BODY (-d) of the request a JSON entry with desired fields

To create an object

Example requests:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_InvoicePayment?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Body:



Example response:



At this point, the document is created and saved, but it will not reflect in the General Ledger. To do this, the document must be posted. After any document is created, retrieve the Ref_Key from the response and make the following API call.

Example request:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_InvoicePayment(guid'1c653034-5b10-11e3-8058-e3003205b13a')/Post()?$format=json -H "Authorization: Basic ACCESS_TOKEN"

In order to process a single object one should first read the whole list and then to pick up a certain entry from it.

To get a list of all entries of a kind: Bill:

Example request:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_PurchaseInvoice?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



A single entry can be picked up from the list and processed by its Ref_key (a.k.a. guid). Using a guid in a query string, we command the database to call a certain entry

To get a specific object of a kind Bill:

Example requests:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_PurchaseInvoice(guid'870cc434-5b0f-11e3-8058-e3003205b13a')?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



To create an object, you have to pass in the BODY (-d) of the request a JSON entry with desired fields

To create an object

Example requests:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_PurchaseInvoice?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Body:



Example response:



At this point, the document is created and saved, but it will not reflect in the General Ledger. To do this, the document must be posted. After any document is created, retrieve the Ref_Key from the response and make the following API call.

Example request:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_PurchaseInvoice(guid'870cc434-5b0f-11e3-8058-e3003205b13a')/Post()?$format=json -H "Authorization: Basic ACCESS_TOKEN"

In order to process a single object one should first read the whole list and then to pick up a certain entry from it.

To get a list of all entries of a kind: Sales order:

Example request:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_SalesOrder?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



A single entry can be picked up from the list and processed by its Ref_key (a.k.a. guid). Using a guid in a query string, we command the database to call a certain entry

To get a specific object of a kind Sales order:

Example requests:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_SalesOrder(guid'5a153084-5b0e-11e3-8058-e3003205b13a')?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



To create an object, you have to pass in the BODY (-d) of the request a JSON entry with desired fields

To create an object

Example requests:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_SalesOrder?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Body:



Example response:



At this point, the document is created and saved, but it will not reflect in the General Ledger. To do this, the document must be posted. After any document is created, retrieve the Ref_Key from the response and make the following API call.

Example request:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_SalesOrder(guid'5a153084-5b0e-11e3-8058-e3003205b13a')/Post()?$format=json -H "Authorization: Basic ACCESS_TOKEN"

In order to process a single object one should first read the whole list and then to pick up a certain entry from it.

To get a list of all entries of a kind: Sales invoice:

Example request:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_SalesInvoice?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



A single entry can be picked up from the list and processed by its Ref_key (a.k.a. guid). Using a guid in a query string, we command the database to call a certain entry

To get a specific object of a kind Sales invoice:

Example requests:

GET https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_SalesInvoice(guid'2970472a-69a8-11e3-8058-e3003205b13a')?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Example response:



To create an object, you have to pass in the BODY (-d) of the request a JSON entry with desired fields

To create an object

Example requests:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_SalesInvoice?$format=json -H "Authorization: Basic ACCESS_TOKEN"

Body:



Example response:



At this point, the document is created and saved, but it will not reflect in the General Ledger. To do this, the document must be posted. After any document is created, retrieve the Ref_Key from the response and make the following API call.

Example request:

-X POST https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standard.odata/Document_SalesInvoice(guid'2970472a-69a8-11e3-8058-e3003205b13a')/Post()?$format=json -H "Authorization: Basic ACCESS_TOKEN"

In case when information stored in the database has to be changed one can edit it using a PATCH-command with a filter on a GUID.


Edit of a Product is listed below:


Example request:

-X PATCH https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standa
rd.odata/Catalog_Products(guid'de2d5215-941e-11e5-80c5-002590f2d221')?$format=json "Authorization: Basic ACCESS_TOKEN"

Body:



Example response:


Please note: if you edit a cell's value of a table of any object, you’ll have to transmit via PATCH-command the whole table’s content, even the one that has not been changed.


Body of a request for a product with a table LineItems:



Example response:



Usually it is strongly recommended to think twice before deleting data from AccountingSuite because there can be references to the deleted entries in the fields of another objects.
But if you are completely confident in your choice you’ll have to use a DELETE command.


Example request:

-X DELETE https://apps7.accountingsuite.com/a/{tenant_ID}/odata/standa
rd.odata/Catalog_Products(guid'de2d5215-941e-11e5-80c5-002590f2d221')?$format=json "Authorization: Basic ACCESS_TOKEN"