Ellipse Gradient for Header

Exact Online Integration Guide

Connect Exact Online’s division-specific REST/OData resources with enterprise applications through authenticated Martini workflows and APIs.

Exact Online integration options at a glance

Exact Online’s primary integration model is its OAuth 2.0-protected REST API, which exposes OData-style resources across functional domains such as CRM and Financial. Requests are generally division-specific and can use resource-dependent filtering, selection, ordering, and pagination. Selected resources also provide synchronization-oriented or bulk capabilities, while document and attachment resources support applicable file scenarios. A general all-object webhook model is not confirmed, so scheduled polling and documented incremental synchronization are the safer patterns. Martini can manage credentials and division configuration, consume these APIs, batch and transform data, apply business rules, persist checkpoints, and expose controlled APIs for downstream systems.

Integration pointSupported by Exact Online?Common use casesHow Martini supports it
REST/OData APIsYesPrimary access to Accounts, Contacts, Items, SalesInvoices, SalesItemLines, GLAccounts, and other domain resources. Requests normally include a versioned path, functional domain, division, and resource.Martini can consume Exact Online REST/OData resources, manage request configuration, paginate responses, transform payloads, and expose a downstream Martini API.
AuthenticationYesOAuth 2.0 authorization-code access uses a developer application, client ID, client secret, redirect URI, tokens, scopes, and a selected division.Martini can store secrets and environment-specific division settings, refresh access tokens, and use authenticated API calls in workflows.
Incremental synchronizationYesSelected Exact Online domains and objects provide synchronization-oriented resources or change information for retrieving data after a prior checkpoint.Martini can persist checkpoints, retrieve changes, protect against reprocessing, and handle supported inactive or deleted-record indicators.
Bulk / batch APIsLimitedBulk-oriented resources exist for selected operations or resources, but coverage and limits must be verified for each object.Martini can call supported bulk resources or implement bounded batching with pagination, checkpoints, and retry handling when bulk coverage is unavailable.
File / attachment APIsLimitedDocument and attachment-related resources support applicable invoice and business-file scenarios, with operations and binary behavior varying by resource.Martini can orchestrate document metadata and content transfers where the Exact Online resource supports them, while preserving related business identifiers.
Scheduled synchronizationYesScheduled polling is the recommended fallback when a general Exact Online webhook or event model is not confirmed.Martini scheduler-triggered workflows can poll resources, process pages, persist checkpoints, and resume after transient failures.
Webhooks / outbound callbacksNot confirmedA general all-object webhook mechanism was not confirmed, so push notifications for Accounts, Items, or invoices should not be assumed.Martini can receive a callback only when a separately verified Exact Online feature exists; otherwise it can use scheduled or incremental synchronization.
Database / analytics accessNot confirmedDirect Exact Online database access should not be assumed. Integrations should use the documented APIs or an officially supported export or reporting mechanism.Martini can load API-derived data into supported target databases or reporting pipelines without depending on undocumented vendor database access.

How Exact Online exposes data and business events

Exact Online REST/OData APIs

Exact Online’s primary public integration model uses versioned REST/OData resources organized by functional domain and division. Resource-dependent query options can support filtering, selection, ordering, and paging, but each resource’s behavior must be verified.

Martini implementation pattern

Martini implementation pattern: a workflow obtains an OAuth 2.0 access token, builds the division-specific resource request, retrieves pages, maps the response into a canonical model, applies business rules, and writes the result to the target or exposes it through a Martini API.

Implementation sequence

Load the configured Exact Online division and resource settings
Obtain or refresh the OAuth 2.0 access token
Request the selected Exact Online resource
Follow supported pagination or continuation information
Map the response into the target data model
Apply validation, ownership, and duplicate rules

Incremental synchronization

Selected Exact Online resources provide synchronization-oriented APIs or change information that can retrieve data after an earlier synchronization point. Availability and semantics vary by object and division.

Martini implementation pattern

Martini implementation pattern: a scheduled workflow reads the persisted checkpoint, requests supported changes, processes each page, commits successful target writes, and advances the checkpoint only after the relevant batch is durable.

Implementation sequence

