Using bitcoin-otc

From bitcoin-otc wiki
Revision as of 17:37, 1 September 2015 by Nanotube (Talk | contribs) (No spam policy: reduce specificity to reduce drama)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


Short list of things you need to know:

  • bitcoin-otc trading is directly between counterparties - there's no intermediation, just find someone who wants to make the trade.
  • stay vigilant against fraud. check user ratings, and be sure they're authenticated.
  • register on bitcoin-otc so you can be part of the web of trust, and send and receive ratings.

#bitcoin-otc user guide

Channel guidelines

Please follow the IRC channel guidelines at all times: Bitcoin-otc_channel_guidelines.

Gribble bot

Interaction with the order book and rating systems is done via the gribble bot. Bot's control sequence is ';;'.

Note: to reduce channel noise, gribble responds to all commands from unauthenticated users on #bitcoin-otc channel via private message. You are also encouraged to talk to gribble in PM, rather than clutter up the channel with your commands, unless you specifically want public output. You can also use the testing channel #gribble.


  • #bitcoin-otc-ru - russian-speaking channel
  • #bitcoin-otc-eu - europe
  • #bitcoin-otc-uk - UK
  • #bitcoin-pit - strict no-offtopic trades-only channel
  • #bitcoin-otc-ticker - live streaming incoming OTC orders
  • #bitcoin-otc-foyer - chat by unregistered/unauthenticated users
  • #bitcoin-otc-ratings - streaming OTC web of trust rating changes

Authentication requirement

To enter orders, and participate in the rating system, you must register and authenticate to the Gribble bot. You can register using a bitcoin address, a GPG key, or both.

Authentication is used to maintain your identity on the order book and rating system when conducting trade on the the #bitcoin-otc IRC channel (#bitcoin-otc via web).

It is also a good idea to register your nick with nickserv, and turn on nick protection (set enforce), so that others can't use your irc nick when you're not around.

Of course, you don't need to register if you want to trade without using the order and rating systems - just come into the channel and talk to people. You will find it harder to find willing counterparties for trade if you don't register, though.

Order book guide

The order book holds offers not just for buying and selling bitcoins but for physical goods and services as well.

Order entry

  • To enter buy or sell orders, use the buy and sell commands with the bot. Bot's command string is ';;', so to enter an order, you might, for example, try the following:
;;buy 100 btc at 0.38 USD optional notes go here
;;sell 1 "1g gold bar" at 115 btc price includes shipping, one bar for 115btc.
Note how you can provide a multi-word currency name by including it in quotes. You can specify any additional details in the notes. Prices should be per unit.
  • To view your open orders (maximum 10 open orders per user) use the view command. You can also specify an order ID, to view any specific order.
  • To remove your open orders, use the remove command. You may specify a particular open order to remove by providing an order ID.
  • Open orders expire after 14 days, to avoid database cruft. To renew your outstanding orders, use the refresh command to reset expiration date.
  • To view the order book for a particular currency, use the book command. It's best to use that in private message with the bot, to avoid flooding the channel. E.g., you might run the following to see outstanding orders for MTGUSD (Mt. Gox USD):
;;book MTGUSD
  • If you have a web browser, best way to view the open order book is to visit the online order book.
  • You can get help on bot commands using the help command. e.g. to get help on using the buy command:
;;help buy

Advanced order pricing features

  • To index the price per unit for your offer to market prices you may include one or more of the macro substitutions: {bitstamplast}, {bitstampbid}, or {bitstampask}. The macro substitution will be replaced with current rates at the time that your offer is viewed. For example, to place an offer to buy at a price that is 10% below the last trade that occured on Bitstamp, follow this example:
;;buy 100 BTC at "0.9 * {bitstamplast}" PPUSD

Or to offer to sell at the midpoint between the bid-ask spread, follow this example.

;;sell 100 BTC at "({bitstampask} + {bitstampbid}) / 2" PPUSD
  • You can also place orders with price indexed to usd currency conversions (as returned by yahoo). The currency conversion placeholder is of the form "{xxx in yyy}", using yahoo-recognized three-letter currency abbreviations (which are generally the ISO 4217 codes). So if you want to place a sell order in Euros, when the price in USD is 0.8, try the following:
