Open source ledger for fintech products

A fintech or SaaS product that holds customer balances needs a ledger that stays correct under retries, failures and audits. This page explains when a self-hosted open source ledger fits, how TigerBeetle and Blnk differ, and what a partner should scope.

On this page

Why a fintech needs its own open source ledger for customer balances

When customer balances live in an application database, a product team usually discovers the same three problems: a retried API call posts a transfer twice, a timeout leaves a debit without its matching credit, and finance cannot explain why the sum of balances differs from the bank. The usual fix is a dedicated double-entry ledger in which every movement is a pair of balanced entries and every transfer carries an idempotency key, so a repeated request cannot post twice. For a self-hosted fintech, the realistic choice is between TigerBeetle, the purpose-built ledger database, Blnk, an open source ledger service that runs on a general database, and a hand-built ledger in PostgreSQL. Each option carries a different mix of correctness guarantees, engineering effort and operating burden, and that mix should decide the answer before any code is written.

The ledger is only one part of the money flow. Payment providers initiate and settle funds, and the core accounting system holds the general ledger that finance closes each month. Both sit around the ledger rather than inside it, so the integration points matter as much as the ledger itself: which service owns the authoritative balance, how provider webhooks map to ledger transfers, and how posted entries flow into the accounting system without manual re-keying. Before committing, the team should write down these ownership boundaries and confirm with each vendor how idempotency keys, pending transfers and reconciliation data are exposed through their APIs.

This page is written for a self-hosted deployment, where the ledger, its database, its replicas and its backups run in the client's own cloud accounts, data center or air-gapped network. That changes who carries operational risk, who is paid for which work and what evidence an auditor will ask for. Adjacent systems have their own pages: the Odoo, Apache Fineract and Hyperswitch pages cover the accounting or ERP suite, core banking and payment orchestration respectively. This page keeps its focus on the ledger, the decisions that lead to it and the operational questions it raises.

Requirements a ledger must meet and what each means for the build

This table maps the regulatory controls and core design needs that a fintech ledger must satisfy onto the data model, the operators who touch the system and the change process. Read each row as a question to answer before choosing TigerBeetle, Blnk or a hand-built database. Labels in the first column distinguish legal obligations from design requirements, which are engineering needs that auditors and finance teams will still test.

