Overview

This project is a background integration that connects Autotask—a professional services automation platform—with Visma—a leading Nordic accounting system. The integration ensures seamless synchronization of invoices, companies, products, and services between the two systems, eliminating manual data entry and reducing the risk of financial discrepancies.

Designed for reliability and accuracy, the system automatically creates invoices in Visma when they are generated in Autotask. Once the invoice is updated or marked as paid in Visma, that information is sent back to Autotask to keep both platforms in sync. Additionally, company data, service items, and product listings are regularly synced to maintain consistency across systems.

How it works

The integration operates on a scheduled timer and performs regular sync checks in both directions. No webhooks are used—instead, the system polls for changes at defined intervals and processes any updates or new records found.

  • Forward Sync: When an invoice, company, product, or service is created or updated in Autotask, it is pushed to Visma with all relevant data. Articles are created dynamically in Visma based on line item types.
  • Reverse Sync: When an invoice is updated in Visma—e.g., marked as paid—the new status is fetched and sent back to Autotask to reflect the correct financial state.

Communication is handled using REST APIs, with Laravel queue jobs and scheduling ensuring reliable, periodic execution of all sync tasks.

Phase 1: Mapping & Schema Design

A detailed mapping exercise aligned Autotask's data structures with Visma's API requirements. This included handling customer accounts (companies), various invoice line items (services, products, materials), and ensuring consistent article creation rules in Visma.

Products and services from Autotask were translated into Visma articles with appropriate tax codes, price levels, and categories. Customer records were normalized and matched using unique identifiers or email addresses.

Phase 2: Sync Engine Development

We built a Laravel-based sync engine that runs on a scheduled timer. The engine handles:

  • Invoice creation and updates
  • Customer creation and syncing
  • Product and service syncing as Visma articles
  • Status polling for payment and invoice updates

Sync operations are logged and retried on failure, with an internal dashboard for audit tracking and manual re-processing when needed.

Phase 3: Testing & Edge Case Handling

Testing focused on edge cases like partially paid invoices, split payments, company name collisions, and article mismatches. All scenarios were addressed through conflict resolution logic and fallback handling.

The system also includes validation to ensure only complete and valid data is pushed between systems, avoiding silent failures or incomplete records.

Challenges & Solutions

  • Multiple data types: Syncing invoices, companies, products, and services required careful separation of responsibilities and API call batching to avoid overload.
  • Polling-only model: Without webhooks, we used timed intervals with diff-checking logic to detect changes and avoid unnecessary processing.
  • Data integrity: Ensuring accurate cross-referencing of IDs between platforms required maintaining a synced relationship table internally.

Results

The Autotask–Visma integration now provides a fully automated background sync for all key financial and business data. Manual entry is no longer needed, and teams on both sides can trust their data is always accurate and up to date.

By operating quietly in the background, this integration has become a reliable bridge between operations and finance, enabling better reporting, fewer errors, and faster workflows.