A ledger operation represents a single action recorded in the ledger that results in a state change. Each ledger operation corresponds to one atomic event, whether initiated externally or internally.
Behavior
- Ledger Operations are immutable once recorded.
- They provide traceability, idempotency, and a complete audit trail of all state transitions.
Usage
Serves as the fundamental unit for representing, tracking, and reconciling all changes within the system.
Sample Ledger operationJSON
API Index URL
Ledger operations attributes
A unique identifier for this ledger operation.
Behavior
- In case of external ledger operations, the id can be optionally provided by the upstream system.
- In case of internal ledger operations, the id is generated by the ledger.
- Immutable and cannot be modified once written.
Specifies the type of ledger operation, indicating the kind of business event this record represents.
Types
External Ledger Operations: Triggered via API calls
authorizecapturecapture_authorizationrelease_authorization
Internal Ledger Operations: Triggered via system processes
allocationexpiryrollovervoidadjustment
Credits issued into an account, such as allocations created from configured credit grants or promotional grants.
Immediate one-step debit of credit grants from the usable balance.
Reserves credit grants (moves from usable_balance to hold_amount) for later capture or release.
Returns a hold to the usable balance, or finalizes an auto-release of the hold.
Finalizes a hold, converting all or part of the held amount into a final debit; any remainder can be auto-released.
Credit grants expired from a grant block (and related account movements).
Credits removed from a grant block through administrative updates.
Carry-forward of balance into a new grant block or related rollover run.
When overdraft is in adjustment mode, new credit grants can adjust an existing overdraft balance.
Represents the quantity of credit grants affected by this ledger operation.
Returned as a decimal string. Maximum supported value: 9999999999999999999999999.9999999999 (up to 25 digits before the decimal and up to 10 digits after).
Behavior by Ledger Operation Type
capture: Credits debited from the account immediately.authorize: Credits reserved, moving from usable balance to held amount.capture_authorization: Credits finalized as consumption (converted from held to debited); any remaining held credits are automatically released.release_authorization: Credits released from hold back to the usable balance.expiry: Credits that have lapsed after the validity and grace period.rollover: Credits carried forward into a new grant block.void: Credits removed through administrative updates.
The usable credit balance immediately before this ledger operation was applied.
Returned as a decimal string. Maximum supported value: 9999999999999999999999999.9999999999 (up to 25 digits before the decimal and up to 10 digits after).
Usage
Use alongside end_balance to trace exactly how each ledger operation moved the balance over time.
The usable credit balance immediately after this ledger operation was applied.
Returned as a decimal string. Maximum supported value: 9999999999999999999999999.9999999999 (up to 25 digits before the decimal and up to 10 digits after).
Usage
Use alongside start_balance to trace exactly how each ledger operation moved the balance over time.
The provisioned account balance immediately before this ledger operation was applied.
Returned as a decimal string. Maximum supported value: 9999999999999999999999999.9999999999 (up to 25 digits before the decimal and up to 10 digits after).
Usage
Use alongside provisioned_end_balance to trace exactly how each ledger operation moved the provisioned account balance over time.
The provisioned account balance immediately after this ledger operation was applied.
Returned as a decimal string. Maximum supported value: 9999999999999999999999999.9999999999 (up to 25 digits before the decimal and up to 10 digits after).
Usage
Use alongside provisioned_start_balance to trace exactly how each ledger operation moved the provisioned account balance over time.
The overdraft account balance immediately before this ledger operation was applied.
Returned as a decimal string. Maximum supported value: 9999999999999999999999999.9999999999 (up to 25 digits before the decimal and up to 10 digits after).
Usage
Use alongside overdraft_end_balance to trace exactly how each ledger operation moved the overdraft account balance over time.
The overdraft account balance immediately after this ledger operation was applied.
Returned as a decimal string. Maximum supported value: 9999999999999999999999999.9999999999 (up to 25 digits before the decimal and up to 10 digits after).
Usage
Use alongside overdraft_start_balance to trace exactly how each ledger operation moved the overdraft account balance over time.
The ledger_operation_id of the parent authorize ledger operation associated with this ledger operation.
Usage
- Present on
capture_authorizationandrelease_authorizationledger operations to identify the hold being finalized or released. - Also present on internally generated release ledger operations (for example, partial-capture remainders) to correlate them back to the original authorization.
Constraints
- Must match the
ledger_operation_idused in the originalauthorizecall. - The same value should be reused across retries.
Unix timestamp (in seconds) representing when the business event occurred in the upstream system. Used for period attribution, grace-period eligibility, and reporting accuracy.
Note
Late or out-of-order submissions appear in arrival order, while attribution and eligibility logic rely on ledger_operation_timestamp.
Constraints
- The
ledger_operation_timestampmust be within the last 10 minutes from the time of the request. - Grant blocks outside their active window (including those in the grace period) are not eligible for authorization and are excluded from balance checks for this ledger operation.
Unix timestamp (in seconds) indicating when an unfinalized hold from an authorize request will be automatically released back to the usable balance.
Behavior
- Applies only to authorize ledger operations.
- If not explicitly provided, the system assigns a default expiry.
- Defaults to approximately 10 minutes after the authorize request is processed.
Usage
Ensures held credits are not locked indefinitely by abandoned or unfinalized authorizations.
Note
- By default, the value reflects what is provided in the request.
- If the specified timestamp exceeds the end of the block's grace period, it is adjusted (clamped) to the grace period end and returned in the response.
Unix timestamp (in seconds) indicating when this ledger operation was recorded in the system.
Behavior
- Automatically set by the system at the time of persistence.
- Immutable and cannot be modified once written.
Note
Serves as the source of truth for ordering ledger operations and tracking how they affected the balance over time.
A unique, immutable identifier for the subscription against which this ledger operation was recorded.