I deal with two banks for credit cards.
One (call it "Blue Bank") allows me to download a statement. I filter out a couple of things (payments mostly), check that it matches the paper statement balance, and post it. About 15 minutes start to finish.
The other (call it "Orange Bank") allows me to download a "statement". I filter out a couple of things (payments mostly), check my previous month's transactions to see which ones at the beginning of the file actually go in the current billing period (not already paid), stare at the last transactions to see which ones actually were posted to the current billing period (not after the cutoff), run the script to check the total (nope, doesn't match) then do that a couple of times until it matches. The time they changed the meaning of the "credit" column from "just confirming this is a credit" to "it's a credit, you need to flip the sign" it was 45 minutes.
But hey, it's all CSV!
My other issue is with stores like Costco that sell both household goods, groceries, clothes, and even misc kids stuff. I like to track each separately. Which means I then need to fetch and analyze the receipts.
That is a reality. To make my life easier, when I check out at a store, I put all my grocery items first on the belt. Then everything else. Usually "everything else" is only a few items. So I categorize those additional items, and then specify "Groceries" for the rest.
Often I buy only groceries, and I throw those receipts away. When I'm in a ledger/beancount session, if I don't have a receipt, that means it was just Groceries.
This method alone really reduced my time dealing with receipts.