TigerBeetle — Distributed Financial Accounting Database
Purpose-built OLTP database for double-entry accounting and financial transactions, written in Zig and designed for safety and speed.
What it is
TigerBeetle is a purpose-built OLTP database designed for double-entry accounting and financial transactions. Written in Zig, it prioritizes safety and deterministic performance for financial workloads that cannot tolerate data loss or inconsistency.
TigerBeetle targets fintech companies, payment processors, banks, and any organization that processes financial transactions at scale. It enforces double-entry bookkeeping invariants at the database level, eliminating an entire class of application-level bugs.
The project is actively maintained and suitable for both individual developers and teams looking to integrate it into their existing toolchain. Documentation and community support are available for onboarding.
How it saves time or tokens
TigerBeetle handles accounting invariants (debits equal credits, no overdrafts, idempotent transfers) in the database engine itself. Applications that would otherwise need complex transaction coordination logic can rely on TigerBeetle to enforce these rules. This reduces application code, eliminates race conditions, and simplifies auditing.
For teams evaluating multiple tools in the same category, the clear documentation and active community reduce the time spent on research and troubleshooting. Getting started takes minutes rather than hours of configuration.
How to use
- Download the TigerBeetle binary or use the Docker image.
- Format a data file:
tigerbeetle format --cluster=0 --replica=0 0_0.tigerbeetle - Start the server:
tigerbeetle start --addresses=3001 0_0.tigerbeetle - Use client libraries (Node.js, Go, Java, .NET, Python) to create accounts and submit transfers.
Example
// Node.js client
const { createClient } = require('tigerbeetle-node')
const client = createClient({ cluster_id: 0n, addresses: ['3001'] })
// Create two accounts
await client.createAccounts([{
id: 1n,
ledger: 1,
code: 718,
credits_posted: 0n,
debits_posted: 0n,
flags: 0,
}])
// Transfer funds (double-entry: debit account 1, credit account 2)
await client.createTransfers([{
id: 1n,
debit_account_id: 1n,
credit_account_id: 2n,
amount: 1000n,
ledger: 1,
code: 1,
}])
Related on TokRepo
- AI Tools for Database — Compare TigerBeetle with general-purpose and specialized databases.
- Featured Workflows — Browse curated infrastructure and data tools.
Common pitfalls
- Trying to use TigerBeetle as a general-purpose database. It only handles accounts and transfers. Store user profiles, product catalogs, and other data in a separate database.
- Ignoring the deterministic simulation testing model. TigerBeetle's correctness guarantees depend on its specific data model. Do not work around its constraints with application-level hacks.
- Not planning for cluster replication from the start. Single-node setups lack fault tolerance. Configure replication before going to production.
- Not reading the changelog before upgrading. Breaking changes between versions can cause unexpected failures in production. Pin your version and review release notes.
Frequently Asked Questions
TigerBeetle enforces double-entry accounting rules at the engine level. PostgreSQL requires application code to maintain these invariants. TigerBeetle also provides deterministic, predictable latency that general-purpose databases cannot guarantee under load.
Zig provides manual memory management without garbage collection pauses, which is critical for predictable latency in financial systems. It also provides compile-time safety checks that catch bugs before deployment.
TigerBeetle can process over one million transfers per second on a single node. This throughput is achieved through a custom storage engine optimized for the specific access patterns of double-entry accounting.
No. TigerBeetle has a purpose-built API for accounts and transfers. There is no SQL interface. Use client libraries in Node.js, Go, Java, .NET, or Python to interact with the database.
TigerBeetle is in active development with production users in the fintech space. The team uses deterministic simulation testing to verify correctness. Check the release status on the official site before adopting for critical financial workloads.
Citations (3)
- TigerBeetle Official Site— Purpose-built database for double-entry accounting
- TigerBeetle GitHub— Written in Zig for deterministic performance
- TigerBeetle Design Doc— Deterministic simulation testing for financial correctness
Related on TokRepo
Discussion
Related Assets
Conda — Cross-Platform Package and Environment Manager
Install, update, and manage packages and isolated environments for Python, R, C/C++, and hundreds of other languages from a single tool.
Sphinx — Python Documentation Generator
Generate professional documentation from reStructuredText and Markdown with cross-references, API autodoc, and multiple output formats.
Neutralinojs — Lightweight Cross-Platform Desktop Apps
Build desktop applications with HTML, CSS, and JavaScript using a tiny native runtime instead of bundling Chromium.