All providers

Zano

Zano is self-hosted. You run the wallet, the money lands straight in it, and no company stands in the middle, not even us. This guide takes the easy road, with the Zano app and a ready-made server.

What you need

FieldWhat it does
Mint endpoint URLYour server's public address-minting route. We call it to get a fresh address for each order. Not secret.
Webhook secretA shared secret your server signs with and we verify. It can never touch your wallet. Secret.

Self-hosted means you run the pieces yourself, and that is the whole trade: nobody else touches the money, and nobody else keeps it running either. On your own computer you run the Zano wallet app, a wallet helper, a ready-made server, and a public address tool. This guide walks through all of it on a Mac. If you would rather not run anything, connect a hosted crypto service instead.

Why we ask for each field

Mint endpoint URL

When a buyer clicks Buy, we ask your server for a fresh address to show them. That request goes to this one public route. It hands back an address and nothing else; your wallet stays private behind it.

Webhook secret

Your server sends us a signed message whenever the chain tells it something new about an order. Paid is only one of the things it can say. It also reports money that has arrived and is still settling, an amount that came up short, and an order that expired with nothing sent. This shared secret lets us confirm the message really came from your server, so nobody can forge one. It can read nothing and move nothing.

Set up

  1. Get the Zano app and Node.js

    Two free downloads. Get both now.

    1. The Zano Full Wallet, from zano.org/wallets. This is where you make your wallet. The same download also gives you the two command-line programs you need later, zanod and simplewallet. Installing Zano does not put them on your PATH, so the commands below use their full path. On a Mac they sit inside the app itself, at /Applications/Zano.app/Contents/MacOS/. On Windows they sit next to Zano.exe in the install folder, which the installer defaults to C:\Program Files\Zano.
    2. Node.js (the green LTS button at nodejs.org). This runs the small server that hands out addresses.
    Download the Zano Full Wallet

    The first time you run the command-line programs, your computer may block them because it does not know the maker. Step 6 shows how to allow them on both Mac and Windows.

  2. Make your wallet

    Open the Zano app and create a new wallet. Then save your words and set a password.

    1. Choose Create a new wallet.
    2. Give it a name and note the folder path it shows. You need that path in step 5.
    3. Write your recovery words on paper, in order, and keep them safe. They are the only key to your money.
    4. Set a password and write it down too.
    5. When the wallet opens, copy your receive address. It starts with Zx.
    Choose Create a new wallet
    Write down your recovery words
    Your new wallet is ready
  3. Make a look-but-do-not-spend copy

    Zano can make a second copy of your wallet that sees every payment and hands out addresses, but cannot send a coin anywhere. Zano calls it a watch-only wallet. That copy is the one your server uses, so the program facing the internet never holds a key that can spend. These run at two different prompts, so copy them one at a time. The second one goes to the wallet rather than to Terminal, which matters: the wallet takes full paths only.

    1. In Terminal, open your wallet

    /Applications/Zano.app/Contents/MacOS/simplewallet --wallet-file 'YOUR-WALLET-PATH'

    It asks for your wallet password, hidden. Once it opens, the prompt changes and you are typing to the wallet, not to Terminal. If your wallet path has a space in it, the quotes already handle it: use the plain path from Copy as Pathname. Dragging the file into Terminal instead adds a backslash before the space, and inside quotes that backslash is treated as part of the name, so the wallet reports file not found.

    2. At the wallet prompt, save the copy

    save_watch_only /Users/YOUR-NAME/Desktop/shop-watch.wallet

    Write the path out in full, starting from the drive or from /Users. This line goes to the wallet, not to Terminal, and the wallet does not understand the ~ or %USERPROFILE% shortcuts. Give it one of those and it makes a folder with that name instead. It then asks you to set a password for the copy. Write that one down too.

    3. Leave the wallet

    exit

    For a first test on your own laptop you can skip this and point step 5 at your real wallet. For real money, do not skip it.

  4. Make your two secret codes

    Zano needs two, because Zano will not open its wallet to other programs without a code of its own. Run the command below twice and keep both. Label them as you go, because they look identical.

    openssl rand -hex 32
    SecretWhat it does
    Wallet access codeThe code programs must show before your wallet answers them. It goes on the wallet helper command in step 6, and into the server in step 7. It never touches the dashboard.
    Webhook secretSigns every message your server sends us about an order, so we know each one really came from you. It goes into the server in step 7 and into the dashboard in step 9, and it has to be the same in both.

    You can click Generate in the dashboard for the webhook secret instead of running this, then use that value. On Windows, run this in Git Bash, which comes with Git for Windows.

  5. Make your project and copy the id

    Sign in to the dashboard, make a project, and copy its project id. It starts with proj_. You use it when you start the server.

    Copy your project id
  6. Start the wallet helper

    This program opens your wallet and answers the server. It asks for your wallet password, hidden, so the password never shows on screen and never lands in your command history. Replace the wallet path and the wallet access code from step 4. In Finder, right-click the wallet file and choose Copy as Pathname. Paste it exactly as given, spaces and all, because the quotes already protect them. Do not drag the file into Terminal, which adds a backslash before each space and makes the wallet look for a name that does not exist.

    /Applications/Zano.app/Contents/MacOS/simplewallet \
      --wallet-file 'YOUR-WALLET-PATH' \
      --daemon-address 37.27.100.59:10500 \
      --rpc-bind-ip 127.0.0.1 --rpc-bind-port 11212 \
      --jwt-secret 'YOUR-WALLET-ACCESS-CODE'
    The wallet helper is running

    That daemon address borrows a public Zano computer so you do not download the whole ledger, which is over 20 GB. It is Zano’s own public node and it comes with no promise that it stays up, so if the wallet cannot connect, suspect that first. If your Mac blocks the program, open System Settings, Privacy & Security, click Allow Anyway, then run the command again and click Open. On Windows, SmartScreen may warn instead: choose More info, then Run anyway. If the installer put Zano somewhere other than the default folder, use that path instead. Leave this window open.

    Prefer to run your own node? (advanced)

    To use no outside computer at all, run your own node first and wait for it to catch up. The first start downloads the ledger and takes a few hours.

    /Applications/Zano.app/Contents/MacOS/zanod --data-dir ~/zano-data --rpc-bind-ip 127.0.0.1 --rpc-bind-port 11211 --no-console --disable-upnp

    Then in the command above, swap --daemon-address 37.27.100.59:10500 for --daemon-address 127.0.0.1:11211.

  7. Download and start the server

    A ready-made server hands out an address for each sale and watches for the money. You do not edit it. Run these one at a time, in the same Terminal window.

    1. Make a folder for it

    mkdir ~/Desktop/coinmoebius-zano

    2. Go into that folder

    cd ~/Desktop/coinmoebius-zano

    Everything after this runs inside that folder, so keep using this same window.

    3. Download the server

    curl -fsSL https://www.coinmoebius.com/tools/zano-server.mjs -o zano-server.mjs

    4. Start a package file

    npm init -y

    5. Install the two packages

    npm install @aquarian-metals/coin-moebius-zano @aquarian-metals/coin-moebius-server

    This one takes a few seconds and prints a line about how many packages it added.

    6. Start the server

    node zano-server.mjs

    The first run asks three questions: your project id, your webhook secret, and your wallet access code. The two secrets show as stars. It saves all three next to the file, so it only asks once. From then on this is the only line you run. Because the answers stick, moving this server to a different project later means editing them: open coin-moebius-zano.json, change the project id, and start it again. Delete that file instead and it asks all three from scratch. On startup it prints the project it is reporting to, so you can see which one it is using.

    Get the ready-made server
    It asks three questions, then runs
    Need a different port, or pointing it somewhere else?

    The server listens on 8787 and reports payments to coinmoebius.com. Two settings change that, and you put them in front of the start command. Set either one on its own, or both together.

    Listen on a different port

    PORT=9100 node zano-server.mjs

    Use this when something else already has 8787. Point ngrok at the same number you choose, so ngrok http 9100 for this example.

    Report to a different Coin Moebius

    COIN_MOEBIUS_API=http://127.0.0.1:8787 node zano-server.mjs

    Only if you are running Coin Moebius yourself. Your project id has to exist in whichever one you point at, or the payment arrives on the chain with nowhere to land.

    Both at once

    PORT=8788 COIN_MOEBIUS_API=http://127.0.0.1:8787 node zano-server.mjs

    This is the usual shape when you run Coin Moebius locally, because a local Coin Moebius already holds 8787.

    The server prints its port and the address it will report to every time it starts, so you can see at a glance which settings took.

  8. Put your server online

    Your server needs a public web address so we can reach it. A free tool called ngrok makes one.

    1. Make a free account at ngrok.com.
    2. Install it. On a Mac, brew install ngrok is the quickest. On Windows, choco install ngrok, or download it from ngrok.com and unzip it.
    3. Add your authtoken (ngrok shows the exact line on its setup page).
    4. Run the command below, then copy the https address it shows next to Forwarding.
    ngrok http 8787
    Copy the ngrok Forwarding address

    If you downloaded ngrok into a folder instead of installing it, run it from there as ./ngrok http 8787. A free address also changes every time you restart ngrok, so if you stop it, paste the new address into the dashboard again or checkout will fail.

  9. Connect in the dashboard

    Add provider, choose Be your own provider, then Zano. Paste two things and save.

    1. Mint endpoint URL: your ngrok address with /coin-moebius/zano/mint added to the end.
    2. Webhook secret: the webhook secret from step 4.
    Add provider, Be your own provider
    Search and pick Zano
    Paste the URL and the secret

    When you save, we quietly check that we can reach your server. Your wallet helper, server, and ngrok all need to be running.

  10. Add the buy button to your page

    Make a product in the dashboard, then copy its buy button code onto your page. These two pieces go in two different places, so they are separate.

    Near the bottom of the page, just before the closing body tag

    <script src="https://sdk.coinmoebius.com/latest/sdk.global.js" crossorigin="anonymous" defer></script>

    One line, once per page, no matter how many buttons that page has.

    Wherever you want the button to appear

    <coin-moebius-buy
      project-id="proj_yourprojectid"
      product-id="your-product"
      amount="59.99"
      currency="USD"
      label="Buy now">
    </coin-moebius-buy>

    Swap in your own project id and product id from the dashboard.

  11. Take your first payment

    There is no sandbox for a self-hosted setup, so a small real payment is the test. Keep all three windows running (wallet helper, server, ngrok).

    1. Open your page, click Buy, and pick Zano. The window shows an address, a QR code, and the amount.
    2. Send that exact amount from any Zano wallet.
    3. Wait for confirmations. Zano makes a new block about once a minute and we wait for ten, so give it around ten minutes. The window keeps checking the whole time.
    4. When it shows the payment is complete, your whole setup is working end to end.
    The buy window shows the address
    The payment is complete

