Allows your users to enter market orders and exchange cryptocurrencies.

crypto exchange for WordPress

With this plugin extension to Bitcoin and Altcoin Wallets for WordPress, you can set up a full cryptocurrency exchange. The extension includes a FIFO matching engine and shortcodes/widgets to display candlestick charts, the order-book, order histories, etc. You can set up markets by choosing trading pairs between currencies that you have installed coin adapters for. The Exchange extension is particularly suitable for setting up small exchanges that carry lesser-known altcoins.

important disclaimers

  • There are no guarantees that the extension can scale to the trading volumes of the big exchanges. The aim is to enable small website owners to provide exchange functionality, with minimal effort, on top of WordPress. Your exchange’s ability to scale will likely depend on a number of factors, including the maximum size of your DB and other server characteristics.
  • IANAL: It is your responsibility to make sure that it is legal for you to run an exchange. This plugin only offers the technical functionality, not legal advice.
  • The only liquidity available on your exchange is that which is created when you and your users place orders. If your order book does not have any buy/sell orders, there is no price. The price is determined via supply and demand. This is economics 101. You have been warned.


  • market orderbooks and FIFO matching engine
  • market orders and limit orders
  • create unlimited amount of markets by specifying currency pairs
  • can trade all cryptocurrencies that have a coin adapter
  • display candlestick chart for markets
  • display near-live data on front-end by polling the JSON trading API
  • front-end UIs available as shortcodes or widgets
  • markets can be enabled/disabled
  • can set minimum and maximum trade limits specified in BTC
  • trading usable over a JSON API with user-assigned API keys
  • trading usable over a PHP API with WordPress actions/filters
  • DDOS protection by rate-limiting the trading API keys and caching

installation and usage

For a more in-depth how-to guide on installation, please see here.

  1. Install the Bitcoin and Altcoin Wallets plugin by following the installation instructions.
  2. Install coin adapters for all the coins that you wish to let users trade between.
  3. Install and activate this Exchange extension if you have not already done so.
  4. In your admin interface, navigate to WalletsExchange.
  5. Under the Exchange tab, choose appropriate values for minimum trade amounts, and maker and taker fees.
  6. Under the Markets tab, create a currency pair for each market that you wish to support. Make sure that you set your markets to Enabled, or the markets will not be available.
  7. Under the Exchange page tab, you will find two ways to quickly create a WordPress page with the necessary trading shortcodes. You may need to edit the default page suggestion to make it suitable to your site. You may also break the shortcodes in multiple pages or use the provided UIs as widgets if you prefer.
  8. To make sure that you are receiving updates for this plugin extension and for all the premium dashed-slug plugins that you have installed, you will need to activate your installation. After registering at you will have received an activation code in your e-mail. This code is also available to you when you log in to Follow the instructions given here.
  9. You are advised to install additional plugins for: CAPTCHA login, Google auth login, security, caching, etc.


You must be a premium dashed-slug member to gain access to this plugin. Paid membership gives you access to all the current and future premium plugins on the site, and to updates of those plugins.

The bundle download includes the plugin plus all documentation. If you only need the plugin in its installable zip form, get the plugin download.


If you need the documentation, get the bundle download.


The bundle download includes the documentation in PDF form.

Consult the PDF document to learn more about:

  • available shortcodes/widgets
  • modifying the front-end texts
  • localizing the extension to another language
  • hooking to front-end JavaScript events
  • troubleshooting common problems
  • glossary of terms relevant to this exchange


The bundle download also includes PHPdoc documentation for the extension’s PHP API. The PHP API is a set of WordPress filters that you can use to control the exchange programmatically from PHP code. Open the api-phpdoc/index.html file to view this document in your browser.


Can the Exchange extension work with all the available coin adapters?

Yes! All the app extensions are compatible with all the coin adapters. This includes the combination of the Exchange extension and the CoinPayments adapter.

Can I create crypto/fiat markets with this extension?

You can use this extension together with the Fiat Coin Adapter extension. This will allow you to construct trading pairs involving fiat currencies, and to manually insert fiat currency deposits.

How can I implement KYC verification?

A good way to implement Know-Your-Customer procedures is to use the Token of Trust plugin. The plugin can assign different WordPress user roles to users according to whether they are verified.

First, set up the Token of Trust plugin. Then, go to the WalletsCapabilities menu, to control which user role can do what. For example, you can control which user role has the withdraw_funds_from_wallet capability, or the trade_funds_in_wallet capability.

Can I restrict some markets so that users can only buy or only sell a token?

You can implement any kind of complex logic by hooking to the wallets_api_limit_order PHP API with high priority. See an example:

Why is the maximum suggested buy amount not entirely accurate?

In markets that have different Maker and Taker fees, the actual amount that can be bought depends on what portion of the buy order will match existing orders. This depends on the exact current state of the order book. To simplify calculations, the plugin displays the amount that would be available in the worst-case scenario: if the entire order was executed with taker fees. If you expect that your limit order will be entered into the orderbook as a market maker order, you can specify a slightly higher buy amount. However, if your order matches existing orders, it might not be accepted.

What is the relation between the Exchange rates admin menu and this Exchange app extension?

None whatsoever. The parent plugin, Bitcoin and Altcoin Wallets, can use external APIs to keep track of exchange rates between some cryptocurrencies. It does this to enable conversions of value to payment gateways such as the WooCommerce Cryptocurrency Payment Gateway extension and the Event Manager Cryptocurrency Payment Gateway extension. These exchange rates come from other exchanges on the Internet. This app extension allows you to create your own markets, and the exchange rates for those markets are derived from the orderbook in your database, as it is created by your users entering buy and sell orders.

Is it possible to use/import the liquidity of other exchanges into my Exchange?

No, this is not possible.


The [wallets_exchange_chart] shortcode does not display a chart.

The chart is expected to be empty when you first install the plugin. Candlesticks only represent executed orders. Unless there are executed orders between different users, the only thing visible will be the chart’s axes. As users perform trades on your site, the chart will gradually fill up with candlesticks, first on the short timeframes and later on the longer timeframes.

The frontend UIs appear greyed-out (opacity 50%).

When the UIs are first loaded, they are greyed out. Then, after all the data is loaded from the JSON API, the UIs will turn to opacity 100%.

If some JSON API call fails then not all the necessary data will be loaded. To check which call failed, open your browser’s console under the Network tab and filter requests by XHR. Reload the page (F5) and see which requests failed. If this problem persists (happens more than once), you should contact support to report it.

Some orders do not disappear from the list of open orders after being filled or cancelled.

Normally the plugin caches some API responses using transients. If you are using an object cache on your server, it is possible that this cache is not configured correctly and therefore the cached results are not being invalidated as they should. A solution is to go to WalletsExchangeJSON API and set Seconds to memoize market API calls to 0.


For any issues, inquiries, suggestions, and general feedback regarding this premium app extension, visit the support area.

For support regarding the parent plugin, Bitcoin and Altcoin Wallets, please use the support forums on

“Be the exchange you want to see on the web.” — dashed-slug

Exchange extension

Updated on 2020-09-30T06:56:42+00:00, by alexg.