This page describes outbound API connections (XLReporting calling an external
system).
For inbound API connections (an external system calling
XLReporting), please refer to API integration.
XLReporting provides connectors to external systems and generic web API's. You can use these connectors to retrieve source data and define your own imports. You have full control over source data, field mapping, data conversion, and calculations between your external system and your data sets in XLReporting.
When running an import, the user will be redirected to the external system to login, select the desired company, and give consent to XLReporting to read the data. Access is only granted to each individual user within the user's own browser.
As an example, below is the connection process for our Xero connector:
Endpoints are specific to each external system that you're connecting to. Endpoints typically consist of a base web address, a URL for each type of information that you can access in that system, and optional parameters. We are providing the full API reference for each system, as well as example endpoints: Charts of Accounts and Trial Balance. These are just examples for each source system, you are not in any way limited to these.
A common requirement is to import the List of companies, Chart of Accounts and Trial balance as per a given period, for one or multiple companies. XLReporting provides alias endpoints which will convert into the correct endpoint for each external system:
Endpoints often accept parameters to filter the requested information. You can embed functions into the endpoint description to insert dynamic values, such as selected values (e.g. SELECTED) or session values (e.g. TENANT or USER). Optionally, by starting the endpoint with the = character, you can even create a full expression to calculate values and construct dynamic endpoints.
Each endpoint and source system returns its own data structure, with its own convention of field names. XLReporting translates all data into the relevant (named) columns and rows, without altering or filtering the source data. This provides maximum flexibility in terms of converting and mapping the original source data to data sets in XLReporting. However, you should keep in mind that each endpoint may return different field names.
The special alias endpoint @balances/YYYY-MM/track is an exception to this rule: this endpoint returns data that XLReporting combines from multiple underlying endpoints on the supported source system, and XLReporting returns common field names (which exist in all source systems), supplemented with any additional specific field names. These common field names are:
Several connectors require client-specific settings to be passed in each request, such as cluster, company, or access tokens. When applicable, you can provide these as a suffix in the endpoint (e.g. request/company/token). These values can be hard-coded in each endpoint, but you can also specify them as global settings of the tenant, and then reference them in the endpoint by using the SETTING() function.
Most external systems divide their results into "pages", with each page containing a certain
number of rows. XLReporting will automatically request next pages and merge the results of all
pages into 1 single set of data. External systems may also impose a limit on the number of
requests that can be made within a certain time unit (for example, within a minute or on a
day). XLReporting applies a maximum of 50 page requests within each import to stay within the
most common limits. The limits are decided by the supplier and not within our control.
If you import a lot of data, you may get error messages when you exceed the limit. Just wait a
short while and run the import again. Always try to filter your data as much as possible.
Like everything else in XLReporting, connectors to other systems are fully configurable. Whether you want to import financial data or non-financial data, in summary or in detail, XLReporting does not impose any limitations or predefined structure. You can access all data in your external system. That does require some configuration in your import, in terms of selecting the source data and defining the mapping into your data sets in XLReporting.
This page shows a link with endpoint documentation as well as a few example endpoints for each system, but you are not limited to those. Please consult your system for all available API endpoints.
You can add optional flags to all endpoints:
You can specify multiple -SEND and -LIST parameters, but only one -FIND, -READ and -SHOW parameter. All parameters are case-sensitive.
https://api.example.com -FIND:rates
https://api.example.com -SEND:token:12345 -SEND:client:ABC
https://api.example.com -SEND:Authorization:12345 -FIND:rates
https://api.example.com -READ:12345
https://api.example.com -LIST:list.rates.symbol
https://api.example.com -SHOW:1
{
base: "USD",
list: {
rates: [
{symbol: GBP, rate: 1.1}
{symbol: EUR, rate: 1.2}
]
}
}
You can extract the list of rates from this response by:
-FIND:list.rates
If you need any help understanding your data or defining your import, please contact us and we'll be happy to help you.
Are you connecting to multiple companies? When importing data, there are 2 different methods of selecting the desired company in the external system:
If you want to get a list of all companies in your external system that XLReporting is connected to, you can use alias endpoint @companies.
Once you have selected the source data, you can optionally convert or recalculate that data, as part of the column mapping into your data set. You can use a single function or an expression with multiple functions and operators.
If an API returns nested data within the main object, XLReporting will show that in its entirety in one single source column. You can use the JSON function to extract the required information from that source column.
You can access any public endpoint that either doesn't require authentication, or accepts a static authentication token.
As explained above, you can append each endpoint with the optional parameters -SEND, -READ, -FIND, -LIST, and -SHOW. You can also use functions to insert dynamic parameters in endpoints.
https://restcountries.com/v3.1/all
https://api.exchangeratesapi.io/v1/latest/USD -SEND:token:12345 -SEND:client:ABC
https://api.exchangeratesapi.io/v1/latest/USD -SEND:Authorization:12345 -FIND:rates
https://restcountries.com
https://www.exchangeratesapi.io
Website: https://www.afas.nl
You can access GetConnectors and ReportConnectors as
endpoints.
You need to retrieve your client ID, your AFAS token, and the connector ID or
ReportGUID within AFAS Online before you can define the import in XLReporting.
Please
contact us for details and support.
data/clientID/apiKey
report/data/clientID/apiKey
(data = Connector ID or ReportGUID, clientID = your client ID, apiKey = your AFAS
token)
See AFAS Help for details.
There are no public endpoints, you need to define your own GetConnectors and ReportConnectors within AFAS Online.
Website: https://www.airtable.com
You can access any of your bases as endpoints.
You need to specify the base ID, the name of
the base, and your API key. These are all provided within Airtable.
We always recommend you create a read-only API key for this purpose.
Bases in Airtable are essentially tables with rows and columns, but individual fields can also
contain multiple rows and values. XLReporting will retrieve the main level of rows and fields,
and you can use the -LIST parameter (see endpoints) to retrieve
specific data from fields with multiple rows, and place them into separate columns.
Example: products.0.name will retrieve the name of the 1st row within the product field.
baseID/name/apiKey
(baseID = the base ID, name = the name of the base, apiKey = your API key)
If you use filters, you must include these in the endpoint as URL parameters before
/apiKey. More information can be found here:
https://support.airtable.com
https://support.airtable.com
https://airtable.com/api
https://airtable.com/account
Website: https://www.bigredcloud.com
You need to retrieve your client ID and your API key within the Big Red Cloud application before you can use the import in XLReporting.
accounts/apiKey
sales/apiKey
products/apiKey
customers/apiKey
(apiKey = your API key)
If you use filters, you must include these in the endpoint as URL parameters before /apiKey.
https://www.bigredcloud.com/support/api
https://www.odata.org
Website: https://dataddo.com
We partner with Dataddo, enabling you to create automated data feeds from your source system into XLReporting. You will find XLReporting as a predefined destination within Dataddo.
We can help you to configure your Dataddo account and the integration to XLReporting. Please contact us for details.
Website: https://dearsystems.com
You need to retrieve your client ID and your API key within the Dear application before you can use the import in XLReporting.
ref/account/clientID/apiKey
saleList/clientID/apiKey
product/clientID/apiKey
customer/clientID/apiKey
(clientID = your client ID, apiID = your API key)
If you use filters, you must include these in the endpoint as URL parameters before /clientID/apiKey.
https://dearinventory.docs.apiary.io
Website: https://onderwijsdata.duo.nl/datasets
This is a public API that exposes public datasets from the public education sector in the Netherlands.
You may have to use the -FIND and -LIST parameters (see endpoints) to retrieve specific data from a given dataset.
resourceID/filter
(resourceID = the ID of the requested data, filter = optional filter)
The DUO API will not return more than 50.000 rows per request, so you may need to filter the data. If you define a filter value, this will be applied to all columns in the results. See below screenshot, in which the data is filtered on 00AR.
Website: https://dynamics.microsoft.com
Requires client-specific
settings in Azure Portal and Dynamics 365. If you are using an on-premise version of GP, AX, or
Dynamics, this connector will not work and we recommend our SQL connector
instead.
Please contact us for details.
https://docs.microsoft.com/en-us/dynamics365
Website: https://www.exact.com
@companies
@accounts
@balances/YYYY-MM
financial/GLAccounts
financial/ReportingBalance?$filter=ReportingYear eq YYYY and ReportingPeriod eq MM
Are you connecting to multiple companies? Exact Online enables you to login and keep XLReporting connected to multiple companies (organizations) at the same time. To ensure you can select the right company when running an import, you need to use the -READ flag in the import definition.
Exact Online optionally allows the use of cost center and cost unit tracking to record activity within each account, but this information is not included in the standard Trial Balance in Exact Online. Furthermore, Exact Online uses an internal account type (reporting codes) that designates the account category in Balance Sheet and Profit & Loss reports. XLReporting provides a special alias endpoint @balances/YYYY-MM/track to retrieve balances per each combination of account, cost center, and cost unit, including the reporting code. This is ideal for multi-dimensional reporting and analysis. Using reporting codes (instead of GL account codes) is also an alternative method of importing and mapping data into XLReporting.
The "ReportingBalance" endpoint in Exact Online does not include the opening balances. Opening balances need to be retrieved from a separate endpoint "OpeningBalance". To simplify working with Exact Online, XLReporting will automatically include the opening balances if you request period 01 (e.g. 2022-01) with the special alias endpoint @balances/YYYY-MM/track.
@balances/YYYY-MM/track
Please note that Exact Online enforces very strict and low API rate limits, so please make sure you moderate the number of imports you run per minute and per day.
https://start.exactonline.nl
https://www.odata.org
Website: https://exchangeratesapi.io
Current and historical currency exchange rates.
latest?access_key=apiKey
latest?access_key=apiKey&symbols=USD,GBP
latest?access_key=apiKey&base=USD&symbols=EUR,GBP
2019-02-15?access_key=apiKey
2019-02-15?access_key=apiKey&symbols=USD,GBP
(apiKey = your API key)
Website: https://www.freshbooks.com
@companies
@accounts
@balances/YYYY-MM
@balances/YYYY-MM-DD:YYYY-MM-DD (from-to dates)
journal_entry_accounts/journal_entry_accounts
reports/accounting/trial_balance?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD
https://www.freshbooks.com/api/start
https://documenter.getpostman.com
Website: https://www.lightspeedhq.com
You need to retrieve your API key, API secret, and cluster within the Lightspeed application before you can use the import in XLReporting.
You can access any endpoint. We always recommend you create a read-only API key for this purpose.
customers/apiKey/apiSecret/cluster
invoices/apiKey/apiSecret/cluster
(apiKey = your API key, apiSecret = your API secret, cluster = your cluster)
If you use filters, you must include these in the endpoint as URL parameters before /apiKey.
https://developers.lightspeedhq.com/ecom
Website: https://www.loket.nl
This connector may include personal details, and will only be activated for your tenant subject to review and a signed data processing agreement. Please contact us for details.
employers/employerID/employees
employers/employerID/payrolladministrations/journalruns
(employerID = your employer ID)
Website: https://www.moneybird.com
@companies
@accounts
@balances/YYYY-MM
ledger_accounts
financial_accounts
https://developer.moneybird.com
Website: https://www.myob.com
Myob uses 2 regional servers for its clients: au (Australia) and nz (New Zealand). You need to specify this in the import in XLReporting.
@companies/region
@accounts/region
@balances/YYYY-MM/region
@balances/YYYY-MM-DD:YYYY-MM-DD (from-to dates)
generalledger/accounts/region
generalledger/accounts/balances?fromDate=YYYY-MM-DD&toDate=YYYY-MM-DD/region
(region = your Myob region: "au" or "nz")
If you use filters, you must include these in the endpoint as URL parameters before /region.
https://developer.myob.com/api/essentials-accounting/endpoints/
Website: https://www.oracle.com
You need to retrieve your cluster (the part of the URL that preceeds ".oraclecloud.com", for example "servername.fa.us2"), company (your Oracle ledger name), and access token within the Oracle Cloud application before you can use the import in XLReporting. If you are using Oracle Fusion (the on-premise application), this connector will not work and we recommend our SQL connector instead.
@accounts/cluster/company/token
@balances/YYYY-MM/cluster/company/token
ledgersLOV/cluster/company/token
(cluster = your Oracle cluster, company = your ledger name, token = your access token)
If you use filters, you must include these in the endpoint as URL parameters before /cluster/company/token. The "finder" parameter is a key parameter in selecting the right data.
https://docs.oracle.com/en/cloud/saas
Website: https://www.netsuite.com
You need to retrieve your Netsuite accountID and oAuth access token within the Oracle Netsuite application before you can use the import in XLReporting.
@accounts/company/token
account/company/token
customer/company/token
vendor/company/token
(company = your accountID, token = your access token)
https://system.netsuite.com/help/helpcenter
This connector is only available in client tenants of XLReporting partners. It enables you to import data from the partner tenant. The endpoint is the data set ID in the partner tenant. This data set must be active, and must have permission "Access API". When using this connector in a client tenant, it is "trusted" by the associated partner tenant so an API token is not required.
t1
t2
Website: https://quickbooks.intuit.com
You can access reports and queries as endpoints.
@companies
@accounts
@balances/YYYY-MM
@balances/YYYY-MM/track
@balances/YYYY-MM-DD:YYYY-MM-DD (from-to dates)
@balances/YYYY-MM-DD:YYYY-MM-DD/track (from-to dates)
reports/AccountList
reports/TrialBalance?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD
reports/GeneralLedger?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD
Are you connecting to multiple companies? Quickbooks only allows you to login and connect XLReporting to one company at a time. To ensure you can select the right company when running an import, you have to disconnect and reconnect which will ask you to log in again to Quicbooks and choose a different company.
Quickbooks optionally allows the use of class and location tracking to record activity within each ledger account, but this information is not included in the standard Trial Balance in Quickbooks. Furthermore, Quickbooks uses an internal account type (reporting codes) that designates the account category in Balance Sheet and Profit & Loss reports. XLReporting provides a special alias endpoint @balances/YYYY-MM/track to retrieve period-end balances per each combination of ledger account, class, location, customer, and vendor, including the reporting code. This is ideal for multi-dimensional reporting and analysis. Using reporting codes (instead of GL account codes) is also an alternative method of importing and mapping data into XLReporting.
@balances/YYYY-MM/track
track = "track" for balances
per account/class/location/customer/vendor, or "track1" for balances per account/class/location,
or "track2" for balances per account/customer/vendor.
Please note that the Trial Balance report in Quickbooks always shows year-to-date balances, even if you select a start date and end date. The alias @balances/YYYY-MM retrieves the Trial Balance report. If you want to retrieve amounts for the selected period only, you should use the alias @balances/YYYY-MM/track which retrieves data from the Profit & Loss and Balance sheet reports within Quickbooks.
https://developer.intuit.com/app/developer/qbo/docs/reports
select * from Account
select * from Customer
https://developer.intuit.com/app/developer/qbo/docs/entities
https://developer.intuit.com/app/developer/qbo/docs/queries
Website: https://www.reeleezee.nl
You need to use your Reeleezee user name and password to define the import in XLReporting.
@accounts/user/password
@balances/YYYY-MM/user/password
Financials/LedgerBalances/user/password
(user = your Reeleezee user name, password = your Reeleezee password)
If you use filters, you must include these in the endpoint as URL parameters before /user/password.
https://apps.reeleezee.nl/api/v1/Help
Website: https://www.sage.com
@companies
@accounts
@balances/YYYY-MM
@balances/YYYY-MM-DD:YYYY-MM-DD (from-to dates)
ledger_accounts
ledger_entries?from_date=YYYY-MM-DD&to_date=YYYY-MM-DD
https://developer.sage.com/api
Website: https://www.salesforce.com
You can access objects and queries as endpoints.
You need to retrieve your Salesforce domain (the part of the URL that preceeds ".my.salesforce.com", for example "mydomain") and access token within the Salesforce application before you can use the import in XLReporting.
sobjects/domain/token
sobjects/Account/domain/token
(domain = your Salesforce domain, token = your access token)
https://developer.salesforce.com/docs
query?q=SELECT * from Account/domain/token
query?q=SELECT code, name from Account/domain/token
(domain = your Salesforce domain, token = your access token)
Website: https://www.sap.com/products/business-one.html
We support integration with SAP Business One via the SAP Integration Suite, the SAP API Gateway, or the SAP B1 Service Layer. As this requires some client-specific installation and configuration, please contact us for further details.
We also support integration through Excel exports. SAP provides multiple options to export reports and data lists into Excel files, which can then be imported into XLReporting. In SAP, you can click on the List menu, and then select the Export option and the Spreadsheet option.
SAP Cloud Integration
Exporting data to
Excel
Website: https://www.snelstart.nl
@companies/sleutel
@accounts/sleutel
@balances/YYYY-MM/sleutel
grootboeken/sleutel
rapportages/periodebalans/sleutel
(sleutel = your SnelStart koppelingsleutel)
If you use filters, you must include these in the endpoint as URL parameters before /sleutel.
We provide custom integration between XLReporting and SQL databases.
For security reasons, XLReporting can and will never make directs calls to databases. We follow the opposite approach: your database will make an outbound call to the XLReporting API and only needs to send the required data. The joining, filtering, and representation of data will be done in SQL views or stored procedures that remain fully within your own control. This is a very secure method, and ideal if your database server is located within your office, an on-premise network, or private cloud. Please see the "PUSH" option in the custom integrations.
This is effectively an inbound connection, and it is documented in our API integration.
We can provide you with connection scripts and support for most popular database systems. Please contact us for details.
Website: https://www.wolterskluwer.com
You can access finder, browse, and list as endpoints.
The endpoint finder/type/option (type = the finder type) retrieves master data from Twinfield. Option is optional. If you specify option, it must be in the format option=value (or multiple values separated by a comma, without spaces). See Twinfield finder codes.
The endpoint list/code (code = the browse code) retrieves all available field names of a given browse code.
The endpoint browse/code/filters/fields (code = the browse code) retrieves transaction data from Twinfield. Filters and fields are optional parameters. If you specify filters or field names, you need to list them separated by a comma, without spaces. Filters can either be a single value for equal comparison, or 2 values for between comparison, separated by a comma (e.g. from,to). See Twinfield browse codes.
Twinfield uses 2 "clusters" (data centers): "accounting" and "accounting2". You can find that in the URL once you have logged into the Twinfield web application. We use its main cluster "accounting" as the default. If your company is on the other cluster, you need to append "/cluster2" (in lowercase) to the endpoint (e.g. list/code/cluster2).
The alias @balances for the Twinfield connector does not import account balances but account transactions (browse code 030_3). You can either import one single period (@balances/YYYY-MM), or from one period up to another period (@balances/YYYY-MM:YYYY-MM). This additional syntax differs from all other connectors.
@companies
@accounts
@balances/YYYY-MM
@balances/YYYY-MM:YYYY-MM (from-to period)
finder/DIM
finder/DIM/dimtype=BAS,PNL
list/000
browse/000/fin.trs.head.yearperiod=YYYY-MM
browse/000/fin.trs.head.yearperiod=YYYY-MM:YYYY-MM
browse/000/fin.trs.head.yearperiod=YYYY-MM/fin.trs.head.number,fin.trs.head.curcode,fin.trs.line.repvaluesigned
Are you connecting to multiple companies? Twinfield enables you to login and keep XLReporting connected to multiple companies (organizations) at the same time. To ensure you can select the right company when running an import, you need to use the -READ flag in the import definition.
https://accounting.twinfield.com/webservices/documentation
Website: https://www.unit4.com
@companies
@accounts
@balances/YYYY-MM
AccountInfoList
AccountPeriodTotalInfoList/ByPeriod/fiscalYear/startPeriod/endPeriod
https://api.online.unit4.nl/V18/Help
Website: https://nl.visma.com
@accounts
@balances/YYYY-MM
accounts
accountbalances/date
https://eaccountingapi-sandbox.test.vismaonline.com
Website: https://www.visma.com
This connector may include personal details, and will only be activated for your tenant subject to review and a signed data processing agreement. Please contact us for details.
You need to retrieve your tenant ID and give access to XLReporting within your Visma application before you can use the import in XLReporting.
contracts/YYYY-MM/tenantID
roster/YYYY-MM/tenantID
wages/YYYY-MM/tenantID
leaves/YYYY-MM/tenantID
sickness/YYYY-MM/tenantID
budgets/YYYY-MM/tenantID
functions/YYYY-MM/tenantID
paycodes/YYYY-MM/tenantID
accounting/YYYY-MM/tenantID
(tenantID = your VismaHR tenant ID)
https://api.analytics1.hrm.visma.net/docs/openapi.html
Website: https://www.nmbrs.com
This connector may include personal details, and will only be activated for your tenant subject to review and a signed data processing agreement. Please contact us for details.
You need to retrieve your domain, user, token, and company ID to XLReporting within your Nmbrs application before you can use the import in XLReporting.
journals/YYYY-MM/domain/user/token/companyID
(domain, user, token, and companyID = your specific Nmbrs details)
Website: https://www.waveapps.com
@accounts
@balances/YYYY-MM
accounts
invoices
https://developer.waveapps.com
Website: https://www.xero.com
@companies
@accounts
@balances/YYYY-MM
@balances/YYYY-MM/track
@balances/YYYY-MM-DD:YYYY-MM-DD (from-to dates)
@balances/YYYY-MM-DD:YYYY-MM-DD/track (from-to dates)
Accounts
Reports/TrialBalance?date=YYYY-MM-DD
Are you connecting to multiple companies? Xero enables you to login and keep XLReporting connected to multiple companies (organizations) at the same time. To ensure you can select the right company when running an import, you need to use the -READ flag in the import definition.
Xero optionally allows the use of (up to 2) tracking categories to record activity within each account, but this information is not included in the standard Trial Balance in Xero. Furthermore, Xero uses an internal account type (reporting codes) that designates the account category in Balance Sheet and Profit & Loss reports. XLReporting provides a special alias endpoint @balances/YYYY-MM/track to retrieve balances per each combination of account and tracking categories, including the reporting code. This is ideal for multi-dimensional reporting and analysis. Using reporting codes (instead of GL account codes) is also an alternative method of importing and mapping data into XLReporting.
@balances/YYYY-MM/track
track = "track" for both tracking categories, or
"track1" for the 1st tracking category, or "track2" for the 2nd tracking category.
https://developer.xero.com/documentation
Website: https://zapier.com
We provide integration between XLReporting and Zapier, enabling you to create workflow tasks. For example, to automatically send data into XLReporting upon a defined event in your other systems.
We can help you to define a connection between XLReporting and your Zapier account. Please contact us for details.
Website: https://www.zoho.com/books/
@companies
@accounts
@balances/YYYY-MM
@balances/YYYY-MM-DD:YYYY-MM-DD (from-to dates)
chartofaccounts
journals?date_start=YYYY-MM-DD&date_end=YYYY-MM-DD
https://www.zoho.com/books/api
Not all systems have an API or the ability to export to Excel, CSV, XML, or JSON files. XLReporting can also import data from PDF reports with a small intermediate step.
Using tools such as Free PDF Convert, you can convert your PDF file to an Excel file, and then import that Excel file into XLReporting.
We can provide you with support where needed. Please contact us for details.
Is your system not mentioned on this page? Let us know. If your system has a REST API and is accesible on the internet, we may add a standard connector in XLReporting. Otherwise, we can create a custom integration for you. It does not matter whether your system is hosted in the cloud or behind a firewall in your private office network, we can set up any integration using 3 different methods: Pull, Push, and File Export/Import.
If your system is not accesible from the internet, or if it does not support an inbound API, we can provide you with Unix Bash, Python, SQL, and Windows Powershell scripts that you can run and manage on your own server. These scripts will connect to your local databases (through SQL views that you can manage yourself) and make outbound calls to the XLReporting API to send the required data.
XLReporting supports Single Sign-On with Azure, Auth0, SecureLogin, Google Identity, Okta, WorkOS, SURFconext, and any other Identity Provider that supports the "OpenID Connect" protocol. This is a standardized and widely supported protocol for integrating single sign-on.
For more information, please see OpenID Connect.
Enabling SSO is a matter of exchanging certain information, keys, and redirect URL's between XLReporting and your Identity Provider system. What we need from you is the following information (which will be generated and determined by your Identity Provider system):
You can download our SSO credentials form, fill it
in, and submit it through our Secure Upload Page.
Please note that
SSO credentials are secret, so never send this information over email.
Please contact us for further information, or if you want
to enable SSO.
An extra monthly fee will apply.