Damus
Cashu Pay Server profile picture
Cashu Pay Server
@Cashu Pay Server

Accept Bitcoin without the complexity

Payment gateways want your ID. BTCPay Server needs a VPS and Docker expertise. CashuPayServer is the middle ground: a BTCPay-compatible gateway that runs on the PHP hosting you already have.

Relays (8)
  • wss://nostr.cypherpunk.today/ – write
  • wss://relay.primal.net – write
  • wss://offchain.pub – write
  • wss://relay.damus.io – read & write
  • wss://nostr.mom – read
  • wss://nostrelites.org – read
  • wss://wot.nostr.party – read
  • wss://pyramid.fiatjaf.com – read

Recent Notes

Cashu Pay Server profile picture
CashuPayServer v0.5.9-alpha is out — together with yesterday's v0.5.8, the result of a fourth audit that asked one question: can anyone lose money?

The most serious security one: if the same Cashu token was sent to two payment requests at the same moment, both turned "Paid ✓" while the shop received the money once. Now each shop receives one payment at a time.

The rest of the security and payment fixes:

- Late payments are collected again on busy shops. If the mint or your server was down for more than three days, a customer's payment could stay uncredited as long as new checkouts kept coming in.
- One price source can no longer move fiat prices. With the other providers down, a single bad answer could shift EUR, GBP or CAD prices by up to 25 %, and the wrong rate stuck.
- Backup mints are protected and looked after: removing one with open orders could hide a later payment, and money held there was never moved off retiring keysets.
- A store left behind by whoever claimed setup first (with their mint and their seed) could survive a recovery-code takeover. It is now removed.

But the interesting result: the worst risks to a shop's money were not attackers. They were things that quietly stop working. So 0.5.9 fixes those:

- Automatic withdrawals work above 10,000 sats. On a mint that reserves 1–2 % for Lightning fees, every automatic payout above roughly 10k sats failed, run after run, while the money piled up at the mint.
- Setup now asks where your money should go: paste your Lightning address, it is checked, and payouts happen by themselves. Or choose "Not now" and try it first.
- Customers are never told to pay twice. Paying at the last second used to show "Invoice expired, request a new one". Now the page says not to pay again, keeps checking, and turns to "Payment Complete" when the money arrives.
- Your shop hears about a payment at once, not on the next visitor.
- Alerts by email or a private Nostr DM (NIP-17) when customers can't pay, withdrawals keep failing, or a security update is out.
- A printable recovery sheet: your seed words plus every mint your store has used. The seed alone doesn't tell you which mints to restore from.
- No more white screens at install. Hosting problems now show a plain page with a message to send to your host.

One change in how you upgrade: the zip no longer has a folder of its own. Unpack it straight into your existing installation folder, keeping your data folder. If you unpack it into a new subfolder by mistake, setup notices and tells you which folder to delete.
- Standalone: unpack the new zip into your installation folder, replacing the old files, keeping your data folder.
- WordPress: upload the plugin and choose "Replace current with uploaded".

The database updates itself on your first visit.

About the audit: Opus 5.5 with the Cloudflare security-audit skill (https://github.com/cloudflare/security-audit-skill), plus separate passes for reliability, the customer at checkout, and a shop owner who has never used SSH. Every finding was reproduced in a sandbox and checked by independent verifiers before it counted.

👉 Download: https://github.com/jooray/cashupayserver/releases/tag/v0.5.9-alpha
1
Cashu Pay Server profile picture
CashuPayServer v0.5.7-alpha is out — the second release from this October's three independent security audits, and it closes every code-side finding they left open.

If you've patched your PHP already, you can also upgrade CashuPayServer. If not, patching PHP is more important, go do that.

The most serious one was in the WordPress plugin: showing the seed phrase or downloading the database accepted any password, because the already-open admin session was the only check (but you still needed to be logged in as admin into WordPress). It now asks for your real WordPress password. MiniMax M3.1 found that one, and it is again the model that caught something the earlier scans missed.

The rest of the important fixes:

- Stranded-funds exports now reserve the money, so the same ecash cannot be handed out twice or spent while the token circulates.
- The setup wizard can no longer be re-entered to reset the admin password or keep a previous claimant's server address.
- Fiat pricing needs two independent sources to agree, so one bad provider cannot underprice invoices.
- An interrupted wallet backup no longer leaves a full copy of the database behind.
- Public token submissions are bounded, closing a request that could burn minutes of CPU.
- Trusted-proxy settings can no longer name the whole internet.

Upgrading takes a couple of minutes and there is nothing to configure:
- Standalone: upload the new files over the old ones, keeping your data folder.
- WordPress: upload the plugin and choose "Replace current with uploaded".

The database updates itself on your first visit.

Three audits, three models: DeepSeek 4.1 Flash 1017, Opus 5.5 and MiniMax M3.1 (Space Bunny). They found real issues at every level, including the WordPress one above.

What changed? We used the same models for previous audits, but this time we used the cloudflare security audit skill: https://github.com/cloudflare/security-audit-skill Highly recommended, it's good.

👉 Download: https://github.com/jooray/cashupayserver/releases/tag/v0.5.7-alpha
22❤️3❤️1🤙1
n1nja · 2w
Are there some examples of this in action?
Cashu Pay Server profile picture
CashuPayServer v0.5.6-alpha is out, and it's the most thoroughly reviewed release yet.

Three independent security audits went through CashuPayServer and its Cashu wallet library line by line. This release fixes what they found. If you take bitcoin payments with CashuPayServer, please upgrade, although no bug was remotely exploitable or critical.

What's new:

- Payment requests work with any standard Cashu wallet. Show a QR code, the customer pays, and the page turns to "Paid ✓" the moment the money arrives. Newer wallets also get the compact creqB format, a smaller QR code that's easier to scan.
- Payments and withdrawals are much harder to break in extreme conditions.
- Safer data out of the box. If your wallet database could be downloaded from the web, the dashboard tells you, and a new install can move its data to a safe place with one click.

Upgrading takes a couple of minutes, and there's nothing to configure:
- Standalone: upload the new files over the old ones, keeping your data folder.
- WordPress: upload the plugin and choose "Replace current with uploaded".

The database updates itself on your first visit.

Cheap PHP hosting, no node to run, bitcoin payments in your shop.

About the audits: We have always run Ai audits with all the models available. This round brings DeepSeek 4.1 Flash 1017, Opus 5.5 and MiniMax M3.1 (also known as Space Bunny). All of them found real bugs previous audits/models did not find. And we have run the heavyweights on CashuPayServer before. MiniMax M3.1 was the only one that found a higher severity bug, which all previous scans missed. Since it is free on OpenCode for a few days, run your security-critical code through it.

👉 Download: https://github.com/jooray/cashupayserver/releases/tag/v0.5.6-alpha
2❤️1👁️‍🗨️1
Cashu Pay Server profile picture
CashuPayServer v0.5.4-alpha is out — a security and reliability release.

CashuPayServer lets a small shop accept Lightning payments by speaking BTCPay Server's API, so e-commerce plugins built for BTCPay work with it by just changing one URL. No node or BTCPay instance; it runs on ordinary PHP shared hosting and settles through a Cashu mint.

Four AI audits went over the server and the wallet library, and this release fixes what they found: fee handling on withdrawals, a double-spend path in exports, an amount-check bug, and an invoice-status check that stopped working after the first try.

Still alpha. Keep balances small and withdraw often (or automatically).

https://github.com/jooray/cashupayserver/releases/tag/v0.5.4-alpha
2