Skip to main content
Keep track of changes and updates for Formance Stack v3.x
March 16, 2026

Version: v3.2

ComponentVersion
ledgerv2.4
paymentsv3.2
walletsv2.1
orchestrationv2.1
reconciliationv2.1

Ledger

Ledger Schema

You can now define a Ledger Schema to validate account addresses, enforce naming conventions, and auto-assign metadata at account creation. Schemas also support reusable transaction templates for common patterns. Every transaction records which schema version validated it for auditability.

Bucket deletion and restoration

You can now delete buckets via the API. Deleted buckets are preserved for a configurable retention period (default 30 days) and can be restored before expiry.

$in filter operator

A new $in operator matches resources against a list of values in a single filter, replacing verbose $or + $match chains.

Log type filtering

You can now filter logs by type (SET_METADATA, NEW_TRANSACTION, REVERTED_TRANSACTION, DELETE_METADATA).

reverted_at filtering

Filter transactions by revert timestamp using the reverted_at field with $lt, $lte, $gt, $gte, $match, or $exists operators.

Idempotency-Hit response header

A new Idempotency-Hit header in API responses indicates when a request matched an existing idempotency key, distinguishing cache hits from new operations.

Experimental Numscript interpreter

The new standalone Numscript interpreter is now available in experimental mode, offering improved parsing and execution.

Metadata on bulk reverts

You can now attach custom metadata when reverting transactions via the bulk endpoint.

Logical replication support

Added replica identity on tables without primary keys, enabling PostgreSQL logical replication for CDC pipelines.

Exporter config updates

Exporter configurations can now be updated without recreating them, simplifying maintenance of streaming pipelines.

Observability improvements

  • New request-level API metrics for monitoring
  • OpenTelemetry histogram units and metric names updated to match semantic conventions

Performance and bug fixes

  • Fixed slow metadata updates caused by a missing index
  • Point-in-time now respected in /volumes account metadata filters
  • Query filters now use big.Int for large numeric values
  • Fixed startTime/endTime database column mapping for time range parameters
  • Faster migrations when upgrading from earlier versions
  • Fixed $or handling of multiple filter values for the same field
  • Fixed interaction between Numscript save and overdraft, plus world variable error
  • Relaxed asset regex to support a wider range of characters (e.g., hyphens)
  • Address filtering performance improved by pushing filters into LATERAL joins for GIN index usage

Payments

New connectors

Eight new connectors are available:
  • Column — Banking as a Service platform for businesses
  • Increase — Modern banking API for developers and businesses
  • Qonto — Business banking and financial management platform
  • Fireblocks — Enterprise-grade digital asset custody, transfer, and settlement platform
  • Coinbase Prime — Institutional crypto custody and trading platform by Coinbase
  • Tink — Pan-European banking connectivity with enriched transaction and payment data
  • Powens — Open banking access to European financial data across banks, savings, and more
  • Plaid — Secure access to U.S. bank accounts for data, identity, and payment verification
The Tink, Powens, and Plaid connectors support new open banking workflows:
  • Create a PSU (Payment Service User) to represent an end-user and forward them to the provider
  • Retrieve a URL to authenticate to the chosen bank
  • Renew a connection

Dynamic pools

Pools can now be defined with dynamic membership based on queries, in addition to static account lists. Balance computation is now performed inside PostgreSQL for better performance.

Generic connector payout capability

The generic connector now supports payout operations, expanding its use for custom payment integrations.

Stripe balance.available webhooks

The Stripe connector now processes balance.available webhook events for real-time balance tracking.

Polling changes

Page size is no longer user-configurable — a fixed value is now defined per provider for optimal data ingestion speed. Minimum and default polling periods have been adjusted to ensure continuous and reliable service. These values can be overridden via environment variables.

Performance and bug fixes

  • Reduced Temporal overhead by removing unnecessary sub-workflows and optimizing event processing
  • Fixed Stripe handling of unsupported adjustment types and refund-without-source scenarios
  • Connector updates now propagate correctly across multiple pods
  • Fixed connector uninstall timeouts via batched deletion
  • Server/worker now starts even when a plugin is invalid
  • Fixed hyphen handling in asset identifiers
