Every CRM vendor claims they're MyInvois-certified. None of them will tell you which invoices actually fail, or why. You'll find out on day 47 of your accounting cycle when you're told your invoice queue stalled, and you've got 48 hours to resubmit before the tax authority locks you out. The gap between "MyInvois-ready" and "MyInvois-actually-passes-tax-validation" is wide, and it's hiding in the details. Most platforms validate the invoice structure—line items, totals, signatures. What they don't catch: foreign NPWP mismatches, zero-rated service codes that don't match your declared business activity, retainer line items prorated across tax boundaries, or SST calculation errors on mixed billing. This is not theoretical. You need to test your CRM against real-world edge cases before go-live, measure the actual rejection rate, and know exactly how long resubmission takes. Here's how. Build your 20-invoice test dataset Your test set needs to represent the invoicing patterns that will actually break on live submission. Pick 20 invoices from your next three months of real or projected billing. Structure them like this: 5 standard invoices: domestic NPWP, standard-rated goods, single line item, net 30. These should pass every platform. 3 zero-rated services: consulting, software licensing, professional services. Match the service code to your actual business activity in SST. Mismatch here is silent death. 2 retainer invoices with proration: ₹10K/month retainer, billed mid-month, spans tax month boundary. Most platforms split the SST calculation wrong. 2 mixed invoices: same invoice line with goods (6% SST), service (zero), and export (zero). Tests whether your platform can handle multi-rate SST on a single invoice. 2 foreign NPWP: one Singapore UEN, one Indonesia NPWP. Tests whether your platform validates cross-border tax ID formats correctly. 2 credit notes: reversal of standard invoice, reversal of zero-rated service. Credit notes fail differently than invoices. 2 amended invoices: reissue with changed quantity or amount. Tests whether your platform flags duplicates or allows legitimate amendment. Print a reference sheet for each invoice with the expected outcome: should pass, should fail on which field, expected rejection code from LHDN. Run each CRM through the full submission cycle You're not testing whether the platform generates the invoice. You're testing whether it actually submits to MyInvois and gets validated. This means live submission or sandbox with real-time validation—not a local test that never touches the tax authority's API. Create a separate test company entity with its own SST number if possible, or a dedicated invoice series in your live setup. You cannot delete submitted invoices; you can only amend or credit them back. Plan for the mess. Enter all 20 invoices into the CRM exactly as you would in production. Do not hand-craft MyInvois XML or JSON. Test the UI path: contacts, line items, tax codes, approval flow, submission button. Submit each invoice through the CRM's native MyInvois integration. Record the submission timestamp. Wait for validation. MyInvois typically responds within 15 minutes for valid submissions, 1-2 hours for rejections. Do not re-submit immediately on rejection; log the error code and wait for the next validation window. Log every rejection. Capture the exact error message, the field it flags, and the recommended fix. "Invalid tax code" is useless; "Tax code 'SRV001' not linked to your declared business activity" is actionable. Measure the metrics that matter The goal is not a pass/fail score. It's a map of which invoices fail, why, and how long it takes your team to fix and resubmit. First-pass validation rate: How many of your 20 invoices passed on first submission? (Expected: 12–16 if the CRM is competent; 8–12 if it's weak on edge cases; under 8 and you have a real problem.) Rejection breakdown: Of the failures, tally them by category: tax code mismatch, NPWP format error, SST calculation error, missing required field, duplicate invoice number. This tells you whether the CRM's validation is shallow (missing required fields) or deep (tax logic). Time to fix and resubmit: For each rejected invoice, measure the time from error message to resubmission. If your platform flags "tax code not valid" but doesn't tell you which code to use, you're stuck in manual lookup. If it flags the issue and offers a dropdown, resubmission is 60 seconds. Amendment friction: When you fix a rejected invoice, does the CRM let you amend in-place, or does it require a new invoice? MyInvois allows amendment, but not all CRMs surface it cleanly. Retesting a re-number instead of amending adds 20 minutes per invoice in a 500-invoice month. Audit trail clarity: After submission, can you see the full MyInvois response in your CRM? Can you export it for your accountant? Or do you have to log into the LHDN portal separately to see what actually passed? Compare across your shortlist Run this test