I’m trying to find an easy way to enable my website to accept bitcoin payments. I’m trying to test out Blockchain.info’s “receive payment API” (http://blockchain.info/api/api_receive). Near the bottom of the page, there is a PHP example (https://github.com/blockchain/receive_payment_php_demo) which I like to test out. To test it out, I need to send bitcoin to Blockchain.info’s address, who will later send the bitcoin back to me. When I try to send 0.0005 BTC in my Bitcoin-QT client (v0.8.6-beta) , I get the following message:
“This transaction is over the size limit. You can still send it for a fee of 0.0005 BTC, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee?”
There are only two buttons for me to click: Cancel or Yes. 0.0005 BTC is worth approximately 50 cents or 100% of the amount that I want to send. This is an incredibly expensive fee and not at all what is touted as a cheap way to send money. When developing and testing, one will likely need to send bitcoin through this PHP code many times, which means that these fees can add up, and all I’m doing is testing.
How can I send BTC to test payment processing without paying this fee?
You are probably trying to pay with BTC collected from very small payments (known as dust). This dust is commonly collected from advertisement sites. Though they know sending small payments will break your wallet this way, they just don’t care as long as you keep clicking ads!
Since transaction size depends greatly on how many payments you’re drawing money from, this generates a very large transaction which is very expensive both for miners and other nodes in the network. To reward miners for this cost you have to pay a fee or they will just refuse to mine/broadcast it.
Unless you pay this fee the transaction will be rejected by peers/miners, no matter what you do.
As a workaround you might want to consolidate all the dust sending smaller payments to yourself, but it’s a tedious process, still has high fees and might not be possible depending on the concrete amount of payments you’ve received.