dvmkitdocs

Funding

Put money in your agent's wallet from wherever you start, whether that is an exchange account, a Lightning wallet, dollars on another chain, or nothing yet.

Your agent pays for jobs from a small wallet on your own machine, and this page is about getting money into it. Before picking a route, settle three things: whether the balance should stay in dollars or can be a small amount of Bitcoin, whether you care that a company could freeze the money or watch the payments, and whether you want to top up yourself or let the wallet refill under a cap you set. If you already use a crypto exchange, funding is usually one small withdrawal. If you don't, opening an exchange account is normally the simplest way in, and every legitimate way of turning regular money into any of this includes an identity check. Start with $1 when that covers the work you plan to run. If it does not, use the quoted cost to choose a larger amount.

Wallets covers what each route means once you are on it: custody, backups, and how money comes back out. This page is for choosing a route and moving the first money in.

The exact deposit address, token contract, and network for your machine come from dvm wallet setup and the connect commands, and their output wins over anything written here. This page covers what those commands cannot tell you: which route fits, and how to move money from where it currently sits.

How much to start with

Start with $1 when it covers the work you plan to run. Check with dvm quote before money moves: if it names a price or ceiling above $1, choose a larger top-up from that live figure instead. A quote of $0.005 makes the arithmetic concrete: $1 covers about 200 jobs at that price. The quote is the current number; the example is not a permanent price for any DVM.

Cashu has one more constraint: each mint sets its own per-call funding range. Run dvm wallet mint-health and read mint_amount_bounds.min_sats; null means that mint advertises no minimum. dvm wallet fund without --mint refuses an amount below every available configured mint's floor before it opens a Lightning quote. An explicit --mint is different: it emits mint_bounds_warning and attempts the named mint anyway. Use the live field rather than copying a number from this page.

Three questions before any route

Answer these in plain words before any account gets opened or any address gets funded. An agent helping you fund should ask them first.

Dollars, or Bitcoin?

If the balance should stay a fixed number of dollars, use one of the two dollar routes: USDC.e on the Tempo network, or native USDC on Base. Both are stablecoins, dollar tokens redeemable one-for-one with their issuer, and neither path involves Bitcoin at any step.

If a small Bitcoin balance is fine, the Lightning routes open: a Lightning wallet, whether one you already use or one you set up for this, can keep your agent topped up on its own. At pocket-money scale the drift in dollar value is cents. Bitcoin is also the only money here whose value does not depend on an issuer honouring redemptions; at these amounts, picking it is a matter of principle more than price.

Does it matter who can freeze it, and who can see it?

Decide this consciously: the two kinds of money behave differently here.

A dollar stablecoin is an IOU from its issuer. The issuer can freeze addresses at the token contract, and Tempo and Base are both public ledgers, so anyone who knows your address can read your agent's payment history.

Bitcoin has no issuer and no freeze switch. Its ledger is public too, but Lightning payments settle off it: paying a provider leaves nothing on the chain for a stranger to look up. Two caveats. A custodial Lightning wallet puts a company back in a position to freeze your account, so the property fully holds only with a self-custodial one. And ecash, the most private option, hands custody of the underlying Bitcoin to a mint; the ecash section spells out that trade.

If this matters to you, fund over Lightning, prefer self-custody, and read the Cashu route below. If it does not, the other two questions decide.

Top up by hand, or let it refill?

A one-off top-up works on every route: money lands in the wallet, the agent spends it down, you top up again when you choose.

Standing replenishment is what the Lightning float is for. You connect a Lightning wallet over NWC and the agent refills itself from it without waking you. The connection policy lives in the Lightning wallet, not on the agent's machine: when you create the connection you give it a budget, say $20 a month, renewing, and the wallet refuses payments outside it. Your agent cannot raise a limit it cannot reach. dvm checks each invoice principal against its own local budget too, but NIP-47 cannot attach a per-payment routing-fee maximum or establish whether the wallet policy includes fees; the wallet chooses the route and fee. The float section covers what the float pays for and which wallets enforce budgets properly.

The dollar routes sit in between: your agent can refill prepaid balances from the stablecoin wallet it holds, but refilling that wallet is still a withdrawal you make yourself.