RequirementWhat it means for the ledger's data modelWhat it means for operators and change process
FTC Safeguards Rule, encryption (16 CFR 314.4)Customer information in transit over external networks and at rest must be encrypted, so balance records, counterparty fields and payment references need encryption in storage and on every network hop, including replication links.Key custody, rotation and access to decryption keys must be assigned to named roles and recorded. Confirm with your assessor how encryption evidence is produced for each ledger node.
FTC Safeguards Rule, multi-factor authentication (16 CFR 314.4)Ledger administrative and read interfaces need account identities that can carry MFA, so service accounts and posting identities must be separated from people.Every individual who can reach the ledger, its hosts or its admin tools must authenticate with MFA. Document exceptions for automated posting jobs and how they are controlled.
FTC Safeguards Rule, change management (16 CFR 314.4)Posting logic, account types and validation rules are part of the system, so schema and rule changes need versioning that can be traced to a specific date and approver.Changes to posting rules and ledger configuration go through a documented review, test and approval path. Emergency changes need the same record after the fact.
FTC Safeguards Rule, activity logging (16 CFR 314.4)Every create, post, void and correction must be recorded with the originating user or service, timestamp and request identifier, so that the history can be replayed.Logs must be retained and reviewed for operator activity on the ledger, not only for application traffic. Confirm where logs are stored and who can alter them.
FTC Safeguards Rule, penetration testing (16 CFR 314.4(d)(2))Absent continuous monitoring, the ledger and its interfaces fall under testing at least every six months, so the test scope must include the posting API and the data store.Schedule and record penetration tests and vulnerability assessments on the ledger's environment at least every six months where continuous monitoring is not in place. DeployOpen runs security testing, but the test scope is agreed in writing.
SEC Rule 17a-4(b) records retention (broker-dealers)Records such as bills receivable or payable and bank statements must be kept for at least three years, with the first two easily accessible, so the model needs retention fields and a way to reproduce older balances.Operators must be able to retrieve historical entries within the required window without restoring from cold archives. Confirm with counsel whether the ledger is a books and records system for your entity.
GDPR Article 28(3), processor instructionsIf the ledger or a vendor hosts personal data of EU customers, the data model must allow processing only on documented instructions, including for any transfer outside the EU.Service providers operating the ledger need a contract that binds them to documented instructions and Article 32 security measures. Confirm the location of backups and support access.
EU Data Act, switching rights (Articles 23, 25, 50)Customer data and ledger history must be exportable in a form that another provider or on-premises infrastructure can read, so avoid proprietary formats for balances and journals.Contracts with any managed ledger provider must allow switching on a notice period of at most two months, followed by a 30-day transitional period. Test an export and import before you rely on it.
Idempotency (design requirement)Each posting carries a unique client reference, and the ledger stores it with the resulting transfer, so a retried request cannot post twice.Operators need a documented retry policy for payment provider callbacks and a way to query whether a reference was already applied.
Double-entry integrity (design requirement)Every transfer debits one account and credits another in the same currency, and the sum across the ledger must net to zero, enforced at write time.Finance and engineering agree on the chart of accounts and posting rules before go-live. Balance-changing rules are reviewed like code.
Pending versus posted transfers (design requirement)Holds, authorizations and reserved funds are recorded as pending with an expiry or resolution path, and only posted transfers move the available balance.Operators need procedures for voiding or posting pending transfers, including those that time out. Monitoring should flag pending items older than the agreed window.

Which ledger platform fits which fintech scenario

A ledger choice depends on how many transfers you post, how fast balances must update, and what your team can operate and test. The cards below cover the dedicated ledger databases, a ledger layer with reconciliation features, a hand-built PostgreSQL option, and the adjacent lending, billing and payment systems that feed or sit beside the ledger.

TigerBeetle for high-volume correctness

TigerBeetle is a purpose-built ledger database for double-entry transfers, so posting rules, balance limits and transfer identifiers live in the database rather than in application code. It suits products where transfer volume and balance correctness matter more than a broad query surface. Confirm its current replication layout, client libraries and operational tooling against the project documentation, and check whether your team can run and back up a database it has not used before. Reporting usually needs a separate read path.

Blnk for reconciliation-led workflows

Blnk is a ledger layer that adds reconciliation and payment-workflow features on top of double-entry balances, which fits teams that need matching against processor exports as part of the ledger itself. Check how it handles idempotent posting, pending and posted transfers, and multi-currency accounts against your own test cases. Confirm its storage backend, scaling characteristics and upgrade path in current documentation before you commit to a design.

Hand-built PostgreSQL ledger

A ledger built on PostgreSQL gives your team full control of the schema and the query model, and it is the option that shifts the most correctness work onto your engineers. You must design constraints for balanced entries, enforce idempotency keys, handle concurrent writes, and test every posting path, including reversals. Budget for ongoing correctness testing and a documented change process, because the ledger becomes a system your auditors will examine line by line.

Apache Fineract beside the ledger

Apache Fineract is an open source core banking platform licensed under Apache-2.0 that covers loan and savings accounts. If your product runs lending, the loan subledger may sit in Fineract while your own ledger tracks customer balances and settlement, so you need a defined feed between them. Decide which system is the source of truth for each balance, and confirm which accounting entries Fineract produces and how they map to your general ledger.

Kill Bill for billing events

Kill Bill is an open source subscription billing and payments platform licensed under Apache-2.0. It generates invoices and payment events for recurring and usage-based products, and those events become postings in your ledger. Map each invoice line, credit and refund to a ledger entry so revenue recognition and customer balances stay consistent. Confirm which invoice and payment events the current release emits and how they can be replayed if a posting fails.

