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?

  • 1
    Bitcoin is only a cheap way to send money as long as you're not sending/receiving micro-payments! – kaoD Jan 11 '14 at 23:26

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.

  • Thanks for your input. How do I go about sending smaller payments to myself? The very first transaction that I received was for 0.002 BTC. Do I create a new receive address in my Bitcoin-QT and then send 0.002 BTC to the new receive address? The second transaction that I received was for 0.00002 BTC. Do I create a second new receive address and send 0.00002 BTC to the second new receive address, or can I avoid creating the second (or third) receive address and send the 0.00002 BTC to the first receive address? – JLP Jan 12 '14 at 3:54
  • @JLP if you do that, you'll have the same problem (lots of input payments, even if they're to yourself). The procedure is too long to explain here, just ask a new question on how to collect dust and I'm sure someone will answer! Please remember to accept any answer on this question, it'll be useful in the future for other people in your situation. – kaoD Jan 12 '14 at 20:52

You likely have many small (in value) coins in your wallet, so when constructing a payment, many of them need to be assembled to construct a transaction - resulting in a large (in bytes) transaction.

The reference implementation (v0.8.6) will enforce a fee of 0.0001 BTC per kilobyte if it doesn't satisfy the "free transaction policy". Future versions of bitcoin will likely make this fee free-floating and based on actual fees paid in the network, so a free market can develop around it. Setting a higher fee will still result in a higher chance/faster processing by a miner.

Also, if you just want to test, use testnet instead of directly testing on the Bitcoin production network. You can start the client with the -testnet flag to end up in a parallel network where coins have no value. You can use a faucet (google it) to obtain some testnet coins.

  • Thanks for your input. I found these instructions on how to use Testnet: suffix.be/blog/getting-started-bitcoin-testnet My understanding is that I cannot send Testnet coins to bitcoin addresses. Therefore, I cannot send Testnet coins to the address provided by Blockchain.info's "receive payment API". If I cannot do this, then how do I test out Blockchain.info's "receive payment API"? – JLP Jan 12 '14 at 3:46
  • 1
    Demand that blockchain.info provides a testnet instance :) – Pieter Wuille Jan 12 '14 at 12:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.