nano133

Build · nano133 Kit

Nano Checkout

Take Nano on your own site: each checkout asks for its own exact amount, and your site checks the payment on a Nano node in about a second. The money goes straight to your wallet, with no fee and no key on your server.

How it works

One checkout, start to end

  1. A price becomes an exact amount.The price plus a few last digits that no other open checkout has.
    Why no memo

    The address is always yours. The last digits tell the payments apart, so no memo is needed.

  2. The buyer scans and sends.The QR code holds your address and the exact amount.
    Show every digit

    The buyer’s wallet reads the code, and the buyer sends. An amount that is cut matches no checkout.

  3. The network confirms it.The computers of the Nano network vote on the payment. It is confirmed, usually in under a second.
  4. Your site sees it.Your server asks your node for a confirmed payment of exactly this amount to your address.Good to know. An order is marked paid only when the page asks before the end of the grace. If the buyer pays and closes the page, the order is marked paid only when the page asks again in that time.The search finds a payment that waits at your address. A wallet app that receives it first hides it from the search.
    How the page asks

    While the payment page is open, it asks your server every 2 seconds. When there is such a payment, the order is paid: your server signs a receipt, and your site gives it to the browser that started the checkout.

  5. A wrong amount, or a late payment.Any other payment matches no checkout, and nothing is marked paid.
    When a payment counts
    A payment counts only whenDefault
    it is exactly the checkout's amountprice + a unique tail
    it goes to your addressalways
    your node confirmed italways
    your node first saw it while the checkout was open, or in its grace15 min + 1 hour
    no other checkout used itone payment, one checkout
    It can go back by itself

    With Late Payment Return, such a payment of at least Ӿ0.001 goes back to its sender by itself, exactly once, after about 2 hours. That tool needs a wallet whose key your server holds. Without it, the payment waits at your address.

  6. No fee, no payment company.The money goes straight to your wallet.
    No account, no key

    You need no account at a payment company, and your server holds no wallet key.

    What it costs you
    • No fee: Nano has none. A 1¢ sale pays you 1¢.
    • No proof of work on your side: you only read the ledger. The buyer’s wallet does the work for its send.
    • A few node calls per claim. Rate-limit the claim route per visitor.
Example only: do not pay
  1. Checkout 1Ӿ0.027800000000000000000000734201
  2. Checkout 2Ӿ0.027800000000000000000000018563
  3. Checkout 3Ӿ0.027800000000000000000000900017

Try it: three buyers, one 1¢ item. Each checkout asks for its own exact amount; the last digits (bold) are different.

It runs on this site today: the 1¢ arcade rounds, Unlock, Tips and Fans all take payments this way.

Want to understand every step, or build it yourself? Read the guide Accept Nano payments without a processor.

Security

Set it up with AI

Paste this into Claude, ChatGPT, Gemini or your coding agent, in your site's repository:

Add "Nano Checkout" to this site: let people pay in Nano (XNO) with a unique
amount per checkout, check the payment on a Nano node, and give a signed
receipt. Use the npm package @nano133/checkout and follow its SPEC step by step:
https://nano133.com/build/nano-checkout/SPEC.md
Ask me for the receiving address and the node to use. Never print, log or
commit the receipt secret. Test with the package's mock ledger first.

The agent follows the step-by-step spec. Claude Code users can install the add-nano-checkout skill from the nano133 Kit.

For developers

Set it up by hand

  1. Choose your receiving address and your node.
  2. Install the package.@nano133/checkout
  3. Choose a store.The Firestore adapter, or your own for any database with transactions.
  4. Create a receipt secret.In your secret manager.RECEIPT_SECRET
  5. Add a checkout route.The price from your server, a unique amount, rate-limited.POST /api/checkout
  6. Show the payment.A QR code, an “Open in wallet” link, the exact amount and your address.
  7. Add a claim route.The page polls it every 2 seconds. Answer 503 when your node doesn’t answer.POST /api/claim
  8. Check the receipt on the server.Before you show what was paid for.
  9. Test it.On the package’s mock ledger, then with one real payment.