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.
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

AdaJournal reviewer
Reads the draft journal file line by line against the approved dispositions and lists every removal, correction and missing line
Google Drive
Airtable
FinContract owner replies
Drafts replies to contract owners confirming new amounts and picks up contract news posted in 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.
- Agent works
- Person decides
- Arrives or gets recorded
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 |
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 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 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.
Your first company harness. Where humans and agents run your business together.
More Use Cases
View allProperty 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.
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.





