Billing reconciliation for MSPs

You bill 150 seats. Your distributor bills you for 200. That gap is $1,100 a month.

Seats get added mid-month, people leave, plans change, and your PSA agreements quietly drift from what your vendors actually charge you. BillRecon lines the two up, tags every gap with a dollar figure, and hands you a finished statement before invoice day.

Free during the private beta, then flat from $179/mo with Microsoft included and no per-seat add-ons. Once you are in, connect once and reconciliation runs itself.

JULY 2026SAMPLEreconciled 07.26 · 11 clients

Found money · forward run-rate

+$1,843.00 /mo
UNDER-BILLED · MONEY ON THE TABLE6 lines · top 3+$1,718.00
Meridian Logistics200150+$1,100.00
Microsoft 365 Business Premium
Cohort HealthMID-CYCLE3022+$288.00
Microsoft 365 E3
Brightpath LegalLOCKED ’til 2027-026240+$330.00
Microsoft 365 Business Standard
gross found
+$1,843.00
corrections owed back
$264.00
net after corrections
+$1,579.00

Sample data. Your number is computed from your own connected data.

Works with the systems you already run

12 integrations live today, newer ones marked beta. No logo for your tool? The spreadsheet import and the automation feed take anything that exports. More PSA, distributor, and MSP-stack coverage every month. Request an integration →

BILLING DRIFT · THE FIVE TYPES

Five ways billing drifts. One statement that catches them.

UNBILLED

Seats you pay for and never invoice

Microsoft 365 Business Premium · 12 licensed at the distributor · no agreement line in your PSA

12 → ·+$264.00 /mo
UNDER-BILLED

Seats added mid-term, still billed at the old count

distributor bills you 200 · you invoice 150 · 50 seats on the house

200 → 150+$1,100.00 /mo
OVER-BILLED

Offboarded users still on the invoice

Defender for Endpoint P1 · 0 assigned at the vendor · 4 still billed to the client

0 → 4$22.00 /mo
PRODUCT MISMATCH

Agreement bills the wrong product

Agreement bills Microsoft 365 E3 · the tenant actually runs Business Premium · the gap rides every seat, every month

$14.00 /seat
ORPHANED

Lines your vendor no longer sells you

still on the client's agreement · nothing behind it at the distributor

· → 3$45.00 /mo

HOW IT WORKS

Connect once. Confirm your clients. Fix the drift.

  1. Connect your stack

    PSA first: that is where your billing lives. Then the distributors and vendors that charge you. Every connection reads through least-privilege credentials, and write-back stays off until you arm it.

    Connections
    ConnectWise PSApsaREAD + WRITE-BACK
    Pax8distributorREAD-ONLY
    Microsoft 365vendorREAD-ONLY

    Vendors and distributors are never written. Write-back to your PSA waits behind the caps you arm.

  2. Confirm your clients in the Book

    The Book lines up every vendor account with the PSA client it bills and scores each match. Confirm the sure ones in one move and decide the rest yourself; products map the same way. Every decision is remembered, so the next sync applies your book, not a guess. No dollar is trusted until you confirm the match behind it.

    THE BOOK · CLIENT MATCHES12 of 14 confirmed
    Meridian Logistics↔ Meridian Logistics LLC98% CONFIRMED
    Cohort Health↔ Cohort Health Inc96%CONFIRM
    9 more above 95%CONFIRM ALL 9
    PRODUCT MAPlearned once, applied every sync
    O365_BUSINESS_PREMIUMMicrosoft 365 Business PremiumREMEMBERED
  3. Fix the drift from the Ledger

    Every gap lands as a money-tagged line that shows its work: the vendor count, the agreement line, the price it rides. Approve it and BillRecon updates the agreement quantity in your PSA inside the caps you set, or exports the same fix in one click. Every write is logged, and every write has an undo.

    UNDER-BILLEDMeridian Logistics · 1 of 6 lines+$1,100.00
    Microsoft 365 Business Premium200150+$1,100.00 /mo
    How we computed this
    Pax8 subscription200 seats
    ConnectWise agreement line150 billed
    price$22.00 /seat · from the agreement
    APPLIED TO PSAagreement 150200 · inside your capsUNDO

