Immutable ledgers and SOX IT general controls

What auditors look for when balances live in TigerBeetle or Blnk, and which controls, configuration and evidence a self-hosted ledger needs to support ICFR.

On this page

Why SOX IT general controls reach a self-hosted ledger

If balances in TigerBeetle or Blnk feed amounts that appear in financial statements, the ledger is in scope for internal control over financial reporting (ICFR), and the IT general controls (ITGCs) that keep it reliable must be evidenced, not assumed. For a finance or IT leader, the practical question is which ITGC areas the ledger touches: access to the ledger and its operators, program changes to posting logic, computer operations such as backup and job processing, and program development for new account types or transfer rules. No SEC rule or PCAOB standard publishes a catalog of ITGCs. The SEC's 2007 guidance (Release 33-8810) says the relevant aspects vary with each company's facts and circumstances, so scope is a decision your company, its auditors and its control owners must document. DeployOpen prepares controls, configurations and evidence for that assessment, but it does not issue audit opinions or attestations.

Section 404 of the Sarbanes-Oxley Act, enacted in 2002, requires management to assess ICFR each year. For accelerated and large accelerated filers that are not emerging growth companies, an external auditor must also attest to that assessment under PCAOB AS 2201. Auditors assess IT risk under AS 2110 and need to understand the ITGCs that support automated controls. In practice, a self-hosted ledger that posts entries automatically is an automated control, so the auditor will ask who can change posting rules, who can reverse or correct entries, and how you know the ledger processed every transaction. Confirm with your auditor early whether the ledger is a system of record for reported balances or only feeds an operational view, because that answer determines which ITGC areas you must evidence and how deep the testing goes.

Which ITGC areas map to which ledger functions and configuration

This table maps the IT general control areas that SEC Release 33-8810 describes, and the COSO Principle 11 expectation, to specific ledger functions and the configuration each one needs. Read each row as a question an auditor is likely to ask, with the configuration and evidence that answer it. The main takeaway is that most ledger ITGC risk sits in correction patterns, operator access and the posting-logic release path, so those need explicit design before go-live.

Ledger functionITGC area and expectationConfiguration to defineEvidence to retain
Immutability and correcting entriesProgram changes and data integrity: posted transfers are not edited or deleted outside a documented processReversal-only correction pattern with linked original transfer IDs, reason codes and approval references; no update or delete path for posted recordsSample of reversals with originating request, approver and linked original entry; confirmation that database roles cannot update posted rows
Operator access to the ledgerAccess to programs and data: only named roles can post, void, configure accounts or read balancesRole separation between account administrators, posting services and read-only reporting; break-glass accounts with time-limited use and session loggingCurrent access matrix, quarterly access review sign-off, privileged session logs for direct database or cluster access
Account and transfer codesProgram development: the chart of ledger codes and transfer types is approved before useControlled code list for accounts, transfer types and ledger identifiers, maintained as versioned configuration with owner sign-offVersioned code table, change tickets for each new code, mapping to general ledger accounts
Posting-logic change controlProgram changes: changes to posting rules follow test, approval and release stepsDeployment pipeline gates: code review, automated tests for double-entry balance rules, staging reconciliation, and a documented production approvalPipeline run records, test results, approval records and release notes tied to each version deployed
GL interfaceComputer operations and data flow: postings reach the general ledger completely and only onceIdempotent export or interface jobs with batch identifiers, sequence checks and error queues for rejected recordsInterface job logs, batch control files, error queue disposition records and duplicate-check results
Batch and job monitoringComputer operations: scheduled jobs run, fail visibly and are rerun under controlAlerting on failed or late jobs, documented restart procedure and ownership of each jobJob schedule, alert history, incident tickets and evidence of reruns with approvals
Completeness checksComputer operations and data integrity: ledger totals agree with the general ledger control totalsDaily reconciliation job comparing ledger balances and transfer totals by account and currency with GL control totals, with a defined exception thresholdSigned reconciliation reports, exception log with aging and resolution notes, and records of the control owner's review
Governance of the control frameworkCOSO Principle 11: general control activities over technology are selected and developed to support financial reporting objectivesMapping of each ledger control to the financial reporting risk it addresses, reviewed when the ledger or its interfaces changeControl matrix, change log for the matrix and management review records

TigerBeetle or Blnk: which ledger fits the control environment

