Browse the docs

Agent setup guide

Bank & Payout Reconciliation Agent

Matches bank or payout lines to your ledger and sends exceptions for sign-off.

Available About 25 min to set up

What it does

Matches bank or payout lines to your ledger and sends exceptions for sign-off.

  • Receives each period's bank or payout lines and ledger lines in one webhook call, from a bank-feed export, a Stripe or Square payout report, a QuickBooks or Xero export, a CSV or a script.
  • AI matches them under your rules (amount, date window, reference, processor fees) and lists every unmatched line, fee variance and possible duplicate with a likely explanation from the data.
  • The bank total, ledger total, difference and each exception's difference are recalculated in code before anyone sees them — never by the AI; anything the AI got wrong is corrected and flagged, and the period goes to a reviewer.
  • Balanced periods are logged in your Google Sheets reconciliation log straight away.
  • Periods with exceptions are posted to your Slack finance channel and wait in Reviews; once a reviewer has investigated and signed off, they're logged with their exceptions.

What it needs

  • A paid plan (agents run live on paid plans).
  • An AI provider key (Settings → AI Providers).
  • Slack and Google Sheets, connected in Settings → Integrations.
  • An export or script that can send both sides of the reconciliation to a webhook URL.

What it doesn't do

  • It doesn't connect to your bank, Stripe, Square, QuickBooks or Xero to fetch data; you send both sides in.
  • It never posts adjusting entries, writes off differences or marks breaks resolved: a reviewer investigates and signs off.
  • It isn't built for high-volume correspondent banking (nostro / vostro, card-network or clearing files); it suits up to about 200 lines per call.
  • Its explanations come only from the data sent; anything it can't explain is flagged as such.

Availability and plans

Available

Its workflow is built and tested, and every app it needs is live. You can get it and set it up now.

Included free on the Enterprise plan; on other paid plans it's a one-time purchase per workspace (the price is on the Agents page). The Agents page in the app always shows its current status.

Before you start

  • A paid plan: agents run live, and the Free plan only runs Dry Runs.
  • An AI provider key (OpenAI, Anthropic, Google and more) in Settings → AI Providers. AI usage is billed by your provider.
  • These apps, connected in Settings → Integrations: Slack and Google Sheets.
  • A form, app or system that can send each new item to a webhook URL (the agent starts from a webhook).
  • About 25 minutes.

Set it up step by step

