Payment Gateway - BTC Pay

You can use pre built docker images.

https://github.com/hhanh00/zcash-btcpay

Check out the README and let me know if you have any questions.

1 Like

That’s more helpful, thanks. I followed the readme instructions. I did steps 1,2, and 3, but that’s as far as I can get. zcash-walletd is running, but the message from step 4 does not appear. This is what my terminal looks like.


Also, when i do step 5 the screen shows an error, maybe because i have not deployed a store yet? Does the method of deployment matter? How did you deploy? I tried deploying with a third party host btcpayjungle but that did not interact with zcash-walletd.

2 Likes

Please provide the complete log, especially the beginning.

1 Like




after that it repeats a scan for every block height

2 Likes

Are you using docker on Apple M1 chip?

1 Like

Yes thats right

1 Like

It’s a known bug with QEMU / Docker Mac on M1. Better use Intel/AMD CPU or rebuild from source.

2 Likes

For the record, it’s a bug in the virtualization engine used by Docker. Not related to the app itself. https://gitlab.com/qemu-project/qemu/-/issues/340

3 Likes

Hello @hanh!
Does your product support multiple ZEC wallets in case multiple stores will use our BTC Pay Server? If yes, could you please share the docker-compose.yml example?

1 Like

The plugin only supports one key at this time.

1 Like

Hi, there’s a discussion in the BTCPayServer repository around removing Zcash and Monero altcoin support from the core codebase and integrating them as plugins that live in a separate repository – Remove ZCash and Monero from core code by NicolasDorier · Pull Request #6535 · btcpayserver/btcpayserver · GitHub . They’re looking to transfer ownership of the plugin to someone in the Zcash community and are looking for more active maintenance of the integration – GitHub - btcpayserver/btcpayserver-zcash-plugin: This plugin extends BTCPay Server to enable users to receive payments via Zcash. .

I would be happy to take on some limited testing/maintenance of the integration, however I’m not proficient in C# or Rust. I have published a fork of zcash-walletd to Docker: 1337bytes/zcash-walletd with environment variable arguments for LWD_URL and CONFIRMATIONS. The existing usage of lightwalletd.com in Rocket.toml breaks the integration. Also, I plan to write up some documentation to hopefully encourage more usage of the Zcash BTCPayServer integration, and while I ended up focusing on a simpler Node.js REST interface server with bindings to the Zingo Rust lightwallet client for Elemental Pay, I plan to switch my focus to BTCPayServer support for Elemental Pay and can include some support as part of a new grant/revamp of Elemental Pay if there is interest in it.

From my testing the last BTCPayServer version that works is btcpayserver/btcpayserver:1.13.7-altcoins, however I’ve run into problems with running it on 2.0.

Unified Address and multi-account support is missing in the current implementation, a revamp of zcash-walletd to include this would be great and help with increasing adoption, especially with multi-wallet support in BTCPayServer.

8 Likes

@1337bytes We’re talking about doing this, too! Let’s keep talking to each other about what’s needed so we can pool our efforts. - Sunny @ Birdcalls

1 Like

@hanh Was there a blocking factor we might not know about yet that stopped you from maintaining this project?

1 Like

it is not broken as far as I know. But the main reason was the lack of usage. It would be good to know how many deployments of BTCPayserver and Zgo are out there.

3 Likes

I know the zechub store uses Zgo

5 Likes

Yes, we have one store running and another coming soon :eyes: :student: :+1:

5 Likes

If you’re interested in taking this over, and moving forward with the plugin development, I’m happy to provide whatever support I can for modernizing the stack, with the caveat that zcashd deprecation and NU7 work are taking up essentially all of my time for the next few months so what I can offer is likely limited to occasional review & consultation.

5 Likes

@hanh, thanks for your reply!

1 Like

The Zcash UI doesn’t run in BTCPayServer 2.0, I have a patched version locally that runs in 2.0, together with address generation. However, when sending a test payment to the address in the invoice UI, I get this error:

wallet-1    | [2025-...Z INFO  rocket::server] Matched: (request_scan) POST /request_scan
wallet-1    | [2025-...Z INFO  zcash_walletd::scan] Scanning from <START> to <END>
wallet-1    | [2025-...Z INFO  zcash_walletd::scan] Scan tx id: <TRANSACTION_ID>
wallet-1    | [2025-...Z WARN  rocket::response::debug] Debug: Unknown transaction format
wallet-1    | [2025-...Z WARN  rocket::response::debug] Debug always responds with 500 Internal Server Error.
wallet-1    | [2025-...Z INFO  rocket::server] Outcome: Failure
wallet-1    | [2025-...Z WARN  rocket::server] No 500 catcher registered. Using Rocket default.
wallet-1    | [2025-...Z INFO  rocket::server] Response succeeded.

Will spend some more time testing the 2.0 plugin and will publish my UI fix for 2.0 shortly, I have a feeling that porting the RPC client to use warp-sync could be worth trying to make maintenance easier.

Best way to increase adoption I feel would be to integrate Zcash as part of the BTCPayServer Docker Compose generation process, which is their recommended setup process, then have it added as a supported altcoin in their docs. After that, can reach out to existing BTCPayServer merchants and ask them to add ZEC support.

5 Likes

This error looks like it’s caused by transactions using v5. I’ll check it out when I have some free time.

3 Likes