Reconciliation & month-end close automation

Your payouts never match your bank deposits. We fix that, permanently.

MatchPass gives your team one clear month-end view of what tied out, what didn't, and the exact dollars that still need attention.

Routine matches clear automatically. Your team works the exceptions that actually matter instead of re-checking transactions that are already fine.

Free outside-in assessment. No financial access required.

Month-end reconciliation Reviewing 7 lines
Bank ledger
DEP-0918 · Mar 144,166.54

One bundled deposit. Hundreds of orders behind it, net of fees and refunds. This is why nothing ever ties out by hand.

Shopify orders
#10421,284.50
#104396.20
#10442,410.00
#1045318.75
#1046149.00
Refund #1038−57.09
Wholesale inv. W-2210−34.82!
0 of 7 tied out Reviewing

From our reference build: a synthetic month of multi-gateway payout data with ten real-world problems deliberately injected · every figure below is our own and reproducible on demand

96.40%
auto-match rate across seven cascading passes on the reference build
4,812
payout, order, refund, and bank lines ingested across three gateways
10 of 10
deliberately injected real-world problems caught, classified, and explained
173
exceptions routed with a reason code, an owner, and a suggested fix

See it work

From four messy files to a clean exception queue

This is our reference build running a synthetic month for a fictional brand, Northshore Supply Co., across Shopify Payments, PayPal, and Stripe. Start with the raw feeds exactly as they arrive, run the engine, then open the dashboard a client sees every morning.

Dataset: northshore_supply_co · March · synthetic demo data · 4,812 lines
shopify_payouts_mar.csvShopify Payments
Payout DatePayout IDOrderGrossFeeNet
2026-03-14po_9H2KD4#10421,284.50-37.551,246.95
2026-03-14po_9H2KD4#104396.20-3.0993.11
2026-03-14po_9H2KD4#10442,410.00-70.192,339.81
2026-03-14po_9H2KD4refund #1038-57.091.66-55.43
paypal_activity_download.csvPayPal
DateTypeTransaction IDGrossFeeNet
03/14/2026Express Checkout7AK33901BC318.75-9.54309.21
03/14/2026Express Checkout2XN80417QQ149.00-4.62144.38
03/15/2026Chargeback5RW10982LM-212.40-20.00-232.40
03/16/2026General Withdrawal1PL55620HH-453.590.00-453.59
stripe_balance_txns.csvStripe
createdidamountfeenetpayout
2026-03-14T09:12:44Zch_3Nx8Ta2eZ57090198655104po_1OqPzT
2026-03-14T11:03:07Zch_3Nx9Cb7rK1042503323100927po_1OqPzT
2026-03-14T16:40:19Zch_3NxAqD5mW88800288585915po_1OqPzT
2026-03-15T02:11:52Zre_3Nx8Ta2eZ-570900-57090po_1OqR8b
bank_statement_mar.csvBank feed
DateDescriptionAmount
14-MAR-26ACH CREDIT SHOPIFY no reference4,166.54
14-MAR-26STRIPE TRANSFER ST-K8Q22,419.46
16-MAR-26PAYPAL INST XFER453.59
17-MAR-26ACH CREDIT SHOPIFY3,881.02

Four sources. Three date formats. Stripe reports amounts in cents. The bank posts one bundled number with no order reference. This is the version your bookkeeper sees, and matching it by hand is where the hours go. Press run and watch the engine do it instead.

