If you are using a node to submit these then in my experience (presuming you are using transactions/check to check txs first) you either have some issue with double-spending i.e. tx gets submitted and then a dataInput gets spent whilst tx in mempool, your node has a bad utxo set and thinks some boxes are unspent when they actually are, or you might be using block header context which Ive had trouble with depending on how its used.
If using ergo-lib-wasm then you might just have a poorly formed tx, like Inputs value != outputs value, or some other things that get to mempool stage but are eventually rejected.
What are you using to submit the txs?