a Sagan program · currently in private beta

Monthly Vendor Invoice Reconciliation Agent

Your reconciliation sheet auto-populates from Barracuda, Kaseya, and Microsoft invoices, flags seat-count mismatches outside your per-customer thresholds, lets you assign unmatched lines to the right Autotask customer, and writes approved recurring quantities back into contracts.
before

Every month you open Barracuda PDFs, Kaseya invoices that don't break down by customer, and Microsoft spreadsheets, then color-code an Excel workbook by hand—purple for bundle members, blue for matched lines, peach for flags—while cross-referencing vendor quantities against Autotask contracts and last month's bills. When a seat count is off, you email the territory manager and wait. When a vendor doesn't break down by customer, you manually assign the line. Then you go into Autotask and set the recurring contract quantities before running Approve & Post.

after

Vendor invoices arrive and are automatically parsed. Lines the vendor broke down by customer are auto-assigned; lumps go to your review queue where you pick the customer from Autotask. The agent reprocesses and flags anything outside your per-customer thresholds. You review one dashboard showing all flagged and unassigned items, bulk-approve obvious matches, override quantities where needed, and ask territory managers for clarification on edge cases. Approved seat counts are written into Autotask automatically with per-step confirmation. Your Approve & Post workflow continues unchanged.

managed services / MSP / IT services / business services / reconciliation / data enrichment / fulfillment / operations / Kaseya Autotask / Agent Mail / Google Workspace / OpenRouter /  managed services / MSP / IT services / business services / reconciliation / data enrichment / fulfillment / operations / Kaseya Autotask / Agent Mail / Google Workspace / OpenRouter / 
the problem

Every month, vendor invoices arrive in different formats—and you spend hours cross-referencing them against Autotask contracts by hand.

You receive monthly invoices from Barracuda, Kaseya, Microsoft, Pax8, and others—some broken down by customer, some as lumps.

01
Multi-format invoices

Barracuda PDFs, Microsoft spreadsheets, Kaseya lumps, Pax8 CSVs—each vendor's layout is different.

02
Manual customer assignment

When a vendor doesn't break down by customer, you pick the right Ascent customer from memory or a list.

03
Cross-referencing three data sources

You compare vendor quantities against Autotask contracts and last month's bills to spot discrepancies.

the math, if you want to look

Parse every invoice, assign unmatched lines, flag mismatches, and write correct seat counts into Autotask—automatically.

proof 01
Eliminates multi-hour monthly reconciliation

Parsing, customer assignment, flagging, and Autotask writes are automated. You review and approve, not re-key.

proof 02
Handles mixed vendor formats

PDFs, spreadsheets, and CSVs all work. Vendors that break down by customer are auto-assigned; lumps go to your review queue.

proof 03
Catches mismatches before they become problems

Quantity and dollar thresholds are per-customer, so small customers get tight reviews and large ones don't drown in noise.

proof 04
Writes to Autotask with confirmation

Each line item is created correctly through the Autotask web UI with a per-step handshake. Failed writes return for manual handling, not silent failures.

This agent reads each vendor invoice (PDF, Excel, CSV), extracts line items, and auto-assigns the ones the vendor already broke down by customer. Lines with no per-customer breakdown go into a two-pass workflow where you assign the customer from your Autotask list, then the agent reprocesses. The agent compares each assigned line against your Autotask contract and last month's billed quantity, flags anything outside your per-customer thresholds (both quantity and dollar), and writes approved recurring seat counts directly into Autotask. Your time goes only to items that genuinely need human judgment—territory-manager clarifications, bundle changes, ambiguous matches—not to data entry and cross-referencing.

how it works

How the agent handles your monthly vendor invoices

The agent watches your accounting inbox for vendor invoices, parses them, assigns unmatched lines, flags discrepancies, and writes approved seat counts into Autotask—all with human review at every step.

step 01
Capture invoices

The agent monitors your accounting inbox for vendor invoices (PDFs, Excel, CSV) and accepts manual uploads. Duplicates are detected and skipped.

step 02
Parse and classify

Each invoice is extracted into line items. Lines the vendor already broke down by customer are tagged assigned; lumps with no per-customer breakdown are tagged unassigned.

step 03
Assign unmatched lines (two-pass)

Unassigned lines go to your review queue. You pick the Ascent customer from your Autotask list. The agent reprocesses with those assignments.

step 04
Reconcile against contract and last month

Each assigned line is compared to your Autotask contract (source of truth) and last month's billed quantity. Mismatches outside your per-customer thresholds are flagged.

step 05
Review and approve

