RSS Feed c9 logo Australia's best motorcycle shop retail software
Release 5.2.161 August 4, 2026 barney

Fix 1 : low level bug could lead to unrelated invoices appearing to be tangled on an invoice : depends on what invoices you were eyeballing before and whether or not those invoices contain and merged parts from other invoice.  This bug has been in c9 for a very long time, since 2016. Symptoms explained by this bug brought to our attention today. Even though it has been there for a decade and only just reported now, the symptoms are a nuisance enough needed an urgent fix

Fix 2 : tidy a visual bug with deposit held report. Would not render a date for customer held lines in some circumstances when running the report historically (misfiltering lines)

Release 5.1.160 July 17, 2026 barney

 

Important Change – payroll bank rec.

This version includes a change to make bank rec restriction on payroll advisory only. The original design intent behind this was to discourage reckless behaviour. What I didn’t anticipate was it would actually encourage even more reckless ‘quick fixes’ to work-around the restriction. Instead it is now advisory only. If your rec is more than 45 days old c9 will delay access to payroll with a countdown timer to encourage good back-office hygiene, but it no longer enforces.

This update also fixes some issues and unfinished fixes in last version

  • KTM EPC import, now working
  • Select Estimate button. On sort by id tab the location of add/modify buttons was mangled.  Fixed. Caused by introduction of date field and making the window bigger
  • TillPay Term integration. Some internal work to rationalise low level webhooks wasn’t 100% done. Now sorted. (webhooks are a thing which allows terminal signal back to c9 the txn is finalised)
  • PayDay super waiting for payment status in payrun or browse payday screen: would clip cents off amount to pay if amount to pay was >=$1000.  Now fixed
  • Vicroads new auth register form – missing SOLO in body type when it was there previously

Other little fixes

  • View deal. When deal is a tradein, print invoice button would randomly print either sale or tradein/recipient invoice. Now consistently prints the invoice
  • Low level unit sale bug. Recently dealt with a issue on accounting data for one client which tracks back to some badly formed sales in July last year. Unsure what bug is because of how long it has been since issue and report, and there is a good chance some other change in last 12 months fixed it already: but added some additional guards into software that will hopefully prevent bad data we saw from making it into the database

New stuff

  • Web order alert : new alert if there are any finalized orders with unbalanced settlement figures
Release 5.2.159 July 8, 2026 barney

More impactful changes

  • Workshop scheduler : now pays attention to both promise date and promise time to allow more fine tuned alerting of overdue jobs. If promise time is not set reverts to old behaviour (if job runs into promise date  then assume it is overdue)

Tweaks and fixes

  • Payroll
    • New pay tables incorrectly calculate withholding for residents where no-threshold is set. The computed withholding is way too high. Now fixed
    • Recurring payments, like Garnish do not draw in settings on other tabs such as whether or not garnish is for child support. Instead you have to reselect every time. Now fixed
    • Edit computed changes : if you only changed settings like garnish, the underlying pay item would not adjust at all and revert to computed result. Previously you needed to edit some other aspect of the item too, like its line. Now fixed
    • Edit line : disallow blank names. This especially messes up reporting of allowances via STP when no allowance type is selected
  • PayDay super tweaks
    • Manual transfer : in superstream status show amount waiting for. e.g. ‘Waiting for: $216.00’
    • Manual transfer : if somehow there are multiple amounts being wainted for, separate them into a list, don’t show merged result
    • initial super file upload was not logging useful debugging info. Now fixed (api json reply not logged because request wasn’t a json payload)
    • Added support for some new error codes coming back from Ozedi (generic upload failure & revalidation of superfund details, USI/ABN etc)
  • Unit sale – if onroad lines are inputted with ex and gst figure, previously it would render the ex figure only on screen in the list of costs. Fixed to show GST inc price. Nominally what is inputted here is just a fixed non gst figure, so on roads do not have any BAS impacts on the business, but it is possible to input this data into c9 if preferred.  This change doesn’t alter any underlying behaviours with how invoices are printed or general ledger journals the sale, purely a visual thing for the screen where unit sale costs are built.
  • Import price file – remove a very old 10+ year rule where lastincost on stocked parts is written as daily buy if it is zero on stock file. Nominally this isn’t needed and in one instance with a dealer doing some data migration it caused problems with stock validation post stock take.
  • Unit curtailments :  redesign a couple of screens so it is visually obvious curtailments are functionally paying down inc GST cost of the unit (even though GST isn’t on curtailments themselves)
  • Email sending in modern Javas – broken because of a missing library which older java 8’s packaged. Now repaired
  • Updated paperwork
    • Vic – VicRoads Vehicle Registration
    • Vic – VicRoads Dealer On-Line Authority to Register
    • NSW – Registration Form (C)
  • Workshop part quote / UOM tweaks
    • Where UOM is fractional, convert to supply rounds price such that it reflects a non fractional price. Now fixed
    • Edit uom quote part : quote qty shows as #### because of fraction. Now fixed
    • Convert a quote involving negative parts,  it tries to sell parts to bring -ve back to 0. Now fixed.
  • Workshop pickup job : include option to print lines ex GST. Previously was there when you click on pro forma in view job,  but wasn’t an accessible option in pickup screen. Now available.
  • Browse Estimates  –  show Start Date on browse screen
  • Deals – browse older completed deals, allow private notes to be edited
  • Dead Stock Report – show franchise and allow filtering by franchise

