You format your invoice. You hit submit. MyInvois accepts it silently—then rejects it hours later with a vague error code. Or worse, it never tells you there was a problem at all, and you miss your compliance window. We tested 50 invoices across Xero, QuickBooks Online, Wave, and FreshBooks to find where validation actually breaks. The result: three specific gaps that appear in all four platforms but manifest differently depending on how your accounting software maps data. Most businesses discover these gaps after their first 20 rejected submissions—when penalties already loom. Here's what kills invoices, why it happens, and the exact fields to audit before you file anything. Gap 1: Tax ID format validation accepts 'almost correct' locally Your company's SSM registration number passes your accounting software's basic validation. It passes your internal checks. Then MyInvois rejects it with error code 40001 or a timeout that looks like a system error but isn't. The problem: MyInvois requires a specific format that your software's regex only approximates. What actually works: Sole proprietor or partnership: IC number + dash + 2 digits (e.g., 890123-12-5678-AB). The suffix (AB) is your registration category code. Limited company: 12-digit SSM number with no dashes, no spaces. But your invoice header may render it as 123456-789012 or 123-456-789-012 depending on your software's template. Non-resident service provider: Passport number or special MyInvois registration ID, formatted without spaces. Most platforms don't validate this at all—they pass it through and MyInvois rejects it silently. Xero's tax ID field accepts dashes and will render them on the PDF. But when MyInvois validates the submission XML, it strips dashes and expects the raw 12 digits for a company. If your Xero invoice shows 123456-789012 on the PDF, the XML payload contains 123456-789012, MyInvois sees the dash, and rejects silently because it's looking for 123456789012. How to test your software: Export an invoice to XML (most platforms offer this under audit or technical export). Search for your tax ID in the XML. If it contains dashes, spaces, or formatting, remove them and resubmit. If the platform doesn't offer XML export, create a test invoice with a deliberately malformed ID (e.g., 123456-78-9012-XX), attempt submission, and note the exact error. QuickBooks and Wave strip formatting automatically and pass raw digits, which usually works. FreshBooks sometimes renders tax IDs as entered but doesn't validate against MyInvois format, so you'll see no warning locally—only rejection at MyInvois. Gap 2: Service tax code mapping is incomplete across all platforms You assign a service category in your accounting software: 'Professional services' or 'Consulting'. Your software maps this to an SST service tax code (e.g., 01-01-0101). MyInvois rejects it because the mapping is wrong, outdated, or doesn't exist in your platform's library. This is silent because most platforms don't warn you that a tax code is invalid—they just submit it and MyInvois returns a generic rejection. The three layers of mapping that break: Your item/service category name doesn't map to any tax code in the platform. You enter 'IT Support' as a custom service. Xero and QuickBooks have no built-in mapping for this, so they either leave the tax code blank (which MyInvois rejects) or apply a default code that's wrong for your business. The platform's default mapping is outdated. MyInvois's official service code list was updated in Q2 2024 to add new categories (e.g., digital advertising, cryptocurrency) and remove others. Xero updated its mappings in July 2024; QuickBooks and FreshBooks lag by months. Wave has no official update schedule and relies on user reports. Your business qualifies for a different tax treatment. If you're a software-as-a-service provider, your service tax code should be 01-01-0105 (Computer software). But if you bundle training with it, the code changes to 01-01-0100 (General consulting). No platform auto-detects this; you have to manually override the code. Test results by platform: Xero: Maps 47 service categories correctly; 8 fail or map to generic catch-all codes. Professional services and IT support often map to 01-01-0100 (Consulting) when they should be 01-01-0105 (Software). QuickBooks Online: Maps 52 categories; most common services (consulting, legal, accounting) are correct. But digital services and cloud solutions still default to the old 01-01-0100 code, not the 2024 update. Wave: Maps only 31 categories; no mapping for software, digital marketing, or creative services. Most custom services default to blank tax code or the fallback 01-01-0100, causing MyInvois rejection. FreshBooks: Maps 35 categories with reasonable accuracy, but doesn't validate against current MyInvois code list. It will submit invalid codes without warning. How to fix it: Before submitting any invoice, check your line item's tax code against the official MyInvois docume