I ran into this issue again, and after some testing I believe that the previous solutions aren't necessarily correct.
I think it was a coincidence that my problems were resolved, as just now I've encountered the same error and been unable to fix it using these methods.
However, I believe I have found the true solution.
The key to the fix is that column order matters on imports.
When I had the invoice number to the left of any of my customer identifier columns (I tried cardID, Co./Last Name, and Record), I would run into the error -4641.
But as I was testing different combinations, I happened to insert the Record column to the left of the existing columns, rather than appending it after the rightmost column.
I didn't expect this to work, as it was an edge case that I was trying to make sure I covered, and so I was surprised when I had the import succeed.
A couple more attempts and I had positive confirmation that whenever the invoice number column was first, the import would fail, and was attempting to match to another customer with the same invoice number (split billing).
But when a customer identifier was "scanned" first, it seems that MYOB "filters" the list of invoice numbers down to those relevant to the specific customer, before attempting to apply the payment.
My guess would be that this will hold true for all of the fields in the import used for identifying the open invoice, and that by having the date field ahead of the invoice number field one would be able to direct the import to apply payment to a specific invoice of a customer (assuming they had the same invoice name).
I have not tested this, however.
Good luck to anyone who reads this.