E-commerce financial reconciliation

Your payouts don't match your sales. Here's the fix.

Shopify, Stripe, and PayPal each pay you on their own schedule, bundled with fees, refunds, and chargebacks. I untangle it into clean, books ready records your accountant can use. Fixed fee, ten business days.

No login access needed. You send exports, I send back a clean file. Free Payout Accuracy Check: one processor, one payout period, back in 2 business days.

Your books, right now
Shopify Payments deposit$18,204.11
Stripe deposit$4,912.60
PayPal deposit$2,177.05
Unreconciled$1,842.17
After the sprint
Gross sales, reconciled$26,940.30
Fees, refunds, chargebacks−$1,646.54
Net to bank, verified$25,293.76
Variance$0.00
balanced
Who's behind this

Built on real financial data work, not outsourced labor.

My name is Adrian Penn. I work in accounts receivable and cash operations at a Fortune 500 company, checking that records across different systems actually match before anything gets reported. Before that, two years in customer success operations at a startup, ending up in the management operations role, working closely with ecommerce finance, payment disputes, and the operational side of what happens when a transaction doesn't go as planned. I started Luminary Solutions because I kept seeing the same problem: sellers running Shopify alongside Stripe, PayPal, Amazon, sometimes all three, with nobody actually checking that the money matches the orders until tax time forces the question.

Adrian Penn, founder of Luminary Solutions
The problem

One bank deposit is never one thing.

It's sales, minus fees, minus refunds, minus chargebacks, bundled into a single number that lands on a different day than the sales that made it up.

multi-channel
Shopify Payments, Stripe, and PayPal each pay out on their own schedule. None of them line up with each other or with the calendar month.
miscategorized
If a bundled deposit gets booked straight to "Sales," fees are buried inside revenue and refunds disappear, and the P&L stops reflecting what actually happened.
compounding
The longer it goes unreconciled, the harder and more expensive it is to untangle. Six months behind costs more than two.
What you get

Three files. One clear picture.

01

Reconciled dataset

Every payout matched to its orders, with fees, refunds, and chargebacks broken out. Working formulas, not static numbers, so it's auditable.

02

Exception log

Anything that didn't match cleanly, flagged with exactly what's needed to resolve it. Nothing gets silently estimated.

03

Cash & revenue dashboard

Eight KPIs on one page: gross revenue, net revenue, fees, refund rate, chargeback rate, and the payout-to-bank variance check.

See a real sample summary (PDF) before you send anything.

Why it happens

Five reasons your payout never matches your sales report.

Not a bug in your dashboard. These are the actual mechanics behind almost every mismatch we see.

01

Fees are netted before you see the deposit

Stripe, PayPal, and Shopify Payments all subtract processing fees before the money lands in your bank. Your sales report shows gross revenue. Your bank shows something smaller, with no fee amount broken out in either place.

02

Refunds and chargebacks post late

A refund issued in October against a September sale reduces an October deposit, not the September one. Pull any single month in isolation and the numbers will disagree with the orders that actually happened in it.

03

One deposit covers many orders

Payouts arrive as a single bundled figure, not itemized per order. Matching a specific order to the specific deposit that paid it out requires reconstructing that link by hand, most tools don't do this for you.

04

Reserves and rolling holds delay timing

Some processors hold back a percentage of each payout as a reserve, releasing it weeks later. That reserve release shows up as its own deposit, unconnected to any order on the day it lands.

05

Multi-currency sales convert at the processor's rate

A sale priced in one currency and paid out in another converts at whatever rate the processor used that day, not the rate your storefront displayed. That gap alone can make an otherwise correct order look wrong.

How it works

Ten business days, three checkpoints.

Day 0

Kickoff

Deposit clears, you send exports: order data and payout reports for every processor you use. No login access required.

Day 3–5

First pass

Each processor reconciled independently in its own clearing account, then flagged exceptions sent back for anything that needs a document I don't have.

Day 10

Handoff

Final payment, then the full package: reconciled dataset, exception log, dashboard, and a one-page summary for your accountant.

Where this stands

Early on, on purpose, not padded with filler.

Luminary Solutions is new. Rather than fill this space with stock testimonials, here's what's true right now: every deliverable gets a full manual QA pass against an automated numeric consistency check before it ships, and every client is asked, with their explicit permission first, whether their experience can be shared here. This section will hold real feedback as soon as there is some, not before.

The offer

Fixed scope. Fixed price.

Reconciliation Sprint

Up to 12 months of history, all processors included.

  • Shopify, Stripe, PayPal, Amazon: any combination reconciled
  • Reconciled dataset with working formulas
  • Exception log for anything unresolved
  • Cash & revenue dashboard, 8 KPIs
  • One-page executive summary for your accountant
$2,500
Fixed fee. 6–12 months of history. Shorter or longer periods scoped individually.
50% to start (ACH, card, or wire)
50% on delivery
10 business days
Every engagement gets a full manual QA pass before delivery, capacity is limited by design, not marketing.
Agreement details

What this is, and what it isn't.

Scope
Data reconciliation and organization. This is not bookkeeping, accounting, or tax advice. The output is built for your accountant or bookkeeper's use.
Payment
50% deposit to begin, 50% on delivery. ACH, card, and wire all accepted. No editable files released before final payment clears.
Access
You send exports; no system login or banking credentials are ever requested.
Processing
Reconciliation is AI-assisted using Claude (Anthropic), with every output reviewed and verified by hand before delivery. Model-training use of your data is disabled.
Confidentiality
Covered under a simple NDA, signed before any files are exchanged.
Timeline
10 business days from receipt of complete exports. Incomplete or gapped data may extend the timeline, but that gets flagged immediately, not discovered late.
For bookkeeping and CFO firms

September 15 is close. Your client's payout data probably isn't.

If an e-commerce client's Shopify, Stripe, or PayPal history doesn't tie out before the extension deadline, that's the file that eats your last week.

Reconciliation is the only thing I do, delivered as subcontracted production under your name. You keep the client relationship, the billing, and the communication entirely. I never surface. A hire costs salary, benefits, and payroll tax, and takes sixty to ninety days to become productive. This starts this week and scales back down once the backlog clears.

Talk about capacity for your firm

Questions

Before you reach out.

No. I reconcile and organize the data. Anything requiring tax judgment or legal interpretation goes to your accountant. That boundary is intentional, not a limitation I'm hiding.

That's the normal starting point, not a disqualifier. The exception log exists specifically to surface what's missing rather than paper over it.

A bookkeeper categorizes for tax filing. This is the reconciliation layer underneath that: matching payouts to orders and separating fees, refunds, and chargebacks so whoever does your books has clean source data to work from.

Order exports and payout reports for whichever processors you use, plus bank statements for the same period. A checklist goes out the moment the deposit clears.

Send one payout period. See it reconciled for free.

No obligation, no login access, no sales call required to get started.