xmrorders: self-hosted XMR order watcher (view-only, hooks)
Description
xmrorders: a ready-made, self-hosted Monero order watcher for small shops (eSIMs, gift codes, digital goods, services).
- Runs on a VIEW-ONLY wallet: your server never holds a spend key.
- One fresh subaddress per order, so two orders at the same price never get mixed up.
- When an order is paid in full with N confirmations (default 10), it runs YOUR command (send the QR/code, ping yourself) or POSTs a webhook. It fires once per order and retries if your hook fails.
- States: unpaid / partial (underpaid) / pending (seen, unconfirmed) / paid.
- A single Python 3 file, standard library only (sqlite). CLI: new / list / check (cron) / run (loop). Includes tests with mocked RPC.
- README covers view-only wallet creation, monero-wallet-rpc on localhost with rpc-login, cron/systemd, and hook examples.
You get: the source (README + script + tests) sent by message, plus help over messages until it runs on your setup.
No payouts or refunds in the script (those need a spend key, so they're left out on purpose).
Pay directly in XMR or through escrow. Custom changes (your supplier's API, Telegram notifications) are quoted separately.
Category: IT
Tags: monero, xmr, payments, python, self-hosted
Published on: November 1, 2026
Views: 4
Legal Notice: Buyers and sellers are responsible for complying with all applicable laws in their jurisdictions. XmrBazaar does not verify legality and assumes no liability. Peer-to-peer cash-for-crypto trades are permitted if not conducted as a business and are compliant with local laws; otherwise, sellers must hold any required licenses or registrations. Listings involving fraud, violence, child exploitation, or other clearly illegal goods or services are strictly prohibited and will be removed once identified. Users are encouraged to report unlawful listings.
About the trader
N/A
N/A
-----BEGIN PGP PUBLIC KEY BLOCK----- xsDNBGri1JgBDADpZwJ0joLLpZ1hnzVh3f92CIZHK+I3erdGH2PVrS7rrNhFkViH OqJ1uDCzOlcB3t44Iu8m+8xvKc0721HQI6T8U55jV44cPoKn22et5D+C9qcpyRKD n/t9kWhJI7mhb9GCpFI43w3Ldb1vlQjeulgoGq1hocIuVHGD0VnaERi8EcivdPi2 HnGNYNvJNQZtmFXW98nduRQO4Tbte2yDQBqgq2iARSFNpSJjG1VgLjEKnvjIqvpA ETc9B7AgkPqrMdXeRlVroDKCC2LPVuXDX9/4z8nKEvuIEiVl0eqR/BfKlNm47yai aDdyn1xtnfW10AQXrMJhwfMiyRXBVyLI34jZqucQ3Uslgng8jN0eyJHvu2Wfqn4r 9KznXleH2z6/OumPHSycnwmeNwAZj0Zi40y+9u8ARSiXLV05ybHklt6LlTqZcUGU OfRc3BQRCucZisg3JQ7hHSfuPTNSAQvbo1IE3dZ7YlTr45iBdn/ACil3e8sCQFik AxhijPwPZhbp89sAEQEAAc0KUGVubnlUb29sc8LBAgQTAQgALAUCauLUmAIbDgIL CQIVCAIWAgIeARYhBEPlfBqk8KigtB7MNiAdALibupP1AAoJECAdALibupP1oesL /RZ57apeEVlspD5ZRkl0l+Nhh97vNk96K2cXcCSouUxcvdwKIpIXhzjqgvKmp0tF ULp8SXs0Q8wOumdxGcKZx83mT8jWmghgbnFzWq5MdZhkzK3nSSgFw9x1u+lmjyGM G+IRRNHSNRK9i/NH7HyIL5LAs8HU7asK0aec35hKtXM3XU23f0bQl6N8qfSZgd8k F00QaWO2rx4bR+9net+ufvbSPqz1KvY8HIHR+WXc7A9rDzkJNu8nBwK/Nz+/ROlg 9zqsdC4GOiP1ghkIZjg8/5CiNhIdV+q9LHO4W5RHWEI5ATkS6eVj3HiYc064qOfL LrQs9F2aNs6/R7ZEx9furhBSZQS4TtgqxW6yDLAi4rUacfRt9AAa/FkqN2dpK806 9Tgrda1wl1D6YcdGClJ6QyecjOqSm+awX1OOgbcW4ixR4GSkdkv08y5ui452IaF3 VdajDKj8FFRyxcgivLVq10ggON7+NvIVx/DUSETCDVqiOTdDUCDjYtP/Me+edenM lw== =IZ4D -----END PGP PUBLIC KEY BLOCK-----