Lines ingested
4,812
Auto-matched
0
Exceptions
Run time
Idle · press run to start 0.00%
01Exact match on order reference and amount
02Amount match inside a two-day settlement window
03Rollup: many orders to one bundled payout
04Rollup net of gateway fees
05Rollup net of refunds and chargebacks
06Payouts split across two bank deposits
07Residual tolerance band on rounding variance
Northshore Supply Co · Exception queue March close · refreshed after every scheduled run
Open
141
In review
24
Resolved
8
Value flagged
$6,241.87
ReasonExceptionAmountStatusOwner
What happened
The March 1–15 and March 10–20 exports overlap, so the same Shopify payout landed in the ledger twice. Revenue is overstated by $4,166.54 until one copy goes.
How the engine caught it
Two ledger entries share one payout ID and one bank deposit. Only one bank line exists, so one entry can never match.
Suggested action
Delete the duplicate import batch and lock the export date ranges so they cannot overlap again. Two minutes, not two hours.
What happened
The plan rate is 2.9% + 30¢. This charge was assessed at 3.4%, which is $5.19 over on one order, and the same pattern shows on 27 more lines this month.
How the engine caught it
Every fee is recomputed against the plan schedule on ingestion. Anything outside tolerance gets its own reason code instead of disappearing into "bank fees."
Suggested action
Check whether these orders used a card type on a different rate, and raise the batch with the gateway if not. The engine has the line-level evidence attached.
What happened
PayPal pulled $212.40 plus a $20 dispute fee out of the March 16 withdrawal. The ledger still shows the original sale and nothing else, so cash and books disagree.
How the engine caught it
The withdrawal only rolls up if every activity line inside it exists in the ledger. The chargeback line had no ledger side, so the whole payout was held with a named cause.
Suggested action
Post the chargeback and fee to the dispute account. The entry is pre-drafted with the PayPal case ID attached, waiting for approval.
What happened
A bank credit arrived with a blank description. By hand this means scrolling three systems hoping a number jumps out.
How the engine caught it
Pass 2 found exactly one order for $96.20 inside the settlement window. Because the match key was amount and date rather than a reference, it routes for a one-click confirm instead of auto-clearing.
Suggested action
Confirm the suggested pairing. Strict rules auto-clear, looser rules ask first. That discipline is why the auto-matched pile stays trustworthy.
What happened
Orders from March 30–31 settled April 2. Close March without handling it and revenue and cash land in different periods, the classic cause of a clearing balance nobody can explain.
How the engine caught it
Every rollup is checked against the period boundary. Cross-period payouts get flagged instead of silently matching into the wrong month.
Suggested action
Accrue the in-transit amount at close, and the engine clears it automatically when the April deposit lands.
What happened
Eight $1.00 and $0.50 charges from checkout testing were still flowing into the feed and polluting every manual reconciliation.
How the engine caught it
Known test card fingerprints and amount patterns are classified on ingestion and excluded from matching entirely.
Suggested action
None. Rule added, resolved automatically, logged for the audit trail. This is what "resolved by engine" looks like every morning.
167 more lines in the live queue, grouped under 10 reason codes Every action logged · full audit trail per line

Click any row to see what your team would actually do with it. Each exception arrives explained, owned, and pre-drafted, not as a mystery in row 3,204 of a spreadsheet.

This run uses synthetic data we generated ourselves, with ten real-world problems deliberately injected into it. It is a demonstration of our method, not a client result, and your numbers will differ: the audit in step one is where we find out by how much. The exceptions are the point. Any tool can match the easy 60%. The value is a short, explained list of what genuinely needs a human, with the evidence attached and the fix pre-drafted, instead of a spreadsheet with 4,812 rows and no idea where to start. Your dashboard runs on your infrastructure, refreshes on a schedule without anyone remembering to run it, and keeps a log your auditor can walk through line by line.

The story behind the name

Why MatchPass

MatchPass takes its name from how we match: multiple passes, strictest rules first. Clear the exact one-to-one matches before any broader rule runs, and real breaks surface instead of drowning in noise.

The method comes from an industry-sponsored engineering capstone at Toronto Metropolitan University, where our founder, Karan Agrawal, co-led the redesign of a daily, enterprise-scale securities reconciliation. With his project partner he designed and configured a seven-pass cascading engine with rollup rule sets, derived-field classification, and exception workflows, built on a DMAIC frame and validated in testing against the operations team's trusted manual view.

Every number we publish is our own. The reference build above runs that same architecture on a synthetic month of multi-gateway payout data, and it mirrors what we install for clients: matching engine, exception dashboard, scheduled runs, and parallel testing against your current process before cutover.

Karan Agrawal, founder of MatchPass Labs
Karan Agrawal
Founder · Industrial engineer · Six Sigma Black Belt

The multipass method, in one glance

  • 01Exact one-to-one matches clear first. No judgment calls needed.
  • 02Each following pass loosens one rule at a time, so precision degrades in a controlled order.
  • 03Rollup rules handle the hard part: one bundled payout matched against hundreds of orders.
  • 04Whatever is left is a genuine exception, routed to a dashboard with a reason code and an owner.
  • 05Every run is logged. Your auditor gets a trail, not a shrug.

