synthetic cfo
Cold Start Engine
Checking your session…

Forensic-grade ERP data, generated from accounting rules.

synthetic cfo generates SAP and Oracle ledgers from accounting rules, with fraud planted, every planted record written down at the moment it is planted, and innocent look-alikes beside nearly every scheme, so fraud detection can be trained and measured without a single real record.

For teams that build, buy or audit fraud detection and audit analytics on SAP and Oracle.

The Developer plan is free: all three platforms, the core four cycles, a scale of up to 1,000 base transactions per cycle, and 5 datasets a month.
Already have an account? Sign in
That run produced a real package. Inspect one, before you sign up →
3
ERP platforms
7
Business cycles
37
Fraud schemes
100%
Reproducible per engine version
No real data, ever
Everything is generated from double-entry accounting rules, from scratch. There is no source data, so there is nothing to leak and no privacy, GDPR or re-identification risk.
An exact answer key
Every planted fraud is labelled by record, control and vector. You can score a detector's precision and recall against ground truth - the one thing real data can never give you.
Reproducible to the byte
The same seed and the same configuration rebuild the identical dataset on the same engine version, so any result can be checked by regenerating it; a newer engine builds a different dataset, and every certificate names its engine.
Real ERP architecture
SAP ECC, SAP S/4HANA and Oracle Cloud table structures, seven modules, 37 labelled fraud schemes, with double-entry holding on every line and the referential integrity measured in every package.
Every dataset ships as a four-layer package
Executive brief (whitepaper) Audit evidence + the answer key A reconciled SQLite database Source workbooks mirroring the ERP tables
What people say
Built by a chartered accountant who audited multinationals at PwC and EY and worked in SAP S/4HANA and Oracle in industry. That practitioner knowledge is encoded as deterministic generation rules - no language model ever touches the numbers.

Sign in

Sign in to your account.
Privacy·Terms·Cookies
Online

What should the engine build?

Describe the financial environment you need, then refine it in conversation. Built from accounting rules, never from real data.

Deterministic engine
Show me around
How is fraud embedded?
How do I score a model?
Pharma SAP environment, heavy fraud, 25,000 rows
Oracle dataset for a bank with lapping and kiting
S/4HANA migration test data, light fraud
What will I receive?
Is this reproducible?
Why synthetic data?
Deterministic engine. Your words map to a configuration you confirm. The financial data never touches a language model.

Advanced configuration

Set every parameter explicitly.

01 - ERP Platform
SAP ECC
ECC 6.0. BKPF, BSEG, EKKO, VBAK.
SAP ECC 6.0
SAP S/4HANA
Universal Journal. ACDOCA.
SAP S/4HANA
Oracle Cloud
Module tables. AP, AR, CE, GL, HCM, INV, FA.
Oracle Cloud
Migration Pair
One seed, both SAP schemas: identical subledgers, each leg its own journal layer.
ECC + S/4HANA
Intercompany Group
A holding company: SAP subsidiary + Oracle subsidiary, with elimination fraud across both.
SAP + Oracle

02 - Modules
P2P
Procure-to-Pay
O2C
Order-to-Cash
CE
Cash Mgmt
R2R / GL
General Ledger
HR / Payroll
Insider threat
MM / Inventory
Costing fraud
FA / Fixed Assets
PP&E schemes

03 - Transaction Volume
POC
scale 500
Standard
scale 5,000
Professional
scale 25,000
Enterprise
scale 100,000

04 - Industry
Tech, Media & Telecom
SaaS, IT hardware, services.
Pharma & Life Sciences
CROs, lab equipment.
Manufacturing
Raw materials, equipment.
Financial Services
Trading, infrastructure.
Retail & Consumer
Merchandise, seasonal.

05 - Fraud Intensity
None
Pristine baseline.
0%
Low
Subtle anomalies.
~1%
Medium
Standard training.
~3%
High
Stress-test density.
~8%

06 - Optional
Fiscal Year
Custom scale (base transactions per cycle)
Seed (optional)
Fiscal years (fraud arc)
Operational noise (entropy)
Jurisdiction
Blind track (independent fraud)
Evaluation mode (withhold markers)
Foreign currency exposure
Company size

Your jobs

No jobs yet.

Dataset insights

Live analytics computed straight from your generated databases.

Choose a dataset
Pick a completed dataset above.

Benchmark: how good is your fraud-detection AI?

Score a fraud detector, objectively

Think of it as marking an exam. We plant fraud in known places and write the answer key down as we plant it, so unlike real data, where nobody knows the true answer, we can grade any fraud-detection tool on exactly what it caught, what it missed, and where it raised a false alarm.

Dataset
See it in action

No tool of your own? Watch a fraud detector get graded on this dataset, in one click. Each is a different quality of detector, so you can see the whole range:

Simulated detectors, shown so you can see how the grading works. See a perfect score → (what submitting the answer key itself looks like).
Have your own fraud-detection tool? Grade it

Run your tool (a script, an AI model, audit software) against this dataset, then bring back the record IDs it flagged, and we find them in whatever it exported.

📁
Drop your results file here, or click to browse
CSV or TXT, exactly as your tool exported it.
Optional: only count certain fraud types:

Your account

Your identity, plan and preferences in one place.

Profile
Email
Signs in with
Member since
Display name
Plan and usage
Plan
Generations
Includes
Generation defaults
Your usual setup. Every new chat and the Advanced panel start from these. Anything you say explicitly overrides them, and anything above your plan is fitted down with a note, never silently.
Platform
Jurisdiction
Industry
Fraud intensity
Modules
Scale (base transactions per cycle)
Appearance
System follows this device's setting.
Chats on your other devices
Keep my chats in my account so they appear on every device I sign in from. When off, chats stay only in this browser.
Notifications
Push to this device: get a system notification on your phone or computer when something happens, even with the tab closed.
What to be told about
The bell in the header keeps your newest 200 notices of the kinds you have not switched off; an announcement we take back leaves it. On iPhone, install the app first (Share, then Add to Home Screen); push reaches installed apps.
API access
Use your account from Python or any HTTP client: generate datasets, poll jobs and download packages with an API key instead of the browser. A key carries your plan and monthly allowance. It cannot manage your account, read your chats or create more keys - that stays here, behind your sign-in.
Loading…
Send it as Authorization: Bearer scfo_..., or install the Python client (the pip command on the evaluate page) and pass it to the client (also served as a single file, no dependencies). Quickstart on the evaluate page.
API playground
The code writes itself. Pick a world below and watch the exact command, Python and API call update live - then Run it now executes the same request right here on your signed-in account. No terminal, nothing installed, no key needed.

        
Run it now counts as one generation and the dataset lands on your Datasets list with its download buttons, exactly as if the code had run on your machine. The shown code is the identical request for a pipeline, with an API key standing in for your sign-in.
Sign out and deletion

How to use synthetic cfo

From first sentence to scored model in four steps.

Quick start
1
Describe the environment in the Generate tab, in your own words. Platform, industry, fraud level, size - any order, any phrasing. Try: pharma SAP environment, heavy fraud, 25,000 rows
2
Refine in conversation: make it smaller switch to Oracle only P2P more fraud, then say generate
3
Download the four-layer package from the job card or History: whitepaper, audit evidence with ground-truth labels, SQL database, source workbooks. Open Insights on any completed job for live charts.
4
Score your model in the Benchmark tab: paste the record IDs it flagged, get precision, recall, F1 and a grade against the exact answer key.
Special builds

Migration pair: migration pair for a bank builds SAP ECC and S/4HANA from one seed: the operational subledgers are identical row for row in the two legs, and the record-to-report journal layer is generated separately for each, with its own chart, trial balance and labels (Team plan and above).

Multi-year fraud arc: retail company over 3 years, heavy fraud builds consecutive years where the schemes escalate, plus a consolidated database (Team plan and above).

Clean baseline: completely clean pharma data, no fraud produces a pristine zero-fraud control environment.

Reproducibility: every job records a seed; the same seed and configuration regenerate a byte-identical dataset on the same engine version, and a newer engine builds a different one (Reproduce says which before you press it). Set a fixed seed under Advanced.

Frequently asked questions
Loading...

Live Twin

A synthetic company's ERP, posting documents in real time. Purchase orders, invoices, payments and journals stream past as the year advances - and some are fraud, hidden in the flow like they would be in a real system. The answer key stays sealed until each scheme's reveal point, so a detector is scored on catching it live, never on peeking. Freeze the world into a downloadable audit package anytime; it matches exactly what you watched.

1Set up a company and press play. It runs the same deterministic engine as the batch product.
2Watch the desk. Live figures move as documents post; fraud rides along unflagged.
3Schemes surface as the clock passes each reveal point. Seal the world into an audit package when done.
Set up the world
-

Document desk

Waiting for the first document...

Schemes surfaced released by world-time

Nothing surfaced yet. Fraud is hidden in the stream until its reveal point.
Sealing runs the engine that built this world to completion and hands you the standard four-layer package. Same seed on the same engine version, so the answer key matches exactly what streamed; a world kept across an engine update is rebuilt on the new engine.

What you receive

Every dataset ships as a four-layer package

Loading...
Want to see a finished one? Open a real sample package.

Dataset insights

Computed live from your generated database

Loading...

Your jobs

Running now and recently finished. Stays here after a refresh.

Loading...

Chats

Your saved conversations

Loading...

Notifications

What happened while you were away

Loading...