TigerBeetle is a purpose-built ledger database for high-throughput double-entry transfers, and your team would typically operate it inside your own infrastructure. Its design centers on recording transfers in an append-only fashion, which is relevant to the immutability question an auditor will ask first. Confirm with the vendor how committed transfers are stored, whether any interface can alter or delete them, and how corrections are expected to be recorded.

  • Transfer log as the record: Confirm that committed transfers cannot be edited in place and document the supported method for posting a correcting entry.
  • Operator access: Access to replicas, storage and administrative tooling is set by your environment, so define operator roles and log their use outside the database.
  • Ownership of operations: Backups, replica placement, upgrades and recovery tests are performed by your team, and each one becomes evidence you must produce.
  • Gaps around the database: Idempotency keys, posting logic under change control, and a general ledger interface with completeness checks usually sit in the application and integration layers.

Confirm each point in writing with the vendor and in a test environment before the control design is finalized.

Open source platforms that support the ledger and its controls

A ledger under SOX scrutiny is one link in a chain that also includes event sources, the general ledger, identity and logging. Each platform below owns a different part of that chain, and auditors will test the handoffs between them as much as the platforms themselves.

TigerBeetle as the balance store

TigerBeetle holds account balances and posts double-entry transfers, so it is the system of record that auditors will ask about first. Controls to design around it include who can create accounts, how transfers are recorded and never edited, and how a correcting entry is posted instead of a historical record changed. Confirm with the vendor how its transfer and account history can be exported and retained for your evidence set, and document who holds operator rights to the cluster.

Blnk as the ledger workflow layer

Blnk sits around the balance store to handle ledger workflows such as reconciliation rules and transaction metadata. Auditors will want to know which rules can change posting behavior, who approves those changes, and whether a rule edit is itself logged. Treat rule configuration as controlled code with versioned releases, separate approval, and a record of what was active on each posting date.

Odoo Community or ERPNext for the GL interface

The general ledger is where ledger totals become financial statements, so the interface between the two systems is a key control point. Odoo Community is published under LGPL-3.0 and ERPNext under GPL-3.0, and either can receive summarized journal entries from the ledger. Document the mapping of ledger accounts to GL accounts, the batch totals used to prove completeness, and who can post manual journals into the GL.

Apache Fineract for core banking GL

Where a bank runs its core banking on Apache Fineract, the core banking GL and its journal entries may be the books of record rather than a separate ledger. Fineract is licensed under Apache-2.0 and version 1.15.0 was published on July 14, 2026. Confirm which system is authoritative for each balance type, and test that the feed from the ledger into Fineract cannot be bypassed by manual journals.

Hyperswitch as a payment event source

Hyperswitch is licensed under Apache-2.0 and connects to multiple payment, payout, fraud and vault providers, which makes it a common origin of transfer events. Completeness testing depends on matching every processor event to a posted ledger entry, including retries and duplicates. Ask how Hyperswitch identifiers map to ledger transfer identifiers, and how failed or reversed payments are recorded as correcting entries.

Log and identity stack chosen by the client

Access controls over the ledger, its operators and posting logic rely on an identity provider and a log store that the client selects and operates. Auditors will test whether privileged access is approved, reviewed and removed, and whether administrative actions reach an append-only log that operators cannot edit. Confirm retention periods with your records policy and with any regulator that applies to your entity, and do not assume the ledger itself provides this evidence.

How change management for posting logic is evidenced

The sequence turns each change to posting rules and account mappings into a traceable record that shows who requested it, who reviewed it, what was tested, who approved it and whether balances behaved as expected after release. Each step leaves an artifact an auditor can sample against the program change control expected under ITGCs.

  1. Open a logged change request

    The finance or accounting owner of the affected balance or journal type raises a change request in the ticketing system before any posting logic is edited. The request states the business reason, the accounts and transaction types affected, the expected effect on balances and whether the change touches entries already posted. The output is a unique change ID that every later artifact references, so the auditor can trace one change from request to production.

  2. Peer review posting rules and account mappings

    A developer who did not write the change reviews the posting rules, transfer templates and account mappings to the general ledger, with a finance reviewer checking the accounting treatment. Reviewers record approval or rejection in the code review tool against the change ID, and the reviewed diff is retained. The output is a documented review with named reviewers and no unresolved comments, which shows that the logic was checked by someone other than its author.

  3. Run a test ledger with expected balances

    The change is deployed to a non-production ledger instance loaded with representative transactions, including pending, posted, reversed and correcting entries. The test suite compares resulting account balances with expected balances that finance prepared in advance, and it confirms that a correcting entry leaves the original entry intact. The output is a stored test report with expected and actual balances, so the evidence shows the change behaved as designed before anyone approved it for production.

  4. Approve the change before release

    An approver independent of the developer and the requester reviews the change request, the peer review record and the test report, then approves or rejects the release. The approval is recorded in the change system with the approver's identity, date and any conditions. The output is a signed-off change record that must exist before the deployment step can run, which is the control auditors usually test for segregation of duties between building and authorizing changes.

  5. Deploy through a controlled pipeline

    The approved change is promoted through the pipeline by an automated job that checks the change ID and approval before it proceeds. Production deployment credentials stay with the pipeline service account, and individuals do not push changes to production by hand. The output is the pipeline run log showing the artifact version, the approver linked to it and the deployment timestamp, which together prove the code in production matches what was tested and approved.

  6. Reconcile balances after deployment

    After release, finance runs a post-deployment reconciliation that compares ledger balances and posting counts for the affected accounts against the expected results from the test run and against the general ledger interface totals. Any difference opens an incident linked to the change ID. The output is a signed reconciliation report for the release window, which gives evidence that the change did not create unexplained differences in reported balances.

  7. Retain the change file for audit sampling

    The change request, review record, test report, approval, pipeline log and reconciliation are stored together under the change ID in a retention location that the change team and internal audit can read but not alter. Teams should confirm with their auditors how long these records must be kept and how they are sampled. The output is a complete change file that can be pulled for any sampled release without reconstructing it from chat messages or memory.

