Search by

payzum / module-payzum

payzum-hq

Payzum crypto & stablecoin payments app for Akaunting

Package info

github.com/payzum-dev/akaunting-payzum

Homepage

Type:akaunting-module

pkg:composer/payzum/module-payzum

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.2.0 2026-09-03 15:39 UTC

This package is auto-updated.

Last update: 2026-09-28 10:11:07 UTC


README

Accept crypto and stablecoin payments (USDC, USDT and more, multi-chain) in Akaunting through Payzum — non-custodial: funds settle directly to your own wallet, Payzum never takes custody.

The app is built on Akaunting's own Omnipay layer (app/Traits/Omnipay.php; the core already ships league/omnipay) plus the published payzum/omnipay-payzum driver, and follows the structure of the official PayPal Standard app.

How it works

  • The customer opens an invoice in the client portal (or via the signed invoice link), picks Payzum and clicks Confirm.
  • The app creates a Payzum hosted-checkout invoice and redirects the buyer to it. No card or wallet data ever touches your server.
  • Crypto confirmation is asynchronous, so the invoice is marked as paid only from Payzum's server-to-server payment notification (IPN), whose HMAC-SHA-512 signature is verified over the raw request bytes (with a replay window) before any field is read. The browser return just shows a "payment is being confirmed" notice.
  • The IPN endpoint itself lives on a Laravel signed URL, and the order id, amount, and currency of every notification are checked against the invoice. Redelivered notifications are idempotent — an invoice is never credited twice.

Install

From the release zip (recommended). Download payzum-akaunting-0.2.0.zip and unzip it inside modules/ of an Akaunting ≥ 3.0 install — the archive already contains the Payzum/ folder.

From a clone. Copy this repository's contents to modules/Payzum. Either way the vendor/ directory is included, so there is no composer step. Then enable Payzum from the admin panel and open its settings:

Setting Meaning
API Key From your Payzum merchant dashboard
Webhook Secret Used to verify payment notifications
Mode Live, or Sandbox for the Payzum staging environment
Pay Currency Optional: pin the crypto asset (e.g. usdc); empty lets the buyer choose
Account The Akaunting account payments are recorded into
Show to Customer Whether portal customers see the method

Tests

The suite runs inside the Akaunting test harness (it covers the signed-IPN flow end to end — forged signatures, order/amount mismatches, pending states, and redelivery idempotency):

git clone https://github.com/akaunting/akaunting && cd akaunting
cp .env.testing .env
git clone https://github.com/payzum-dev/akaunting-payzum modules/Payzum
(cd modules/Payzum && composer test) && composer test
php artisan test modules/Payzum/Tests

License

GPL-3.0+ (same as Akaunting). The Omnipay driver and the Payzum PHP SDK it wraps are MIT.