A 2025#

a. 2025-04

#

Entry Versioning

  • You can now update an Entry types by incrementing its typeVersion field. This will automatically happen when editing your Schema within the Dashboard.
  • Once you deploy the Schema, the new Entry type version will become available alongside existing versions. To post to versioned entries addLedgerEntry and reconcileTx now both have a typeVersion parameter. This field is optional and will default to 1, so none of your existing callsites will be impacted.

Small improvements

  • Ledger Account names can now be updated in your Schema
  • Mitigated impact of noisy neighbours on historical balance updates in multi-tenant environments
  • Improved handling of retries when DynamoDB returns an Internal Server Error
  • Fixed bug where ledgerAccount queries could return ledger_account_not_found on existing accounts in high-throughput scenarios
  • Trying to use a deleted ledger now returns a specific error message instead of ledger_not_found
  • Better error messages when an invalid Ledger Account path is received

b. 2025-03

#

Repost Ledger Entries

You can now reverse and repost a Ledger Entry using the same idempotency key up to 10 times. This will create a chain to reversals and reposting that all share an idempotency key and the id of each LedgerEntry is unique.

Small improvements

  • Added drag and drop reordering of Schema Entry types in the FRAGMENT Dashboard
  • Fixed a race condition with updateLedger and deleteLedger
  • New invite feature to add members to your workspace via email
  • Updated the gen-graphql CLI command to support query generation for runtime Entries
  • Added delete-custom-txsdelete-ledgerdelete-schema, and reverse-ledger-entry to the FRAGMENT CLI
  • Add support for notEqualTo and notIn on StringFilter, to support filtering on LedgerEntry.type

c. 2025-02

#

Reverse Ledger Entries

  • Introduced a reverseEntryLedger mutation. This will post a new entry with the opposite amounts of an existing LedgerEntry. It will also free up the idempotency key, and allow you to repost a new LedgerEntry.
  • Ledger Entry and Ledger Line now expose reversalHistory, reversalPosition, reversedBy and reverses to traverse this chain.

Small improvements

  • Increased throughput when posting Entries that instantiate Ledger Accounts templates
  • List Entries now support filtering on Groups

d. 2025-01

#

Balances over a period

The LedgerAccount type now exposes balancesDuring and balanceChangesDuring fields for efficiently querying all hourly, daily or monthly balances in a specified time period. These can be used to display portfolio charts or generate trial balance reports.

Get monthly balances for a year
query GetBalanceHistory(
  $ledgerAccount: LedgerAccountMatchInput!
) {
  ledgerAccount(ledgerAccount: $ledgerAccount) {
    # Get monthly balances for a year
    yearlyBalances: balancesDuring(
      startTime: "2021"
      duration: 12
      granularity: monthly
    ) {
      startTime
      endTime
      granularity
      nodes {
        at
        amount {
          currency {
            code
          }
          amount
        }
      }
    }
  }
}

Learn more in the documentation.

Small Improvements

  • Started enforcing that static parameters in the Schema cannot have an empty string key or value