Merchant - Create Escrow Address - Initiate Transaction

Share this 2crow code with your customer and save this private key.

Customer - Begin a Purchase

Send payment to this address, share this address and 2crow code with merchant, and save this private key.

Merchant - Prepare Transaction for Finalizing

Send this code to the customer so they can finalize.

Customer - Finalize Transaction

Broadcast this transaction (or send it to the Merchant to broadcast).

Sign buyers transaction

Use this to initiate a refund if the funds are still in escrow. If the funds are moved out of escrow already, refunds can be handled with direct transactions. Merchant enters here the 2crow code and their escrow private key.

Merchants transaction broadcast

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.

Address Generator

If you need a new bitcoin address keypair, use this form. Click "Generate" and a private key and bitcoin address will be generated which could be used by the merchant or customer when needed.

New keypair will appear in the textarea.

How It Works

Please take a look at the readme. This site is completely client side, it will also run on an offline computer.

An escrow account is created that is controlled by both the buyer and the seller. The merchant is unable to spend the funds until the customer finalizes the transaction. 2Crow contributors and creators have zero control and zero liability for your use of this service.

This project is currently 100% donation supported. Please support it at 12crowDGkeHRaeiJES3PaZgsP9LQc4duwY

Instructions - Step 1

A Merchant should use this tab to generate a 2Crow address that customers can use to initiate a purchase. Input the total amount you wish the customer to put in escrow (price + deposit if any). When you press submit, a code will be generated which you can place on your website or send to your customer. Important: don't lose the private given to you for this step until the entire transaction is complete or the funds will be lost. The private key should be kept private and used in step 3.

Advanced: The code that is generated is just the string "2crow_1_" plus the public key corresponding the the private key which will be 1 of the 2 keys controlling the escrow. You could also generate this yourself from a web app for example.

Customer - Step 2

A customer should start here to begin a purchase. Enter the merchant's 2crow code in the first field, it should begin "2crow_1_...". When you press submit, an escrow address will be created. You can now fund this address which begins with a 3. You need to send this address as well as the 2crow code to the merchant to prove you have added funds to the escrow. Important: don't lose or share the private key generated in this step until step 4 when the entire transaction is finalized!

Advanced: If a deposit is involved in this transaction, you will also need to send the merchant an address where you want the deposit returned. The 2crow code generated here is the string "2crow_2_" plus the scriptsig which validates the 2 of 2 multisignature address.

Merchant - Step 3

At this point as the merchant you should have received the escrow address and verified that it is funded using a block explorer. You can now ship the goods, seeing that the customer has committed funds. Now you need to say where you want the money to wind up. Paste the TX ID which funded the escrow address in field 1 (you can find it in any block explorer). Place the 2crow step 2 code received from the customer in the second field. Place your private key for the escrow from step 1 in the third field.

Now you need to select the outputs for this transaction. Place your final receiving bitcoin address in the fourth field. In the fifth field, put the amount you wish to receive. If the customer needs a deposit returned, enter the customer's bitcoin address and the amount in the next fields. Any funds in escrow not accounted for here will be given to the miners fee. Make sure this fee is appropriate! After pressing submit, send the resulting code to the customer, either with the goods or separately, so they can finalize the transaction.

Advanced: A hex transaction is generated here to move the funds, and one of the two required signatures added. If you wish to verify the hex transaction you can decode it independently by testing with step 4 here pretending to be the customer). If you wish to do something more complex like move funds to three or more addresses, you can create your own raw transaction and substitute it in this step, following the string "2crow_3".

Customer - Step 4

Here you finalize the transaction and release the funds to the merchant, and any deposit back to yourself. In the first field place the 2crow code sent by the merchant containing the transaction. It should begin with 2crow_3_... In the second field place your private escrow key from step 2. A signed raw transaction will appear below. The details of the transaction appear below as well so you can confirm them before publishing. Important: you need to publish this transaction to the network. Copy it and paste it into a broadcast or push service such as,, or a running full node.

Frequently Asked Questions

1) Does this site save any information? No

2) What happens if the merchant never ships the goods? See failure modes documentation in readme

3) What happens if the customer never finalizes? See failure modes documentation

4) Can you help me with this? Probably. See documentation and forums.


A funkenstein the dwarf production. Operated by Vermont Secure Computing. Layout and user interface by the team of Stuff0577. This project relies on the coinjs javascript implementation, outkast, 1ninja, and the team. See source javascript files for more information. Please submit your improvements to Contact funkenstein at woodcoin dot org for other inquiries.

2Crow is a 2 party escrow system enabling escrowed bitcoin transactions by using a temporary 2 of 2 multisig address.