Hyperswitch as the payment layer

Hyperswitch is an open source composable payments platform licensed under Apache-2.0 that routes payments across multiple processors, payout and vault providers. It sits upstream of the ledger: processor webhooks and settlement files trigger pending and posted transfers, and refunds become correcting entries. Confirm which connectors and webhook events your processors supply, how Hyperswitch identifies each payment for idempotent posting, and where card data is stored, since that determines PCI scope.

Deployment patterns for a self-hosted ledger in regulated infrastructure

A single-region cloud account is the most common starting point for a fintech or SaaS product. The ledger replicas sit in separate availability zones within one region, inside a dedicated account or subscription that is isolated from general application workloads. The product reaches the ledger through private addressing only, and the ledger endpoint is never exposed to the public internet. Because the failure domain is one region, backup copies and recovery procedures need to be planned against region-level loss, not only zone-level loss.

  • Node placement: Spread replicas across at least three availability zones so that a single zone outage does not remove quorum. Confirm the zone count and placement rules with the database vendor's documentation before fixing the topology.
  • Backup and restore: Store encrypted backups in a separate account or storage location with restricted delete rights. Restore tests should run into an isolated environment on a schedule written into the operating procedures.
  • Key management: Use a managed key service or hardware-backed key store under a separate administrative role. Keys for replica transport, data at rest and backup encryption should have distinct owners.
  • Network segmentation: Place ledger nodes in private subnets with security groups that allow only the replication ports and the API port from named application services.
  • Reaching the ledger from the product: Expose a narrow internal service that enforces authentication, idempotency keys and request limits before any call reaches the ledger.

Before you commit, confirm with your cloud provider and your auditor which zone and region controls they will test, and how cross-account backup access is logged.

How a ledger rollout moves from design to production

The sequence turns an agreed account model into a ledger that has been tested against replayed transactions, run in parallel with existing records, reconciled to external sources and handed over with a runbook the operations team can use.

  1. Fix requirements and the account model

    The rollout starts with a workshop between product, finance, risk and the engineering lead to settle transaction volumes, latency targets, currencies, the account types customers and internal ledgers need, and the availability and audit access expectations. DeployOpen documents these as a requirements register and draws the chart of accounts and balance rules, including which accounts may go negative. The output is a signed account model that lists every account type, its normal balance direction, and the owner who approves changes. It is done when finance and the product owner have signed it and open questions are logged with owners and dates agreed in writing.

  2. Design idempotency and transfer states

    Next, the team defines how each posting is identified, how retries of the same request are recognized and rejected, and how pending transfers move to posted or voided states. This step also sets the rules for correcting entries, since posted records are not edited in place. DeployOpen writes these rules as a transfer design specification and maps them to the chosen engine, whether TigerBeetle or Blnk, and to the calling services. The output is a transfer design document with a state diagram, an idempotency key policy, and examples of refunds, holds and reversals. It is done when engineering and finance have reviewed the examples against the signed account model.

  3. Test correctness with replayed transactions

    Before any integration goes live, the ledger is loaded with a replay set of historical or synthetic transactions, including duplicates, timeouts, partial failures and concurrent transfers against the same account. Test cases check that debits and credits balance, that retries do not double-post, and that pending holds release correctly. DeployOpen runs these tests in the client's environment and keeps the results with the code under version control. The output is a test evidence pack containing scenarios, expected and actual balances, failure cases and sign-off by the engineering lead. It is done when every scenario in the agreed set passes or has a documented, approved exception.

  4. Integrate payment providers and the accounting system

    The ledger is connected to the payment providers that report authorizations, captures, settlements, refunds and chargebacks, and to the core accounting system that receives summarized postings. Each inbound event is mapped to ledger transfers with stable identifiers so that a provider retry cannot create a second posting. The interface to the general ledger is defined as a documented mapping with batch boundaries and cutoff times agreed with finance. The output is an interface specification, a mapping table from provider events to ledger transfers, and integration test results for each provider and for the accounting export. It is done when a full cycle from payment event to general ledger entry has been traced end to end.

  5. Run in parallel and reconcile

    The new ledger runs alongside the existing balance records or processor reports for an agreed period, without yet serving customer balances. Each day, the balances and movements are matched against bank statements and processor settlement files, and differences are classified as timing items, mapping errors or defects. DeployOpen supports the finance team in setting up the matching rules and the exception queue, and records each root cause. The output is a reconciliation report showing matched totals, unmatched items with owners, and a list of defects fixed during the parallel run. It is done when finance accepts the residual differences in writing and no unexplained variance remains open.

  6. Cut over to production with controlled change

    Cutover follows a written plan that defines the freeze window, the opening balance load, the rollback conditions and the sign-off roles for each stage. Access to the production ledger is restricted to named operators, and change approval is recorded for the posting logic and configuration. DeployOpen performs the cutover with the client's operations and finance staff present, and confirms opening balances against the reconciled snapshot before customer traffic is switched. The output is a cutover record with opening balance evidence, approvals and the first reconciliation run on production data. It is done when the first production cycle reconciles and the rollback path has been confirmed as unused or closed.

  7. Hand over operations with a runbook

    The final step transfers day-to-day operation to the client's platform and finance teams. DeployOpen writes a runbook covering monitoring alerts, backup and restore steps, reconciliation procedures, handling of stuck or duplicate transfers, change management for posting rules, and the escalation path to the vendor or partner. Operators are trained on the runbook and on the audit logs that show who changed what. The output is a runbook, a training record and an operations handover checklist signed by the receiving team. It is done when operators have executed the restore and reconciliation procedures on a test copy and the handover is accepted in writing.