Read the last successful synchronization checkpoint
Request changes using the resource’s documented synchronization fields
Process changed Accounts, Contacts, Items, or financial objects
Handle supported inactive or deleted indicators
Persist source and target identifiers for reprocessing protection
Advance the checkpoint after successful completion

Bulk and batch resources

Exact Online provides bulk-oriented resources for selected operations, but bulk coverage is not universal. The exact object and operation must be confirmed before implementation.

Martini implementation pattern

Martini implementation pattern: the workflow selects a supported bulk operation where available; otherwise it divides paged data into bounded batches, controls concurrency, retries transient failures, and records item-level outcomes.

Implementation sequence

Verify bulk support for the object and operation
Build a bounded request batch
Submit the bulk or batch request
Inspect item-level responses and validation errors
Retry transient failures with backoff
Store batch results and reconciliation totals

Documents and attachments

Exact Online exposes document and attachment-related resources for supported business objects. Binary content, metadata, and supported operations vary by resource.

Martini implementation pattern

Martini implementation pattern: Martini retrieves or submits document metadata and content through the documented resource, associates files with the source business identifier, and records transfer status without assuming uniform binary behavior across resources.

Implementation sequence

Verify document or attachment operations for the target resource
Retrieve the related business object and file metadata
Transfer supported content and metadata
Associate the file with the target invoice or business object
Record source identifiers and transfer status
Retry transient transfer failures without duplicating completed files

Scheduled synchronization

A general all-object Exact Online webhook mechanism was not confirmed. Scheduled polling is therefore the reliable general-purpose approach for discovering changes where synchronization resources are available.

Martini implementation pattern

Martini implementation pattern: a scheduler starts a workflow for each configured division and resource, applies bounded paging and rate-aware execution, and records checkpoints, errors, and reconciliation metrics.

Implementation sequence

Start the workflow on the configured schedule
Load division, resource, and checkpoint configuration
Poll the relevant Exact Online endpoint
Process pages within bounded concurrency
Persist successful checkpoints and audit results
Alert on repeated failures or stalled synchronization

Common Exact Online integration patterns

Pattern 1: Synchronize customers to a CRM

When to use this pattern

Use this pattern when Exact Online is the finance-owned source for Accounts and Contacts, or when customer ownership is explicitly shared with a CRM. It supports scheduled or incremental processing and protects against duplicates and inactive-record inconsistencies.

Integration direction
Exact Online
Martini
Salesforce
Example Mapping
Exact Online FieldCanonical FieldTarget Field
Account.IDcustomer.externalIdSalesforce Account.ExactOnlineId
Account.Namecustomer.nameSalesforce Account.Name
Contact.Emailcontact.emailSalesforce Contact.Email
Account.Statuscustomer.statusSalesforce Account.Status
Martini implementation pattern

A scheduled Martini workflow reads a division-specific checkpoint, retrieves changed Accounts and Contacts, validates relationships and required fields, resolves existing CRM records by external ID, and upserts the results. Business rules determine ownership and inactive handling; transient API failures are retried and failed items are retained for reprocessing.

Martini capabilities used
  • workflows
  • API consumption
  • OAuth 2.0 configuration
  • data mapping
  • business rules
  • checkpoint persistence
  • error handling

Pattern 2: Publish sales invoices

When to use this pattern

Use this pattern when SalesInvoices and SalesItemLines must be delivered to a customer portal, document-management application, reporting model, or another finance platform. Invoice lifecycle status must be respected rather than treating creation as final posting.

Integration direction
Exact Online
Martini
Customer portal
Example Mapping
Exact Online FieldCanonical FieldTarget Field
SalesInvoices.InvoiceNumberinvoice.documentNumberPortal Invoice Number
SalesInvoices.Currencyinvoice.currencyPortal Currency
SalesInvoices.Statusinvoice.processingStatusPortal Status
SalesItemLines.IteminvoiceLine.itemIdPortal Line Item ID
Martini implementation pattern

Martini polls the invoice resource or a supported synchronization resource, retrieves the associated lines, maps tax, currency, customer, and status fields, and publishes a normalized invoice payload. Deterministic invoice identifiers prevent duplicate delivery, while validation failures are separated from retryable transport errors.

Martini capabilities used
  • scheduled workflows
  • REST API consumption
  • data mapping
  • JSON handling
  • validation
  • duplicate detection
  • retry handling

