Convoy AI

Process Station · Finance

Month-end close

CommunityTemplate

Reconcile, chase and lock, step by step.

The control station, in brief

This station links several tools into one journey. The agent follows the steps in order, and every step goes through the rules below.

Linked toolsBankAccountingMail

It can

  • Reconcile bank and accounting
  • Chase an invoice up to 2 times

It asks a human for

  • Lock the period

It never has access to

  • Lock with open gaps

Scenario Replays

An agent works through the station. Simulated scenarios, no real data, no key required.

Close cleanly

What you will see: Reconcile, chase, lock: the agent prepares, the lead closes the period.

Agent connected to the station through MCP
  1. HumanClose October.
  2. AgentI'll reconcile, chase unpaid invoices, then prepare the lock.
  3. MCP callreconcile(period: "2026-10")
  4. Station412 lines reconciled, 3 gaps left.OKRule applied: playbook close-the-month
  5. MCP callchaseInvoice(invoices: 3)
  6. Station3 reminders sent. No invoice was chased more than 2 times.OKRule applied: max-chases
  7. MCP calllockPeriod(period: "2026-10")
  8. StationGaps resolved. The lock waits for the accounting lead's approval.PENDINGRule applied: human-for-lock
These rules are not yours?

Copy the station, change a limit or an approval step in its configuration file, and get your own station.

Copy and adapt

The configuration in detail

month-end-close.yamlRead the docs →

Everything the station does fits in this file. The replay above applies it, and a copy starts from it. The values are examples to adapt, not a recommendation.

station:
  id: month-end-close
  kind: process
  policies:
    - {policy: max-chases, at: submit}
    - {policy: no-open-gap, at: submit}
    - {policy: human-for-lock, at: submit}

global:
  language: en
  timezone: Europe/Paris

apis:
  - id: bank-accounting
    operations:
      reconcile:           {access: write, risk: medium}
  - id: mail
    operations:
      chaseInvoice:        {access: write, risk: low}
  - id: accounting-lock
    operations:
      lockPeriod:          {access: write, risk: high}

profiles:
  finance-assistant:
    allow: [reconcile, chaseInvoice, lockPeriod]

policies:
  max-chases:
    type: rule
    budget: {action: chaseInvoice, max: 2, per: invoice}
    effect: deny
    reason: "An invoice is chased at most twice by the agent."
  no-open-gap:
    type: rule
    when: "action == lockPeriod and open_gaps > 0"
    effect: deny
    reason: "A period is not locked with open gaps."
  human-for-lock:
    type: rule
    when: "action == lockPeriod"
    effect: needs-human
    reason: "Locking needs the accounting lead's approval."

skills:
  - {id: reconcile, uses: reconcile}
  - {id: chase-invoice, uses: chaseInvoice}
  - {id: lock-period, uses: lockPeriod}

playbooks:
  - id: close-the-month
    tasks: [reconcile, chase-invoice, lock-period]

Shared copies

Copies that their authors choose to share will appear here. Each one keeps a link to this original station.