Evidence auditors and regulators ask for from a ledger

This table maps each piece of evidence that auditors, examiners and internal assurance teams typically request from a ledger to the component that produces it. Read each row as a question to answer before go-live, then confirm the exact output format with the ledger vendor or your implementation partner. DeployOpen prepares systems, controls and evidence for assessments, but independent auditors issue any SOC 2 report or other attestation.

EvidenceComponent that produces itWhat to confirm before go-live
Immutable transaction history with correcting entriesLedger core (TigerBeetle or Blnk) with append-only postings and reversal entriesWhether corrections post as new linked entries and whether any path allows edit or delete of posted records
Operator access logsIdentity provider, privileged access tooling and ledger admin audit trailNamed accounts for every operator, MFA on privileged paths, and log retention long enough for your audit cycle
Change records for posting logicVersion control, code review and deployment pipeline for ledger rules and Blnk configurationApproval evidence for each release, and a test record showing balance-affecting changes were reviewed
Completeness checks against processor and bank dataReconciliation service matching ledger entries to processor exports and bank statementsException queue volumes, aging of unmatched items and month-end sign-off by a named finance owner
Backup and restore test recordsBackup tooling for ledger replicas and a documented restore runbookDated restore tests with recovery results, plus proof that restored balances match a pre-test snapshot
Interface logs for the general ledgerIntegration layer exporting postings to the core accounting systemBatch totals, failed-job records and evidence that each exported entry is traceable to a ledger transfer
SOC 2 control evidence where the vendor or product is assessedVendor SOC 2 report (Type 1 or Type 2) and your own controls mapped to itReport date and period, scope covering the hosted ledger, and the complementary user entity controls you must operate

What buyers ask before hiring help for a fintech ledger

What drives the cost of building a fintech ledger?

Cost is driven by the amount of design and correctness work, not by the software license, because TigerBeetle and Blnk are open source. The main components are the scoping and account model design, the integration work with payment providers and the core accounting system, correctness and load testing, the infrastructure you run it on, and operations after go-live. Most one-time costs sit in design, integration and testing. Recurring costs include infrastructure, monitoring, patching, upgrades and support time. Ask any quote to split these out and to state who is paid for each item, your team, DeployOpen or a third party, and which items recur.

