Frappe Payzum
Payzum crypto/stablecoin payment gateway for Frappe / ERPNext — USDC, USDT and more, non-custodial
- Author: payzum-dev
- Repository: https://github.com/payzum-dev/frappe-payzum
- GitHub stars: 0
- Forks: 0
- License: MIT
- Category: Integrations
- Maintenance: Actively Maintained
Install Frappe Payzum
bench get-app https://github.com/payzum-dev/frappe-payzum
Add the Frappe Gems badge to your README
Maintain Frappe Payzum? Paste this into your README:
[](https://frappegems.com/gems/apps/payzum-dev/frappe-payzum)
About Frappe Payzum
Payzum Payments for Frappe / ERPNext
Accept crypto and stablecoin payments (USDC, USDT and more, multi-chain) in any Frappe or ERPNext site. Payzum is non-custodial: funds settle directly to your own wallet.
The app plugs into the official frappe/payments
framework: it registers a Payzum payment gateway that any consumer of
get_payment_gateway_controller (Payment Requests, web forms, custom code) can
use, exactly like the built-in gateways.
- Buyers are redirected to a hosted checkout page where they pick the asset and network; your site charges in fiat terms (e.g. 29.99 USD). No card fields, no PCI surface.
- Orders are fulfilled from the signed payment notification (HMAC-SHA-512,
verified by the official
payzumPython SDK), never from the buyer's browser return. - Redelivered notifications are idempotent, and a late
expiredevent can never downgrade an order that already settled.
Requirements
- Frappe v15+ with the payments app installed
- Python 3.10+
- A publicly reachable site URL (Payzum delivers notifications server-to-server)
Installation
bench get-app https://github.com/payzum-dev/frappe-payzum
bench --site yoursite install-app payzum_payments
Configuration
Open Payzum Settings (single doctype) on your site:
| Field | Value |
|---|---|
| API Key | From Dashboard → Settings → API Keys at merchant.payzum.com |
| Webhook Secret | Shown once, at merchant creation or rotation |
| Use Sandbox | Point at staging.payzum.com — isolated environment, separate API keys |
| Pay Currency | all (default) lets the buyer pick on the hosted page; or pin a code like usdcmatic |
Saving validates the API key against the live API.
Every invoice the app creates carries its own ipn_callback_url pointing back
at your site, so no webhook needs to be configured in the Payzum dashboard.
Usage from code
from payments.utils import get_payment_gateway_controller
controller = get_payment_gateway_controller("Payzum")
controller.validate_transaction_currency("USD")
url = controller.get_payment_url(
amount=29.99,
currency="USD",
title="Payment for SO-0001",
description="Sales Order SO-0001",
reference_doctype="Payment Request",
reference_docname="PR-0001",
payer_email="buyer@example.com",
)
# redirect the buyer to `url`
When the invoice settles, the reference document's on_payment_authorized("Completed")
is called — the same contract every gateway in frappe/payments honours.
Statuses
The gateway emits five payment statuses; only finished fulfils:
| Payzum status | Effect |
|---|---|
finished |
on_payment_authorized("Completed"), Integration Request → Completed |
expired, failed |
Integration Request → Failed |
waiting, partially_paid |
No change (partially_paid means underpaid) |
Tests
bench --site yoursite run-tests --app payzum_payments
The suite exercises the notification handler with genuinely signed bodies: signature rejection, replay-window rejection, fulfilment, idempotent redelivery, and the never-downgrade guard.
License
MIT
Related Integrations apps for Frappe & ERPNext
- Insights — Open Source Business Intelligence Tool
- Raven — Simple, open source team messaging platform
- Frappe Whatsapp — WhatsApp cloud integration for frappe
- Frappe Assistant Core — Infrastructure that connects LLMs to ERPNext. Frappe Assistant Core works with the Model Context Protocol (MCP) to expose ERPNext functionality to any compatible Language Model
- Biometric Attendance Sync Tool — A simple tool for syncing Biometric Attendance data with your ERPNext server
- Frappe React Sdk — React hooks for Frappe
- Frappe Js Sdk — TypeScript/JavaScript library for Frappe REST API
- Mcp — Frappe MCP allows Frappe apps to function as MCP servers