checkout402_
Guides

Payout wallets#

Where you get paid, set once per chain instead of on every checkout.

Money moves from the buyer to your wallet directly, on-chain. checkout402 never holds it, never takes custody, and cannot reverse a payment — which is why an address is validated before a checkout exists rather than after money has moved.

Set them#

Payout wallets in the side panel. Paste an address per chain and save.

c402 wallets set --evm 0x… --svm …
c402 wallets show

Omitting a flag leaves that chain alone; passing an empty string clears it.

Two chains are supported today — Base (and other EVM chains) and Solana — so a complete account has at most two addresses.

Once set, pay_to becomes optional:

c402 checkouts create --price 0.10 --title "Financials"

Every chain you have a wallet for is offered as a rail on that checkout, at the same price, and the buyer picks. Set both and you accept both, with no extra work per checkout.

Changing them never re-points what you have published#

A checkout copies your addresses at the moment it is created and keeps them forever. Rotating your wallet changes what you make next and nothing else.

This is deliberate. If a checkout followed your account setting instead, then changing your wallet would silently redirect every URL you have ever shared — including ones already embedded in a customer's code — with no event, no diff, and no way to notice until the money stopped arriving.

The corollary: rotating your wallet does not move existing checkouts to it. If you have lost access to an old wallet, recreate the checkouts that point at it.

The dashboard says how many open checkouts will keep the old address before you confirm a change, so this is a number you see rather than a surprise you find.

Every change is recorded#

c402 wallets history

Each entry has the chain, what happened (set, changed, cleared), the old and new addresses, when, and which credential did it — a dashboard session or a named API key. The dashboard shows the same list under Change history.

The log is append-only. Removing a wallet is itself an entry, and nothing edits or deletes one — a log that the same credential can rewrite is not a log.

This exists for one question: "my payouts are arriving somewhere I don't recognise — when did that start, and did I do it?" Without a record there is no answer, for you or for us.

Per-checkout overrides still work#

The account setting is a default, not a policy:

c402 checkouts create --price 5.00 --title "Client work" --pay-to 0xCLIENT…

Useful when you are collecting on someone else's behalf, or splitting business lines across wallets.

Don't have a wallet?#

Both the dashboard and the CLI can generate one.

c402 wallets new

You get a 12-word recovery phrase and one address per chain. It is generated on your machine and nothing about it is uploaded — not the phrase, not the keys. The dashboard version runs entirely in your browser tab; the only value that ever reaches checkout402 is the public address, and only after you confirm you have saved the phrase.

That means:

  • We cannot show you the phrase again.
  • We cannot reset it.
  • We cannot recover funds if you lose it.

Write it down before you close the panel.

Import the phrase, not the private keys

One phrase covers both chains. Import it into MetaMask (EVM) or Phantom (Solana) and both wallets appear. The raw private keys are shown too, but only because some tooling wants them — the phrase is what wallet apps ask for and the only thing that restores everything.

Derivation is standard, so any wallet can restore it: m/44'/60'/0'/0/0 for EVM (BIP-32) and m/44'/501'/0'/0' for Solana (SLIP-0010 ed25519, Phantom's path).

A generated wallet starts empty and unprotected

It has no gas, no transaction history, and its security is entirely down to where you put the phrase. For anything beyond a first test, prefer a wallet you already control — a hardware wallet, or a multisig for a team. A phrase that has been on a screen is a phrase that could have been shoulder-surfed, screenshotted, or captured by a browser extension.

An agent can read these, not change them#

whoami over MCP reports your payout wallets and whether pay_to is still required, so a connected agent knows it can omit the field.

There is no tool to change them. An agent that could rewrite your payout wallets could redirect every future payment you receive, and an OAuth connection carries no test/live mode — it is live by default. Changing them takes the dashboard or c402 wallets set with a real key.