Which route to take

No route is the default, and dvm wallet setup presents all four. Given your answers, the guidance is:

  • You want standing replenishment: connect a Lightning wallet as the float. It can be one you run yourself or a hosted one like Coinos; hosted means custodial, so keep it to pocket money. Which wallet works has the requirements.
  • You believe in permissionless, censorship-resistant, self-sovereign, privacy-preserving, debasement-proof money: use Bitcoin, which here means the Lightning routes. The float is the everyday form; Cashu adds payment privacy on top of it.
  • You want dollars and can get USDC.e onto the Tempo network, directly or over a bridge: use Tempo. It offers the better exit path of the two dollar routes, because every fee, including the fee on pulling your money back out, is paid in the same dollar token.
  • You want dollars and your exchange withdraws native USDC to Base: use x402 on Base. Day-to-day payments need no second token here either. The exception is the self-serve exit from a payment channel, a transaction you submit yourself and pay for in ETH; that is the one moment this route asks you to hold a second asset, and only a small amount of it.
  • Payment privacy is worth real trade-offs to you: Cashu, covered below.

Start from what you already have

You use a crypto exchange

An account you already trust usually beats a new signup, so check what yours can do before opening anything.

For the dollar routes, the check is the withdrawal screen. Open withdraw for USDC (or USDC.e) and read the network list. Support pages lag and third-party summaries go stale; the withdraw screen shows what your account, in your region, at your verification tier, can do today. Your agent cannot see that screen, so this step is yours: tell it which networks are listed and it can take it from there.

For Bitcoin the question is different. It is not about networks on a list but about whether the exchange sends over Lightning at all, so look for a Lightning option on the Bitcoin withdrawal screen. An exchange that only offers on-chain withdrawals can still fund a Lightning wallet, just slower and with higher fees.

The rest of the arc is the same everywhere. Your agent runs the connect command for the chosen route (dvm wallet tempo-connect, dvm wallet x402-connect) and hands you the deposit address as a copyable message plus a QR code. You withdraw a small test amount, choosing the exact asset and network the local facts name; the wrong dollar token, or the right token on the wrong chain, arrives as real money the wallet reads as $0.00. Your agent confirms with dvm wallet balance, and the rest of the money follows the same path.

Two dated examples, verified 2026-08-18 against the providers' own pages. They are illustrations; the withdraw screen decides.

ExchangeWhat it opensNotes
KrakenUSDC.e on Tempo · native USDC on Base · Bitcoin over LightningOne account reaches all three routes. Tempo support is live since July 10, 2026 with geographic restrictions. Kraken also lists USDT0 on Tempo and USDC.e on other networks, so read the ticker and the network. Lightning withdrawals pay an invoice your wallet generates
Coinbasenative USDC on Base · Bitcoin over LightningUSDC withdrawals to Base were fee-free at the time of verification. No Tempo route. Lightning sends are invoice-only, carry a small fee, and are not offered in every region

You run a compatible Lightning wallet

Connect it as the float with dvm wallet pair: it gives you a private link and a session code to compare, and the wallet's connection string stays out of the chat. Compatibility is the catch. The wallet has to be reachable whenever the agent runs low, and it has to enforce a budget on the connection itself; which wallet works names wallets that qualify and the categories that don't. Once connected, dvm wallet fund '$5' completes on its own, and later refills do too, subject to the wallet policy. The result separates invoice principal, wallet-reported routing fee, and total debit; an omitted fee is shown as unknown rather than zero.

You hold dollars on another chain

USDC already on Base spends as-is through the x402 route. USDC anywhere else can be bridged to the Tempo network, where bridged USDC arrives as USDC.e, the asset that rail settles in; the Tempo funding guide lists working bridges. A bridge is an extra moving part with its own fee, so when the dollars sit on an exchange anyway, a direct withdrawal on a supported network is usually the simpler move.

You hold Bitcoin

If it is in a Lightning wallet, connect that wallet as the float and you are done; your Bitcoin stays yours and replenishment becomes automatic. If it sits on an exchange, withdraw over Lightning into such a wallet first. No route spends on-chain Bitcoin directly, and none of the dollar routes needs you to sell: holding Bitcoin points you at the Lightning side, nothing more.

