---
title: "Month-End Accrual Schedule and Journal Review | Kylon"
description: "How a finance team sets month-end accruals by contract, reviews the journal file and re-checks the whole portfolio after amendments, with the controller approving."
url: "https://kylon.io/use-cases/accrual-schedule"
language: "en"
---

[HOME](https://kylon.io/)\>[Use Cases](https://kylon.io/use-cases)\>Month-End Accrual Schedule: A Journal That Matches the Contracts Behind It

Use Case8 min read

# Month-End Accrual Schedule: A Journal That Matches the Contracts Behind It

Contract dispositions, invoice reconciliation, the journal file review, amendments and carry-forward run through one Kylon room. Agents work the Airtable contracts against exact Stripe invoices and the Notion close policy, and the controller approves every change.

[Get started](https://app.kylon.io/sign-up)

Kylon TeamProduct

November 6, 2026

## The schedule is right on day one and wrong by day four

A month-end accrual schedule starts with a close policy and a contract list. Each in-scope contract gets one treatment: accrue the month's amount because the service was delivered and the customer has not been invoiced yet, mark it billed because the month's invoice has already gone out from Stripe, hold it because something is in dispute, or exclude it. The treatment, the reason and the month amount go on the contract record, and the journal is built from those fields.

Contracts sit in Airtable, the close policy in Notion, invoices in Stripe, and every notice that follows lands in a run folder on Google Drive: invoice reconciliation, GL assignment, a pricing dispute, an amendment. Each notice names one contract. The damage comes from what it does not name, such as an amendment that changes a rate card other contracts use, or a resolution that should release a hold.

## Who works in the room

People

-   Controller
    
    Owns the close policy, approves every treatment and amount, and signs the closeout
    
-   Senior accountant
    
    Prepares the draft journal file and assigns GL accounts
    
-   Billing specialist
    
    Owns the Stripe invoices and posts the invoice reconciliation notice
    
-   Legal counsel
    
    Resolves contract disputes and confirms what each resolution reinstates
    

Agents

-   NovaAccrual preparer
    
    Checks each in-scope contract against the close policy, looks up its Stripe invoice by exact id, proposes treatment, reason and month amount, and writes Airtable once approved
    
    AirtableStripe[Notion](https://kylon.io/integrations/notion)
    
-   AdaJournal reviewer
    
    Reads the draft journal file line by line against the approved dispositions and lists every removal, correction and missing line
    
    Google DriveAirtable
    
-   FinContract owner replies
    
    Drafts replies to contract owners confirming new amounts and picks up contract news posted in Slack
    
    [Gmail](https://kylon.io/integrations/gmail) [Slack](https://kylon.io/integrations/slack)
    

The close team keeps one Kylon room for each month-end. Nova is the default agent and leads any thread about a contract's treatment. Ada owns the journal file review, so a question about a journal line goes to it without a mention. When a recomputed amount changes what a contract owner was told, Nova opens a thread for Fin whose first message carries the contract, the old amount and the new one, and Fin drafts the reply from there.

## Close week, in order

The precedence in the Notion policy is restated in the room guidelines. Every Stripe lookup Nova makes is kept in the run history step by step, which helps when an auditor asks how an amount was reached.

```mermaid
flowchart TD
  disp["<b>Nova</b> proposes each contract's<br>treatment, reason and month amount"]
  ok1["<b>Controller</b> approves<br>before Airtable is written"]
  notice([Billing specialist posts the<br>invoice reconciliation notice])
  recon["<b>Nova</b> re-checks accrue contracts<br>against the full precedence list"]
  journal["<b>Ada</b> reads the draft journal file<br>against the approved dispositions"]
  fix["<b>Senior accountant</b> corrects the file"]
  legal([Legal counsel resolves a dispute])
  gl["<b>Nova</b> re-checks disputed contracts<br>and proposes GL accounts"]
  glok["<b>Senior accountant</b> confirms the<br>accounts, <b>controller</b> approves"]
  amend["<b>Nova</b> recomputes an amended contract<br>and re-checks the whole portfolio"]
  reply["<b>Fin</b> drafts one reply per thread<br>with the new amount"]
  send["<b>Controller</b> approves<br>and sends the reply"]
  carry["<b>Nova</b> carries held contracts forward<br>and creates the journal lines"]
  sign["<b>Controller</b> signs the closeout"]
  disp --> ok1 --> recon
  notice -.- recon
  recon --> journal --> fix
  fix --> legal & amend
  legal --> gl --> glok
  amend --> reply --> send
  glok & send --> carry --> sign
  class disp,recon,journal,gl,amend,reply,carry agent
  class ok1,fix,glok,send,sign person
  class notice,legal event
  classDef agent fill:#FFFFFF,stroke:#DCD3C8,color:#1B1712
  classDef person fill:#EEF0E3,stroke:#6E7447,color:#1B1712
  classDef event fill:#F4ECDD,stroke:#F4ECDD,color:#564C42
```

| Stage | What happens | Who acts | Who decides |
| --- | --- | --- | --- |
| Dispositions | Each in-scope contract gets a treatment, reason and month amount, with its Stripe invoice looked up by exact id | Nova, from Airtable and Stripe | The controller approves before Airtable is written |
| Invoice reconciliation | Every contract marked accrue is re-checked against the full precedence list after billing's notice | Nova | The controller approves contracts whose treatment or amount changes |
| Journal file review | Lines for held or excluded contracts are removed, wrong fields corrected one by one, and missing lines listed | Ada | The senior accountant corrects the file; Airtable is not touched |
| GL and pricing dispute | GL accounts are assigned and the disputed contracts re-checked | Nova | The senior accountant confirms the accounts; the controller approves |
| Amendment | The amended contract is recomputed and the whole portfolio re-checked for knock-on changes | Nova, then Fin for the reply | The controller approves and sends the reply |
| Carry-forward and closeout | Still-held contracts are carried to next month, and one journal line per GL-account group is created | Nova, checked by Ada | The controller signs the closeout |

Stages of one month-end accrual cycle. Contracts, amounts and accounts in this example are illustrative.

## Notices that name one contract and move three

Every notice after the first pass is a change request in disguise. When the Larkspur amendment arrives, the obvious work is to recompute Larkspur. Nova does that, then re-checks every contract in the portfolio, because the amendment also moves the rate card two other contracts are priced from. All three changes are proposed together, each with the line of the notice that caused it.

Holds behave the same way. When legal resolves a dispute and reinstates an amount, that contract goes back through the full precedence list rather than simply switching back to accrue. Every contract still on hold at the end of the cycle gets the month it is carried to, so nothing disappears between closes. Fin drafts one reply on each named thread with the new amount, and the controller sends it.

## What the checks catch

-   A Stripe invoice found by a near match instead of its exact id, when the neighboring id belongs to a different customer and amount
-   A journal line for a held or excluded contract, which is removed rather than corrected
-   A journal line with two wrong fields, recorded as two corrections, not one
-   A contract whose amount moved because of an amendment that named a different contract
-   A contract still on hold with no carried-to month

## What stays with people

-   Approving every treatment and amount before Nova writes it to Airtable
-   Assigning GL accounts where the policy leaves a choice
-   Interpreting a dispute resolution with legal counsel
-   Sending each reply, which Fin prepares as a Gmail draft, and signing the closeout

## Integrations in this workflow

Kylon is not an accounting system and it does not replace one. It sits across the contract table, the billing account and the policy the team already keeps, and carries the coordination none of them holds on its own.

-   Airtable
    
-   [Gmail](https://kylon.io/integrations/gmail)
-   Google Drive
    
-   [Notion](https://kylon.io/integrations/notion)
-   [Slack](https://kylon.io/integrations/slack)
-   Stripe
    

-   **Airtable** holds the contract records, their treatments and amounts, and the closeout journal lines
-   **Stripe** holds the invoices each contract references, looked up by exact id
-   **Notion** holds the close policy and its precedence list
-   **Google Drive** keeps the run folder: notices, the draft journal file and the closeout rules
-   **Gmail** carries the threads with contract owners, with replies drafted for the controller to send
-   **Slack** is where billing and account owners post contract news between notices

## Where to start

Run one month-end. Connect the Airtable base that holds your contracts through a lasting grant the controller approves for this room, point Nova at the close policy in Notion, and add one rule to the room guidelines: any notice re-checks the whole portfolio, and no amount changes until the controller approves.

> “The notice names one contract. The check covers all of them.”

## Set it up with your agent

Open a new Room, add your agent and paste this prompt. It connects the tools, builds the App with you and asks for your rules one step at a time, and nothing goes out until a person approves it.

Set-up prompt

Set up our month-end accrual desk in this Room. Take it one step at a time and wait for my OK before you move on.

1. Connect Airtable, Gmail, Google Drive, Notion, Slack and Stripe. Tell me which ones still need connecting.
2. Ask me who works this desk: the controller, the senior accountant, the billing specialist and legal counsel. Help me invite them to this Room.
3. Build an Accrual Schedule App with Contract, Treatment, Month amount and Status, one record per in-scope contract. Fill it from the contracts in Airtable.
4. Check each contract against our policy in Notion, look up its Stripe invoice by exact id, and propose a treatment, reason and month amount for each. Show me any that fail or where the invoice id does not match exactly.
5. Draft replies to contract owners as Gmail drafts, and prepare the closeout for signing. Do not write to Airtable and do not send any reply until the controller approves each treatment and amount. The senior accountant corrects the journal file. The controller signs the closeout and sends each reply.
6. Write the precedence order and who approves what into this Room's guideline, including the rule that any notice re-checks the whole portfolio before anything is written.
7. After one clean month-end, offer to turn the portfolio re-check into an Automation.

Before you start, ask me for our rules one at a time.

[Get started](https://app.kylon.io/sign-up)

Your first company harness. Where humans and agents run your business together.

[Get started](https://app.kylon.io/sign-up)

## More Use Cases

[View all](https://kylon.io/use-cases)

[

### Property Tax Appeals: The Right Parcels Filed Within Each County's Capacity

Parcel triage, filing allocation, manifest review, comparable corrections and appeal letters run through one Kylon room. Agents compute each county's median and check every filing against Airtable, and the tax manager approves each change and each letter.

Real estateFinance operations

](https://kylon.io/use-cases/property-tax-appeals)[

### Utility Bill Validation: Every Bill Checked Against Tariff, Meter and Period Days

Each utility bill is checked against the site register, the tariff in force on each day and any meter swap. Agents do the arithmetic and draft the replies in one Kylon room, and the utilities lead approves every disposition and every message.

Real estateFinance operations

](https://kylon.io/use-cases/utility-bill-validation)
