TerminalExecutionOdds337ToolsContactGuides
    DocsLog in
    1. Home
    2. Guides
    3. Betting promotions in Australia: how they work and what they are worth
    4. Matched betting spreadsheet: the columns that explain a shortfall

    Matched betting spreadsheet: the columns that explain a shortfall

    What a matched betting spreadsheet has to record: both sides of the bet, the lay price planned against the one matched, commission and the offer.

    By the B337 team. Last updated 12 October 2026.

    The short answer

    • A matched bet lives at two companies, so the record needs two sides: the bookmaker leg and the exchange lay, each with its own stake, price and settled result.
    • The column most templates leave out is the lay price the hedge was matched at, as against the one it was planned at, and it is the column that explains a shortfall.
    • With illustrative prices, a $50 stake-not-returned bonus bet backed at $4.00 keeps $39.04 if the lay is planned at $3.70 and $36.08 if it is matched at $4.00, so a planned-only record overstates by $2.96.
    • Reconcile per selection rather than per day, because two errors in opposite directions can leave a day's total looking like a rounding difference.
    • Record the offer as well, with its cap and expiry, because an unused promotion is a loss that never appears in any bet row.

    On this page

    1. Why one bet needs two sides in your record
    2. The minimum columns
    3. The column most templates leave out
    4. A worked example: planned at $3.70, matched at $4.00
    5. Commission is a cost on the exchange side
    6. Reconcile per selection, not per day
    7. Track the offer as well as the bet
    8. Mistakes a template makes quietly
    9. Where B337 fits

    A matched betting spreadsheet has one job: to tell you, weeks later, where the money actually went. A one-row-per-bet template fails at it for a structural reason rather than a careless one. A matched bet is not one bet. It is two bets at two different companies, settled under two different rulebooks, and a single row carrying a single price and a single result cannot describe that.

    The second failure is smaller and costs more. A template typically records the lay price you meant to take, because that is the number the calculator was given before you clicked. The price that decides your money is the one the exchange matched. If the record holds only the first, a shortfall arrives with no cause attached to it, and the usual response is to blame the method rather than the fill.

    Why one bet needs two sides in your record

    The bookmaker leg has a stake, a price, a settled result and a return, and that return is governed by the bookmaker's terms, including whether the stake comes back. The exchange leg has a different stake, a different price, the opposite result, a liability while it runs, and a commission charge when it wins. Nothing except the net is shared.

    So a row with one price column has to choose which company it is describing, and whichever it chooses, the other side gets reconstructed from memory at the end of the month. That is where records quietly stop matching the accounts. Two rows per bet, linked by an id, is the version that reconciles; one wide row with a bookmaker block and an exchange block works as well and is easier to read. What does not work is one narrow row, because there is no honest place to put the second settled result.

    The minimum columns

    Everything below earns its place by answering a question you will actually ask later. The fields any single-sided record needs, closing price and closing line value among them, are set out in how to track betting results. What follows is the two-sided version, so what earns a column here is a field that appears twice, or only on the exchange side.

    ColumnExampleWhat it answers
    Column: Date and time placedExample: 12 October, 1:18 pmWhat it answers: When the price was taken, which is what makes a fill explainable
    Column: Event and selectionExample: Race 4, Runner 7What it answers: What the two legs are both about
    Column: BookmakerExample: Bookmaker AWhat it answers: Which statement this leg reconciles against
    Column: Back priceExample: $4.00What it answers: The price that pays, not the one you first saw
    Column: Back stakeExample: $50What it answers: Face value of the stake
    Column: Stake typeExample: Bonus, stake not returnedWhat it answers: Cash, bonus bet or promotion, because a bonus stake is not money out of pocket
    Column: Bet typeExample: WinWhat it answers: Win, place, each way half, line or total: an each way bet is two bets, so four rows
    Column: ExchangeExample: Exchange accountWhat it answers: Which exchange record the lay leg reconciles against
    Column: Lay price plannedExample: $3.70What it answers: The price the lay stake was first sized from
    Column: Lay price matchedExample: $4.00What it answers: The price the exchange actually took, and the column that explains a shortfall
    Column: Lay stakeExample: $37.97What it answers: The stake at the price that matched, not at the price planned
    Column: LiabilityExample: $113.92What it answers: Money that must already sit in the exchange account
    Column: Commission rateExample: 5%What it answers: A cost on the exchange side, held as a rate so it can be checked
    Column: Bookmaker result and returnExample: Lost, $0What it answers: The first of the two settled results
    Column: Exchange result and returnExample: Won, $36.08 after commissionWhat it answers: The second, under the exchange's own rules
    Column: NetExample: $36.08What it answers: Both sides together, which is the only figure worth totalling

    Two more are worth the width. A promotion reference ties the row to the offer that justified it, and a note field holds the reason a fill went the way it did.

    The column most templates leave out

    Planned against matched is the whole difference between a record and a plan. A lay order is matched at the price you asked or at a better one, in full or in part, or it sits there unmatched, and each of those outcomes changes a different number in the row. The expensive one is the last: an exchange will not match you at a worse price than you asked for, so when the price you planned does not come back you either leave the bet unhedged or lay at what the market is offering, and every figure sized from the planned price is then wrong.

    The reason it gets omitted is understandable. You type the planned lay into a calculator, the calculator hands you a lay stake, and that lay stake is what you send. Three of the four figures on the exchange side come from the planned price, so it feels like the price of record. It is not: the stake was sized from a price that did not happen, and the kept figure follows the stake.

    When both columns are there and they differ, the row still reconciles, because the matched price and the actual stake produce the actual return. When only the planned column exists, the row reports a number the accounts never paid.

    A worked example: planned at $3.70, matched at $4.00

    Example: Illustrative prices, chosen to show the arithmetic rather than to describe a real offer or a real race.

    A $50 stake-not-returned bonus bet, backed at $4.00 with the bookmaker, hedged at an exchange charging 5% commission. The plan was to lay at $3.70. The runner drifted between the calculation and the click, so a lay at $3.70 would have sat there unmatched, and the hedge went on at $4.00, the best lay the market was offering.

    The arithmetic for a stake-not-returned bonus bet is four lines:

    • lay stake = bonus bet x (back price - 1) / (lay price - commission rate)
    • liability = lay stake x (lay price - 1)
    • kept either way = lay stake x (1 - commission rate)
    • conversion = kept / bonus bet

    Planned, at a lay of $3.70: lay stake = 50 x 3.00 / 3.65 = $41.0959, shown as $41.10. Liability = 41.0959 x 2.70 = $110.96. Kept = 41.0959 x 0.95 = $39.04, a conversion of 39.04 / 50 = 78.1%.

    Matched, at a lay of $4.00: lay stake = 50 x 3.00 / 3.95 = $37.9747, shown as $37.97. Liability = 37.9747 x 3.00 = $113.92. Kept = 37.9747 x 0.95 = $36.08, a conversion of 36.08 / 50 = 72.2%.

    LinePlanned at $3.70Matched at $4.00
    Line: Lay stakePlanned at $3.70: $41.10Matched at $4.00: $37.97
    Line: LiabilityPlanned at $3.70: $110.96Matched at $4.00: $113.92
    Line: Commission at 5% if the lay winsPlanned at $3.70: $2.05Matched at $4.00: $1.90
    Line: Kept, either resultPlanned at $3.70: $39.04Matched at $4.00: $36.08
    Line: Conversion of the $50Planned at $3.70: 78.1%Matched at $4.00: 72.2%

    Both settled results confirm the matched figure. If the runner wins, the bookmaker pays winnings only on a stake-not-returned bonus bet, 50 x 3.00 = $150, and the lay loses its liability of $113.92, so the net is 150 - 113.92 = $36.08. If the runner loses, the bookmaker pays nothing and the lay wins the stake laid against it less commission, 37.9747 x 0.95 = $36.08. The two paths agree, which is the check a two-sided row makes possible and a one-sided row does not.

    The planned-only version of this row reports $39.04. The accounts paid $36.08. That is $2.96 a bet, or 2.96 / 39.04 = 7.6% of the figure the record claims, and over 40 such bets it is 40 x 2.96 = $118.40 of value the spreadsheet believes it holds and the bank does not. Nothing in a planned-only record points at the cause, because the cause is a column that was never there.

    Note: A lay matched in part is the same problem twice over. Record the matched portion as the lay stake and show the rest of the bet as unhedged, rather than writing down the order you sent. A stake already sent and then matched at a better price is the mirror image: the stake stands, the liability falls, and the two results stop paying the same figure, so the net now depends on which one lands and has to be recorded from the settlement rather than from the plan.

    Commission is a cost on the exchange side

    Commission is charged on winnings in an exchange market, so it falls only on the leg that wins. On the example above that is $1.90 when the runner loses and nothing when it wins. Both facts belong in the record, because netting commission silently into a profit figure destroys two things at once.

    The first is auditability. A rate held as a number in a column can be checked against the exchange's own record; a rate folded into a net figure cannot, and nobody notices when a rate changes. The second is attribution. Commission is the price of using the exchange, which makes it a cost of the hedge rather than a cost of the bet, and a record that cannot separate the two cannot tell you whether a run of thin results came from the offers or from the hedging.

    Tip: Keep the rate as a column rather than a constant inside a formula. A rate that lives in one cell and is referenced everywhere survives a change; a rate typed into forty formulas does not.

    Reconcile per selection, not per day

    A daily total is the most reassuring wrong answer a spreadsheet can give, because errors in opposite directions cancel.

    Take two $50 bonus bets on the same day, both backed at $4.00, both planned at a lay of $3.70, so the record expects 2 x $39.04 = $78.08. The first matched at $4.00 and kept $36.08, as above. The second got a better price and was sized at it, $3.45: lay stake = 50 x 3.00 / 3.40 = $44.1176, liability = 44.1176 x 2.45 = $108.09, kept = 44.1176 x 0.95 = $41.91, a conversion of 41.91 / 50 = 83.8%.

    The day's actual total is 36.08 + 41.91 = $77.99 against a planned $78.08, a gap of 9 cents that reads as rounding. Underneath it, one row is $2.96 short and the other is $2.87 long, each about 7% of what that row claims. A daily check passes. A per-selection check against both accounts fails twice, which is what you want it to do.

    The practical form is a reconciliation that matches each selection to the bookmaker's settled-bet list and to the exchange's own market record, one row at a time. How to track betting results covers the monthly totals those rows roll up into, and betting activity statements explains the bookmaker statement you are checking against.

    Track the offer as well as the bet

    Here is the loss no bet table can show you: an offer that expired unused. There is no row for it, because no bet happened, so the spreadsheet reports perfect accuracy on something that cost real value.

    Keep a second, small table of offers, one row each, with four fields. What the promotion is, in its generic shape (a stake-not-returned bonus bet, a money-back saver, a stake-back offer on a multi). Its value. Its cap, which is the most-ignored field, because staking above a capped refund buys nothing extra on the part above the cap. And its expiry date, as the bookmaker states it.

    On the conversion above, a $50 bonus bet is about $39.04 of value at the planned price. Three of those lapsing in a month is 3 x 39.04 = $117.12 that never appears anywhere in a bet record. Each bookmaker sets its own terms on an offer, including whether a particular bet qualifies at all, so the register is also where you note a bet the bookmaker did not count.

    Mistakes a template makes quietly

    MistakeWhat it hides
    Mistake: One narrow row per betWhat it hides: The second settled result has nowhere to go, so it gets reconstructed from memory
    Mistake: Lay price planned onlyWhat it hides: A shortfall has no recorded cause: $2.96 a bet above, $118.40 over 40 bets
    Mistake: Commission netted into profitWhat it hides: The rate cannot be checked, and a changed rate passes unnoticed
    Mistake: Bonus and cash in one stake columnWhat it hides: Turnover and conversion are both wrong, because a bonus stake is not cash out of pocket
    Mistake: Reconciling by dayWhat it hides: Two offsetting errors read as the 9-cent rounding difference above
    Mistake: No offer registerWhat it hides: An expired offer leaves no row at all, so the loss is invisible
    Mistake: Totals typed in by handWhat it hides: The summary stops being derived from the rows, and nothing says when they parted company

    Where B337 fits

    B337 records every placement, price and settlement in your dashboard as it happens, so the bookmaker side of a record is built from what was actually sent rather than from what was planned. Bets settle from the bookmaker's own settled-bet list and from official racing results. Stake, return and bonus conversion are tracked per session and per bookmaker, results, summary and profit and loss views export to CSV, and you can filter by bet type, strategy, bookmaker and date.

    The honest limit, and part of the reason this page exists: the exchange side of the record is mostly yours. On racing, an optional auto-lay can hedge a bet a session places, in your own exchange account, and it is off until you turn it on. It never lays a tote bet, and its lay can go unmatched or part-matched, which is exactly the row that needs both lay-price columns. Outside that auto-lay the bot places nothing on the exchange, so a sports hedge, an arbitrage leg or a green-up is yours to place, and the matched lay price, the lay stake, the liability and the commission are columns you fill in or import. Bets placed elsewhere are added by hand, and the bot runs on your own computer and places nothing while that machine is off, asleep or offline, so your own two-sided table is also where a bet B337 never placed has to appear. Export the dashboard's rows into that table rather than keeping two records that drift apart. Many bookmakers restrict automated betting in their terms, and no software prevents a bookmaker restricting or closing an account. Automation also makes it possible to bet far more, far faster, than by hand, so set your limits with each bookmaker as well as in the software.

    Risk: Betting involves risk. Bookmakers can restrict or close accounts and void bets, automation can fail, prices move, and a positive expected value bet can still lose. There is no guarantee of profit. See responsible gambling for limits and support.

    For the method itself rather than the record of it, see matched betting in Australia, and for the conversion arithmetic in a tool, the bonus bet converter works the lay stake, liability and kept figure from the prices you enter.

    Questions

    Do the bookmaker bet and the lay need separate rows?
    They need separate fields at the very least, and separate rows are easier to reconcile against two different statements. Each side has its own stake, price, settled result and cost, and the only figure they share is the net.
    Which single column is most often missing?
    The lay price the hedge was actually matched at. A template records the price the calculator was given, so when the kept figure comes out short there is nothing in the record that says why.
    Should commission come off the lay stake or off the profit?
    Neither: record the rate as its own column and the dollar amount on the exchange side of the bet. A rate buried inside a net figure cannot be checked later, and exchange rates change.
    How do you record an offer that was never used?
    In an offer register rather than the bet table, with its value, cap and expiry date, marked unused when it lapses. An expired offer creates no bet, so a bet table has no row in which the loss could appear.
    Can one sheet cover several bookmakers and one exchange?
    Yes, provided the bookmaker and the exchange are columns rather than assumptions. Reconciling then becomes a filter on those columns against each account's own statement.

    Sources

    • National Consumer Protection Framework for Online Wagering: National Policy Statement (updated 3 May 2022), Department of Social Services
    • Gambling Help Online

    Related

    • How to track betting results and read them honestly
    • Matched betting in Australia
    • Bonus bets explained: how they pay and what they are worth
    • Bonus bet converter
    • Back lay calculator for matched betting
    • Stake not returned meaning for bonus bets
    • How to read a betting activity statement
    • Matched betting without Betfair, and what the no-exchange route costs
    • Money back if one leg fails: how multi insurance works and what it is worth
    • Odds boosts explained: how a boost changes the price, and when it is value
    • Paid as a winner if second: how the racing promotion works and what it is worth

    Start with a free account

    A free account opens a limited view of the Terminal with live odds. Paid plans unlock the full Terminal and sessions that place bets in your own bookmaker accounts, on the rules you set.

    Create free accountSee plansJoin Discord

    Betting involves risk. Bookmakers can restrict or close accounts and void bets, automation can fail, prices move, and a positive expected value (+EV) bet can still lose. Promotions carry each bookmaker's own terms. There is no guarantee of profit. 18+ only. For free and confidential support call 1800 858 858 or visit gamblinghelponline.org.au. See responsible gambling for limits and support.

    Products

    • Terminal
    • Execution API
    • Full Automation

    Guides and tools

    • All guides
    • Betting glossary
    • Betting calculators
    • How betting bots work
    • Arbitrage betting
    • Middle betting
    • Matched betting
    • Betting exchanges
    • Odds types explained
    • Horse racing software
    • Money back racing promos
    • Bonus bet converter
    • Terminal pricing
    • Execution pricing
    • How tokens work

    Company

    • About
    • Security
    • Responsible gambling
    • Contact
    • Terms
    • Privacy

    What's gambling really costing you?

    18+ only. For free and confidential support call 1800 858 858 or visit gamblinghelponline.org.au. Self-exclusion: BetStop (betstop.gov.au).

    B337 is software, not a bookmaker or wagering service provider. Bets are placed in accounts you hold with Australian bookmakers. Bookmaker names are trade marks of their owners; B337 is not affiliated with or endorsed by them. Bookmaker terms may restrict automated betting.

    Bet337 © 2026Join our Discord