What auditors ask for and which component produces it

Who can post, reverse or adjust ledger entries, and how is that access proven?

Auditors expect a named list of identities that can post, reverse or change balances, each tied to a documented business role. Evidence comes from three sources: the identity provider and role assignments that gate access to the ledger API, the ledger's own audit trail of who submitted each transfer, and the privileged access records for the database and host underneath it. Keep the role matrix, the approval record for each grant and the exported logs for the audit period. Confirm with your ledger vendor or integrator whether the ledger itself records the calling identity on every transfer, or whether that identity must come from your API gateway logs.

How is a correcting entry traced back to the original transaction?

A correction should be a new, linked entry that references the original transfer and carries its own reason code, approver and timestamp, while the original remains unchanged. Auditors will sample corrections and ask for both records side by side. Your evidence is the ledger record of the linked entries, the application ticket or workflow approval that authorized the correction, and the reconciliation report showing the balance effect. Retain the original and correcting entries, the approval and the period-end report. Confirm how your chosen ledger expresses linkage between entries, because the mechanism differs between products.

How was a change to posting logic approved, tested and released?

Posting logic is often the most significant automated control in a ledger, so auditors look for the same change management evidence they would expect for any financial application. Show the change request, the reviewer approval, the test results covering balance and rounding cases, and the deployment record that links the released version to that approval. The sources are your source control history, CI/CD pipeline logs and the change ticket. Separate duties so that the person who writes a change is not the only person who deploys it, and keep the pipeline logs for the audit period.

How is the interface to the general ledger proven complete?

Completeness means every posted ledger movement reaches the general ledger, and nothing reaches it twice. Auditors typically ask for control totals, record counts and a reconciliation between the ledger's period balances and the GL batch imports. Evidence includes the interface job logs, the batch control totals, rejected-record queues and the signed reconciliation for each close. Retain the export files, the totals and the exception log. Ask your integrator how the interface handles retries, so that a failed batch cannot be silently duplicated.

How are access reviews to the ledger and its operators performed?

Access reviews show that someone with authority periodically confirmed that each account still needed its access. Typical evidence is an export of users, roles and privileged accounts at the review date, the reviewer's signed attestation, and a record of every removal made as a result. Include operators with database or infrastructure rights, since they can change balances without passing through the ledger API. Set a review frequency in your control design, and retain each review package for the audit period.

Which IT general control areas must management evaluate for a ledger?

SEC guidance in Release 33-8810 says management evaluates only the IT general controls needed for the consistent operation of controls that address financial reporting risks, and that the relevant areas depend on the company's facts. The guidance names program development, program changes, computer operations and access to programs and data as examples. For a ledger, that usually means access, change management, operations such as backup and job monitoring, and interfaces. Confirm the scope with your external auditor early, since they decide which controls they will rely on.

Can DeployOpen prepare these controls and evidence for an audit?

DeployOpen plans, implements and documents self-hosted open-source platforms in your own infrastructure, and prepares systems, controls and evidence for compliance assessments. It does not issue audit reports, attestations or certifications. In practice, a fixed-scope engagement can cover defining the control design, configuring access and logging, setting up the pipeline and retention, and writing the evidence procedures. Your auditors then test the controls. Scope, deliverables and timelines are agreed in writing before work starts, and a quote follows from that scope.

What tooling alone does not satisfy

A ledger product gives you balances, posting logic and an append-only history, but it does not design the controls around them. The gaps below are where SOX evidence usually breaks down, and each one needs documented work, owners and recurring proof that sits outside the software.