Pattern 3: Process commerce orders into Exact Online

When to use this pattern

Use this pattern when Shopify or Magento orders need to create or update applicable Exact Online Accounts, Items, and financial sales resources. It is useful where customer matching, item resolution, tax treatment, and duplicate order handling must be centralized.

Integration direction
Shopify
Martini
Exact Online
Example Mapping
Exact Online FieldCanonical FieldTarget Field
order.idorder.externalIdExact Online source reference
customer.emailcustomer.emailAccounts.Email
line_items[].skuorderLine.itemCodeItems.Code
tax_lines[].pricetax.amountExact Online tax value
Martini implementation pattern

Martini receives or retrieves the commerce order, validates required customer and item references, resolves or creates matching Accounts, applies tax and payment mappings, and submits the appropriate Exact Online resources. The workflow uses deterministic duplicate checks, bounded retries, and an exception path for unresolved Items or invalid financial data.

Martini capabilities used
  • API consumption
  • workflow orchestration
  • data mapping
  • business rules
  • validation
  • duplicate detection
  • error handling

Pattern 4: Load Exact Online finance data into a reporting platform

When to use this pattern

Use this pattern when GLAccounts, invoice data, Accounts, Items, and payment-related resources must be extracted into a warehouse or reporting platform. It supports scheduled or incremental loads with reconciliation and late-change handling.

Integration direction
Exact Online
Martini
Microsoft Power BI
Example Mapping
Exact Online FieldCanonical FieldTarget Field
GLAccounts.IDledgerAccount.externalIdPower BI LedgerAccountId
SalesInvoices.InvoiceDateinvoice.datePower BI InvoiceDate
SalesInvoices.Amountinvoice.totalAmountPower BI TotalAmount
Accounts.IDcustomer.externalIdPower BI CustomerId
Martini implementation pattern

Martini runs division-aware extraction workflows, uses resource-specific incremental fields where available, transforms API responses into reporting structures, and loads the target through the selected ingestion design. It preserves source timestamps and identifiers, reconciles record counts and totals, and retries only transient failures.

Martini capabilities used
  • scheduled workflows
  • incremental synchronization
  • API consumption
  • data transformation
  • checkpoint persistence
  • reconciliation
  • monitoring

Applications commonly integrated with Exact Online

Exact Online can be integrated with adjacent business applications when customer, commerce, financial, reporting, or operational data must cross system boundaries. The appropriate direction and ownership model depend on the division, resource coverage, and business process.

Application Scenario Direction Martini Pattern
Salesforce Synchronize finance-owned Accounts and Contacts with CRM customer information and selected product or financial data. Exact Online → Martini → Salesforce A scheduled Martini workflow retrieves changed Accounts and Contacts, applies external-ID matching and ownership rules, then upserts Salesforce data with validation, retry handling, and audit checkpoints.
Shopify Transfer commerce orders, customers, products, and financial sales information into Exact Online. Shopify → Martini → Exact Online Martini receives or retrieves Shopify order data, resolves Accounts and Items, maps tax and payment values, and creates or updates the applicable Exact Online resources with duplicate-order protection.
Magento Post e-commerce sales and customer information to Exact Online while synchronizing catalog or accounting identifiers where required. Magento → Martini → Exact Online A Martini workflow consumes Magento data, normalizes customer and item identifiers, validates financial fields, and submits controlled Exact Online API requests with bounded retries.
HubSpot Align Accounts and Contacts with finance-owned customer records and support revenue-related reporting. Exact Online → Martini → HubSpot Martini polls Exact Online synchronization resources where available, maps customer and contact data to HubSpot, and applies duplicate detection and inactive-account rules before upsert.
Microsoft Power BI Provide invoice, customer, item, and financial data for reporting and management analysis. Exact Online → Martini → Microsoft Power BI Scheduled Martini workflows extract Exact Online resources by division, transform them into a reporting model or delivery payload, and load the selected Power BI ingestion design while preserving source identifiers and timestamps.
NetSuite Coordinate customer, item, invoice, and financial master data where Exact Online and NetSuite coexist across entities or regions. Exact Online → Martini → NetSuite Martini routes entity-specific data between the systems, applies ownership and reconciliation rules, and records source and target identifiers to prevent duplicate financial postings.
Jira Associate operational work and exceptions with customers, projects, invoices, or finance-related reference data. Exact Online → Martini → Jira Martini publishes selected Exact Online reference and invoice information to Jira and can route issue status or exception details back through controlled workflows.