How long does a ledger build take and what sets the timeline?

No duration is fixed here, so treat any number you hear as a question to confirm against scope. The timeline is set by the account model, the number of currencies and products, the number of payment and bank integrations, how much reconciliation and reporting is needed, and how much testing your correctness requirements demand. Client-side factors such as approval cycles, access to sandbox environments and the speed of your compliance review often matter more than the build itself. A fixed-scope written plan, with deliverables and milestones agreed before work starts, is the right way to pin down the timeline.

What does our team need to provide before a ledger project starts?

Your team needs to provide the business rules that the ledger must enforce, the account and product model, the currencies and settlement cycles you operate, and the list of payment providers and core accounting interfaces involved. You also need named owners for finance, risk and engineering decisions, access to non-production environments and sample data that reflects real transaction shapes, and a clear view of your availability and recovery targets. Without these inputs, the design phase expands and the fixed scope becomes harder to hold.

Can a small engineering team run a self-hosted ledger without a partner?

A small team can run a self-hosted ledger, but the question is whether it has the time and skills for the work that never ends. Day-to-day tasks include monitoring the cluster or database, applying security patches and version upgrades, rehearsing backup restores, handling incidents, and answering auditor questions about access and change management. A partner can cover the initial build and then a retainer for ongoing support and upgrades, while your team keeps operational ownership. Confirm the handover plan, the runbooks you will receive and which skills must be in-house before go-live.

How should we choose between TigerBeetle, Blnk and PostgreSQL?

The choice depends on your throughput and latency needs, how much double-entry logic you want ready-made, and how much custom correctness testing you are prepared to fund. A purpose-built ledger database such as TigerBeetle focuses on high-volume balance and transfer correctness, while Blnk adds ledger services such as reconciliation and workflow features on top of a data store. Building on PostgreSQL gives maximum flexibility and familiar tooling, but your team must design and prove the double-entry rules, idempotency and locking itself. Settle the requirements checklist first, then test candidates against your own transaction patterns and confirm license terms with each project.

What happens if we need to move the ledger to another provider later?

Moving a ledger is possible but needs planning, because balances, transfer history and pending transactions must stay correct through the switch. Ask how the data can be exported in full, whether account identifiers and transfer IDs are preserved, how idempotency keys are carried over, and how you will verify that totals match after cutover. For EU financial and data processing contexts, the Data Act requires data processing service providers to let customers switch to another provider or to on-premises infrastructure, with a maximum two-month notice period and a 30-day transitional period, and from 12 January 2027 switching charges may not be imposed. Confirm these terms in any contract, and keep exports and reconciliation evidence from day one.

What evidence will auditors ask us to show about the ledger?

Auditors will typically ask how the ledger enforces immutability, who can access balances and posting logic, how changes to posting rules are approved, and how completeness is shown against payment and bank records. If you serve US broker-dealers, SEC Rule 17a-4(b) requires preserving certain business records for at least three years, the first two in an easily accessible place. Under the FTC Safeguards Rule at 16 CFR 314.4, covered institutions must log user activity and use multi-factor authentication. DeployOpen prepares systems, controls and evidence for assessments, but independent auditors issue any report or attestation. Confirm with your auditor which evidence they will sample before the design is frozen.

What to ask an implementation partner before you commit

Start by asking for a written scope and a sample test plan before any contract is signed. The plan should show how the partner tests correctness for a double-entry ledger: that every transfer posts equal debits and credits, that balances never go negative where your product forbids it, and that a failed write leaves no partial state. Ask which tests run against the chosen platform (TigerBeetle or Blnk) and which run against your own posting logic, and who owns the test data. Ask how idempotency and retry behavior are tested, including a duplicate request with the same idempotency key sent after a timeout, and a payment provider webhook delivered twice.