System level / other

  • Very narrow layer of edge cases could make txns fail in c9 but not report to end user something went wrong so to user there is not strong screen feedback to a problem but it is obvious something went wrong because the screen, like add payment, didn’t advance. Now fixed. The core issue is around c9 general ledger : it contains two layers of defense against issues, layer one in c9 itself does all the warning about inbalanced txns, concurrent edits etc. But the second layer of defense, on database itself asserts critical invariant on posted GL, that it balances among other tests. Rarely errors are trapped here but when they are they do not pump an alert to screen. Now fixed here.
  • A Decade or so ago c9 pricing based based  on access to ‘modules’ : unit sales etc. For a long time now convention is everyone has access to everything and our pricing model of market segment dependent was entirely an administrative thing for us, not baked into the software. But we left the old enforced code in c9 as is our habit to keep changes to a minimum.  So some c9 clients may not have had access to some features until we tidied things up. Finally removed this behaviour here.
  • Low level change to webhooks we use to monitor tillpay terminal processing workflow. Will allow us to eventually fully hide our comet server behind main rev-proxy webserver instead of exposing on a non standard tcp port.
Release 5.2.158 June 5, 2026 barney

PAYROLL : Error in 2025 Tax Tables

There is an error in existing tax tables that has been in place all year undetected.  Throughout 2025 c9 overcharged tax by about $4 to $5 a week because of an incorrectly inputted tax bracket.  Since it is nearly the end of the financial year we are going to leave this in place. All employee payments made using c9 payroll can expect a slightly higher tax return as a result.

2026 FY onwards we are migrating to a different methodology for handling tax tables. The ATO publish tax tables in form of excel spreadsheets for software developers. For years these have been baked into c9 but we never enabled them as a default tax computation methodology. The reason for this is that the way the excel files are designed and math in them; it is difficult to reason about the results and cross reference them with actual tax legislation and validate their accuracy.  The thinking was that it was more likely that using this dataset will cause computation issues. Given the 2025 undetected error we are reconsidering this and decided to pivot to this data and perform some basic spot checking / automated testing from 2026 FY onwards; and trust/rely on ATO to publish error free formulas.

PAYROLL : Qualifying Earnings and 2026 Tax Tables

  • PayDay super also applied some subtle changes to how super is computed. Specifically:
    • Transmit Qualifying Earnings to ATO via STP for pay data after July 2026. June 2025 and earlier will still us previous Ordinary Time Earnings regime
    • For Allowances : add two more types for Allowances which also contribute to qualifying earnings
  • Tax Tables – as mentioned above now bakes in excel files provided by ATO to software developers instead of us recoding the tax tables ourselves

C9 Repository changes – Stihl Pricefiles

