Platform

Enterprise-grade — and we will show you where

Every statement on this page is a mechanism in the shipped product, not a roadmap item. Each is something we will open up and demonstrate during an evaluation, on your own configuration and your own data.

200+
Tables under forced row-level security
tenant isolation enforced by PostgreSQL itself
2,000+
Automated tests
most run against a real PostgreSQL database, not mocks
100+
Engine functions inside the database
calculations run next to the data they read
14
Module scenarios in the end-to-end harness
run on a disposable copy of your configuration

Architecture & isolation

Separated by the database, not by a WHERE clause

Multi-tenant platforms fail at the boundary between customers. That boundary is enforced as close to the data as it can be — and it is tested, not assumed.

Isolation the database enforces

Row-level security is enabled and FORCED on every table that holds a customer’s data — over two hundred of them — so it binds the table owner too. Each request pins its tenant inside the transaction; a query that forgets to filter still cannot cross a boundary.

Tenant SQL behind two walls

SQL your own people author for reports and tiles is parsed before it runs, allowed only as a read, and executed under a database role that cannot write. One wall is a single mistake away from none.

Secrets kept out of configuration

Every integration credential is encrypted in a vault, referenced by name and resolved on the server at the moment of use. Rotating one needs no change anywhere else.

Your own private cloud, if you need it

The Sovereign edition runs a dedicated single-tenant deployment with data-residency controls, for organisations whose policy rules out shared infrastructure.

The few tables read before a customer is known — sign-in sessions and password links — are global by design and guarded in code. The full control set is on security & governance.

Correctness by construction

A ledger you never have to repair

In a system that moves money between trading partners, “we fixed the data” is the sentence an auditor fears most. The design makes it unnecessary.

Exact decimal money

Every amount is a fixed-point decimal to the cent — never floating point — so a billion-dollar programme sums to the same penny every time.

Corrections are entries, not edits

A posted accrual is never changed. A correction posts an offsetting reversal, and the same accrual cannot be reversed twice. Closing an agreement back-dated reverses the accruals after the date, the same way.

Settlement changes reverse their own GL

Changing how an obligation is settled posts the compensating journal automatically, so the ledger never carries a settlement method that no longer applies.

Closed periods stay closed

Accrual, billing and adjustment engines check the accounting calendar before they write. Reopening a period is a controlled, recorded act — not a side effect.

What was true on the date

Agreements, contracts, ship-and-debit rules and authorisations are versioned, so the terms that applied to any transaction can be reconstructed exactly as they stood.

Gates where money turns irreversible

Multi-step approval workflows can hold agreements, payments, adjustments and claims before they take effect, under the policy each customer configures.

Traceability & monitoring

Every number can explain itself

“The system calculated it” is not an answer. The platform records how it reached each result, so the answer is a trace you can open — months later, for any figure.

Decision traces for engine runs

Accrual runs, lump-sum schedules, accrual-review cut-offs, stacking, price-protection claims and placement ageing record the full path of every decision. The trace is written in its own transaction, so a run that fails still explains itself.

Request tracing, three levels deep

Administrators switch on tracing for a user or a session — from a summary of each call up to every request and response body — with secrets redacted, a size cap and an expiry so it never stays on by accident.

One id from browser to database

Every API call carries a correlation id into the request log and the application logs, so one action can be found in every line it wrote.

An audit trail of material actions

Hundreds of distinct actions are recorded with the actor, the time and what changed — including which AI agent assisted, when one did.

Every integration run accounted for

Each run records what succeeded, failed, was skipped or is waiting on a parent, record by record, with the reason. Every outbound message records its attempts, its last error and its acknowledgement.

Support that reads the trace

When something needs investigating, an analyst agent reads the recorded trace and the request log first — so a support case starts from evidence rather than a description.

Reversal & recovery

Undo by design, not by database surgery

Every way back is a recorded, controlled operation in the product — the same path for a mistaken accrual, a malformed file or a partner that was offline.

Fix the cause, then replay

A failed integration run is retried as a whole, or a single record is corrected and re-run, without touching the rows that already landed.

Resending cannot double-count

Inbound batches carry an idempotency key and records carry their own identity, so a partner retrying after a timeout resolves to the original rather than a duplicate.

Nothing outbound is lost quietly

Messages to ERPs and partners wait in an outbox and retry with back-off. One that exhausts its attempts stays visible for a person to resend once the far end is fixed, or to cancel.

Configuration promoted, not re-keyed

Set-up proven in a test environment is promoted to production as configuration, so what was tested is what goes live.

Quality engineering

Tested where it matters — against the real database

Mocks prove that code calls what it meant to call. Running against PostgreSQL with row-level security on proves that it does the right thing under the same isolation your data lives in.

More than two thousand automated tests

Across the platform, the Partner Portal and the operations console — engines, accounting, authorisation, integration, partner formats and the portal exchange. Most execute against a real PostgreSQL database rather than a stand-in, so tenant isolation, period locks and the ledger’s reversal rules are exercised exactly as they run in production.

An end-to-end harness that runs on your set-up

For any customer configuration, the harness creates a disposable mirror tenant with that configuration and synthetic data, then walks fourteen module scenarios — vendor and customer rebates, ship & debit, claims, accounting, cash, contracts, pricing, promotions, workflows, reporting, master data, platform and tenant isolation — including the negative paths. It destroys the mirror afterwards and leaves an evidence report, with a comparison to the previous run.

Releases ship continuously, each one versioned with its notes published inside the product, and every schema change is a versioned migration — so what changed, and when, is never a matter of memory.

Performance

Measured, with the method beside it

2M+
Transactions in one tenant
~20k/s
Bulk ingest, isolation on
13 ms
Per-agreement accrual query
~0.7 s
Whole-portfolio sum at 2M rows
See the benchmark and how it was run →

Integration

Any ERP, any middleware, one engine

  • ✓ REST API with a published OpenAPI contract and keys scoped to each interface
  • ✓ SFTP inbox and outbox; CSV, Excel and JSON; per-partner file formats
  • ✓ Idempotent batches, per-record isolation, parent-before-child ordering
  • ✓ Outbound outbox with retries, acknowledgements and OAuth 2.0
  • ✓ SAP, Oracle, Dynamics 365, NetSuite, Epicor, Infor, MuleSoft, Boomi, Workato — each route set out
See how each system connects →

Your evaluation

Put us through it

Ask to see any line on this page. This is what an evaluation with us includes, without being asked.

  1. 01

    Architecture and security walkthrough

    With your security and IT teams, at whatever depth they want, and your questionnaire answered in writing.

  2. 02

    Your data, in a sandbox, in week one

    Send a real extract. You see matched, rejected and queued records on screen in a tenant of your own — not a slide about what would happen.

  3. 03

    The test harness, on your configuration

    We clone your configuration into a disposable tenant, run every module scenario against it and hand you the evidence report.

  4. 04

    A volume run at your scale

    We load synthetic data at your annual transaction volume and run the engines with the decision traces open, so you see the timings for yourself.

  5. 05

    Your integration route, drawn

    For your ERP and middleware: which extract, which route, which interface and what comes back — before anything is signed.

Send us your evaluation criteria.

Security questionnaire, architecture review, a proof of concept on your own extract, a volume test at your scale — tell us what your process requires and we will plan the evaluation around it.