Exact Online and Jira integration
Exact Online runs accounting, purchasing, and projects. Jira tracks tasks, bugs, and work for software teams. Connecting the two keeps project costs, invoices, and purchase commitments visible inside Jira so teams see the financial impact of their work, and cost allocations from Jira worklogs flow back to Exact Online projects. ml-connector bridges two very different platforms: Exact Online's multi-region OData REST API with short token lifetimes and division-based routing, and Jira's issue-centric webhook model with 30-day expiry windows.
What moves between them
The main flow is from Exact Online into Jira. Purchase orders and invoices from Exact Online are mapped to Jira issue custom fields, and cost data is appended to issue comments or custom fields so teams see the purchasing context. Exact Online projects and their costs are synced into Jira projects. Worklogs created in Jira are read by ml-connector and posted as time transactions back to Exact Online projects. GL accounts and cost centers from Exact Online are synced to Jira so custom field dropdowns reflect valid accounting dimensions. Changes to projects or purchase orders in Exact Online trigger webhooks that update the corresponding Jira issues.
How ml-connector handles it
ml-connector stores both credential sets encrypted and manages Exact Online's short token lifetime by refreshing the access token when a call returns 401. It fetches the division ID from the /current/Me endpoint on first auth and caches it for the customer. On the Jira side, it registers webhooks and tracks their 30-day expiry, refreshing them via PUT before they expire so events do not get dropped. For each customer, ml-connector maps the region-specific Exact Online base URL (Netherlands, Belgium, UK, Germany, France, Spain, or USA) to the correct endpoint. Purchase orders and invoices are fetched from Exact Online via OData query and mapped to Jira issue custom fields; because Exact Online does not support $expand, line items are fetched in separate requests and assembled before posting to Jira. Webhook payloads from Exact Online include only the entity key and action type, so ml-connector immediately fetches the full record via REST. Worklogs from Jira are read via webhook and posted as time transactions to the matching Exact Online project, with cost center and GL account validation on each post. Exact Online webhooks are validated using HMAC-SHA256 computed over the Content node with the webhook secret from the App Center. Refresh tokens must be used at least once every 30 days or the user must re-authorize, so ml-connector tracks refresh token age and alerts when renewal is approaching.
A real-world example
A mid-sized software consulting firm uses Exact Online for billing, project accounting, and vendor management, and uses Jira to track development work, QA, and support tickets across multiple client projects. Before the integration, project managers spent time each week pulling purchase orders and invoice totals from Exact Online and pasting them into Jira issue comments to remind teams of budget constraints. Time entries in Jira were exported to a spreadsheet and re-entered into Exact Online projects to track labor costs. With Exact Online and Jira connected, purchase orders and invoice summaries are attached to issues automatically when linked, and time logged in Jira flows directly to Exact Online as project time transactions. Budget and cost visibility are embedded in daily work, and month-end project accounting closes without manual re-entry.
What you can do
- Sync purchase orders and invoices from Exact Online to Jira issues, mapped to custom fields so teams see project cost context.
- Post Jira worklogs as time transactions back to Exact Online projects, with automatic cost center and GL account validation.
- Validate Exact Online GL accounts and cost centers against Jira custom field dropdowns so posting always lands on valid accounting dimensions.
- Refresh Exact Online access tokens (10-minute lifetime) and Jira webhooks (30-day expiry) automatically, with alerts when token renewal is approaching.
- Handle multiple Exact Online regions (Netherlands, Belgium, UK, Germany, France, Spain, USA) with division ID routing, and validate webhook signatures via HMAC-SHA256.
Questions
- Which direction does data move between Exact Online and Jira?
- The main flow is from Exact Online into Jira. Purchase orders, invoices, and project costs are synced to issue custom fields so teams see financial context. Worklogs created in Jira are read by ml-connector and posted as time transactions back to Exact Online projects with automatic cost center validation. GL accounts and cost centers are synced bidirectionally so accounting dimensions are consistent.
- How does ml-connector handle Exact Online's 10-minute access token and 30-day refresh token?
- ml-connector stores credentials encrypted and tracks token expiry. When an API call returns 401, it refreshes the access token immediately. It also monitors refresh token age and alerts when renewal is approaching, since refresh tokens must be used at least once every 30 days or the user must re-authorize. Division IDs are fetched once from the /current/Me endpoint and cached per customer.
- What happens when Exact Online and Jira webhooks expire?
- Exact Online webhooks are registered per topic per division and validated using HMAC-SHA256. Jira webhooks expire after 30 days and must be refreshed before that window closes. ml-connector tracks both webhook types and refreshes Jira webhooks via PUT before expiry. If a webhook stops firing, ml-connector falls back to polling the source system until the webhook is restored.
Related integrations
More Exact Online integrations
Other systems that connect to Jira
Connect Exact Online and Jira
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started