How to build a Exact Online integration in Martini

Objective

Configure the Exact Online developer application, OAuth 2.0 settings, division identifier, scopes, and environment-specific secrets without embedding credentials in workflow logic.

Instructions in Martini

  • Configure the OAuth 2.0 authorization-code settings
  • Store the client secret and refresh token in Martini secrets
  • Set the Exact Online division as environment configuration
  • Verify access to the required functional domains and resources

Objective

Select scheduled polling or an incremental synchronization approach because a general Exact Online webhook model is not confirmed.

Instructions in Martini

  • Use a scheduler for recurring synchronization
  • Load the last successful checkpoint
  • Use a separately verified callback only when the required Exact Online feature is confirmed
  • Set bounded execution and concurrency limits

Objective

Call the relevant division-specific REST/OData resource and retrieve complete collections using supported pagination or synchronization parameters.

Instructions in Martini

  • Build the versioned domain and resource path
  • Apply only query options supported by the resource
  • Follow continuation or paging information
  • Capture source identifiers, timestamps, and response status

Objective

Coordinate retrieval, enrichment, validation, target writes, checkpointing, and exception handling as a maintainable Martini workflow.

Instructions in Martini

  • Separate extraction, transformation, and target-write stages
  • Use controlled loops for pages or batches
  • Persist intermediate processing state when required
  • Route validation failures separately from transient API failures

Objective

Convert Exact Online objects into a canonical or target-specific model while preserving division, document, financial, and relationship identifiers.

Instructions in Martini

  • Map Accounts, Contacts, Items, SalesInvoices, SalesItemLines, and GLAccounts explicitly
  • Normalize nullable and nested fields
  • Preserve currency, tax, payment-term, and processing-status information
  • Transform JSON structures into the target contract

Objective

Enforce business ownership, lifecycle, duplicate, fiscal-period, and data-quality rules before committing changes.

Instructions in Martini

  • Resolve external IDs before creating target objects
  • Validate required customer, item, tax, and ledger references
  • Do not treat invoice creation as final posting without status confirmation
  • Apply inactive, deleted, or merged-record handling where supported

Common Exact Online data objects used in integrations

ObjectTypical UseCommon target systemsMartini handling
AccountsOrganizations represented as customers or suppliers and used as the commercial party for transactions.Salesforce, HubSpot, Shopify, Magento, NetSuiteMartini retrieves or receives Accounts through REST/OData resources, normalizes identifiers and addresses, applies duplicate and ownership rules, and upserts the target.
ContactsPeople associated with Accounts and used for customer communication or CRM synchronization.Salesforce, HubSpot, JiraMartini maps contact relationships and communication fields, validates Account references, and handles inactive or changed contacts according to the synchronization policy.
ItemsProducts or services used in sales and purchasing processes.Shopify, Magento, NetSuite, reporting platformsMartini maps item identifiers, descriptions, status, and applicable commercial attributes, with resource-specific validation before writing downstream.
SalesInvoicesSales invoice headers containing document, customer, status, currency, tax, and processing information.Customer portals, document-management applications, NetSuite, data warehousesMartini preserves invoice identifiers and status, applies lifecycle rules, prevents duplicate delivery, and coordinates header processing with SalesItemLines.
SalesItemLinesLine-level products or services associated with SalesInvoices.Customer portals, reporting platforms, NetSuite, data warehousesMartini joins lines to invoice headers, maps Items and amounts, validates tax and currency details, and emits a normalized invoice structure.
GLAccountsGeneral ledger accounts used to classify and report financial postings.Data warehouses, Microsoft Power BI, NetSuiteMartini extracts GLAccounts by division, preserves source identifiers and effective source metadata, and transforms them into reporting or cross-system accounting models.

Authentication and security considerations

OAuth 2.0 access

Exact Online uses OAuth 2.0 authorization-code access through a developer application. Integrations typically require a client ID, client secret, redirect URI, scopes, access token, refresh token, and selected division.

