Skip to main content

Bitcoin Cash wallet setup

BCH Testnet4 BCH Mainnet supported

Before you start​

  • A Manatee Test API key
  • A dedicated Electron Cash Testnet wallet/account
  • A public HTTPS webhook URL
  • curl
important

Export only the account-level public key. Never submit an Electron Cash seed or private key.

What you'll do​

Configure read-only BCH derivation, create a payment, verify a synthetic webhook, and observe pending → detected → confirmed.

Step 1 — Create a dedicated Testnet wallet​

Open Electron Cash in Testnet mode, create a standard wallet, and keep its seed offline. Use a dedicated account for Manatee payments.

Expected result
The wallet displays Testnet CashAddr addresses beginning with bchtest:.

Step 2 — Export the account public key​

Copy the account-level tpub for derivation path m/44'/145'/0'. Manatee derives external receive addresses from /0/index.

note

The tpub is non-spending data but reveals related receiving addresses and activity. Treat it as sensitive merchant wallet metadata.

Step 3 — Configure BCH in the dashboard​

Open Dashboard → Wallets → Test → Bitcoin Cash, paste the account public key, and compare the first derived CashAddr with Electron Cash before saving.

Expected result
The dashboard marks the BCH Test receive configuration as ready.

Step 4 — Create a test payment​

curl https://api.manatee-api.io/v1/bch/payments \
-H "Authorization: Bearer <TEST_API_KEY>" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1042-bch" \
-d '{
"amount_sats": 150000,
"reference": "order-1042",
"webhook_url": "https://shop.example/webhooks/manatee",
"required_confirmations": 1
}'

amount_sats uses 100,000,000 satoshis per BCH. Store the returned payment fields with the order.

Expected result
The response reports asset: "bch", network: "testnet", a bchtest: address, and status: "pending".

Step 5 — Verify webhook handling​

Send a synthetic BCH event from the dashboard or the test webhook endpoint. Verify its HMAC signature and process the event ID idempotently.

Step 6 — Complete a Testnet transfer​

Send the exact BCH amount to the returned CashAddr. Observe the detected and confirmed events.

Expected result
Your application records the transaction and marks the order paid only at the configured confirmation threshold.

Failure and recovery​

  • Address mismatch: verify coin type 145, external branch 0, and Testnet mode.
  • Invalid CashAddr: retain the bchtest: network prefix.
  • Missing webhook: query GET /v1/bch/payments/{id} and inspect delivery attempts.
  • Wrong amount: reconcile received satoshis before fulfillment.
Next steps
Complete Going to production, then configure a separate BCH Mainnet account public key.