# Period

URL: /business/nouns/period · Id: `noun:period`

> A Period is one month of a Startup’s books, open until every Transaction reconciles, then closed and locked.

A Period is one month of a [Startup](/business/nouns/startup)’s books, open until every [Transaction](/business/nouns/transaction) reconciles, then closed and locked.

## Properties
| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `month` | `date` | Yes | The first day of the month it covers. |
| `status` | `string` | Yes | One of `Open`, `Closed`, or `Locked`. |

## Object
```json
{
  "$id": "https://api.sb/routewise.dev/periods/period_1",
  "$type": "Period",
  "month": "2026-10-22",
  "status": "Open"
}
```

## Relationships
- <a id="rel-budgets"></a>A Period **has** many [Budgets](/business/nouns/budget): a [Budget](/business/nouns/budget) plans one Period, read beside the actual [Entries](/business/nouns/entry) that fall in it. `budgets`, inverse [`plans`](/business/nouns/budget#rel-plans).
- <a id="rel-entries"></a>A Period **has** many [Entries](/business/nouns/entry): an [Entry](/business/nouns/entry) posts to the month its [Event](/business/nouns/event) happened; closing the Period locks it. `entries`, inverse [`fallsIn`](/business/nouns/entry#rel-falls-in).
- <a id="rel-statements"></a>A Period **has** many [Statements](/business/nouns/statement): a [Statement](/business/nouns/statement) reports one Period; each closed Period carries its P&L, balance sheet and cash flow. `statements`, inverse [`reports`](/business/nouns/statement#rel-reports).

## Verbs
| Verb | Description | Subject | Event | Class |
| --- | --- | --- | --- | --- |
| [Period.close](/business/nouns/period/close) | Close ends a month’s books once every Entry in the Period is reconciled, and makes its statements final. | [Finance Lead](/agents/finance/finance-lead) | [`Period.closed`](/business/events/Period.closed) | Two-way: `try`, `send`, `do` |
| [Period.lock](/business/nouns/period/lock) | Lock seals a closed Period, so any later correction posts to the next open Period. | [Finance Lead](/agents/finance/finance-lead) | [`Period.locked`](/business/events/Period.locked) | One-way (money): `send`, `do` |
| [Period.recognize](/business/nouns/period/recognize) | Recognize moves the revenue a Period earned out of deferred revenue, by the Startup’s revenue-recognition Policy. | [Finance Lead](/agents/finance/finance-lead) | [`Period.recognized`](/business/events/Period.recognized) | Two-way: `try`, `send`, `do` |
| <a id="get"></a>[Period.get](/business/nouns/period/get) | Returns one Period by id. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="list"></a>[Period.list](/business/nouns/period/list) | Returns Periods, newest first, one page at a time. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="update"></a>[Period.update](/business/nouns/period/update) | Changes the given properties of a Period. Inherited from [Noun](/business/nouns/noun). | None. | `Period.updated` | Two-way: `try`, `send`, `do` |

## Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.

| Operation | `owner` | `admin` | `member` | `viewer` |
| --- | --- | --- | --- | --- |
| `Period.get` | Yes | Yes | Yes | Yes |
| `Period.list` | Yes | Yes | Yes | Yes |
| `Period.update` | Yes | Yes | Yes | No |
| `Period.close` | Yes | Yes | Yes | No |
| `Period.lock` | Yes | No | No | No |
| `Period.recognize` | Yes | Yes | Yes | No |

## Call it

**Ask**

```text
Close the latest period.
```

**API**

```bash
curl -X POST https://api.sb/ledgerlark.com/periods/period_1/close \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
```

```json
{
  "api": "https://api.sb/ledgerlark.com",
  "period": {
    "$id": "https://api.sb/ledgerlark.com/periods/period_1",
    "$type": "Period",
    "month": "2026-10-22",
    "status": "Closed"
  },
  "action": {
    "$id": "https://api.sb/ledgerlark.com/actions/action_1",
    "operation": "Period.close",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/ledgerlark.com/actions/action_1"
  }
}
```

**SDK**

```ts
import { $ } from 'startup-builder'

const period = await $.Period.close({ period: 'period_1' })
```

**CLI**

```bash
npx startup-builder do Period.close --json '{"period":"period_1"}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Period.close({ period: 'period_1' })"
  }
}
```

## Example
Period `2026-03` of a tutoring marketplace's books closes on the third working day, once 1,840 [Transactions](/business/nouns/transaction) reconcile. Then it locks, and no [Entry](/business/nouns/entry) in it changes.