;;sell 100 btc at "0.8 * {usd in eur}" EUR bank transfer
For even more flexibility, you can index to bitstamp and also do a currency conversion. Example:
;;sell 100 btc at "{bitstampask} * {usd in isk} * 1.05" ISK cash by mail
  • There's an agreed-upon protocol for entering option orders. See Option orders for details.
  • You can of course enter just about anything in the book - the free-text notes field lets you describe the details of the transaction you would like to perform.

Long orders

As stated above, the default order expiry is 14 days - if an order is not refreshed within that time period, it expires and is deleted from the order book. However, those who have sufficient trust in the OTC Rating System (currently, a sum of level 1 and level 2 ratings from nanotube of at least 15), can put in 'long' orders, which have a default expiration of an extra 90 days. You can also refresh your orders with an extra 90 days. To do this, you add the --long option to the buy, sell, and refresh commands. So for example, to put in a long-standing buy order, you may try:

buy --long 100 btc at 1 usd

and to extend the lifetime of an order, you could do

refresh --long 235

Please only use the long expiration option on orders that are indexed to current exchange rates, so that your old orders won't become outdated and end up just crufting up the order book. See previous section about order price indexing.

OTC Ticker

OTC has an inside-quote ticker for all BTC-currency offers. If you want your order to be part of the data that makes up the ticker data, please use one of the supported currency codes for your BTC buy or sell orders. So if you're selling for paypal, put 'USD' for the currency, and mention paypal in the notes field.

No spam policy

Please don't post spam orders on the book. While initially it was amusing to have funny orders on the book, with the increasing depth of the book spam becomes more of an annoyance. Please no spam. We'll know it when we see it. (If you have to ask, it probably is.)

Also, don't spam your wares on the channel. The 'spam' threshold is flexible, depending on the content of your message and level of channel activity. Roughly speaking, mentioning your offer once every few hours is usually fine.

Pasting too many lines of text is also frowned upon. Use a pastebin if you want to share lengthy content.

Ultimately, decisions are up to channel ops. We know it when we see it.


There are no automatic systems set up to match buyers and sellers. The entire system is OTC, if you see a bid/ask you like, contact the counterparty directly on channel or in private message to set up the transaction. Issues to discuss may be: who bears the transaction fees? Who pays first? What escrow agent do we use that is mutually trusted? Remember, this is a direct negotiated transaction - so every detail is negotiable.

The party you wish to contact may be offline. Some alternate methods for making contact include:

  • Leave the person a message with the "later tell" command. E.g.:
;;later tell nanotube i want to buy 500 btc from you at 0.25, as per your outstanding offer.
Note that messages left with later tell are not secured in any way, so you should not say anything private or sensitive in a later tell message.
  • Stick around on channel and wait for the person to join the channel.
  • Send an email to the address that is associated with the party's registered GPG key (list of registered keys).
  • Check the order notes for additional methods of contacting the order placer - people often leave contact details in the order notes.

You could also of course try to find someone else to trade with, by talking on channel and/or putting in your order.

Once your trade is complete, don't forget to remove or update your outstanding open orders.

Command index

  • buy - enter a buy order. See above for syntax.
  • sell - enter a sell order. See above for syntax.
  • view - view your own orders, or supply a username or an order ID to view orders made by username or that particular order by ID.
  • book - supply a currency orders for which you would like to see.
  • refresh - refresh your outstanding orders, or supply an order ID to refresh just that one order. Orders expire in 14 days if you don't refresh them.
  • remove - remove your outstanding orders, or supply an order ID to remove a particular order.
  • calc - Google calculator which can be used to convert currencies. e.g., calc 2.0 USD in EUR

Rating System

To increase safety and reduce counterparty risk, we use the OTC Rating System, also known as the OTC web of trust. See the OTC Rating System page for details.

Safety: avoiding fraud

#bitcoin-otc is merely an aggregator of outstanding supply and demand. All transactions that may occur are conducted directly between counterparties, without any participation or intermediation from #bitcoin-otc. As such, it is each individual's responsibility to conduct due diligence on their counterparties, and otherwise act in a prudent way to avoid falling prey to fraudulent users. Below are some guidelines that you should consider when engaging in OTC transactions.

Risk of fraud

