This release includes breaking changes related to Typesense/Search functionality. Please review the migration guide before upgrading.
Search with metadata
We have improved searching transactions, balances, and identities with metadata.Use your own tags, customer IDs, categories, or nested fields to filter and retrieve exactly what you need, making it easier to organize data around your business context.Fixes & improvements
- Insufficient balance checks now include inflight transactions, giving a more accurate view of available funds and helping prevent unintentional overdrafts.
- Improved handling of inflight transactions during commit and void operations in high-concurrency environments.
- The system now properly excludes rejected inflight transactions from commit operations to prevent errors.
- Enhanced search performance and memory usage optimizations.
- Updated Typesense client library with security patches and improved API compatibility.
- General bug fixes and performance improvements.
Fixes & improvements
- Enhanced PII tokenization: Strengthened PII tokenization functionality to properly handle international characters, emojis, and special symbols without corruption during tokenization and detokenization processes.
Fixes & improvements
-
Fixed telemetry configuration bug: Resolved issue where
BLNK_ENABLE_TELEMETRY=false
would still default to enabled. Telemetry and observability concerns are now properly separated with independent feature flags. - Enhanced transaction concurrency: Introduced robust locking mechanism for inflight transactions to prevent race conditions during commit and void operations, ensuring data consistency in high-concurrency scenarios.
- Improved transaction reference management: Updated transaction references to use UUID suffixes for unique identification instead of simple “-commit” suffixes, providing better transaction traceability and preventing reference collisions.
- Enhanced error handling: Improved error handling for “reference already used” errors to provide better transaction flow management.
- Added TypeSense DNS validation: Enhanced indexing reliability by ensuring TypeSense operations only occur when properly configured, preventing potential indexing failures.
- Added connection pooling support: Improved database performance and reliability through enhanced connection management.
Redis TLS verification control
The Redis configuration now supports askip_tls_verify
option. This allows you to connect to Redis instances with self-signed or untrusted certificates by skipping TLS certificate verification.Example:Bulk transaction queue processing
Bulk transactions now use the queue system by default for improved performance and reliability. Learn more: Why we use queueing.- Bulk transactions default to
skip_queue: false
. - Users can add
"skip_queue": true
to bypass the queue for immediate processing.
Other improvements
- Enhanced balance creation to prevent duplicate entries with the same indicator and currency.
Fixes & improvements
- Security: Added authentication bypass for
/health
endpoint to enable health checks without authentication.
New features
This release brings significant improvements to transaction processing, balance management, and system reliability with enhanced locking mechanisms and better webhook handling.-
GetBalanceByIndicator functionality
You can now retrieve balances using custom indicators, providing more flexible balance querying capabilities for your applications. -
Zero-amount transaction handling
The system now properly handles zero-amount transactions, ensuring consistent behavior across all transaction types and edge cases. -
Update balance identity endpoint
Added new endpoint to update the identity associated with a balance, allowing for better customer data management and account linking. -
Kubernetes deployment support
Added comprehensive Kubernetes manifests for streamlined deployment and management in containerized environments.
Major improvements
- Enhanced transaction precision for better handling of large financial values.
- Refunding transactions is now idempotent: you can no longer refund a transaction more than once.
- Improved balance creation reliability to prevent race conditions.
- Enhanced commit functionality using queue system for better transaction flow management.
- Improved webhook processing for better reliability.
- Enhanced webhook delivery consistency.
- Improved webhook error handling and retry mechanisms.
- Added comprehensive health check endpoints for better system monitoring.
- Added queue monitoring port for real-time queue metrics and dashboard monitoring.
- Enhanced system observability with improved logging and status tracking.
- Better configuration handling for transaction lock duration.
- Fixed API key revocation to properly bind to owner ID, preventing unauthorized access bypass.
- Enhanced reconciliation testing framework for better financial accuracy validation.
- Improved bulk transaction cleanup processes.
- Enhanced Docker workflow with multi-platform support for broader deployment compatibility.
- Streamlined deployment processes with better containerization.
Granular access controls
You can now create API keys with specific permissions to enforce granular access control in your ledger.Overdraft limits
Set a maximum overdraft threshold using theoverdraft_limit
parameter when you enable overdrafts for a transaction:overdraft_limit
to 500.00 ensures the balance does not drop below -$500.00, providing a safeguard against excessive overdrafts.Set Overdraft Limits →Use historical balances without balance snapshots
You now have the option to bypass balance snapshots when utilizing the historical balances feature, allowing your balances to be reconstructed with their transactions only.To do this, include the query parameterfrom_source=true
in your request URL:Apply precision with precise_amount
Accurately record amounts exceeding 15 digits with full precision using the precise_amount
field:- Convert the amount to its smallest unit.
- Enter this value directly into the
precise_amount
field of your request. - Include the corresponding
precision
value.
Example
precise_amount
→Balance reconstruction
Correct ledger discrepancies by recalculating your balance directly from transactions. To use this feature, update your balance metadata with the following key:Instant reconciliation
You can now instantly match transactions and mark them as reconciled, with reconciliation details stored in the transaction’s metadata for easy tracking.See Instant Reconciliation for more details.Other improvements
- Added database protections to prevent unauthorized changes to transactions and balance snapshots.
- Introduced a transaction journal featuring a comprehensive audit log to track all activities within the transactions table.
- Enabled metadata updates for multiple transactions using the
parent_transaction
ID, - Upgraded Redis connectivity with TLS support.
- General bug fixes and performance improvements
Bulk transactions
The Bulk Transaction API enables you to process multiple transactions within a single request. It offers two processing options: atomic processing, where all transactions either succeed or fail as a unit, and independent processing, where each transaction is handled separately.Additionally, the API supports asynchronous processing to efficiently manage large batches of transactions.Bulk Transactions →Backdated transactions
Introducing theeffective_date
feature for recording transactions with a financial date different from their system entry date.This capability ensures seamless migration, accurate financial reporting, reconciliation, and historical balance calculations.Backdated Transactions →PII tokenization
We’ve introduced a PII tokenization feature allowing you to replace sensitive customer data with non-sensitive tokens while maintaining the ability to use the data for business operations.This enhances security, reduces compliance scope, and maintains full functionality within your applications.PII Tokenization →Bug fixes & improvements
- General bug fixes and improvements.
- Added environment variables for Blnk configuration parameters.
Balance snapshots & historical balances
Introduced the Balance Snapshots feature, enabling users to retrieve historical balance data at any specific point in time. This enhances accurate financial reporting and analysis while maintaining efficient storage and retrieval mechanisms for optimal performance and scalability.Balance Snapshots →Historical Balances →New configuration for handling insufficient funds
Added configuration parameters to control how the ledger processes transactions when funds are insufficient.-
insufficient_fund_retries
: Determines whether the ledger should automatically retry transactions that fail due to insufficient funds. -
max_retry_attempts
: Specifies the maximum number of retry attempts before the transaction is rejected.
Added queued balances
Queued balances help estimate the available or expected balance of a ledger. Unlike inflight balances, which require certain conditions to be met (commit or void) before being applied, queued balances simply represent the total amount of transactions waiting in the queue, regardless of conditions.To view the queued balances of a ledger balance, call the Get Balance endpoint:Response
Direct transaction processing (skip queue)
Addedskip_queue
option to allow transactions to bypass the queue system and process immediately. When enabled:- Transactions act directly on balances without entering the queued state
- System maintains data consistency through Redis distributed locks
- Optimistic locking at database level ensures transaction integrity
"skip_queue": true
to your transaction request body when posting a transaction to your ledger.Updates to transactions
TheQUEUED
state is now stored in your Ledger to enhance organisation and traceability in your financial data.When a queued transaction is processed, we maintain a clear link to its origin:- Each queued transaction maintains two connections to its parent:
- Direct link via
parent_transaction
field - Modified reference with
_q
suffix
- Direct link via
- Clear audit trail of transaction flow
- Easy tracking of transaction history
- Prevention of reference collisions
- Ability to trace complete transaction lifecycle
How transactions work in Blnk
Learn how transactions are recorded in your Ledger and how to work with them
Configuration file
Blnk Finance now provides granular control over transaction and queue behaviors. This allows you to fine-tune system performance and behavior according to your needs.Configuration file
Learn how to customise your Blnk server with the blnk.json file.
Metadata update
The metadata update feature allows you to attach and modify additional information to different financial items (ledger, balance, transaction or identities) without altering their core attributes. This provides flexibility for storing custom data, tags, or references.Bug fixes & improvements
- Enhanced distribution calculations with rounding support
- Improved transaction processing and metadata handling
- Enhanced configuration options for transaction and queue management
- General bug fixes and improvements
Bug fixes & improvements
- Improved URL parsing for managed and Docker Redis connections.
Bug fixes & improvements
indicator
not returning for internal balances on theGET /balances
endpoint is now fixed.
Bug fixes & improvements
- Improved transaction processing speed through optimized reference checking.
Reconciliation
We’re excited to announce Reconciliation, a powerful new module that helps developers seamlessly compare and reconcile external records with your Blnk Ledger. This feature ensures data consistency, simplifies auditing processes, and reduces errors by automatically flagging mismatches.To learn more: Reconciliation overview.Parent transactions
We addedparent_transaction
for transactions with parent ids, e.g., inflight transactions, multiple sources/destinations, scheduled transactions, etc.For example, when an inflight transaction is committed, a new transaction is created in your ledger. This new transaction includes the parent_transaction
field, which references the original inflight transaction.Other related improvements include:- Added pagination support for fetching transactions by
parent_transaction
.
Bug fixes & improvements
- Add identity and reconciliation collections to Search.
- Added new tools for system monitoring to provide better visibility and faster detection of performance issues.
- Added rate-limiting to ensure fair usage and maintain system reliability during high traffic periods.
- Resolved issues with backups to Amazon S3.
- Improved error handling to deliver clearer feedback and make debugging more efficient.
Bug fixes & improvements
- Fixed dates not being returned correctly.
- Improved Search
created_at
is now set before queuing transactions.
Rates
We’ve introduced Rates, a feature that allows you to record transactions between balances of different currencies.Applying rates
Bug fixes & improvements
- Added
inflight_expiry_date
for specifying when an inflight transaction should expire and be automatically voided. - Added new balance fields and
operator
field to balance monitors. - You can now only commit up to the total amount of the original inflight transaction.
Added search
Search gives you full control and flexibility over how you fetch your transaction data from your Blnk Ledger. You can use Search to retrieve any data — ledgers, ledger balances, and transactions — from your Blnk Ledger.Transaction precision
precision
is now a transaction parameter. Blnk uses precision
to convert transaction amounts to the lowest unit possible, e.g., converting naira to kobo, to ensure that your balances are correctly computed.The lowest unit for an asset class is a value that has no decimal point regardless of what amount is passed.
Partial commits for inflight transactions
You can now commit transactions inINFLIGHT
in bits, i.e., you can release the amount being held by your system in batches based on the conditions you’ve set for the transaction or participating balance.Bug fixes & improvements
- Fixed typos in the payloads for
inflight
andallow_overdraft
. - General bug and performance improvements.
Multiple sources & destinations

