Flow · 6 steps

Close the books on a year

Once a financial year is closed, what was done in it is final. Locking the books through its last day keeps the general ledger, the trial balance and every connected ledger's journals from changing there again: anything that would land in it is posted on the first open day instead, carrying the day it belonged to. The lock moves forward only. An owner can move it back, giving a reason, and that is recorded. A connected accounting app reports its own lock date, and whichever lock is later is the one in force.

Services involved

A filled dot is a read; a ring is a call that changes something.

  • Accounting Ledger: https://accounting.getmanifold.io

Every call carries Authorization: Bearer $MANIFOLD_TOKEN unless its step says otherwise (getting a token). Run a flow in your sandbox, not your live organization: see Before you start.

1 Nothing is locked yet

A new organization's books are open on every day. A read: it appends nothing.

GET /books/lock Accounting Ledger

What the answer holds: the operation's example.

2 Lock the year

Finance locks the books through the year's last day, which has already ended in the books' zone.

PUT /books/lock Accounting Ledger

Request · application/json
{
  "lockedThrough": "2025-12-31"
}

What the answer holds: the operation's example.

Records accounting.books-locked.

3 A retry locks nothing twice

The same lock again: it is already where it was asked to be, so nothing is appended.

PUT /books/lock Accounting Ledger

Request · application/json
{
  "lockedThrough": "2025-12-31"
}

What the answer holds: the operation's example.

Records nothing.

4 A lock never moves back by itself

Locking through an earlier day is refused 409 PeriodLocked, naming the lock date.

PUT /books/lock Accounting Ledger

Request · application/json
{
  "lockedThrough": "2025-06-30"
}
Refused · 409
{
  "_tag": "PeriodLocked",
  "lockedThrough": "2025-12-31",
  "reason": "the books are locked through 2025-12-31: a lock moves forward only, and only an owner moves it back"
}

Records nothing.

5 An owner reopens part of the year

The owner moves the lock back to the end of June, giving the reason. This is the audited exception: the fact records who moved it, from where and why.

POST /books/unlock Accounting Ledger

Request · application/json
{
  "lockedThrough": "2025-06-30",
  "reason": "Reopening the second half to post the supplier credit the auditors found."
}

What the answer holds: the operation's example.

Records accounting.books-unlocked.

6 Read the lock as it stands

Manifold's own lock is now the end of June. No ledger is connected, so that is the lock in force.

GET /books/lock Accounting Ledger

What the answer holds: the operation's example.

What a recorded fact is: Facts and the journal. Why a repeated step changes nothing: Idempotency and retries.