We are bringing Stihl into our price file repository. This forces a change in repo importing to allow for optional support of per dealer discount codes.

This change requires us to “fence” off our repository from older versions of c9. Older versions of c9 will not see any c9 repo changes. You must update c9 first in order to access future price file updates in the repo.

Other tweaks and fixes

  • Inputting a bill with tax code of ‘*** no tax code **’ : the gst presented would show as 10% still. The gst presented is useless and does nothing on any relevant report but it is a bit disconcerting to see it on screen. Tweaked to force gst to 0 if no tax code is set. There are a couple of very narrow scenarios around management of capital purchases where ** no tax code ** is appropriate but they are very rarely used.
  • Rebate screens / reports : show supplier
    • Units – >units -> rebate screen
    • Units -> Reports -> Rebates
    • Units -> Reports -> Uncollected Rebates
  • No cash collected permission tuning  – couple of screens need nocash. Updated because soon we are going to retire no cash collected entirely
    • Sell / delete discount giftcards : replace no cash with sell below margin permission
    • bank rec : edit opening balance : replace no cash with banking permission
  • Spares Receive + already handled bugfix. if there are parts on receival which are already handled but remain still on order / on backorder c9 will incorrectly assume handled parts have come in add will two tax journals that cancel each other out. One influences trade statement and other itemizes on p/l cancelling out trade impact. The net result is zero but it is ugly/noisy. Now fixed for future spares receive.
  • Payroll : Pick a consistent naming convention for pay cycle / employment type. Updated menus etc to reflect
  • New GL code : prepaid expenses. Appears as an asset on balanace sheet. Can be used to split expenses across multiple tax years as per ATO guidance on prepaid expense accounting. There are no additonal screens in c9 to streamline or track this. For operators to manage themselves using manual journal posting.
  • New Email type configured in dealer settings : web order email. Will be used as preferred sender email on c9 enabled websites
  • Honda opt2ma reporting : expand matching for commission txns by also looking for DAF or commission in the rebate description.

Low Level / technical changes

  • Bugfix with Jordan’s Mac crashing because of recent antialiasing changes.
  • Some groundwork on supporting STX programmed barcodes and remote c9. Requires a new ver of c9 remote + this update. To be released later

 

 

Release 5.2.157 May 25, 2026 barney

Includes DB changes. You need to close and reopen c9

Important Change – messenger

This version of c9 enforces ‘restrict messenger’ mode so that messenger only runs on computers which are explicitly configured to run it

Some dealers might have c9 in permissive mode and will find messenger will not start at all. To fix on main computer goto setup -> main setup screen -> system and database tab. Make sure ‘allow’ option indicated below is selected, save then close and reopen c9

Basic fixes / tweaks

  • Payday super / payroll
    • Rename superfund ID so it is obvious this is USI
    • Allow member ID to be blank if SMSF
    • Select superfund : filter out superfund records which do not accept contribution.
    • Fix a  serious issue when there are multiple messengers running and they both try to progress a payday super operation can trigger undefined behaviour upstream. Make sure super records are locked so there is no simultaneous activity. Also escalated to our upstream supplier.
    • when there is a network/connectivity error with our pay provider c9 is supposed to generate an detailed diagnostic trace. Wasn’t there. Added in this version
  • Edit Sale unit  : show vin and engine number onscreen

