Run your station with clarity.
Invoices, deliveries, fuel, inventory and rebates in one system — so you know what came in, what went out, and where the money went. Photograph an invoice and it books itself.
30-day free trial. No card required. Works alongside the register you already have.
- Fuel reconciliation
- Manufacturer rebates
- Lottery packs
- Invoice capture
Purchase invoice
MIDWEST-DIST · INV-48213
| Description | Qty | Unit | Confidence |
|---|---|---|---|
| Coca-Cola 20oz btl | 24 | $1.42 | High confidence |
| Lay's Classic 2.75oz | 36 | $0.98 | High confidence |
| Red Bull 8.4oz 4pk | 12 | $5.61 | High confidence |
| Snickers king size | 48 | $1.07 | Needs a look |
| Gatorade Cool Blue 28oz | 24 | $1.33 | High confidence |
| Marlboro Gold carton | 10 | $84.20 | Review this line |
Two lines want a second look. The other four were mapped from this supplier’s last invoice.
Why this product
Six things a spreadsheet can't do for a station.
Each of these is a working part of the product today, not a roadmap slide.
Price compliance
A cost change on an invoice queues a shelf-price recommendation that waits for a one-tap approval, so margin never quietly erodes.
Inventory record accuracy & integrity
Physical counts are reconciled against the ledger. Every discrepancy gets a reason, and every correction is written to the audit trail.
Real-time inventory
Purchases, sales, counts and adjustments post to an append-only ledger, so the shelf figure is current rather than last month's.
Reorder alerts
Set a reorder point per product or fuel tank. Owners and managers are notified before it runs out, with a suggested order quantity.
Invoice OCR
Photograph an invoice, BOL or tank report. Lines come back with per-line confidence, and supplier mappings improve with use.
Lottery control
Packs tracked from receipt to settlement, shift audits by ticket number, and state reports reconciled against your own count.
The problem
Your station already generates the data. Finding the answer is the hard part.
Invoices are in one place. Sales are somewhere else. Fuel deliveries have their own paperwork, the count happens on a clipboard, and rebates are buried in a report nobody opens. Every leak below is recoverable, and every one of them is invisible in a spreadsheet.
A short delivery nobody wrote down.
Receiving confirmation
Stock posts only when a manager confirms the pallet.
A fuel variance that might be temperature and might be theft.
Fuel reconciliation
Net against net, with volume temperature-corrected.
A buydown that was earned but never collected.
Buydown ledger
Earned becomes a receivable until a payment matches it.
A cost that crept up three invoices ago, and the shelf price never moved.
Price queue
The new shelf price waits for a one-tap approval.
Each of these is a real reconciliation in the product, not a dashboard tile.
How it works
From paperwork to answers.
Four steps, and only the first one needs a person.
- 01
Capture
Photograph an invoice, a bill of lading, a tank report or a price list.
- 02
Reconcile
Purchases, deliveries, sales and counts are matched against each other.
- 03
Review
See what changed, what is missing, and what needs a decision from you.
- 04
Act
Close the gap before a small discrepancy becomes a recurring loss.
Invoices
Stop typing invoices. Take a picture.
Purchase invoices, fuel BOLs, ATG tank reports, price lists. Every line comes back with a confidence score — green means don't look, red means look. And it remembers: the second invoice from the same supplier maps itself.
- Five OCR engines, tried in order until one reads the document cleanly
- Per-line confidence, so you review the three lines that need it instead of all forty
- Supplier, product, and category mappings that get better the more you use them
- Falls back to plain-text parsing when the AI is unreachable, so a scan is never simply lost
Purchase invoice
Six lines, matched to your catalog.
- Coca-Cola 20oz btl$1.42High confidence
- Lay's Classic 2.75oz$0.98High confidence
- Red Bull 8.4oz 4pk$5.61High confidence
- Snickers king size$1.07Needs a look
Fuel BOL
Gross and net kept apart, on purpose.
- Gross volume8,412 galHigh confidence
- Net volume @60°F8,301 galHigh confidence
- Gross volume2,140 galHigh confidence
- Net volume @60°F2,113 galHigh confidence
ATG report
A tank gauge printout, without retyping it.
- Tank 16,140 galHigh confidence
- Tank 25,880 galHigh confidence
- Tank 32,415 galHigh confidence
- Tank 43,902 galNeeds a look
Price list
New costs, with shelf prices proposed.
- Marlboro Gold carton$9.79Review this line
- Newport 100s carton$10.49Needs a look
- Copenhagen LC roll$6.29High confidence
- Monster 16oz$2.99High confidence
Fuel
Know what arrived, what sold, and what should be left.
Compare the BOL gross to the BOL net to what the tank actually gained — net against net, gross against gross, never mixed. Volume is temperature-corrected, so a warm delivery doesn't read as a gain and a cold one doesn't read as theft. What's left over is a real variance, flagged against your threshold.
Delivery
What the supplier says arrived.
Tank
What your gauges say is there.
Sales
What your POS says was sold.
One view. One answer.
One delivery, three measurements
BOL gross
As printed on the ticket
8,412gal
BOL net @60°F
The same fuel, corrected
8,301gal
Tank gain, corrected
What the ATG actually recorded
8,294gal
Real variance
7gal
Under threshold, so nothing is flagged. Raw, uncorrected, the same delivery would have looked 35 gallons short.
- Tanks, grades, dispensers, and ATG readings in one place
- Water in a tank is a state, not a ping — the alert stays open until it's actually resolved, then closes itself
- Track the competitor's price down the road next to your own
- Cents-per-gallon margin, net of tax, visible daily
Inventory
Your inventory should tell a story.
Every purchase, sale, adjustment and count changes what's on the shelf. Each movement is written once and never edited — eleven kinds, all of them auditable — so the count is only ever as good as the paper trail behind it, and the paper trail is always there.
Stock movements · Coca-Cola 20oz
append-only
| Movement type | Detail | Change | Balance |
|---|---|---|---|
| PURCHASE_RECEIPT | Coca-Cola 20oz × 24 | +24 | 24 |
| SALE | Coca-Cola 20oz × 3 | -3 | 21 |
| TRANSFER_OUT | Store 2 → Store 4 | -6 | 15 |
| DAMAGED | Crushed in transit | -2 | 13 |
| RECONCILIATION | Count adjustment | -1 | 12 |
| PURCHASE_RECEIPT | Coca-Cola 20oz × 12 | +12 | 24 |
| SALE | Coca-Cola 20oz × 5 | -5 | 19 |
| SUPPLIER_RETURN | Short-dated stock | -4 | 15 |
Nothing in this table can be edited. A correction is another row.
A reconciliation asks you to write down why.
Not tick a box. Shrinkage always closed as “fine” is indistinguishable from shrinkage nobody looked at, which is exactly the pattern theft hides in.
A draft invoice books nothing.
Not one unit moves until a manager confirms on their phone that the truck actually showed up with it. Scan each, scan once, or count by hand — and a short delivery opens its own reconciliation on the spot.
Count less, understand more.
You know what you have, what you paid for it, what changed it, and what doesn't match — without recounting the store to find out.
Cost and margin
Know when your costs change.
Supplier prices move. Your margin shouldn't disappear without you noticing. FIFO cost layers and weighted average are kept side by side, so you can see margin either way — and when a cost moves on entry, the new shelf price is waiting for you as a one-tap approval in the price queue.
See the change
A cost increase is caught at capture, on the line where it happened.
Understand the impact
FIFO and weighted-average cost, inventory value, and margin side by side.
Make the decision
Approve the proposed shelf price, or don't. Nothing reaches the shelf on its own.
Rebates
If you earned it, you should collect it.
Altria, RJR, Liggett, ITG — each with its own file format and its own deadline. Map your UPCs once. The scan-data file is generated, validated, and sent over SFTP every week without anyone remembering to do it. Earned goes in the ledger as a receivable from the manufacturer, and it stays there until it's actually received.
Four manufacturer programs — Altria, RJR, Liggett, and ITG — feed a pipeline that runs from scan data captured, to file built, validated, submitted over SFTP, a receivable opened, and finally a payment matched against it.
- Per-manufacturer configuration and validation before anything is transmitted
- Earned versus received, reconciled — so a short payment is visible
- Carton break-out into packs handled, not ignored
Lottery
Every pack, from the day it arrives to the day it settles.
Receive, activate, settle. Shift audits by ticket number, terminal reports imported instead of retyped, discrepancies surfaced while the person who worked the shift is still reachable, and the state invoice reconciled against what you actually sold.
- Games, bins, and packs with a real status lifecycle
- Shift audits that pin a shortage to a shift and a person
- State terminal reports imported and compared against your own count
Pack lifecycle
game 0412 · pack 019 · tickets 000–049
- 1
Received
Booked in, not yet sellable
- 2
Active
In a bin, tickets moving
- 3
Settled
Counted against the state invoice
The shift audit counts by ticket number, so a shortage lands on a shift rather than on the month.
Everything in one place
One station. One source of truth.
These are not separate products bolted together. They write to the same ledger, which is why a delivery, a rebate and a fuel drop can be reconciled against each other at all.
Invoices
Capture and organise supplier invoices.
Deliveries
Match what was ordered against what arrived.
Fuel
Reconcile deliveries, tank readings and sales.
Inventory
Track what's on the shelf and what moved it.
Costing
FIFO and weighted-average cost, and margin.
Rebates
Qualifying sales, submissions and receivables.
Lottery
Packs, shift audits and state settlement.
Multi-store
Your whole operation from one place.
Bill of lading
Gross 8,412 gal · Net 8,301 gal
Two numbers that must never be compared to each other.
ATG tank report
Tank 2 · 6,140 gal · 0.0″ water
A gauge reading, not a stock count.
Scan-data submission
Altria · week 34 · 1,204 rows
A file format with a deadline attached.
Scratch-off pack
Game 0412 · pack 019 · tickets 000–049
Fifty tickets, one barcode, three states.
Blended grade
Plus = 65% regular / 35% premium
A product that isn't in any tank.
Several of these are objects a general-purpose inventory system has no field for.
Integrations
Keep the systems you already have.
You shouldn't have to replace your POS to get better inventory control. NAXML and Conexxus movement reports, Verifone Commander and Ruby 2, Gilbarco Passport, or plain CSV. A small Windows tray app sits on the back-office PC, reads the POS database directly, keeps working when the internet doesn't, and syncs when it comes back. The phone app handles the aisle: scan a barcode, change a price, capture a document, confirm a delivery.
Three connected nodes. At the store, POS movement reports and a Store Agent that reads the register database directly and buffers when offline. In the platform, costing, reconciliation, rebate submissions, and analytics. In the aisle, a phone app for barcode lookup, price changes, document capture, and delivery confirmation. Data flows between all three.
At the store
- POS movement reports
- Store Agent on the back-office PC
- Reads SQL Server directly
- Buffers offline, syncs on reconnect
In the platform
- Costing and ledger
- Reconciliation engines
- Rebate submissions
- Analytics across stores
In the aisle
- Barcode lookup
- Price change on the shelf
- Document capture
- Delivery confirmation
Your POS runs the store. This makes its data work for you.
Reads from
- Verifone Commander
- Ruby 2
- Gilbarco Passport
- NAXML / Conexxus
- Generic CSV
Integration availability depends on your existing POS and back-office setup.
Owner view
You shouldn't have to be in the store to know what's happening.
Businesses, stores, and members with roles you define — around twenty separate permissions, not “admin or not”. Every consequential action is written to an audit log nobody can quietly edit. Compare stores side by side when you want to know which one is the outlier.
Inventory
What's on hand?
Fuel
Where is the variance?
Purchases
What are you buying?
Costs
What's changing?
Rebates
What's still owed?
Exceptions
What needs attention?
A permission matrix across three roles. Owners can do everything. Managers can view inventory, confirm deliveries, change shelf prices, approve the price queue, and transfer between stores, but cannot file rebate submissions or manage roles. Clerks can only view inventory and confirm deliveries.
Why this, not a spreadsheet
Built around the way a station actually operates.
Not a generic inventory system with a fuel field added. Not another dashboard full of numbers you still have to interpret.
Simple
Designed for owners and managers, not for an IT department.
Automated
The repetitive work — capture, submission, matching — runs on its own.
Accountable
An append-only ledger and an audit log: a clear record of what happened and why.
Scalable
Start with one location. The data model is a business with stores underneath it.
Small gaps become big losses.
A short delivery. An unexplained adjustment. A cost increase. A fuel variance. A missed rebate. Individually they look small. Repeated every week they are expensive — and they are exactly what this is built to find.
Questions worth asking first
Do I have to replace my POS?
No. It reads the NAXML and Conexxus movement reports your register already produces, with named support for Verifone Commander, Ruby 2, and Gilbarco Passport. If your system exports plain CSV, that works too.
What happens when the back-office PC loses internet?
The Store Agent keeps collecting. It buffers to a local database on the machine and uploads in batches when the connection returns, so a bad afternoon on the ISP doesn't become a gap in your books.
Does it get better at reading my suppliers' invoices?
Yes, and that is the point of the mapping memory. The first invoice from a supplier needs you to confirm which line is which product. The second one arrives already mapped.
Can it handle more than one manufacturer's rebate program?
Altria, RJR, Liggett, and ITG each get their own configuration, their own file format, and their own validation pass before anything is transmitted over SFTP.
How many stores does this work for?
One is fine, and so is fifty. The data model is a business with stores underneath it, so cross-store transfers and side-by-side comparison work from the second location onward — nothing has to be re-architected as you grow. Pricing is per store, per month: you add a location when you open one, and the plan follows.
Where do competitor fuel prices come from?
You enter them, or you connect a pricing feed you already license. There is no scraping of third-party price sites.
Ready when you are
Stop reconciling from memory.
Start with one store, free for 30 days. Tell us what you run and we'll price it around that.
Built for U.S. gas stations and c-stores.