There are only two sure things in life when it comes to e-commerce: bugs and taxes. We dealt with both this past week.
We've recently released "Headless Swarm," the first season of paid story for Exploit: Zero Day. It's the first time we're taking money for ourselves (Ossuary is sold through various storefronts that handle details) so we have to take care of a number of intimidating things... like sales taxes!
Taxes vary from nation to nation and US state to US state. Fortunately, we've been using a great service called TaxCloud that handles a lot of the burden automatically... for free. A bunch of US states pay them to automate tax reporting and their support is better than you'd expect for a company you're not paying. Earlier this year we had an issue where Minnesota thought we owed them money, but TaxCloud handled it after just an email.
However, TaxCloud does require a bit of integration with your systems, and we made a small but significant mistake when we programmed that piece. We only noticed when we started taking money from customers that we'd somehow switched the origin and destination info for sales tax! As a result, we were calculating tax as if it was being bought in our state from a business in the customer's state, instead of vice versa.
It's a minor issue, and TaxCloud told us how to resolve it (basically by deleting and recreating the records in their system) but it's a little embarrassing to get our implementation perfectly backwards. Luckily, it was an easy fix and the calculations on Exploit: Zero Day are once again correct.
Exploit: Zero Day is our cyberthriller with a living story. The first season of content, "Headless Swarm," will get you instant access to the closed alpha, or you can join the mailing list. and receive an access code to the free story in the next monthly newsletter. YouTubers, streamers, and press, request a copy from distribute().
Our first release, Ossuary is available on Steam, itch.io, Humble, and IndieGameStand. Press-like people, you can also request a copy of Ossuary from distribute().