Complex tweaks / fixes

  • New lock fixes : subtle bug with locking in some rare circumstances would trigger a shutdown of c9. example, point of sale 2 parts: 1 uom sale + other order on a daily order that doesn’t exist yet. Put on reserve/pickup will fail because of UOM item. A minute later c9 will crash. Root cause is because lock for daily order is done in a txn frame which is then rolled back. Fix : all locks happen in autocommit frames, if current frame isn’t autocommit then establish a new temporary connection to database
  • potential performance issues with inputting a part in point of sale fixed. for a couple of dealers have had sporadic reports of certain parts taking a long time (5 to 20 seconds or more) to pull up and these problems seem to disappear after some database ‘ANALYZE’ tuning.  I suspect issue comes down to two  things. This version corrects one of them : how c9 handles ‘use alt franchise’ settings in advanced (2) tab of edit franchise. Previously this was implemented on database, but I suspect it is far more efficient and reliable to implement on client side. So moved logic here. Second area we will explore later if problems continue to happen after this update (relates to instantaneous computation of available partkit qtys in F2 and input part number ).
  • Backup Verification : a low level change happening here to progress a very long term project : allow c9 and c9 databases to work with extended UTF charcter sets.  Actual support for this is still a long time away, but this is a critical next step. Opportunity taken since we need to migrate our servers to be a better provider, might as well ensure new servers support UTF at same time
  • Bugfix for a very specific set of circumstances with add payment. If you add payment and preselect txns to pay via ‘sel txns’ and then adjust the payment figure downwards afterwards in some circumstances this can cause the txn to fail to save. Now fixed

 

 

Release 5.2.156 May 13, 2026 barney

Small tweak to cope with using barcode scanners via remote c9 where barcode is configured to transmit STX.

In point of sale screen the barcode would misread as ’42’ instead of actual barcode. This version includes a temporary fix that makes such scanners work.

One subtle variation between remote and local STX programmed barcodes is remotely for now , barcode scanner will behave as though it wasn’t programmed. You’ll need to manually key in qty sold in point of sale for example.

Release 5.2.155 May 8, 2026 barney

DB / Messenger Changes – You need to log all terminals out with this upgrade

Sender ID registration changes to support July 1 ACMA requirements. Details of this are very important but will be covered in another separate post shortly.

Tweaks and fixes

  • PayDay Super : Super fund MVR support added. Note this function isn’t usable until July 1 but is now in play. MVR queries are accessed in edit staff screen
  • Magician checks
    • Mojo magician : fixed. You’ll need a apikey though to use it. To get an API key goto mojo dealer portal. You need to use the old Basic api key; NOT the bearer token.
    • Honda magician and website interaction causing messenger to crash. Now fixed.
  • Other
    • Purchase unit : add similar unit. Broken in recent changes to c9. Now working again
    • Accounting reports : print biz name + ABN at top of these reports
    • Historical Analysis restock  / stock analysis tools : wasn’t generating data or useful maxqty recommendations. Caused by recent changes to prepare for 5.3. (wasn’t sorting results correctly from database before feeding into liner regression and linear regression expected to receive presorted data).

 

 

 

Release 5.2.154 April 28, 2026 barney

Bugfix with recent changes to new/used unit flag setting on purchase unit.

In scenario where unit doesn’t exist against the customer and you add it for the first time, the purchase unit screen will scrub unit details at various points making it  impossible to add a new unit for purchase in this screen.  Floor stock purchases unaffected.

Underneath this is a subtle design issue which is now also fixed. Previously c9 may have flipped the new/used flag at random times during process of inputting a unit to purchase. This should no longer be happening either from now on.

Release 5.2.153 April 20, 2026 barney

Includes DB Changes. You need to log terminals out during upgrade

Features and high impact fixes

  • Honda Magician – working again (!). Uses Honda API to perform magician call. Make sure API key configured in edit  franchise is correct
  • Unit Duty / Market Value. Prior versions of c9 this would be computed based on unit price or it could be fixed / overwritten. Problem was the user interface didn’t make it obvious if it was calculated or fixed. You sometimes had to wrestle with it and sometimes it would inexplicably change (especially when selling parts onto deal , or PD changes). There is now an obvious checkbox flag that controls if duty value is fixed or calculated. It will only change from one to other if you either toggle the checkbox or input an overriding duty value.
  • Purchase unit : if customer purchasing from is account customer and they have an ABN : and unit odo<50 and hours<1 default assume unit is a new unit.
  • Recall Reminders
    • Bugfix : incorrectly sending recall alerts in some scenarios ( triggering off long running / long deleted deal records ,not off actual customer unit records )
    • option to treat reminders as marketing messages : if customer ‘marketing’ flag is not set then sms will not be sent. This allows service reminders to be configured to respect ‘stop’ requests if recall messages are more positioned as a marketing tool than a notification.  Option can be found in daily workshop notification tab in main setup screen.
  • Scheduler : display the scheduled task’s note. Displays under job no
  • Payroll / Super
    • SMSF configuration : increase max size of super fund account name from 40 to 80 chars
    • BankRec alert requirements : show last reconcile date and required reconcile date
    • PayDay Super onboarding : was not correctly transmitting max txns a month figure. Instead default of 9999 was going through.
  • KTM part image import, was still broken with recent fixes. More changes here and hopefully working again
  • ACT contract of sale T&C now added

