DogeDrop
Drop Dogecoin into anything
Start
What do you want to do?
The easiest way to add self-custodial Dogecoin wallets and payments to any website or app.
Pick a path and follow the steps. You can come back and choose another.
Try the button
Connect shares the address with this page. Every payment still asks first.
Looking for the wallet…
Pay with another wallet
No new wallet. The window shows a QR code, the address with a copy button, and a button that opens dogecoin: or dogecoinvm: in the wallet you already use.
Networks in the embed
- 1Add the line before the end of the page.
- 2A wallet button appears for the visitor.
- 3Your site asks. The visitor approves.
Choose one network to add data-chains. The visitor cannot turn the other network back on, and the bridge is hidden.
What the visitor can do
Pay QR only adds data-features="pay". Selected adds the parts you leave on. All leaves this out.
Light or dark
This device follows the visitor on desktop and mobile. data-theme="light" or data-theme="dark" sets one look until they change it.
The wallet sits in the page and can send the connected address and balances. The recovery phrase, password, and keys are not part of those messages. Another site cannot read the frame. This guide is the same site as the wallet, so its scripts can.
Show a payment, no new wallet
The visitor does not create or import a wallet. The window shows a QR code, the address with a copy button, and a button that opens dogecoin: or dogecoinvm: in the wallet they already use.
The address looks the same. The coins are separate. What DogecoinVM is
await doge.showPayment({
recipientAddress: 'dogecoin:D...?amount=5',
label: 'Sticker'
});
dogecoin: pays Dogecoin. dogecoinvm: pays DogecoinVM.
Send a test tip
This sends to DTqAFgNNUgiPEfGmc4HZUkqJ4sz5vADd1n.
A Dogecoin confirmation usually takes 1 to 10 minutes.
Put the files on your site
Load connect.js from your folder. If the script and the wallet files are not in the same place, set data-wallet to the wallet folder.
If the shop page and the wallet share one address, that page can read the wallet. Use a separate address, such as wallet.example.com, when the shop should not read it.
Get the code on GitHubRun the DogecoinVM proxy
The wallet pages are static. A browser cannot call metaldoge.com directly, because that site does not allow it. The program in the metaldoge folder forwards only public lookups and signed payments. Keys never go through it.
- 1Install Node 18 or newer. There are no packages to install.
- 2On the server, open the metaldoge folder and start the proxy. It listens on 127.0.0.1, port 8787.
- 3Put HTTPS in front of it. nginx can pass visits to 127.0.0.1:8787.
- 4Set TRUST_PROXY=1 when nginx is the only program that can reach that port, so each visitor is counted on their own.
- 5Set ALLOWED_ORIGINS to your website address. The proxy answers only those sites.
cd metaldoge node server.mjs
On Windows, set TRUST_PROXY=1 in the terminal, then run node server.mjs.
ALLOWED_ORIGINS=https://example.com TRUST_PROXY=1 node server.mjs
It forwards only chain info, an address lookup, a transaction lookup, and a signed payment. Every other path is refused.
In the wallet Settings, choose Custom for DogecoinVM and enter the https address of your proxy.