No ITGC narrative or control matrix

A ledger product does not produce an IT general controls narrative, a risk-to-control mapping or a test script. Management must document which program development, change, computer operations and access controls support the financial reporting risks, and explain why others are excluded. Ask the vendor what logs it emits, then decide which of them become control evidence. The control matrix is your work product, and it must be written before the auditor asks.

Immutability does not replace access review

An append-only ledger prevents silent edits to posted entries, but it does not stop an administrator from changing configuration, rotating keys, restoring a backup or granting database access. Those paths need periodic access reviews, privileged access logging and segregation between people who approve posting logic and people who operate the cluster. Confirm which accounts can reach the storage layer, the replicas and the deployment pipeline.

Reconciliation without exception handling

A reconciliation tool produces matches and breaks, but SOX needs evidence of who reviewed each unmatched item, how it was resolved and whether the resolution was posted as a correcting entry. Without a written exception procedure, aging thresholds and sign-off, the tool output becomes an unreviewed report. Define owners, escalation paths and the month-end package the controller signs before the first close runs on the new ledger.

Retention needs a records process

Keeping data is not the same as preserving records in a form auditors and regulators can retrieve. SEC Rule 17a-4(b) requires broker-dealers to keep certain records, including bills receivable or payable and bank statements, for not less than three years, with the first two in an easily accessible place. Check whether your entity is a broker-dealer at all. Either way, define retention periods, legal holds, restore tests and who can produce records on request.

Penetration testing depends on your regulator

The annual penetration test and six-month vulnerability assessment cadence in 16 CFR 314.4(d)(2) applies to covered financial institutions under the FTC Safeguards Rule, unless effective continuous monitoring is in place. A SOX filer is not subject to that rule by default. Confirm which regimes apply to the entity, then scope security testing of the ledger, its APIs and its admin paths against those obligations and the auditor's requests.

The auditor forms the opinion

DeployOpen prepares systems, controls and evidence for an assessment, but does not issue audit reports, attestations or opinions on internal control. Under PCAOB AS 2201 and AS 2110, the external auditor decides which IT general controls to test and what sufficient evidence looks like. Agree the evidence list and sampling expectations with your auditor early, and treat any readiness review as preparation for their work, not a substitute for it.

What does it cost to make a self-hosted ledger SOX-ready?

What drives the cost of SOX readiness for a self-hosted ledger?

The main cost drivers are the scope of financial reporting the ledger feeds, the number of interfaces into the general ledger, the number of people and service accounts that can operate or change the ledger, and how mature your existing IT general controls already are. A ledger that feeds one consolidated general ledger with a small operator group is a smaller job than one that feeds several entities, multiple currencies and many automated posting paths. Organizations with documented access reviews, change tickets and log retention start from a stronger position than those building evidence from scratch. No public source gives a dollar figure for this work, so ask each provider for a written scope that lists these drivers separately.

How long does it take to produce a first SOX evidence package?

The time to a first evidence package depends on how many controls are in scope, how quickly control owners can provide records, and whether the ledger's configuration, change history and access logs already exist in a usable form. Teams that need to design controls, instrument logging and collect a full period of evidence will take longer than teams that only need to document existing controls. Your external auditor sets the period they want to test, which often shapes the calendar more than the build itself. Ask any implementation partner for a timeline tied to specific deliverables and dependencies in writing, and confirm the testing period with your auditor before work starts.

What must our team provide before an implementation partner starts?

Partners will need named control owners for financial reporting, read access to the general ledger and its interfaces, the change history for posting logic and infrastructure, and your current policies for access, change management, backup and incident handling. They also need the list of people and service accounts with operator rights, plus the systems that send entries into the ledger. Without these inputs, the partner cannot tell which controls matter for financial reporting or where the evidence sits. Build this list into the scope so that missing inputs appear as dependencies in the quote rather than as surprises mid-project.

Can our internal team make a self-hosted ledger SOX-ready alone?

Some internal teams can, particularly where they already run SOX programs for other systems and have engineers who understand the ledger's database, deployment and access model. The harder parts are usually independent testing of controls, mapping ledger activity to the general ledger, and producing evidence that an external auditor will accept without rework. Many teams split the work: internal control owners keep ownership of the controls and attestation, while a partner handles configuration, logging, hardening and evidence preparation. Decide early which parts you will own, and write that split into the scope.

What recurring work does a SOX-ready ledger need every year?