Other Bugs

  • Deals
    • browse finished deals database performance boosts.
      • Screen should now be substantially faster
      • Note that previously for a deal which contained multiple sale units this screen whould show all units. Now it only shows the first unit; like the other 2 tabs on deals screen.
    • Cancelled / Finished Deal – visually indicate with an icon whether or not the deal has notes/private notes
    • Cancelled / Finished Deal – view details – also allow viewing of any attached private note
  • Deal Deposit history bugfix : if customer is changed then deposits were added on deal before change will be invisible in ‘deposit history’ list.  Now fixed to not pay attention to customer at time of deposit. Bug introduced with recent changes to pre-populate email for customers
  • Save txn, error then resave bugfix There was a long standing bug where if you created a new txn like add transaction on AR/AP, but if failed for some reason (e.g. GL lock), if you repaired the issue and click save again it would seem to work but not actually record anything. Now fixed. Previously workaround would be to start over.
  • Workshop : spares quotes involving UOM and qty was a fraction. e.g. 1.4.  The fraction would go onto workshop job as quoted part fine, but when you flipped it to supplied part, it would round the fractional component.  Now fixed.
  • TillPay integrated terminals : improve onscreen error reporting. Some common situations c9 pops an error but doesn’t explain in more detail. Common example is a c9 terminal linked to a specific eft machine but that machine is offline. C9 previously would pop an error retry screen but not explain why. Now it reports EFt device it tried to connect to and that is is offline.
  • KTM export – Remove ‘separate supplier’ logic which used to triage best price. No longer an advantage and hasn’t been for some years. This behaviour today is now a liability if operator isn’t paying close enough attention to fact that export process outputted multiple files.
  • New locking system improvements – lock alert bugfixes
    • System could misreport which terminal holds a lock. It may report the terminal that first acquired the lock for the day instead of actual current terminal. Now fixed
    • System would report remote c9 sessions as though they were locally running on same computer as messenger. Ensure correct name with (R) as remote access indicator is shown
  • Spares invoices – surcharge on reserve / deposit fiddles
    • Reserve: keep document description as a tax invoice if there are any tax events on journal at all, such as surcharges
    • in deposit history summary also summarise and tally tax supply components. A common issue especially where a surcharge is applied on reserve for initial deposit taking is that taxable supply on surcharge is realised on the reserve and that is not reflected on the ‘supply’ invoice making it hard for customers to reconcile card charges if they don’t have the original reserve tax invoice.
  • Business Health – include freight on spares receival in generic expense section

Minor tweaks /tiny fixes

  • Cash Till summary : report didn’t have a name so when you tried to email it the attachment name was “.pdf”.  One c9 customers email system seems to be having issues with this suddenly. Now fixed
  • Remove auto send order during point of sale feature : just isn’t a good feature. Difficult to reason about/predict its behaviour and doesn’t actually same much time/effort.
  • Bank Rec – when a new bank rec is created the from date+time is placed after the last reconcile. c9 tries to include some intelligence so it isn’t the second after but it tries to round the time up to nearest ‘simple’ value, testing 1 min, 15 min, 1 hour, 3 hour and next day boundary respectively as long as round up doesn’t skip any unreconciled txns. So if last rec finished at 19:07:15pm but there is a txn at 23:12:01 pm, the next rec will round up to 21:00:00 instead of using 19:07:16. There was a subtle bug in system where rounding would round beyond now into future time. This is is obvious if you reconcile right upto now and then do another reconcile right away. It rounds to tomorrow. For lots of reasons it is not appropriate to round up into a future datetime. c9 now constrains rounding result to a boundary that remains before present moment, if none exist don’t round at all.
  • Browse Txn Audit – button to query all txns connected to the highlighted audit record
  • Private job notes : capture and display clerk that created / last edited the private note

