As sad as it may seem, you need to take other people's incompetence into account when you're dealing with business-critical things like domain names.
It was a registrar screw up, but my main take away is: avoid .io like plague.
See also: https://hackernoon.com/stop-using-io-domain-names-for-produc...
How else am I supposed to automatically add a layer of cool to my startup
And if you're a company you already have to publish a contact for legal matters anyway.
The only situation where an imprint doesn't already exist are scammers and personal sites, and personal sites don't need an imprint (if you make money with ads, it's not personal).
Personally I have my main stuff all on .de, my short domains on .eu, and then for certain projects purpose-specific domains on .info
Obviously, we see a lot of expired domains on a daily basis, mainly because customer's forget to renew despite us reminding them repeatedly during the three months before the domains expire.
General advice: 1) Make sure there is more than one single contact person for invoicing. All too often, the problem is that a single employee is unavailable for some reason and that the rest of the business have no idea that the domain needs to be renewed.
2) Keep the contact details valid and up-to-date. This should be a no-brainer but a surprisingly large amount of businesses have domains registered to single employees, or with invalid contact emails.
3) Don't wait until the domains expire; renew the domains for at least one additional year. It will give you a whole year to fix stuff if you forget a reminder. EDIT: Or if the registrar screws up like in this case.
4) Automatic renewals is your friend. It's a last line of defense if all else fails.
5) Make sure you have a process for handling all of the above, even if you're a one-man business. Domain names are often critical for the business, and it's ridiculous to let the entire business rely upon a reminder sent 90 days before expiry.