Secrets and configuration

Martini can keep client secrets, refresh tokens, division identifiers, and environment-specific API settings in secure configuration rather than embedding them in workflow logic.

Division and permissions

Exact Online requests are generally division-specific and must use permissions appropriate to the requested resources. Limit scopes and access to the divisions and business domains required by the integration.

Operational considerations for Exact Online integrations

Pagination and checkpoints

Collection responses may require paging, and query support varies by resource. Persist checkpoints and source identifiers so interrupted runs can resume without reprocessing completed data.

Rate limits and retries

Confirm quotas and throttling for the relevant Exact Online subscription. Use bounded concurrency and exponential backoff for transient failures, while avoiding blind retries for validation or authorization errors.

Financial lifecycle and idempotency

Preserve invoice status, document numbers, currency, tax, payment terms, fiscal-period information, and division identifiers. Use deterministic duplicate checks because successful creation does not necessarily mean final posting.

Schema and testing

Resource availability and fields can vary by country, edition, division, and API version. Test representative Accounts, Items, invoices, lines, and ledger data, and monitor changes to resource behavior and deprecation notices.

Why use Martini instead of scripts or point-to-point integrations?

Orchestration beyond scripts

Martini separates API consumption, scheduling, transformation, validation, target writes, checkpointing, and error handling into maintainable workflows rather than isolated scripts.

Reusable integration assets

Teams can centralize Exact Online OAuth configuration, division-aware request patterns, canonical mappings, business rules, and controlled APIs for reuse across CRM, commerce, finance, and reporting processes.

Operational control

Martini provides workflow-based handling for pagination, bounded batching, retries, reconciliation, and monitoring. This reduces point-to-point coupling while retaining the flexibility to use custom logic where resource-specific behavior requires it.

Frequently asked questions

How can Exact Online be integrated with enterprise systems?

Exact Online is primarily integrated through its OAuth 2.0-protected REST/OData APIs. Enterprise workflows can retrieve or update division-specific resources such as Accounts, Items, SalesInvoices, SalesItemLines, and GLAccounts, using scheduled polling or documented incremental synchronization. Selected bulk and document resources can support specialized scenarios.

Can Martini integrate with Exact Online?

Yes. Martini can integrate with Exact Online by consuming its REST/OData APIs, managing OAuth 2.0 credentials and division configuration, orchestrating scheduled or incremental workflows, transforming data, and exposing controlled APIs for downstream applications.

Do I need a connector to integrate Exact Online with Martini?

No. A dedicated Exact Online connector is not required. Martini can use Exact Online’s confirmed native REST/OData APIs, OAuth 2.0 authentication, synchronization resources, and selected bulk or document resources.

Is there any extra Lonti cost to integrate Exact Online with Martini?

Lonti does not charge an additional per-connector or per-vendor fee to integrate Exact Online. Integrations are subject to the provisioned capacity of the Martini environment. Separate costs may apply from Exact Online, cloud infrastructure, or other third-party systems depending on subscription, usage, and deployment model.

Which Exact Online integration methods should be used?

REST/OData is the current primary method. Use resource-specific incremental synchronization where documented, selected bulk resources where supported, and document or attachment resources for applicable file scenarios. GraphQL and a current recommended SOAP model were not confirmed.

Can Exact Online push events or webhooks to Martini?

A general all-object Exact Online webhook or outbound-callback model was not confirmed. Do not assume that Accounts, Items, or invoice changes can be pushed. Scheduled polling and documented synchronization resources are the safer general patterns unless a specific callback feature is verified.

How does synchronization and data mapping work?

Martini can run division-aware scheduled or incremental workflows, persist synchronization checkpoints, page through resources, and map actual Exact Online objects into canonical or target models. It can preserve external IDs, document numbers, currencies, tax information, timestamps, and processing status while applying validation and ownership rules.

How are Exact Online errors, retries, and duplicates handled?

Martini can separate validation and authorization failures from transient transport or throttling failures, retry eligible failures with backoff, and use bounded concurrency. Persisted external IDs, deterministic duplicate checks, checkpoints, audit data, and reconciliation results help prevent duplicate writes and support safe reprocessing.