Custodial cryptocurrency wallets.
Bitcoin and Altcoin Wallets is a FREE WordPress plugin by dashed-slug.
Your users can deposit, withdraw and transfer Bitcoins and other cryptocurrencies on your site.
You can extend this plugin to work with other coins if you install wallet adapters.
There is a built-in wallet adapter that lets you connect with Bitcoin core and similar wallets, such as: Dogecoin core, Bitcoin ABC (Bitcoin Cash wallet), Litecoin core, etc. Any wallet that uses the Bitcoin core RPC API is compatible.
The following wallet adapters are available for free to all dashed-slug subscribers.
You do not have to pay for membership to get the wallet adapters.
Premium dashed-slug members get unlimited access to download all the premium extensions:
Premium members get auto-updates for any installed extensions. See how to set up auto-updates.
Find the dashed-slug on the web:
This is a free plugin built by the dashed-slug team!
1DaShEDyeAwEc4snWq14hz5EBQXeHrVBxy
LdaShEdER2UuhMPvv33ttDPu89mVgu4Arf
DASHEDj9RrTzQoJvP3WC48cFzUerKcYxHc
To get started, install the plugin and follow the on-screen installation wizzard.
You can also consult the documentation. In the WordPress admin screens, see Wallets Admin Docs → wallets → Installation instructions.
By using this free plugin, you accept all responsibility for storing and handling user funds.
Under no circumstances is dashed-slug.net or any of its affiliates responsible for any damages incurred by the use of this plugin.
By continuing to use the Bitcoin and Altcoin Wallets plugin, you indicate that you have understood and agreed to this disclaimer.
[wallets_deposit] - Users can view their deposit addresses, create new addresses, and associate them with a label.
[wallets_move] - Users can transfer funds to other users on the system, off-chain. Whether they pay fees to your site is up to you.
[wallets_withdraw] - Users can request to withdraw funds to an external wallet.
[wallets_balance] - Users can view their balances, either one-by-one, or as a list. Equivalent amounts can be shown in USD, EUR, BTC or other currencies that you choose.
[wallets_transactions] - Users can view paginated details on their past transactions. You can choose which columns are rendered and in what order.
Wallets post type - Easily manage your various wallet backends via the Wallet post type.
Wallet post type - The wallet post type encapsulates all connection settings with your wallet's API and displays wallet status.
Currency post type - Associate the currencies you want to offer with your wallets, using the Currecy post type. Easily edit settings related to each currency. Group currencies together using a special Currency Tags taxonomy.
Address post type - Keep track of deposit and withdrawal addresses. Easily edit address details, or list transactions associated with addresses. Group addresses together using a special Address Tags taxonomy.
Transaction post type - Easily edit transaction details or create new transactions. Group transactions together using a special Transaction Tags taxonomy.
Capabilities settings - Since version 6.0.0, all settings are neatly organized into tabs, both for the plugin and for its premium extensions.
Since version 6.0.0
, the plugin displays its own documentation in the admin screens. Just go to the Wallets Admin Docs menu, where you’ll find the documentation for the plugin, and for any plugin extensions you have installed.
Developers can study the PHPdocumentor pages at: https://wallets-phpdoc.dashed-slug.net/
When users issue transactions, these can require verification via an email link by the user. Additionally, you can require that an admin also verifies each transaction. (See “Confirmations” in the documentation).
Of course, the plugin is only as secure as your WordPress installation is.
You should take extra time to secure your WordPress installation, because it will have access to your hot wallets. At a minimum you should do the following:
ssh
or stunnel
. See here.Some more ideas:
– Add a user auditing tool such as Simple History.
– Add a CAPTCHA plugin to your login pages.
– Only keep up to a small percentage of the funds in your hot wallet (See Cold Storage in the documentation).
This will depend on the Linux distribution on your server.
To setup bitcoin core as a service on systemd I used this guide.
Here is my /etc/systemd/system/bitcoin.service
file:
[Unit] Description=Bitcoin wallet service After=network.target StartLimitBurst=5 StartLimitIntervalSec=10 [Service] Type=simple Restart=always RestartSec=1 User=alexg ExecStart=/usr/local/bin/bitcoind [Install] WantedBy=multi-user.target
You will need to edit the user name to match yours, and possibly the path to your bitcoind binary.
Follow the article to set the service to run automatically on system restart. You should never have to enter the bitcoin command directly in the shell. Always let the system start it automatically as a service.
After that, you must check with your hosting provider (the provider who supplies the server for your bitcoin daemon) to see if there are any firewalls, blocking incoming communication with TCP port 8332
. Also check any local firewalls that you may be running, such as ufw
.
Yes, simply assign the has_wallets
capability to the appropriate users or user roles. You should also assign more capabilities, such as list_wallet_transactions
, send_funds_to_user
, and withdraw_funds_from_wallet
.
You can control the capabilities per user role by navigating to: Settings → Bitcoin and Altcoin Wallets → Capabilities.
Yes, you can use the premium Airdrop extension to perform recurring airdrops. These can effectively be paid out in the form of an interest on the user’s wallet.
Yes, you can use the premium WooCommerce Cryptocurrency Payment Gateway extension. With it, users can use their on-site balance to checkout their shopping carts.
Yes, you can use the premium Faucet extension to let users earn crypto by solving CAPTCHAs.
Yes, you can use the premium Exchange extension to create market pairs. However the markets are local only, which means that no liquidity is imported from other exchanges. Read the disclaimers.
No, this plugin is not suitable for token sales.
However, you could, of course, setup markets using the Exchange extension, and set a large limit sell order with your admin account. This will allow users to buy your shillcoin. You can even disable buying or selling separately.
Yes, you can use the premium Tip the author extension. This lets you attach a tipping UI to posts/articles. You can control where the tipping UI is shown, by post type, category, tags, or even author. Only authors with the receive_tip
capability can receive tips, and only users with the tip_the_author
capability can send tips.
Not yet. However, a premium extension to let you do just that is currently in development.
The plugin and its extensions are yours to edit. You are free to hack them as much as you like. However, you are generally discouraged from doing so, for the following reasons:
I cannot provide support to modified versions of the plugin. Editing the code can have unintended consequences.
If you do any modifications to the code, any subsequent update will overwrite your changes. Therefore, it is not recommended to simply fire away your favorite editor and hack away themes or plugins.
Whenever possible, use an existing hook (action or filter) to modify the behavior of the plugin. Then, add your code to a child theme, or in separate plugin file. Any PHP file with the right headers is a valid plugin file.
If you can’t find a hook that allows you to do the modifications you need, contact me to discuss about your need. I may be able to add a hook to the next patch of the plugin.
This is usually due to the plugin’s CSS rules hiding your own rules. Don’t just spam !important
, instead take the time to study CSS rule specificity. If you are unsure how to apply a particular rule on the plugin’s UIs, you can contact me.
There are several ways to do this, depending on what type of change you want to apply. Please check the documentation under Frontend and Shortcodes → Modifying the UI appearance.
There are two ways to do this:
You can create DSWallets\Transaction
objects, populate all the fields, then save the obects to the DB. For details, check the documentation under: Developer reference → Working with custom post type objects, and the PHPDocumentor page for the Transaction class for example code.
You can use the Legacy PHP-API. This is compatible with previous versions of the plugin.
There are two ways to do this:
It is possible that, for a particular cryptocurrency you may want to replace the wallet backing it with another wallet. For example, you may be offering Bitcoin via the CoinPayments service, and want to start using a Bitcoin core full node wallet. Or you may be using Bitcoin core, and you want to move to a new wallet.dat
file.
This has become a lot easier with versions 6.0.0
and later, because Currencies and Wallets are now decoupled:
If unsure about this process, please contact me.
How it works depends on whether the plugin (and its extensions) are network-activated or not. In network-activated setups, users have one balance ber currency, across all sites the network. If the plugin is NOT network-activated, users have a different balance on each site on the network, and each site can have different currencies and wallets.
Note that the plugin and its extensions MUST either all be network activated, OR all must be activated on individual blogs. Do not mix-and-match network-activated and non-network-activated wallets plugins.
Consult the documentation section Multisite for more information.
While the latest WordPress version is often secure, the same cannot be said about all the WordPress plugins out there. Every day new security vulnerabilities are found involving WordPress plugins. Since WordPress is such a popular software platform, it gets a lot of attention from hackers.
Take an immediate backup of the site, and the server it runs on, if possible. This will preserve any traces that the hackers may have left behind. Funds theft is a crime and you can report it to the police, just like any other hack.
It’s best if you are prepared beforehand: Keep the software on the site updated regularly. Take the time to harden your server and WordPress installation. Try to use only reputable plugins on your site and keep them updated. Use a security plugin.
Finally, only keep a small percentage of the user balances on the hot wallet, utilizing the Cold storage feature to transfer the remaining funds to offline wallets. That way, in case WordPress is compromised, you don’t lose all your users’ funds! Please take wallet management seriously. There is no software that will automatically do opsec for you. Have a plan on how to act in case of theft.
If you think you have discovered a security vulnerability in this plugin, please let me know over email (not on a public forum).
Paying members can download the available App extensions and can download updates to those extensions.
Study the available Membership plans
The site accepts Bitcoin and Ethereum. Please deposit the correct amount to your account, then choose a subscription.
Since 1 November 2022,
membership is implemented using the plugin itself. The downloads are protected behind a paywall
using the Paywall extension.
Previously the site accepted PayPal recurring payments. If you have already signed up using PayPal, you can continue to use it to pay for membership. New PayPal accounts are no longer available.
If you wish to pay via a different method, contact me by email.
You can send a PayPal payment to my business email address and let me know. I will then activate your membership manually, within 1 business day.
If you have paid for an EU business plan, you must provide a valid VATIN. Please enter the VATIN without the country code prefix, and enter the correct City and Country for your business, in your profile details.
If you have paid for a regular plan, and for some reason you still cannot download the premium plugins, please contact me by email.
If you have signed up with a PayPal recurring payment, you can go to your PayPal dashboard to cancel the recurring payment.
Additionally, if you wish, you may delete your account from the profile screen on the dashed-slug website. Deleting your account does not automatically cancel your PayPal subscription. Simply visit your profile
If you have paid via cryptocurrencies, there is no need to cancel. You can delete your account if you want, by visiting your profile. There is usually no need to do so.
You can ask for a refund of any payment within 30 days from the day of payment, no questions asked. Please contact me by email.
Unfortunately I am not available for custom development work.
I do not undertake installations. I remain available to assist and answer any questions about the installation and configuration process.
Regarding plugin installations, please consider this: Unless you know how the plugin works, you will not be able to provide support to your users, or fix issues when these arise. If you are not a developer, you should probably hire a developer to perform the installation and maintenance.
You can always suggest a feature to me. If it makes sense and I have the time, I might implement it. I do not make promises on this, therefore I do not accept payment for features.
First check the Troubleshooting section of the documentation. The answer to your question may be listed there.
If you cannot find the answer to your question, please consult the documentation under Contact Support.
I speak daily with many people, while I also do the development, testing, management, marketing, and everything else.
For this reason, I am NOT reachable over chat apps.
Please state your request on the forums or over email, and I will respond within 24 hours, Monday to Friday. If you are encountering an error, please show me the error message in a screenshot. Try to explain what you did so far and how you arrived at the error.
DSWallets\Transaction
objects now correctly load the timestamp field from the DB.has_wallets
capability correctly is now fixed.[wallets_deposit]
and [wallets_withdraw]
shortcodes, for the upcoming Taproot Assets adapter.6.2.0
where wallets were prevented from being enabled/disabled, now fixed.6.2.0
where the wallet admin screen would crash on new installations is now fixed.manage_wallets
capability to the admin user.walletnotify
and blocknotify
WP-REST API endpoints associated with Bitcoin core and similar wallets now returns uniform error messages. The HTTP status is not always 200, but reflects the error that was encountered. The value of the returned status
field is no longer success/error but is the HTTP response code, which is 200 when the call was successful.wallets_tags_exclude_min_withdraw
allows a currency’s minimum withdrawal amount to not apply to transactions with the specified tags. This will allow the upcoming lnd extension to bypass this restriction for Layer2 transactions.6.1.4
, was buggy and is now fixed.[wallets_fiat_withdraw]
does not submit withdrawal requests with invalid amount.[wallets_fiat_withdraw]
now accepts atttributes: currency_id
, symbol
to specify the default currency./users/U/currencies/C
for retrieving a single currency C
and the balances of user U
for that currency.[wallets_withdraw]
UI now uses a getUserMedia()
call to determine if a camera is available to scan QR-Codes. Previous method using CSS media queries was not optimal.moment.js
is now upgraded to version 2.29.4
.currency_id
attribute on the [wallets_deposit]
shortcode now works again.user_login
and it autocompletes with AJAX.archived
tag will not be shown in the REST API and frontend. This will be useful for the Lightning adapter later, among other things.wallets_withdrawal_pre_check
and with filter wallets_withdrawals_pre_check
.[wallets_account_value]
shortcode without any enabled “VS currencies”, the account value is now shown as ‘?’ and not ‘Undefined ?’.DSWallets
namespace.wallets_api_adapters
filter is removed, since there are no more Coin Adapters.[wallets_status]
informes users if a wallet is online.