When you trade OTC you engage in a transaction with people you possibly know nothing about. You may send your BTC to the person, and never get anything back. Or you may send your $currency to the person expecting BTC, and get nothing in return. This is a highly undesirable outcome for you, and you should do your best to guard against that. If you do not have a history of previous transactions with this person, or otherwise do not trust your counterparty, there are several mechanisms you can use to mitigate the risk of fraud:

  • Always check that the person is authenticated with the bot, using the ident command, and note the username he's authenticated with.
  • Check the person's trust rating on the OTC web of trust before you deal with him. Ask other highly trusted members about dealing with your potential counterparty. See the OTC Rating System documentation for more details, especially the relying on the ratings section. Explore web of trust to see who rated this person and when.
  • You could choose a trustworthy third party to act as escrow. See the OTC web of trust to help with your selection. With escrow you first send BTC to a trusted escrow party, your trading counterparty sends to you $currency and then you tell the escrow party to release the BTC over to your trading counterparty only when you have received $currency.
  • For a larger transaction, you can split up your trade into smaller chunks. So, e.g., instead of sending all 100 btc at once to your counterparty and then waiting for payment, you could exchange it in chunks of 10 btc, so your maximum possible loss due to fraud is only 10 btc, rather than the whole 100. (But beware of chargebacks, see next section.)
  • When trading with a newcomer who has no ratings yet, it's a good idea to make sure your counterparty is registered with OTC, so that if things go wrong, you can at least have the satisfaction of putting in a negative rating. Verifying the user's ownership of accounts in good standing on other sites, like ebay, amazon, etc., maybe via the gpg protocol, is not a bad idea either.
  • Follow your instinct - if the guy seems shady, don't deal!

Additional warnings, just in case the above was not enough.

Notes on chargebacks

When trading BTC for reversible methods (such as paypal or credit card transactions), beware of chargeback risk. It is strongly recommended to avoid PayPal or credit card transactions with persons of unknown reputation, since even with escrow, your counterparty may chargeback the PayPal funds after receiving the BTC.

One possible way to partially mitigate the chargeback issue with PayPal is to use the "personal" transaction (I like the 'payment owed' type), making sure they come out of PayPal or bank balance (rather than credit card). These transactions cannot be charged back via the usual method (claiming non-delivery of goods by seller), and as a bonus, incur lower fees (0 fee for within-country, and a 0.5-1% fee for international transactions). However, even these transactions may be reversed by PayPal, if your counterparty either uses a stolen PayPal account, or fraudulently claims that his account was stolen and the transaction was unauthorized. So it's best to avoid PayPal when dealing with counterparties with no reputation.

Further, PayPal has stipulated that trading Bitcoin is against their AUP, since they consider Bitcoin a currency, and currency trading is not allowed. There have been a handful of reported chargeback cases, and several high-profile account freezes by PayPal for bitcoin dealing businesses (bitcoinmorpheus, and coinpal). It is thus strongly recommended to avoid using PayPal for bitcoin transactions. You've been warned.

See the payment methods page of the bitcoin wiki for notes on the various payment methods' suitability for P2P bitcoin exchange.


In case of dispute, it is a great idea to have a double-gpg-signed contract prior to the transaction. This way, if any party claims non-receipt of funds to an address, incorrect price, or other issues, you have a gpg-signed contract you can lean on. Of course, this won't help you if you have run into a scammer who is just out to take the money and run, but it will be helpful in case of a legitimate dispute between honest parties.

Some suggested items to include in your contract text (complete list may vary depending on nature of the transaction):

  • Amount of bitcoins involved
  • Amount of other currency/goods involved
  • Price per coin
  • Who bears the transaction fees, both on bitcoin-side and the other side
  • The deadline for completion of contract
  • Bitcoin address for funds receipt
  • Other currency processor address for funds receipt

The procedure for creating a double-signed document is straightforward: first, party 1 clearsigns the document, and sends the text to party 2. Then party 2 verifies the signature, then clearsigns the entire clearsigned document, including all headers, and sends the double-signed document back to party 1. Party 1 verifies the second party's signature, as well as own nested signature inside. Now, both are in possession of a double-signed contract document.

Make sure that the key used by the other party matches the GPG key registered on OTC for the user!

It is strongly recommended that you do this, for all but the most trivially-sized transactions.


It is prohibited to engage in activity that is illegal in your jurisdiction. You must also follow freenode's unlawful activity policy.