After you connect

Your first real payment is the test, and the step above walks through it. Here is what to check while it settles. Keep all three windows running: the wallet helper, the server, and ngrok.

  1. After you pay, the buy window keeps checking on its own. Your buyer never has to refresh.
  2. Zano takes about ten minutes to fully confirm.
  3. Open the Transactions tab in the dashboard. When the new row reaches succeeded, your whole setup is working end to end.

Troubleshooting

Checkout fails right away.

We could not reach your server. Make sure all three windows are running, and that the mint endpoint URL in the dashboard is your ngrok address with /coin-moebius/zano/mint on the end.

The wallet helper will not start.

Zano refuses to run the wallet helper without an access code. Check that --jwt-secret is on the command and that the same value went into the server when it asked its three questions.

The wallet helper cannot reach a node.

The public Zano node is busy or down. Try again, or run your own node and point --daemon-address at 127.0.0.1:11211 instead.

The buyer paid but the order still says pending.

That is normal while the payment confirms. Once the money is on the chain the buy window says the payment was received and is waiting on the network, and it turns into paid at ten blocks, about ten minutes after it lands.

It still says pending after twenty minutes.

Either the server is not running, or its secret does not match. Confirm the server is up and that the webhook secret you typed matches the one in the dashboard.

Money arrived but the order reads short.

The buyer paid in the wrong kind of money. Zano and Freedom Dollar are separate on the same network, and only the one the order asked for counts toward the amount.

Good to know

Zano and Freedom Dollar. Freedom Dollar (fUSD) is a coin on Zano that stays at one US dollar. Price something in dollars and it charges the same number of Freedom Dollars. Price it in ZANO and it uses today’s ZANO rate.

Run it on a computer that stays on. The test runs on your own computer. For an everyday store, run the same parts on a computer that stays on all the time, with a fixed web address.

Downtime is cheap. The server catches up after an outage and reports the payments it missed. Nothing is lost, so a home computer is fine.

Keep a watch-only wallet for real money. Step 3 makes a copy that can see payments but not send them. Use that copy on the computer that faces the internet and keep your real wallet somewhere else.

Rotating the secret. Make a new webhook secret anytime, then use it in both the server and the dashboard.

Questions? Join our Discord

Ready to connect a provider?

Pick the providers you already use. Buyers pay through your accounts, and you keep one buy button.