Get the agent first (buy it, or it's already yours when your plan includes it), then in Agents → My agents press “Set up this agent”. That creates the agent's workflow in your workspace (it counts towards your plan's workflow limit) and opens the canvas with a setup checklist above it. Each item links to the exact place to go and ticks itself off when it's done.

1. Connect your AI provider

The AI steps run on your own key (OpenAI, Anthropic, Google and more). Add one in Settings → AI Providers.

2. Connect Slack

Connect the Slack workspace your finance team uses (Settings → Integrations → Slack).

3. Connect Google Sheets

Connect the Google account that can edit your reconciliation log (Settings → Integrations → Google Sheets).

4. Write your reconciliation rules

Open “Match and find breaks” and replace the placeholder with your matching rules.

SettingWhat to enterIn step
Your reconciliation rulesReplace the placeholder with your matching rules: date window, how processor fees are booked, whether one payout may match several ledger lines, and which timing differences are acceptable. It starts as “[PASTE YOUR RECONCILIATION RULES HERE]” until you replace it.“Match and find breaks”

5. Pick the Slack account and channel

Open “Post the exceptions to Slack” and pick your account and channel. Invite the app to private channels first (/invite @Fluxo Flow).

SettingWhat to enterIn step
Slack accountThe Slack workspace alerts are posted to. Pick your connected Slack account.“Post the exceptions to Slack”
Finance operations channelThe channel your finance or back-office team watches, e.g. #recon.“Post the exceptions to Slack”

6. Pick your reconciliation log

Open both log steps and pick your account, spreadsheet and tab (usually the same in both). Header row: Period, Account, Matched, Bank total, Ledger total, Difference, Unmatched bank, Unmatched ledger, Exceptions, Summary, Status.

SettingWhat to enterIn step
Google account (reconciliation log)The Google account that can edit the reconciliation log spreadsheet. Pick your connected Google Sheets account.“Log the balanced reconciliation”
Reconciliation log spreadsheetPaste the link of the spreadsheet used as your reconciliation log. Keep its sharing restricted to the people who need it.“Log the balanced reconciliation”
Reconciliation log tabThe tab inside the spreadsheet, e.g. Recon log.“Log the balanced reconciliation”
Google account (reconciliation log (reviewed exceptions))The Google account that can edit the reconciliation log (reviewed exceptions) spreadsheet. Pick your connected Google Sheets account.“Log the reviewed reconciliation”
Reconciliation log (reviewed exceptions) spreadsheetPaste the link of the spreadsheet used as your reconciliation log (reviewed exceptions). Keep its sharing restricted to the people who need it.“Log the reviewed reconciliation”
Reconciliation log (reviewed exceptions) tabThe tab inside the spreadsheet, e.g. Recon log.“Log the reviewed reconciliation”

7. Test it with Dry Run

Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.

8. Switch the trigger on

Open the trigger, switch the webhook on and have your export or script send each period's lines to its URL.

How it works

The agent is a normal workflow with 9 steps (1 AI step, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.

  • Day's transactions to reconcile — Starts when your form or app sends data to the agent's webhook URL. Your bank-feed export, accounting system, processor report or a script posts the period's bank (or payout) lines and ledger lines to the webhook URL.
  • Match and find breaks — AI step (runs on your AI provider key). AI matches bank or payout lines to ledger lines under your rules (amount, date window, reference), copies each side's amounts and explains every unmatched item. The totals are then recalculated in code.
  • Check the math — Step. Recalculates the bank total, ledger total, their difference and each exception's difference in code — not by AI — and flags anything the AI got wrong; a period whose math was off or doesn't balance goes to a reviewer.
  • Balanced or exceptions? — Decision: picks the branch to follow. Balanced periods are logged straight away; periods with exceptions, a difference that isn't zero or AI math the check had to correct are posted to Slack and wait for a reviewer's sign-off.
  • Log the balanced reconciliation — Google Sheets: Add a row. Branch: Balanced. Appends the period, totals and match count to your reconciliation log, marked “Balanced”.
  • Post the exceptions to Slack — Slack: Post a message. Branch: Exceptions. Posts the account, the difference and each exception with its likely explanation to your finance operations channel.
  • Exceptions posted — Kept in the run history. The run history keeps the full exception list.
  • Reviewer signs off the exceptions — A person approves or rejects it in Reviews (the run waits). Branch: Exceptions. A reviewer investigates each exception, makes any adjusting entries in your accounting system and signs off; the reconciliation is then logged with its exceptions.
  • Log the reviewed reconciliation — Google Sheets: Add a row. Branch: Signed off. Appends the period, totals, unmatched lines and exceptions to your reconciliation log, marked “Exceptions reviewed”.

Test it with Dry Run

Press Dry Run in the canvas. The agent runs on the sample data stored on its trigger (the “Sample data for Dry Run” box), so you can check every step's output before anything is live. Edit the sample to match the fields your own form or app sends.

Sample data fields

period, account, bank_lines (a list), ledger_lines (a list).

  • Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
  • Approval steps use the Dry Run decision you pick in the step's settings (approved, rejected or timeout), so you can try each branch.

Go live

  • Open the trigger, switch the webhook on and have your export or script send each period's lines to its URL.
  • The webhook is protected by a secret: send it in the header shown in the Activation panel (requests without it are refused with 403). Each request starts one run.
  • The setup checklist adds a “paid plan” item before activation: live runs need a paid plan (the Free plan only runs Dry Runs).
  • When every checklist item is done and the trigger is on, the checklist says “Live — this agent is running”. Follow its runs in the workflow's History tab and in Analytics → Agents.

Questions

Does it pull data from my bank, Stripe or QuickBooks?

No. Send both sides in one webhook call, from a bank-feed export, processor payout report, ledger export or a script. Most accounting and spreadsheet tools can export CSV for that.

How many lines can it handle?

A day or a week for one account is typical: up to about 200 lines per call, depending on your AI model. Split larger periods into several calls.

Does it fix breaks?

No. It explains them and suggests what to check. A person investigates, makes any entries in your accounting system and signs off.

Troubleshooting

  • “No AI provider connected” or a rejected key: connect or fix the key in Settings → AI Providers, then press Test there.
  • A checklist item stays unticked: the setting is still empty or still contains its placeholder text. Open the step from the checklist and fill it in.
  • An app step fails with “Needs reconnect”: the account's access was revoked or expired. Reconnect it in Settings → Integrations.
  • Slack says the app isn't in the channel: in Slack, type /invite @Fluxo Flow in that channel (always needed for private channels).
  • Nothing happens when your form sends data: check the webhook is switched on and the request carries the secret header (403 means it's missing or wrong).
  • A run shows as paused: it's waiting for someone in Reviews to approve or reject it.
  • A step failed: open the run in History and check that step in the Trace tab for the error and what it received.

Generated from the agent's own workflow, so it always matches what the agent does. Last updated .