Skip to content
Putting technology to work.
Insights to guide decisions and action.

Search articles

Designing a "Ledger" That Never Drifts — Lessons for Custom System Design from Uber's High-Frequency Ledger Processing 2026

Table of contents · 11 items

InfoQ reported that 30+ Updates per Second per Account: Uber Scales Ledger Processing with Batching. Handling over 30 updates per second per account is more than just boasting about heavy workloads. It shows how Uber overcame a challenge common to all balance-tracking systems: systems handling "balances"—such as points, electronic money, wallets, inventory, and sales—cannot tolerate even a single yen or unit of discrepancy, yet concurrent updates concentrated on the same account frequently bottleneck due to row lock contention.

Meanwhile, on custom development front lines, incidents such as "points being granted twice," "cancellations crossing with purchases resulting in negative balances," and "ledger and sales totals not matching during monthly closings" continue unabated. From the perspective of supporting system development through custom projects, we view this not simply as "can we add and subtract balances?" but as an architectural challenge of "maintaining consistency without bottlenecks even under heavy concurrent updates, and delivering a system that remains fully auditable." Connecting with the massive data processing discussed in Redesigning Meta-Scale Data Ingestion Platforms in Custom Projects (GH Media), the processing reliability covered in Robust Backend Custom Development with Postgres / SQLite Workflows (GH Media), and the performance engineering explored in Backend Memory and Cost Optimization for Client Projects (GH Media), this article organizes our "Balance and Ledger Platform Design Support" into a custom development package.

Why balance systems differ from regular CRUD

DimensionRegular CRUDBalance and ledger design
CorrectnessRoughly matching is fineCannot drift by even one yen
Concurrent updatesCollisions are rareHeavy collisions on the same account
ConsistencyOverwriting is sufficientSequence of additions and subtractions alters outcomes
ReversalsDeleting restores stateCorrections recorded via reversing entries
AuditingNice to haveFull traceability of all transactions is mandatory
DeliverableWorking is enoughZero drift, no bottlenecks, fully auditable

In short, "being able to calculate balances" and "building ledgers that stay consistent, never bottleneck, and remain auditable" are two completely different things. In custom development as well, "designing append-only entries, idempotent ingestion, and concurrency-resilient update mechanisms, and delivering them complete with audit and closing workflows" has become a quality baseline. This allows us to guarantee a "discrepancy-free balance platform" as a deliverable.

Three pitfalls and design principles that break balance systems

Principle 1: Store as "append-only journal entries" rather than "overwriting current values"

Directly modifying balance columns easily leads to discrepancies under concurrency and system failures. In custom development, we structure data as an append-only ledger recording transactions row by row, where balances are aggregations, ensuring that everything can be recalculated and audited at any time.

Principle 2: Neutralize "duplicate executions" using idempotency keys

Retries and duplicate notifications result in double-crediting. In custom development, we implement idempotent ingestion using transaction IDs as unique keys, ensuring that results remain identical no matter how many times an operation is run.

Principle 3: Alleviate "row lock contention" via batching and partitioning

