Using (an unsupported, self-hosted version of) Billings Pro in 2020

Mid-November 2020 Update (Big Sur)

After updating to Apple’s newest operating system, Billings Pro 1.7.14 crashes on launch with a segmentation fault. At this point it is abundantly clear that the self-hosted version of this software is on borrowed time, but I found a workaround:

Download the latest version of the app (currently 1.7.18). Launch it once to make sure the extended attribute is unset. Control-click it and Show Package Contents. Do the same for version 1.7.14. Move the Contents/Frameworks/MCApplication.framework bundle from the 1.7.18 package to the 1.7.14 package, replacing the existing .framework bundle.

The only issue that I have noticed so far is that you cannot email invoices directly from Billings Pro. It opens the Apple Mail app but doesn’t create a new message or attach the invoice. You can still email the PDFs manually.

This solution is sketchy at best and may wreck your data. Have a backup. Good luck!

November 2020 Update

When I wrote this post, I was focused on solving the issue of the then-shipping version of the Billings Pro client connecting to the server on a new computer. After I did all the work below, I realized that there was still an issue loading invoices and that client version 1.7.14 was needed to resolve that. This month I got a new desktop computer and learned that when you start with client version 1.7.14 you don’t need any of the server certificate hackery listed under The Clients below. I am not sure if it is still necessary to have the server certificate generated prior to July 1, 2019 as described in The Server section.

Original Content (March 2020)


I have been using Billings Pro by Marketcircle for, lets just say, a long time. When I bought the software I opted for the self-hosted one-time license rather than the cloud-hosted subscription, and many, many years later, I am still capitalizing on that investment. Marketcircle no longer supports the self-hosted version. I do not currently want to migrate to the cloud-hosted version of the application, and this post documents the workarounds I found necessary to keep the client software functioning with the self-hosted server on macOS Catalina.

Disclaimer: This is not intended as a guide. You probably shouldn’t do this, and I’m not responsible if you corrupt your accounting data, your server gets hacked, your computer catches on fire, or your cat runs away as a result of replicating these steps in your own environment. The self-hosted server software is no longer updated or supported. If it were, you wouldn’t need to do these workarounds in the first place.

The Server

I am still running Billings Pro Server Admin on the last version of Mac OS that Marketcircle supported, 10.11.6. I have read accounts of people getting the server software to work on system software versions up to 10.14, but I have not made any attempts at doing so. While troubleshooting the issues I had with running the software on Catalina, I installed the server software on a clean install of Mac OS 10.11.6. While setting up the software, I set the server’s date to June 30, 2019, as Billings Pro Server generates SSL certificates for its own use and macOS Catalina (which I am running on the client computer) imposes additional requirements on SSL certificates that are generated after July 1, 2019. I am not sure that this is a required step.

Owing to the fact that the server software is no longer updated or supported, the server is firewalled from the Internet. A VPN is used to access the server remotely.

The Clients

When I attempted to log into Billings Pro on a clean install of macOS Catalina using the latest available client software from the App Store (version 1.7.16 at the time of writing), I got the vague message, “Error creating the offline DB.” It looked like an SSL connection was failing to establish. Looking through the files on the server machine I found the CA certificate that Billings Pro uses to sign its own certificates. This file is located at /Library/Application Support/Billings Pro Server/Storage.bpsdb/Data/8_3/server.crt. I copied this file to my client machine and added it to the login keychain, then configured the Trust setting for the certificate to “Always Trust.”

At this point the client software would connect to the server, but no invoices, estimates, or statements will load as long as the client software version was 1.7.15 or later. The last version of the software that will connect to the HTTP server that Billings Pro Server hosts PDF content from appears to be 1.7.14. Deprecation of obsolete security protocols seems to be the culprit. Version 1.7.14 was retrieved form a backup and installed.

Next, because it is important that the version of the Billings Pro client on disk not be accidentally updated, I deleted the _MASReceipt from the app bundle by control-clicking the app and selecting Show Package Contents, navigating to the Contents folder inside the bundle, and dragging _MASReceipt to the trash. This prevents the App Store from recognizing the Billings Pro app as having come from the Mac App Store, so it won’t prompt to update the app as new versions are released. Just to be extra careful, I locked the app from the Get Info window.

The last annoyance is that each time the client is launched, it detects that a newer version is available and recommends I update. Looking through the property list keys, there is an option for SUCheckAtStartup, but turning it off has no effect. After spending a few seconds with tcpdump, I found the software contacts Using the hosts file to blackhole that domain prevents the update screen from appearing.

What’s Left

The Billings Pro client version 1.7.14 is a 64-bit application and will hopefully continue to run on newer macOS versions for a while longer, but this is an increasingly-fragile solution and I am evaluating other solutions to replace Billings Pro.

HP LaserJet CM4540 – 99.05.56 Firmware Install Error

I recently tore down a HP LaserJet CM4540 to fix a different error (59.00.F0) caused by a sticking solenoid. The repair for this is well-documented online, but when I reassembled the printer I got a new error: 99.05.56 Firmware Install Error. I knew this had to have been caused by an error in reassembly since I had done nothing to affect the firmware, and in a few minutes I had found it: a wide, flat ribbon cable on the far right edge of the DC Controller (J105) was left undone. Reconnecting this cable fixed the issue. There are 34 connectors plugged into the DC Controller (J101 and J102 are not used) so it is easy to miss one on reassembly!