The recurring work typically includes periodic access reviews for ledger operators and administrators, testing of a sample of changes to posting logic and infrastructure, checks that log retention and backups still work, and reconciliation of ledger balances to the general ledger. Management also needs to reassess its controls as the system and its people change. Under the SEC's evaluation approach in Release 33-8810, management evaluates the IT general controls that support reliable financial reporting, so the annual cycle should follow that scope. Ask any provider to price these recurring activities separately from the initial build, and to state who performs each one.

Does the SEC's 2020 estimate apply to building a SOX-ready ledger?

No. The SEC's 2020 estimate in Release 34-88365 covers the cost savings for an issuer that becomes newly exempt from the Section 404(b) auditor attestation requirement. It estimated about $210,000 per year on average, made up of roughly $110,000 in audit fees and $100,000 in other costs. It does not measure the cost of building or running a ledger, and it does not remove management's own obligation to assess internal control over financial reporting under Section 404(a). Use it only as context for how attestation costs are treated in the rules, and build your project budget from a written scope.

What should a written quote for this work include?

A usable quote lists each deliverable with its acceptance criteria, the systems and interfaces in scope, the controls mapped to each deliverable, and the roles and access the partner will need. It should separate one-time work such as design, configuration, logging, hardening and first-cycle evidence from recurring work such as reviews, change testing and retention checks. It should also state the assumptions about your inputs, the change control process for scope changes, and what the client must supply and by when. DeployOpen works from fixed-scope agreements where scope, deliverables and timelines are agreed in writing before work starts, and it does not publish a price list, so ask for the scope first and the quote second.

Which parts of SOX readiness does a partner not perform?

A partner prepares systems, controls and evidence, but it does not issue audit reports, attestations or certifications. Management remains responsible for its ICFR assessment under Section 404(a), and the external auditor, where one applies, performs its own testing under PCAOB standards. A partner also cannot decide which controls are relevant to your financial reporting risks on your behalf. Confirm these boundaries in the scope so that your auditor, control owners and the implementation team each know what they own.

What to ask an implementation partner before signing

Start with scope, because most ITGC disagreements trace back to a scope document that never named the ledger. Ask the partner to write the in-scope list in terms your auditor will recognize: the TigerBeetle or Blnk cluster and its replicas, the posting service that calls it, the database or object store holding ledger exports, the identity provider used for operator access, and the interface that sends summarized entries to the general ledger. Ask who decides which of those components fall under the Section 404 assessment. Under SEC Release 33-8810, management evaluates only the IT general controls needed for the proper and consistent operation of financial reporting controls, so a credible partner will ask which balances and journal entries feed the financial statements before proposing controls at all. Confirm that the agreed scope is written into the fixed-scope document before work begins.

Next, ask who owns the control matrix after handover. The partner should draft it, but your control owner, typically in finance or internal audit, must accept each control, its frequency and its evidence source. Ask for the matrix to map each control to the relevant ITGC area named in the SEC guidance, such as program changes, access to programs and data, and computer operations, and to the COSO 2013 principle on general technology controls. Ask how evidence is retained: where change tickets, approval records, access review exports and reconciliation outputs are stored, for how long, and whose retention schedule applies. Confirm that the partner does not issue audit reports, attestations or certifications, so the external auditor's own testing and sign-off remain separate from the work DeployOpen prepares.

How DeployOpen scopes and delivers ITGC readiness for self-hosted ledgers

DeployOpen plans, implements, hardens, documents and supports self-hosted open-source platforms inside the client's own infrastructure, including ledger deployments that need evidence for IT general controls. We prepare the systems, controls and evidence that an independent auditor will test, and we do not issue audit reports or attestations ourselves.

How we scope

  • Written scope names the ledger, its operators, posting services and general ledger interfaces in the audit boundary.
  • Scope lists which ITGC areas apply, such as access, program changes and computer operations, based on your ICFR risk assessment.
  • Engagements are fixed-scope, with deliverables and timelines agreed in writing before any work starts.

How we build

  • We configure privileged access, multi-factor authentication and operator logging for the ledger and its underlying infrastructure.
  • We set up change management for posting logic, including separated environments, approvals and tested rollback steps.
  • We build reconciliation and completeness reports that tie ledger postings to general ledger batches and source records.

How we hand over

  • Control narratives map each ITGC control to its owner, frequency, system and the evidence it produces.
  • Test scripts and sample evidence packs let your internal audit team reperform key controls before the external auditor arrives.
  • Runbooks cover correcting entry procedures, backup restores and access reviews, so your staff can operate the controls after handover.

How we support

  • Ongoing support, upgrades and continuous testing are available as a retainer, aligned to your audit calendar.
  • Each platform upgrade or posting logic change is re-assessed against the documented controls before it reaches production.
  • Ask any partner to confirm the retainer scope, change window process and how evidence is retained across fiscal years.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.