How to move assets (tokens) from and to my wallet at


Although every Counterparty address is also a Bitcoin address, you cannot send XCP or a Counterparty asset to a bitcoin address and expect the exchange to be able to recognize what it is and vice versa. Let’s go through some scenarios.

Scenario 1: You send XCP or a Counterparty asset to a bitcoin address that your exchange gave you for BTC. XCP (or other Counterparty asset) will not be recognized by their system. They may be able to do something about it, but it’s far from guaranteed. In any case, you’re at the mercy of the exchange’s helpdesk and there’s no “undo” or anything that can be done from your side.

Scenario 2: You send BTC to a bitcoin address that your exchange assigned to you for funding your XCP or some Counterparty asset account. Just as in Scenario 1 above, you will definitively need help from the exchange to get your BTC back.

Scenario 3: You mistakenly send MSC (Mastercoin) or a Mastercoin asset to your Counterparty address. As it is a Bitcoin 2.0 coin the Counterparty protocol does not understand, you will not be able to use it. (See Can I recover my an asset that I mistakenly sent to a Bitcoin-only wallet?)

In conclusion:

  • A Counterwallet address can send, receive and use BTC, XCP and any Counterparty-issued asset. When you send any such asset to your Counterwallet wallet, any of your wallet addresses can be used (in fact, you can create several addresses in a wallet and use each for transfers from/to particular exchange and so on).
  • Crypto-exchanges normally have different funding addresses for BTC, XCP and each individual Counterparty asset. So if you opened your crypto-exchange account by depositing some BTC (from Counterwallet or elsewhere) you would have a BTC bitcoin address, then if you bought XCP you’d have another bitcoin address (for XCP) and so on. You must not assume that exchanges are as flexible as Counterwallet.

Please visually inspect your transfers (source, destination, type, quantity) before you make them. Make sure that the address you’re pasting is the address you think you are pasting.

Counterparty not only cannot undo any transaction, but we also do not have access to anyone’s wallet (including Counterwallet addresses).

Since v9.55 Counterparty supports P2SH (e.g. 37ZQ…) addresses.

Withdrawing your asset to Counterwallet (Withdraw from Crypto-exchange)

These instructions are not intended to replace the official instructions of any crypto-exchange.

  1. If you don’t already have a wallet at, create one.

Make sure you write down your pass phrase on a piece of paper you won’t lose and which only you have access to!
There is no passphrase/password recovery or reset with Counterwallet. Browse this site for additional info on security and pass phrases.

In a single wallet you can create additional addresses (if you don’t want to have all your holdings in one address. You can also do that later and send your asset from one address to another (small sending charges that go to bitcoin miners apply).

As mentioned above, you do not need to create a separate address for each Counterparty asset, XCP and BTC - you can, but it’s not necessary. Although the address by default shows just BTC and XCP, it is okay to also send any Counteparty asset to that address. (The reason only BTC and XCP are shown even if their balance is zero is because most people have these two assets/tokens).

  1. Buy your token for BTC at one of crypto-exchanges it is available at.
    Counterparty does not recommend any particular exchange. Please check with your asset issuer and verify at and beware of fake coins.

  2. In Exchange GUI go to somethigg like Account / Balances / Withdraw, pick the asset and amount you want to withdraw and enter your Counterparty wallet address (do not enter the address from the screenshot).

  3. Be patient and use (see the URL below) or other method to watch progress of your transaction. Your asset cannot arrive to your address before it is actually sent from the exchange and that can take up to several hours.

Sending your asset to Exchange (Deposit to Crypto-exchange)

These instructions are not intended to replace the official instructions of any crypto-exchange.

  1. Log on to your Exchange and verify the correct address for Deposit to your account for the token (asset) you are sending. If you do not already own that asset, you may need to click on a Generate New Address button to create one.

  2. In Counterwallet, send your asset to your Deposit address at the exchange. You will need a small amount of bitcoin (0.0001) to pay the bitcoin miners for the transaction.

  3. Be patient and use use (see the URL below) or other method to watch progress of your transaction. If you see that the asset/token was sent in the correct amount and to the correct address, then any other inquiry should be directed at the Exchange.


Note: Counterparty does not recommend any particular asset - please do your own diligence and never buy more than you can afford to lose. For additional information please refer to terms of use in Counterwallet and at (at the very bottom of the home page).

Deposit address: in top left corner you can see a bitcoin address specifically provided for one of many assets. This is where you would send that particular Counterparty asset if you wanted to transfer it to an exchange for trading or other reason. As explained at the very top of this page, a deposit address for one asset (e.g. SJCX) cannot be used for funding your BTC or XCP or other balance.

Withdraw address: it is one of addresses from your own Counterwallet (do not enter the address from the screenshot). You would copy it from your wallet and paste it to the address field at the exchange.

I am trying to use the API and the public development server to send tokens between my two addresses created in Counterwallet with curl command:
curl -X POST --user rpc:1234 -H ‘Content-Type: application/json; charset=UTF-8’ -H ‘Accept: application/json, text/javascript’ --data-binary ‘{ “jsonrpc”: “2.0”, “id”: 0, “method”: “create_send”, “params”: { “source”: “1Aih5HX8R2wrygQCqYKhpToUcCRAaRxzYK”, “destination”: “1G71597Y9aTereDS9JPw3xvMkE6eymsX5d”, “asset”: “A4293925085369703000”, “quantity”: 10000000000 } }’
The response I get is:
{“jsonrpc”: “2.0”, “id”: 0, “result”: “01000000017bf24722e668f4a24cc747f5d171a7c229e58f2673f2272598ccd1f7705c1cbf020000001976a9146a9ba373118f844f96b8807e46967ce28a6eb50388acffffffff0336150000000000001976a914a5ac712e1f9a18ad9c5b7aad1b074440b291ef5988ac00000000000000001e6a1c9bbf4ca4a4831d78d373bf9b154f2453b6f62af7e7fc029e1125f9ddf4bf0000000000001976a9146a9ba373118f844f96b8807e46967ce28a6eb50388ac00000000”}
And it doesn’t seem to transfer the tokens at all. Can you tell me where did I do wrong?

See - you get an un-signed raw tx.
You need to sign it, and then you can broadcast.

Update: There’s a how-to for create_send now.