You see all flagged and unassigned items in one dashboard. Bulk-approve obvious matches, override quantities, assign customers, and ask territory managers for clarification.

step 06
Write to Autotask with confirmation

Approved recurring seat counts are written into Autotask through the web UI. Each step is confirmed; failed writes return for manual handling.

ai agent · estimator console inputs transform outputs public preview
inputs
Monthly vendor invoices +

PDFs (Barracuda, Duo), Excel spreadsheets (Microsoft, Pax8), and CSVs (Sentinel One, others) from upstream suppliers. Per-vendor totals run ~$61k–$65k/month. Some break down by customer; some arrive as lumps.

Autotask ContractServices +

The recurring products and quantities on each Ascent customer's contract—the source of truth for what they should be billed.

Autotask BillingItems (last month) +

The quantities billed on each contract service in the previous billing period, used as a fallback comparison when the contract value disagrees with the vendor.

Autotask customer list +

The live list of Ascent Data customers, used to populate the picker for manually assigning unassigned invoice lines.

Per-customer threshold settings +

Quantity delta (e.g., ±3 seats) and dollar delta (e.g., ±$1,000) per customer, so small customers get tight reviews and large ones don't drown in noise.

transformation
Parse invoices into line items +

Extract vendor, customer (if present), product/SKU, quantity, and unit price from each invoice. Classify each line as assigned (vendor broke it down) or unassigned (lump).

Route unassigned lines to manual assign queue +

Lines with no per-customer breakdown go to your review queue. You pick the Ascent customer from Autotask. The agent reprocesses with those assignments.

Match by queue/SKU to Autotask services +

For each assigned line, look up the matching ContractService on the customer's Autotask contract using the queue name or SKU (not description or display name, which drift).

Reconcile against contract and last month +

Compare the vendor quantity to the contract quantity. If they match, pass. If not, compare to last month's billed quantity. If still mismatched beyond the per-customer threshold, flag.

Flag mismatches and edge cases +

Surface quantity drift, unrecognized line items, bundle/tier changes, ambiguous customer matches, and unassigned lines. Each flag includes the reason and the threshold exceeded.

Write approved seat counts to Autotask +

For each approved line, create the recurring seat-count line item in Autotask through the web UI. Each step is confirmed; failed writes return for manual handling.

outputs
Reconciliation dashboard +

A single view showing all flagged and unassigned items, with customer-per-row layout (Vendor Qty / Last Month / Autotask Contract side-by-side), color cues for state (green=match, yellow=in-review, red=flagged, gray=approved), and bulk actions (approve all green, ask territory manager, assign customer to unassigned lines).

Assigned customer for unassigned lines +

For each unassigned invoice line, the Ascent customer you picked from Autotask, ready for reprocessing and reconciliation.

Flagged items for review +

Lines with quantity drift, unrecognized products, bundle changes, or ambiguous matches—each with the reason and threshold exceeded.

Territory-manager clarification drafts +

Pre-drafted emails to territory managers asking for confirmation on unusual quantity changes (e.g., 'Did Acme really add 6 laptops this month?'). You review and send or hold.

Autotask recurring seat-count updates +

Correct recurring quantities written into Autotask contracts for each approved line, with per-step confirmation. Failed writes are surfaced for manual handling.

Write confirmation log +

A per-line handshake showing parse ✓ → reviewed ✓ → written-to-Autotask ✓ (or returned-for-manual ✗), so you can verify each item was created correctly.

draft ready for estimator review _
tech used
Kaseya Autotask REST APIAutotask web UI (DOM automation)Agent Mail inbox monitoringOpenRouter (lightweight + SoTA models)Railway hostingSQLite database
tool alternatives
Any PSA with REST API read access and web UI write capability (ConnectWise, Zendesk, etc.)Alternative inbox monitoring (SMTP polling, Microsoft Graph API) in place of Agent Mail
honest qualification

Is this for you?

built for you if
  • + Billing administrators at MSPs - You reconcile vendor invoices against Autotask contracts monthly and write recurring seat counts. This agent eliminates the multi-hour cross-referencing and manual data entry.
  • + MSPs with mixed vendor formats - Your vendors send PDFs, spreadsheets, and CSVs—some broken down by customer, some as lumps. The agent handles all formats and routes unassigned lines to your review queue.
  • + Teams using Kaseya Autotask as the PSA - The agent reads Autotask contracts and customer lists via REST API and writes recurring seat counts through the web UI. It integrates directly into your existing Approve & Post workflow.
  • + Billing operations that need human oversight - You want to review and approve every reconciliation decision, not hand off to a black box. The dashboard is your review surface; the agent flags edge cases for your judgment.