Sample data. Every line in your statement shows its own sources.

HANDS-OFF RECONCILIATION

It runs itself, inside guardrails you set.

BillRecon re-pulls your PSA, distributors, and vendors on schedule and refreshes the statement. When your invoices finalize, the month’s digest lands in your inbox. You open a finished statement, not a chore.

Approve a correction and BillRecon updates the agreement quantity in your PSA itself, inside the caps you set. Prefer paper? The same fixes export in one click.

Last night, unattended
02:00synced PSA, distributor, vendors
02:04statement refreshed · 3 new lines
02:042 corrections inside your capsAUTO-APPLIED
Write-back guardrails · layered, all yours
  • Global kill switchOFF BY DEFAULT
  • Per-connection toggleYOU ARM IT
  • Per-client allow-listYOU CHOOSE
  • Per-fix dollar capYOU SET THE $
  • Per-run ceilingYOU SET IT
  • Audit trailEVERY WRITE

RENEWALS AND POOLS

Built for the NCE era.

Microsoft’s NCE term-locks your seat counts. You can only trim seats at renewal, so a missed window means another full term paying for seats nobody uses. BillRecon puts every client’s renewals on one calendar with the seat drift attached, so you cut before the lock, not after.

Connect your per-user assignments and it shows the committed-versus-deployed headroom too, so you renew for what you actually run.

Renews in
45days
Globex Corporation
Microsoft 365 Business Premium · annual
reduce by 09.1112 idle / 200
Renews in
150days
Soylent Corp
Microsoft 365 Business Premium · annual
reduce by 12.255 over-committed
Renews in
240days
Wayne Enterprises
Microsoft 365 E3 · 3-year
reduce by 03.258 idle / 60
Commitment pool · Microsoft 365 E3 · 3-year commit
LOCKED ’til 2027-03
60 committed52 deployed8 idle

Deployed counts come from your per-user license matrix.

Sample data. Your calendar is built from your own vendor subscriptions.

DEVICE COVERAGE

Agents you pay for. Devices that are real.

Your RMM only knows its own agents. BillRecon merges the device list from every tool you connect into one inventory per client and lines up each tool’s last check-in. An agent that goes quiet while its siblings still report is a stalled install, not a dead machine.

Then it checks what each device should be running. Say a workstation gets EDR and RMM while a server is judged on its own terms, and BillRecon flags the live machines missing a tool you pay to deploy. A workstation reporting in fine that no EDR has ever seen is a billing conversation no single console can find, because each one only sees its own.

It raises a gap only when a connected tool proves it can already see your other devices, so the list is worth acting on, not a wall of false alarms. Coverage gaps are conversation first and carry no dollar figure.

Coverage · last check-in per tool
ClientRMMSecurityBackup
Riverside Health0/2411/240/24
Acme Logistics38/4141/4129/41
Northbeam Dental18/1818/1816/18
Vela Studio9/99/99/9

Device dollars are approximate and labeled as such. They never enter the drift total.

ReportingPartialStopped

Why MSPs trust the number

Read-only mirror of your PSA

BillRecon does not author contracts. Your PSA stays the system of record, and nothing changes until you approve it.

Credentials in a managed vault

Encrypted at rest, scoped to read only what is needed, and hard-deleted the moment you disconnect a source.

Trust before totals

Every vendor account is matched to its PSA client and confirmed before a single dollar is trusted. No confident, precise, wrong numbers.

PRICING · FLAT PER MSP

One price. Every connection included.

These plans open when we leave beta. We will email you before any billing starts. Flat per MSP, by reconciled-client count, every connector included at every tier.

Starter
$179 /mo
Reconciled clientsup to 50
Runsmonthly
Growth
$349 /mo
Reconciled clientsup to 150
Runsweekly
Scale
$649 /mo
Reconciled clientsup to 500
Runsweekly

Free during the private beta. Request beta access.

See what this month is hiding.

Connect your PSA and vendors, confirm the matches, and your run-rate exposure is on screen, down to the exact lines that are drifting.