HomeGuidesAPI ReferenceChangelog
Log In
Guides

Statement Versioning

Statement Versioning provides a formal data versioning system for Plug.

Overview

Statement Versioning provides a formal data versioning system for customers whose business needs require end to end audit traceability. This feature allows you to retrieve immutable historical records of statements and their related data, ensuring a transparent chain of custody for financial audits and compliance.

By shifting from a "delete-and-replace" model to a versioned history, this feature ensures that data used for bill pay or analysis remains accessible even after corrections are made to improve existing data.

Key concepts

Immutable History

Every statement now has a complete version history. Instead of overwriting data during corrections, the system creates new versions while preserving the old ones. This allows developers to "lock" their applications to a specific, stable version of data, preventing unexpected changes from breaking integrations.

Voided Data

To maintain an accurate history without losing data integrity, entities (such as Meters or Accounts) that are removed during a correction are no longer hard-deleted. Instead, they are marked with a voidedAt date-timestamp.

In the edge case that a previously voided object is valid once again, we will unvoid the object by setting the voidedAt value as null. The objects event history will show this change so it can easily be tracked over time. This edge case primarily impacts meters with a null meter number.

Voided Data indicates the data is no longer part of the current valid set but exists for historical reference. You can directly navigate to voided data in the Dashboard, but it is not represented as a first class object intentionally.

Examples of voided data

If an initially extracted account number is incorrect, but later corrected by Arcadia, then then the Account record that has the incorrect number would get voided. The corrected version of the data extraction with the new Account record would be associated to the the Statement, and show up on the newer version of the Statement record. The same concept would apply for Meters.

Accessing versioned data

API and Dashboard access

Statement versions can be fetched via the API. Calling the pre-existing Retrieve Statement and Retrieve Detailed Statement endpoints fetch the most recent versions. Calling the new statement version endpoints Retrieve Statement Version and List Statement Versions fetch versioned statement records.

On the Dashboard, select the version of a statement you would like to view to see data as it was at the time of the version. We will always default to the latest version when navigating to new pages for Accounts and Meters that are not voided. If an Account or Meter record is voided and you select the Statement link, you will land on the latest Statement Version that that voided entity appeared on.

CSV downloads

Download account statement CSV, Site usage CSV, and Meter usage CSVs now have a new column appended for "Latest Statement Version ID" to provide users with the ability to trace CSV data to statement versions.

Webhooks

The STATUS_CHANGE webhook will emit when an account or meter is marked as voided or unvoided.

The EXISTING_DATA_UPDATED now includes the new versionId in the payload, allowing clients to identify and retrieve the latest version immediately upon reprocessing.