not for you if
  • - Single-vendor MSPs - If you only reconcile one vendor invoice monthly, the overhead of this agent outweighs the benefit. The build is designed for 5+ vendors with inconsistent formats.
  • - MSPs not using Autotask - The agent reads and writes to Autotask specifically. If you use ConnectWise, Zendesk, or another PSA, this build requires adaptation.
  • - Teams that want fully automated reconciliation - This agent is designed for human review at every step. If you want to hand off the entire process without reviewing flagged items or assigning unmatched lines, this is not the right fit.
  • - Billing workflows with custom margin or pricing logic - The agent reconciles quantities only. If you adjust margins, apply custom pricing rules, or have per-customer pricing tiers that change monthly, those decisions stay in Autotask.
pricing

Pricing

to build

This is a scoped build custom-fit to your monthly reconciliation workflow. Pricing covers the initial build, integration with your Autotask account and accounting inbox, and the reconciliation dashboard. Usage is billed per invoice processed and per Autotask write operation.

then
  • Initial build includes parsing, reconciliation engine, manual assign workflow, dashboard, and Autotask web-UI write integration.
  • Monthly usage is billed per vendor invoice processed and per recurring seat-count line written to Autotask.
  • Autotask read operations (ContractServices, BillingItems, customer list) are included in the monthly usage fee.
  • Territory-manager email drafts are generated but not auto-sent; you control what leaves the building.
FAQ
How does the agent handle vendor invoices that don't break down by customer?

Vendor invoices that arrive as lumps—like the ~$59,000 of a ~$65,000 Kaseya invoice with no per-customer breakdown—go into a manual review queue. You pick the Ascent customer from your Autotask list, and the agent reprocesses with that assignment. This two-pass workflow (assign → reprocess → override remaining) ensures nothing gets silently dropped or misaligned.

What happens if a vendor quantity doesn't match my Autotask contract?

The agent compares the vendor quantity to your Autotask contract (the source of truth) and flags any mismatch outside your per-customer threshold—both quantity delta (e.g., ±3 seats) and dollar delta (e.g., ±$1,000). If the contract doesn't match, it falls back to last month's billed quantity. You review flagged items on the dashboard and approve, override, or ask your territory manager for clarification before the agent writes to Autotask.

Does the agent automatically post invoices to my customers?

No. The agent writes correct recurring seat counts into Autotask and stops there. You keep full manual control over Approve & Post → preview → post inside Autotask. This ensures you review and approve every customer-facing invoice before it leaves the building.

What if the agent can't write a line item to Autotask?

Any line that fails to write returns to you for manual handling—it's never marked complete or silently dropped. The dashboard shows a per-line handshake: parse ✓ → reviewed ✓ → written-to-Autotask ✓ (or returned-for-manual ✗). You see exactly which items succeeded and which need your attention.

Can I adjust the thresholds for different customers?

Yes. You set per-customer thresholds for both quantity delta (e.g., ±1 seat for small customers, ±5 seats for large ones) and dollar delta (e.g., ±$100 vs. ±$500). The dashboard lets you assign profiles to customers and override per-customer. Changing a threshold retroactively re-evaluates open flags in the current cycle without re-uploading invoices.

How does the agent match vendor lines to my Autotask services?

The agent matches on queue name or SKU—not on product description or display name, which drift over time. This stable key ensures the agent finds the right service even if a vendor changes the description, code, or price. You can maintain a mapping table from the dashboard to handle edge cases.

What file formats does the agent accept?

PDFs, Excel spreadsheets (XLSX), and CSVs—all first-class. The agent handles mixed vendor formats in a single batch. You can also manually upload invoices from the dashboard if a vendor sends them outside your main inbox.

Is this agent built only for Ascent Data, or can other MSPs use it?

This build is custom-fit to Ascent Data's workflow with Kaseya Autotask. If you use a different PSA (ConnectWise, Zendesk, etc.), the build requires adaptation. The core pattern—parse invoices, assign unmatched lines, reconcile against contracts, flag mismatches, write to your PSA—is reusable, but the Autotask integration is specific.

next step

Stop the monthly reconciliation slog. Let the agent parse, assign, flag, and write.

Your vendor invoices are inconsistent, your reconciliation is manual, and your time is better spent elsewhere. This agent handles the parsing, customer assignment, and flagging—and writes correct seat counts into Autotask so your Approve & Post workflow continues unchanged. You review and approve; the agent does the rest.