window.dogesoft
Sending DOGE & DRC-20 Coins
Send DOGE and DRC-20 Coins directly from the injected provider, with the user approving every send.
Every method below opens the wallet's own confirmation UI — your page never sees a private key, and the user always gets a chance to review amount, recipient and fee before anything broadcasts.
One surface, two hosts. sendDoge(),
sendDrc20() and sendInscription() work
in both the browser extension and the Doge Soft mobile app's browser. Each opens the wallet's own
confirmation screen, so approval is always the user's.
Send DOGE
The wallet handles fee rate estimation, UTXO selection and change — you just describe the intent.
const { txid } = await dogesoft.sendDoge({
to: "D8p...recipient",
amount: 4.2, // DOGE, not koinu
feeTier: "normal", // optional — "slow" | "normal" | "fast"
feeRate: undefined // optional — koinu per vbyte, overrides feeTier
});
Fee tiers for plain DOGE sends: slow 0.01 DOGE/kB,
normal 0.1 DOGE/kB (the default) and fast
1 DOGE/kB. A feeRate is clamped to 1,000–300,000 koinu/vB
(0.01–3 DOGE/kB), so a too-low rate can't leave the transaction stuck and a too-high one can't drain the wallet.
The approval window shows the exact network fee and total before the user signs, and the wallet never
signs a higher fee than the one approved. DRC-20 and inscription transfers always use 1 DOGE/kB.
Currently honored by the Chrome extension; the mobile app still sends at 1 DOGE/kB.
Send DRC-20 Coins
sendDrc20() creates the DRC-20 transfer inscription and delivers it to the
recipient (commit → reveal → move, described on the send
pipeline page). Pass tick, amount
(a decimal string) and to. The call resolves when the user has confirmed
and the send is submitted. In the extension the result includes the move txid;
the mobile app resolves { ok: true }. Don't depend on a txid here: confirm
delivery with the Explorer API.
await dogesoft.sendDrc20({
tick: "WOOF",
amount: "1000",
to: "D8p...recipient"
});
Sending a single one-of-a-kind inscription (a Doginal) uses a separate call,
sendInscription(), keyed by inscription ID rather than tick and amount.
The wallet must currently hold that inscription, and it refuses outputs that carry DRC-20 balance
(use sendDrc20() for those):
await dogesoft.sendInscription({
inscriptionId: "a1b2...i0",
to: "D8p...recipient"
});
Sending DRC-20 Coins to many recipients in one batch is currently a wallet-app-only feature —
it isn't exposed on window.dogesoft for third-party integrations. See
the batch send section for how it works and
its current status.