Low level changes

  • Stock analysis : reorganised code to simplify migration to 5.3
  • Txn save error : improve logging to log txnengine error list; needed to help with some fiddly support issues.
Release 5.2.152 March 16, 2026 barney

Includes DB changes you need to log all terminals out during upgrade

C9 Locks

This version includes significant changes to how locks are managed. The expectation is the dreaded ‘deal Y is locked on terminal X messages’ when in fact the terminal hasn’t locked the deal should all but disappear.

The previous system relied on robust network connectivity between terminals and servers; as ‘locks’ were linked to the connection. If anything interfered with connection such as computers falling off network in a way the server didn’t detect the disconnect then locks would stay in place until you restarted server.

The new architecture is functionally the same but is alot more resilient with network issues.  In event of a stuck/stale lock it will only remain stuck for 5 minutes; after which the new terimal will gain the lock. If the prior computer which held the lock somehow gets unstuck (.e.g. the computer was just in sleep mode), c9 will see that the lock was taken by some other terminal and will force the c9 to close.

Expectation is that this architecture will be alot more resilient and much less disruptive in handling edge cases and hardware niggles around deals and job cards. Network issues will not trigger perma-locks which can only be cleared with a database restart. The new behaviour of killing stale c9s which woke up to found their locks where taken is anticipated to be both rare and minimally disruptive.

PayDay Super

Some ongoing refinements and fixes

  • Certain system or network errors could permanently locks a stream upload in c9 as finished but failed. Some refinements here
    • wait for 5 consecutive system errors before flagging a payday upload as perma failed
    • Add a button : force refresh to allow a finished payday upload to forcefully reevaluate payday super result
  • Manual payday : was not working as expected. Was not correctly detecting payment due and advising operator and instead was flagging as an error. Now fixed.
  • pending payday block backup verify. Still wasn’t 100% fixed and was still pausing backup verify. Hopefully now is sorted.
  • Payroll bankrec alert is now more strict, payrun prior to last must be covered by bank rec. Bank Rec alert is now enforcing / mandatory if there are any payday super records or if payday on next run is after July 1 2026
  • PayDay Super is now generally available. Once we finalise documentation in a week or two we will invite some clients to try it out

Single Touch Payroll – Security changes

The ATO are mandating some modifications to how STP data is transmitted and will only accept STP data coming from systems you are pre-authorised via ATO portal. This will create a new process you need to perform to advise ATO for your business C9 is allowed to transmit STP data.

All this work will come into play around July 1.  There are still some elements of this not yet 100% completed. More details will come out in next month or two.

Other Tweaks and fixes

  • Add new franchise : screen could accidently pickup random note from unrelated part of c9 for notes to print on order sheets. For example if you were printing a workshop job just before and workshop jobs have configured fineprint that also prints, that fine print would drop into new franchise as notes to print on daily order sheets. Now fixed
  • General Ledger – split interest expense gl code to disambiguate bank interest/charges from ATO penalties/charges/interest
  • KTM/HQV web shop part image grabber : now working again
  • Reprint deposits. Access customer on deposit record to preload email if operator chooses to email receipt
  • Edit journal / add transaction. Make tax code drop downs more obvious / intuitive. blank renamed to ‘no tax code’, and internal is explained better as effectively disabling posting. Disallow use of internal in add txn entirely since it cannot post a balanced journal anyway

Low level changes

  • Messenger location is no longer sensitive to primary /secondary terminal installation when ‘Restrict messenger setting is in play’. In this case check the messenger setting to assess whether or not to wake up messenger on a given terminal.  This will allow easy / quick movement of messenger from one computer to another.

With following setting in place, location of messenger is now solely controlled by whether or not ‘allow messenger’ checkbox is set and nothing to do with selection at installation time

Next Page »