September 30, 2025

Version: v3.1

ComponentVersion
ledgerv2.3
paymentsv3.0
walletsv2.1
orchestrationv2.1
reconciliationv2.1

Ledger

Ledger Service Process Separation

The ledger service has been split into two separate processes for improved performance. The existing ledger serve command now handles only HTTP requests, while a new ledger worker command manages all stateful operations like block hashing and log exports.

First Usage Filtering

Added a new first-usage filter to the /volumes endpoint, allowing you to filter volumes based on when they were first used.

Optional Asynchronous Log Hashing

Added configurable async hash computation to improve ledger throughput. You can now choose between synchronous hashing (maximum tamper-proof security) and asynchronous block-based hashing (better performance with reduced attack window). This addresses the sequential bottleneck in hash chain computation while maintaining audit trail integrity.

JSON transactions support for bulk streams

Bulk streams now support JSON transactions in addition to the existing Numscript format. The endpoint now accepts application/json content type for bulk operations.

Pagination improvements

Introduced a new sort query parameter to multiple list endpoints in the Ledger, allowing clients to specify sorting by field and order. It also adds support for paginating and sorting on additional fields, such as first_usage for accounts and date/id for logs and transactions. The account schema is updated to expose a new firstUsage timestamp field.

Additional metadata support for transaction reverts

The POST /api/ledger/v2/{ledgerID}/transactions/{transactionID}/revert endpoint now accepts optional user-provided metadata in the request. This allows for enhanced traceability and custom business logic while preserving the automatically-added com.formance.spec/state/reverts metadata that identifies the original transaction being reverted.

Big Integer String Serialization

Added a new rendering layer that allows big integers to be serialized as strings in API responses when requested via an HTTP header, providing better compatibility with clients that cannot handle large numeric values.

Log exporting system for real-time streaming

Introduced a comprehensive log exporter system for real-time streaming of ledger transaction logs to external systems. The system includes configurable exporters (Elasticsearch, HTTP, ClickHouse, stdout), pipelines that connect ledgers to exporters with reliable state tracking, and APIs for pipeline management via /v2/{ledger}/pipelines and direct export via /v2/{ledger}/logs/export. Features include automatic retry logic, configurable batching, and persistent state to prevent data loss.

Removed experimental features for data isolation

Experimental data isolation features  INDEX_ADDRESS_SEGMENTS and INDEX_TRANSACTION_ACCOUNTS are no longer supported and have been removed.
February 10, 2025

Version: v3.0

ComponentVersion
ledgerv2.2
paymentsv3.0
walletsv2.1
orchestrationv2.1
reconciliationv2.1

Ledger

Stateless Ledger Service

The Ledger service is now fully stateless and can operate with multiple replicas without requiring nodes synchronization.

Zero-Downtime Upgrades

Upgrades between versions now occur with zero downtime, ensuring a seamless transition and uninterrupted service.

New Numscript Interpreter

The new numscript interpreter is now available in experimental mode (numscript used to be bundled in the ledger, but is now a separate, standalone library: https://github.com/formancehq/numscript

Configurable Feature Disabling at the Bucket Level

You can now disable specific features on a per-ledger basis at the bucket level, allowing for better optimization based on your usage patterns.

Enhanced Write Performance

Significant improvements have been made to write operations, resulting in a higher throughput of transactions per second.

Improved Read Performance

Most endpoints have been optimized for faster read operations, leading to a more responsive system overall.

Enhanced _bulk Endpoint

The _bulk endpoint now supports streaming, parallel processing, and atomic execution, providing greater flexibility and control over bulk processing, optimizing for performance, consistency, and reliability. For details, refer to Bulk processing.

Payments

New dependency: Temporal

Temporal is now required to deploy the Payments service.

New V3 API improvements

New task endpointAdded an endpoint to fetch a task, which represents a background user operation. Once completed, the task will have a status of either “failed” or “successful.” If successful, the ID of any created object can be retrieved from the task.For connector uninstallation, payment initiation, and bank account creation, HTTP code 202 and a taskID are returned. The operations run in the background, and you can monitor their status and retrieve relevant IDs (e.g., payment or account ID) upon success by polling the task.