Next, ask how pending transfers and reversals are handled end to end. Request the exact sequence for a hold that is later posted, partially posted, or voided, and for a refund or chargeback recorded as a correcting entry instead of an edit to history. Ask for reconciliation coverage in concrete terms: which processor exports and bank files are matched, how timing differences and unmatched items are queued, and what month-end report finance receives. Ask for backup and recovery tests that restore the ledger to a separate environment and prove balances match the source before and after recovery, with the restore time recorded in the test report rather than assumed.

Finally, settle the commercial and exit terms in writing. Confirm the license terms of the chosen platform and any components the partner adds, and who is responsible for upgrades and security patches, with the support hours and response commitments stated in the contract. Ask how the ledger data can be exported in a documented format so you can switch platforms or move to on-premises infrastructure without losing history. Finally, ask who holds operator access to the ledger, how those accounts are granted, logged and removed, and whether privileged access is separated from the people who change posting logic. Get the answers in the statement of work, not in a sales call.

How DeployOpen scopes and supports a self-hosted ledger

The sequence turns an open ledger decision into a written scope, a ledger that runs inside your infrastructure, and the test and evidence records your finance, security and audit teams need. Each step ends with an agreed output, so nothing moves to the next stage on assumption.

  1. Hold a requirements workshop on the ledger

    DeployOpen works with your product, finance, payments and security leads to record transaction volumes, latency targets, account model, currencies, pending transfer patterns, idempotency expectations, history and snapshot needs, reconciliation sources and audit access. The team also confirms license terms for the candidate platform, whether TigerBeetle or Blnk, and the systems the ledger must integrate with. The output is a requirements register that names an owner for each open question, and it is the basis for the scope that follows.

  2. Agree scope and deliverables in writing

    DeployOpen turns the requirements register into a written, fixed-scope statement covering components, interfaces, environments, deliverables and acceptance criteria. Your team reviews the document with procurement and legal before any work begins, and both parties sign it. DeployOpen does not publish a price list, so the quote follows directly from this written scope. The signed scope is the reference for every change request that comes later.

  3. Deploy the ledger in your infrastructure

    Engineers install and configure the chosen ledger inside your cloud accounts, data center or air-gapped network, along with the database, networking, secrets handling, identity access and backup components defined in the scope. Your team retains control of the environment and its keys. Completion is shown by a deployment record, a configuration baseline stored in version control, and a successful run of the agreed functional test cases against the posting logic.

  4. Build posting logic and payment integrations

    DeployOpen implements the double-entry posting rules, pending and posted transfer flows, idempotency keys and correcting entries described in the requirements. It also connects the ledger to the payment providers, the core accounting system and the reconciliation sources identified in the workshop. Each integration is tested for duplicate submissions, partial failures and retries. The output is a mapping document that shows which event creates which entries, and which exceptions go to an operator queue.

  5. Test the ledger API and its security controls

    DeployOpen's security testers assess the ledger API, its authentication and authorization, the operator interfaces, and the infrastructure hosting it. Findings are logged with severity, reproduction steps and an agreed fix path, and retests confirm closure. Your team receives a test report that states scope, method, tools and results. Testing does not replace the independent assurance work your auditors perform, but it gives them a documented record to review.

  6. Prepare evidence for assessments

    DeployOpen assembles the records that assessors typically ask for, such as system descriptions, access reviews, change records for posting logic, configuration baselines, backup and restore results, test reports and incident procedures. Evidence is mapped to the control areas in your assessment program. DeployOpen prepares this material but does not issue audit reports or certifications. Independent auditors and certification bodies make those determinations, and your team confirms with them which evidence they require.

  7. Hand over and agree optional retainers

    DeployOpen runs a handover session with operators, finance and security staff, covering runbooks, monitoring, incident steps and the change process. Your team confirms acceptance against the criteria in the signed scope. If you want continuing help, DeployOpen offers retainers for platform upgrades, ongoing support and continuous security testing, each defined in its own written agreement. Ask which of these services the quote includes and which are optional.

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.