Inflight transactions
We’ve introduced Inflight Transactions, a feature that allows you to hold a transaction until specific conditions are met.Enable inflight
Overdrafts
With the new Overdrafts feature, you can process transactions even if the ledger balance doesn’t have sufficient funds. When overdraft is enabled, your balance can go negative, signifying that more money has been spent than received.Enable overdraft
Enhanced concurrency control
Improved transaction processing to ensure that multiple transactions can be seamlessly processed simultaneously at scale. Learn more: How Blnk handles concurrency.Bug fixes & improvements
- The
precision
value for a ledger balance is now automatically applied to the amounts of all transactions that the balance is part of. This ensures that your balance is correctly computed and no amount is lost to approximation. - General bug and performance improvement.
Welcome to our first release
Blnk Core is live and available for download.Fintech developers now have access to an open-source ledger database (a reliable source of truth) and fintech backend infrastructure for building their financial products at scale.Ledgers and ledger balances
You can now model your customers’ accounts, wallets, and all kinds of balances with our ledger and ledger balances features. You can also implement balance monitoring or manage multi-currency wallets in one place.You can also represent your organization’s chart of accounts in your Ledger with our General Ledger feature.Transactions
You can accurately record and track transactions between balances in your Ledger. Blnk transactions feature also allows you to model and implement complex money movement within your system.You can also toggle on refunds, and scheduling.Identities
You can create and manage identities for your customers (individuals and organizations) within your Ledger. Learn more: IdentitiesAdvanced
- Added https configuration for running your Blnk server in secure mode.
- Added k6 for load testing.