All products

FinTech / Financial integration / Enterprise automation

FinSync

Financial integration platform — from the ERP to the consolidation platform

Every month, a multi-entity group has to pull the trial balance of each legal entity out of its ERP, apply its accounting rules and deliver a file its consolidation platform can load — a chain that used to depend on hand-maintained workflows and on the person who built them. FinSync runs that chain on a schedule, end to end: extraction, deterministic transformation, file generation, SFTP delivery and an email summary, with every step logged and every run auditable.

  • 8 logged steps per run, from extraction to notification
  • 3 levels of data kept per run: raw, normalized, final
  • 12 server functions behind the pipeline
Status
In production
Model
B2B
Market
Canada

The problem

Group consolidation starts with a monthly chore. For each legal entity, extract the trial balance from the cloud ERP; decide which balances to send — closing balances for balance-sheet accounts, period movements for income-statement accounts, specific handling for tax and retained-earnings accounts; lay the result out in the exact flat format the consolidation platform expects; drop it on an SFTP server; tell the finance team it is done. Done by hand or with fragile workflow automations, the chain depends on one person, stops on an expired API token and leaves no trace of what was sent, when, and from which figures.

The solution

A dedicated web application that owns the whole chain. The finance team connects the ERP once through OAuth, maintains its list of legal entities, and either launches a run or lets the scheduler do it. Each run extracts the trial balance of every selected entity, applies the group’s accounting rules deterministically, generates a single CSV in the layout expected by CCH Tagetik, uploads it by SFTP when no entity is in error and emails a per-entity summary — keeping the raw, normalized and final data of every run for audit. Sage → CCH Tagetik today; the connector model is designed to extend to other ERPs and consolidation platforms.

What the platform does

  • ERP connector OAuth 2.0 authorization of the Sage Business Cloud Accounting API, automatic rotation of single-use refresh tokens with retry on expiry, connection test and authorization status shown without ever exposing a token to the browser, and recovery paths to bootstrap or re-authorize a connection.
  • Legal entities Creation, activation and deactivation of entities; CSV import with delimiter detection, French and English column aliases and a preview before the records are created or updated.
  • Runs Manual launch with fiscal year, periods, entity selection and retained-earnings mode; extraction of the trial balance entity by entity; a status per entity, so that one failing entity produces a warning while the others complete.
  • Deterministic transformation Closing balances or period movements by account class, listed tax accounts, detection of the retained-earnings account per entity and its three computed lines; raw, normalized and final rows stored for every run so that any file can be traced back to the ERP response.
  • File generation and SFTP delivery One UTF-8 CSV per run in the eight-column layout expected by the consolidation platform, stored privately; automatic SFTP upload after a clean run, manual resend per file or per run, connectivity test and remote directory listing, optional egress through a static address the target can allow-list.
  • Scheduler Cron expression (six presets or free form), time zone, fiscal year and periods, recipients and notification switch; evaluated every minute by a database-side scheduler with a same-minute guard against duplicate runs.
  • Logs, history and notifications Eight-step execution log with levels and search, run history with filters, run detail with timeline, entities, raw ERP data, files, transfers and a filterable results preview with totals; HTML email summary per run to the schedule’s recipients.
  • Users and roles Administrator, operator and viewer roles enforced by database policies and on the server; invitations with a temporary password, password reset by a six-digit one-time code, and an embedded technical wiki reserved for administrators.

Architecture

A React and TypeScript web application on a managed Postgres backend: nineteen tables, twelve serverless functions in TypeScript (extraction, token refresh, scheduling, SFTP upload, notifications, user administration), private object storage for generated files, a database scheduler that wakes the orchestrator every minute, transactional email through a provider’s API, and SFTP over SSH to the consolidation platform. Roles live in a dedicated table checked both by database policies and by the server functions; ERP tokens never reach the browser.

Who uses it

The finance team of a multi-entity group: an administrator who connects the ERP and manages users, operators who launch and schedule the extractions, and viewers who consult the dashboard, the history and the files.

Markets

Canada; multi-entity groups that consolidate in CCH Tagetik. Deployed as a dedicated instance per organization, with a French interface.

Where AI fits — and where it does not

No AI in the product — by design. The transformation is a deterministic rules engine written and versioned in code: the same trial balance always produces the same file, every step is logged, and the raw, normalized and final data of each run can be compared line by line. No financial data is sent to an AI provider.

My role

Founder and architect: product vision, integration architecture, specification of the accounting rules with the finance team and technical direction; my team at SOFT M POWER CANADA built it and operates it under my direction.

Read the engineering case study