I'm getting an error 500 from my web server when I try to send a raw transaction through the RPC API.

PHP message:

PHP Warning:  fopen(://...@IP:8332/): failed to open stream: HTTP request failed!
HTTP/1.1 500 Internal Server Error
in /usr/share/nginx/html/common/jsonRPCClient.php on line 132

PHP message:

PHP Fatal error:  Uncaught exception 'Exception' with message
'Unable to connect to://bitcoinrpc:PASSWORD@IP:8332/' 
in /usr/share/nginx/html/common/jsonRPCClient.php:140

Stack trace:

#0 /usr/share/nginx/html/tools/do_sendBTC.php(131): 
jsonRPCClient->__call('sendrawtransact...', Array)
#1 /usr/share/nginx/html/tools/do_sendBTC.php(131): 
#2 {main}

This is the line that crashes:

$result = $bitcoin->sendrawtransaction($tx_data);

Every other API call works, for example validateaddress.

Any idea why this fails? The same raw transaction works if sent through the bitcoind command line.


1 Answer 1


You cannot send one transaction twice. If you have already sent it from bitcoin commandline, then it will fail with -22(cli) or 500(http) error.

500 means incorrect data: insufficient funds, bad syntax, bad type, impossible command...

Try to cast to string: $bitcoin -> sendrawtransaction((string)$tx_data), and do var_dump($tx_data) to find the type.

If it doesn't help, send this POST request from cURL, as in tutorial: https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)#Command_line_.28cURL.29

  • Using curl I could find out the error. My raw TX had an \n at the end which returned the error 500.
    – Antoni
    Aug 25, 2013 at 15:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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