Alright. I got this figured out.
The problem is Block.io's payment gateway / Chain.so mempool combination.
This is how it goes: Transactions from service provider's wallet are posted "in chain" to Chain.so. That means each payment is parent to next one. That would be fine, but Block.io also uses unconfirmed inputs over and over again in chain. So payments need to be broadcasted to other mempools in order from oldest to newest. There's no exception for that because of this.
Problem is also that those transactions do not get broadcasted, in most cases, anywhere else than Chain.so and mining pools tend to choose most of the transactions they mine from other mempools.
Therefore service providers with tens or hundreds transactions per day
SHOULD NOT use Block.io ever as this will surely happen over and over again untill Block.io gets their shit together and stops using unconfirmed funds.
So propably only a few transactions in your transaction's chain are mined daily. That could mean your transactions doesn't appear on blockchain.info at all and therefore doesn't get confirmed in weeks or months depending on how many parent transactions you have unconfirmed for your transaction.
Now, If we want our transaction ever to be confirmed, we'll need to find oldest unconfirmed parent transaction on that chain and start pushing these to blockchain.info.
https://blockchain.info/pushtxThis is done by viewing transaction's raw data and finding parent for our transaction. And parent for that transaction and so on. Let's take this transaction for example:
https://chain.so/api/v2/tx/BTC/bbde5a3a3c95c8adb6171b335111494a3df445b9b933d9ba1374b719c3eceaccParent transaction for this would be "received_from: tx_id:" transaction hash. So parent transaction is:
https://chain.so/api/v2/tx/BTC/e6fa16b373a1e343f1a90ec188406dc1d4edbd8f8b79306a25c13f0eb39a8f08Then when you encounter first confirmed transaction you start going backwards and pushing hex data from each transaction to blockchain.info.
You'll need to push those transaction hex's to blockchain.info
EXACTLY from oldest to newest transaction.
You can't skip a single one, otherwise push tx fails with an error. For example:
Missing parents for bbde5a3a3c95c8adb6171b335111494a3df445b9b933d9ba1374b719c3eceacc while inserting: [e6fa16b373a1e343f1a90ec188406dc1d4edbd8f8b79306a25c13f0eb39a8f08]
I know this as I had to go through almost 800 transactions and push all those to blockchain.info to get my transactions confirmed. Keep in mind also, that Blockchain.info allows only 25 unconfirmed transactions at a time per wallet. So if you have pushed 25 transactions, you need to wait confirmations for those before continuing.
I hope this helps.
edit: And yet another reason to stay away from Block.io.
https://bitcointalksearch.org/topic/m.27502162