Status
Version 0.1.0, 12 November 2026. For testing inside our own apps. Not published to npm.
Verified#
By the package's own tests (36 of them), against stand-in gateways, with no network and no money:
- Amounts, and reference reuse.
- Routing and failover: a gateway that is down hands over; one that refuses does not.
- Yoco signature checking, including the three-minute age limit and test or live mode.
- Netcash status checking, including a 503 when the check is down.
- Exactly-once events, and redelivery after a failed handler.
- Refunds, including never refunding more than was paid when two requests arrive at once.
- The Firestore store, against a stand-in database.
- The hosted client's request shapes.
npx callcash agents.
Not verified#
Nothing here has talked to the real Yoco or Netcash, or to a real Firestore. The gateway calls are copied from the working payment code in our own app, Road Quest, so the request shapes are known to work there. The new parts around them are not proven against live systems. That is the next step, inside Road Quest, on Yoco test keys and Netcash test mode.
Assumed#
- Yoco's
refund.succeededevent carries the checkout's metadata. - Yoco refund events state the refunded amount in
payload.amount. If not, the oldest open refund is matched. - Netcash accepts an 18-character letters-and-digits reference (it allows 25).
- Netcash method codes 1, 2, 3, 4 and 10 mean card, bank EFT, cash, instant EFT and voucher.
Not built#
- The hosted callCash API and
cc_test_/cc_live_keys. - The hosted checkout page.
callcash listen(forwarding webhooks to your machine).- PHP and Python packages.
- Ozow, Peach Payments, iKhokha, PayFast and Paystack.
- Signing for callCash's own outgoing webhooks.
- An MCP server for agents.
- The
gateway_limiterror (declared, never thrown).