synthetic cfo Back to synthetic cfo
Release notes

What's new

What changed in synthetic cfo, release by release, newest first: what changes in the data you generate, which datasets change, and which tables and columns are new.

20 October 2026 · engine 1.15.0

Payroll paid net, a journal layer with its own ledger, and Oracle Cloud retailers that sell in their stores

Payroll now withholds what each country's rules call for and pays the net, the journal layer posts real kinds of documents on a full chart of accounts, and an Oracle Cloud retailer sells through its stores beside a wholesale channel.

What changes in the data you generate

Payroll is paid net. Every payroll result now withholds what the 2025 rules of its country call for: income tax, other taxes and the employee's own contributions, in each of the ten jurisdictions (in Switzerland the employee's contributions only, since residents are taxed by assessment). Each result also carries what the employer pays on top. Each pay date posts one payroll document: the expense by cost centre, what is owed to each tax authority, fund and provider, and the net pay. The payroll bank pays the net, each authority, fund and provider is paid from the operating bank on its own statutory calendar, and what is still owed at the year end sits on the balance sheet. Pay dates fall on banking days, and the workforce follows the industry: a retailer staffs its stores, each with a manager.

The journal layer keeps a ledger of its own. Its documents are of real kinds, two to nine lines each, and post only the accounts their kind may post, on a chart with control accounts, equity, retained earnings, inventory and prepaid accounts. On SAP no journal line posts to a customer or vendor reconciliation account, and only the depreciation run posts to the asset accounts; on Oracle Cloud only the Payables source posts to the payables account and only the Receivables source to the receivables account. On SAP a desk posting is document type SA, AB is kept for reversals and clearing, and AF for the depreciation run; Oracle Cloud journals carry their source and category. The year opens from a balance sheet carried forward account by account, and the trial balance states the date it is as at and ties to that carryforward plus the year's lines; in a multi-year archive each later year says what it carries forward. The journal layer's payroll posts to the payroll's own accounts in the payroll's own proportions. The journal layer and the subledgers are still two layers: the trial balance ties to the general ledger journal layer, not to the payables and receivables documents.

Oracle Cloud inventory follows the goods. The inventory ledger now comes from the flow of goods, in the transaction types the industry uses: a transfer between subinventories is two legs that name each other, every receipt names its purchase order and line, and each position rolls forward from the previous period's close.

An Oracle Cloud retailer sells in its stores. Its stores invoice each day's cash and card takings from the point of sale, banked as deposits and card settlements on the collections account, beside a smaller wholesale channel. When the dataset carries the purchasing cycle, its prices are set to cover its purchases, its payroll and allowances for its assets and its bank charges, and to leave a retailer's net margin; its statements show that margin when the dataset also carries the payroll and fixed assets modules, and without them they show the profit before those costs. A retailer on SAP still sells to trade customers.

Phantom inventory is a closed set by design. Reconciling the stock with the movements behind it is the real test, so no innocent record shares its condition. The other two closed sets are segregation of duties and the ghost vendor.

The benchmark. On the SAP tracks the textbook manual-journal test reads document type SA, and routine desk postings are SA now, so the textbook and ceiling rules flag about twice as many records for the same recall. The leaderboard's baselines were measured again on this engine.

Which datasets change

A dataset changes when it has a journal layer, a payroll or an inventory, when it is an Oracle Cloud dataset with a sales cycle, or when it is a retail world on either platform. The free sample keeps the same tables and answer key as before: only its readme, dataset card, certificate and checksums name the new engine.

Tables and columns

Added, and nothing removed or renamed.

  • SAP ECC and S/4HANA: the payroll documents in two new tables, HR_BKPF and HR_BSEG. HR_PY_RESULTS gains INCOME_TAX, OTHER_TAX, SOCIAL_EE, BENEFITS_EE, DEDUCTIONS, NET, SOCIAL_ER and BENEFITS_ER; HR_PA0001 gains ORGTX, PLANS and STLTX; R2R_GL_TRIAL_BALANCE gains Carryforward and As_At; R2R_SKA1 gains MITKZ. On SAP ECC, R2R_BSEG gains BSCHL and KOART.
  • Oracle Cloud: three new tables, PAY_JE_HEADERS and PAY_JE_LINES for the payroll journals and CST_PERIOD_CLOSE_SUMMARY for each period's inventory close. PAY_RUN_RESULTS gains the same eight withholding and cost columns; PER_ALL_PEOPLE gains ORGANIZATION_ID, JOB_ID and LOCATION; GL_TRIAL_BALANCE gains BEGIN_BALANCE and AS_AT; GL_COA gains THIRD_PARTY_CONTROL; GL_JE_HEADERS gains JE_CATEGORY; AR_CUSTOMERS gains CUSTOMER_CLASS_CODE, AR_INVOICES gains BATCH_SOURCE and AR_RECEIPTS gains RECEIPT_METHOD; MTL_MATERIAL_TRANSACTIONS gains TRANSACTION_SOURCE_TYPE, TRANSACTION_SOURCE_ID, SOURCE_LINE_ID, TRANSACTION_REFERENCE, TRANSFER_SUBINVENTORY, TRANSFER_TRANSACTION_ID, TRANSACTION_UOM, ACTUAL_COST and TRANSACTION_COST.

From 20 October 2026, every new dataset is built on engine 1.15.0, and so is a Reproduce of an earlier one. Its certificate names engine 1.15.0, so its files and their checksums differ from those of a dataset built before, and its tables differ where this release changed them. Files you already downloaded never change.

A Reproduce of a dataset built on an earlier engine builds a new dataset and counts as one generation on the free plan; its card says so before you press it. Worlds open in the ERP twin or the Live Twin are rebuilt on engine 1.15.0 when next opened, and a lab export is assembled when it is downloaded.

The benchmark's official tracks are regenerated on engine 1.15.0, and a score published on an earlier engine is listed after the ranking; the house baselines were measured on engine 1.15.0.