Concurrent updates targeting high-activity accounts stall on row locks. In custom development, we protect consistency while preserving throughput through batch aggregation of updates and account sharding (the core insight from Uber's case).

5 phases of "Balance and Ledger Platform Design Support" provided in custom development

Phase 1: Current state assessment (1–2 weeks)

  • Incidence of balance discrepancies, double-grants, and closing mismatches
  • Identifying concurrent update hotspots (high-activity accounts)
  • Evaluating current transaction designs and idempotency
  • Organizing audit and closing requirements

Phase 2: Ledger design (1–2 weeks)

  • Designing append-only ledgers and snapshots
  • Defining idempotency keys and consistency constraints
  • Selecting contention-mitigation schemes (batching / sharding)
  • Designing closing, reconciliation, and correction (reversing entry) workflows

Phase 3: Implementation (3–5 weeks)

  • Implementing ledger tables and balance aggregation
  • Idempotent transaction ingestion pipeline
  • Batch aggregation / locking strategies for high-frequency updates
  • Implementing audit logging and reconciliation jobs

Phase 4: Verification and migration (1–2 weeks)

  • Consistency testing under concurrent updates and fault injection
  • Migrating existing balance data and initial reconciliation
  • Confirming throughput with load testing

Phase 5: Ongoing operations (continuous)

  • Automated daily/monthly reconciliation and closing
  • Balance discrepancy detection alerts
  • Continuous hotspot monitoring and partitioning

Standard technology stack set for custom development

LayerRecommended approachAlternative
LedgerAppend-only ledger + snapshotsDirect updates to balance columns (not recommended)
IdempotencyUnique constraints on transaction IDsCustom ad-hoc duplicate checks
Contention mitigationBatch aggregation / shardingSimple row locks (bottlenecks)
ConsistencyDB transactions + constraintsLeft to application logic
ReconciliationAutomated reconciliationManual monthly reconciliation
AuditingImmutable log of all transactionsOverwritten logs

Which projects need this and which do not

Projects requiring thisLow-priority projects
Handles points / walletsDoes not handle monetary amounts
Negative inventory/balances are strictly prohibitedNo concept of inventory
Updates concentrate on the same accountUpdate frequency is very low
Auditing and closings are business requirementsStrict reconciliation not required
Double grants have occurredNo history of consistency incidents

Six clauses to include in client contracts

ClauseDetailsWhat the client should verify
Target scopeBalances to convert to ledgersMigrating existing balances
Consistency guaranteesDemarcation of responsibilities for discrepancy detection and reconciliationZero-tolerance premise for discrepancies
PerformanceThroughput targetsPeak load requirements
CorrectionsReversing entry and cancellation policyAudit compliance requirements
HandoverDesign / Reconciliation runbooksMaintenance framework
Ongoing maintenanceClosings / MonitoringOperating costs

Client-side ROI estimate (assuming points / wallets)

ItemDirect balance updatesLedger platformDifference
Double-grantingOccurs each time / compensation requiredPrevented by idempotencyReduction in losses and refund handling
Balance discrepanciesDiscovered during closingsInstantly detected via daily reconciliationAvoidance of reputational damage
BottlenecksStalls during peak periodsAbsorbed through batchingMitigation of lost business opportunities
Audit complianceTracked manuallyInstantly tracked via logsReduction in operational response hours
Annual benefitReduction in grant losses + preservation of trust

Even if substantial investment is required, it is fully justified solely by preventing losses from duplicate grants and avoiding brand damage caused by balance inconsistencies. For balances tied directly to money, the cost of a single incident far exceeds the cost of upfront design.

Five common pitfalls

Pitfall 1: Directly updating balance columns

Concurrency and failures will cause silent drift. Use an append-only ledger + aggregation.

Pitfall 2: Leaving retries non-idempotent

Duplicate notifications cause double grants. Enforce unique constraints on transaction IDs.

Pitfall 3: Handling high-activity accounts with simple row locks

System bottlenecks and stalls at peak. Relieve contention via batch aggregation / partitioning.

Pitfall 4: Handling cancellations via hard deletes

Audit trails are lost. Record corrections using reversing entries.

Pitfall 5: Relying on manual monthly reconciliation

Detection is delayed and damage spreads. Adopt daily automated reconciliation.

90-day action plan

WeekAction
Week 1〜2Inventory of discrepancy causes and hotspots
Week 3〜4Designing append-only ledgers, idempotency, and contention mitigation
Week 5〜9Implementation + fault injection and load testing
Week 10〜11Balance migration + initial reconciliation
Week 12〜13Automating closings + launching discrepancy detection operations

Conclusion — From "casual arithmetic" to "delivering systems that stay consistent, never bottleneck, and remain auditable"

Systems handling balances cannot tolerate even a single yen or unit of discrepancy, and they stall when concurrent updates concentrate. From the perspective of supporting system development through custom development, designing append-only journal entries, idempotent ingestion, and concurrency-resilient update methods, complete with audit and closing workflows prior to handover in our "Balance and Ledger Platform Design Support" serves as our new core offering that delivers discrepancy-free balance platforms as deliverables. For large-scale data ingestion platforms, read Redesigning Meta-Scale Data Ingestion Platforms in Custom Projects (GH Media), and for robust long-running processing, see Robust Backend Custom Development with Postgres / SQLite Workflows (GH Media).

If you are dealing with "points being granted twice," "balances not matching during closings," or "payments bottlenecking at peak times," please feel free to reach out via our contact form.

Sources

Share this articleXFacebook
Kakeru Suzuki

Fascinated by the possibilities of technology, has had a deep interest in programming and digital art since student days

Turn this article's theme into your company's next step

Concrete steps forward for your organization.

We organize your desired architecture, legacy systems, and operational requirements to formulate your next steps toward execution.

  • Desired architecture
  • Integration with existing environments
  • Operational requirements
Consult on development & operations initiatives

You can consult with us from the initial conceptual stage. Details from this article will be carried over to the inquiry form.

Receive the latest articles by email