You are starting from nothing

Open an exchange account, and that holds for Bitcoin too. Every legitimate way in runs a full identity check, whether it is an exchange, a card onramp, or a purchase built into a wallet app, so there is no route that skips it. What you are actually choosing is what you end up operating. An exchange account has the lowest fees, reaches every route from one login, and gives you somewhere to cash back out later. A purchase inside a wallet app is more self-contained but priced like a card purchase, typically several percent; Alby Hub, a self-custodial Lightning wallet, sells Bitcoin in-app through its onramp partners if that is where you were headed anyway. With no strong preference, open the exchange account, answer the three questions, and follow the exchange section above.

The privacy-specialist route: Cashu

Ecash bought over Lightning is the most private way to pay here, and right now it is for people who know what they are taking on: a third-party mint holds the underlying Bitcoin, mints have been unreliable in our own testing, and recovery depends on backed-up files, not on the twelve words alone. If that reads as an acceptable trade, dvm wallet setup --rail cashu walks the whole path: wallet, mint choice, a mint-health check before money moves, then a small first fund. Keep the balance at pocket money. The custody model and the multi-mint failover are in ecash over Lightning.

Two mints are accepted here. The first-party DVMs and the platform run on this pair, and ecash held at any other mint cannot pay them. A specific job's dvm quote names the mints that job takes, so read the quote when it disagrees with this table.

MintWhat it is
https://mint.coinos.ioThe primary, and the built-in default a wallet with no mint configured funds at.
https://mint.lnvoltz.comThe failover the wallet substitutes when the primary cannot serve what you are doing.

Add both, then check them before any money moves:

dvm wallet mint-add https://mint.coinos.io
dvm wallet mint-add https://mint.lnvoltz.com
dvm wallet mint-health

Treat mint-health as a gate rather than a formality: a mint can answer and still be unable to issue the tokens you are paying for. You do not have to act on that reading yourself. dvm wallet fund with no --mint probes the mint it is about to use, and when that mint cannot issue the amount it funds at the next configured mint that can, reporting the substitution as status: "fallback_mint" with the mint it settled on. Naming a mint with --mint turns that off: an explicit choice the mint cannot serve is an error rather than a substitution, and its hint names the configured mints that could have taken the amount.

Holding a balance at both earns its keep at pay time too, since a payment whose mint cannot serve it moves to the next mint the DVM accepts instead of failing. Spread across mints covers that.

After the first transfer

  • Verify before adding more. Run dvm wallet balance once the transfer confirms, and dvm doctor if anything looks off; both name the exact token and network the wallet reads, which turns "it says zero" into a diagnosis.
  • Back up what the route created. The Tempo and x402 keys live in your config file and are not covered by the twelve-word phrase; back up more than the words says what to copy.
  • Keep the balance small: days of spending, not months. It is the hard ceiling on what your agent can spend, and dvmkit is in beta.
  • To get money back out later, including out of an open payment channel when a provider stops answering, see getting value back out.

When something looks wrong

What you seeWhat it usually isDo this
Your exchange doesn't list the network you needA regional or account-tier gap, not an errorPick another rail the same exchange reaches, or bridge from a network it does list
Transfer confirmed, balance reads $0.00The wrong dollar token, or the right token on another chaindvm wallet balance names what this wallet reads; compare it against what you sent. On Tempo this is almost always the wrong dollar
Balance won't load at allThe chain endpoint refusing reads, not missing moneydvm doctor names the endpoint and the variable that moves it; see custom chain endpoints
Lightning invoice paid, no ecash arrivedThe mint hasn't issued yet, or is degradeddvm wallet mint-health first; dvm wallet show reconciles pending mints on every run
You want to replace or remove an x402 key that still has channel moneyThe refusal (x402_wallet_in_use) is protecting the depositEmpty the channel first, cooperatively or by the timed exit; see getting value back out

The CLI diagnoses all of these itself, in words meant to be relayed: when your agent passes you a display message from dvm, it can be taken at face value.

On this page