Who this is for

Built for the gap between QuickBooks and BlackLine

If any of these sound like your month, we should talk.

Most common

E-commerce brands, typically $3M to $25M

Best fit when revenue is coming through more than one flow: DTC plus wholesale, multiple gateways, marketplaces, subscriptions, retail and POS, or cross-border sales. We automate the routine matches and give finance one place to see what still needs attention.

The strongest fit is not simply a Shopify company. It is a growing company where the money flow has become more complicated than the reconciliation process underneath it.

Channel partners

Accounting & bookkeeping firms

Your staff burns billable hours on client reconciliations that follow the same pattern every month. We build the engine once, and your firm delivers it across the whole book of clients. Inherited a client's broken e-commerce books? We untangle the history, then automate it so it stays clean.

Complex closes

Multi-entity SMBs & property managers

Intercompany transfers, multiple bank accounts, trust ledgers, and a close that drags into week two. We standardize the matching so the close becomes a review, not an investigation.

Already tried A2X, Synder, or a native integration?

Sync tools handle clean, single-channel stores well. Then a second gateway or a TikTok Shop gets added, or deferred revenue and split shipments enter the picture, and the per-order pricing scales against you while the exceptions pile up. Native integrations are worse: Stripe to Xero and PayPal to QuickBooks are notorious for creating duplicates someone has to clean up. We start where the apps stop, with custom match logic for your exact flows, a cleanup of the history they left behind, and no per-order pricing.

Not sure this needs a $2,500 audit yet?

See where we would look first, before you give us access to a single transaction.

We will build a quick outside-in Payout Reconciliation Snapshot using only public information about your sales setup. It shows the parts of your payment flow we would investigate first, where manual matching is most likely to creep in, and what a cleaner month-end view could look like.

No bank access No accounting login No made-up ROI numbers

Just a useful first look at whether there is enough complexity here to investigate properly.

What we can see

DTC, wholesale, marketplaces, subscriptions, retail locations, currencies, and other publicly visible payment-flow signals.

Where we would test first

Two or three specific reconciliation points that may be creating repetitive close work, each written as something to test rather than something we claim is true.

What good could look like

One month-end view showing what cleared automatically, the exceptions still needing review, and the exact dollar value flagged.

Directional and based on public information only. The paid Reconciliation Audit is where we validate the process against your actual data.

How we work together

Three steps. Fixed prices. No surprises.

Every engagement starts with an audit. You get the findings and the ROI math either way, and the audit fee is fully credited if we build.

Free snapshot is not the paid audit

Snapshot, free

An outside-in view of where we would investigate, built from public information only.

How engagements run

Every build starts with a paid audit. One week, fixed fee, and the exception map lands before anyone writes code. If the audit shows the volume does not justify automating, that is the finding and we stop there. No build is scoped on a guess.

Audit first. Always.

Step 2

Automation Build

3 to 5 weeks, 50% deposit to book

From $7,500

USD · multi-flow builds $12,500 to $15,000

  • Custom multipass matching engine tuned to your data
  • Exception dashboard with reason codes and owners
  • Scheduled automatic runs, no one has to remember
  • Parallel testing against your current process before cutover
  • Team training plus 30 days of post-launch support
See what a build includes

Step 3

Maintenance Retainer

Optional, month to month

From $600/mo

USD · tiers at $600 / $1,000 / $1,500 for 2 / 4 / 6 hours per month

  • Monitoring so drift gets caught before your close does
  • Rule updates as fees, formats, and gateways change
  • Exception-logic tweaks for existing flows included
  • 10% off with quarterly prepay
Ask about retainers

All prices in USD, plus applicable taxes. Quotes are locked for 30 days. New data sources, entities, or match passes on a retainer are scoped as change orders so you always know the cost before work starts.

No pitch, just diagnosis

Have a live reconciliation problem already?

Bring the clearing account that will not tie out, the payout that never matches, or the process your team keeps rebuilding every month. We will spend 30 minutes deciding whether it is worth investigating further.

10 min the problem you brought 15 min where the hours are going 5 min honest fit check
Book a 30-min reconciliation review

Calendar not loading? Book directly on cal.com or email karan@matchpasslabs.com