
ERPNext Digital Signature Integration
Digitally sign Sales Orders, Sales Invoices, Purchase Orders and Purchase Invoices using a visible PFX certificate signature.
⚠️ Problem Statement
In many ERPNext implementations, signing documents like Sales Orders, Sales Invoices, Purchase Orders and Purchase Invoices digitally is a manual, multi-step process:
- Download PDF from ERPNext manually
- Open the document in a third-party tool like Adobe Acrobat, eSigner, or DSC software
- Apply digital signature using USB token or PFX file
- Save and re-upload the signed PDF back into ERPNext
This process is:
- Time-consuming and inefficient
- Prone to human error
- Not auditable or tracked within the ERP system
- Not scalable for organizations with high document volume
✅ Our Solution
This app eliminates that problem by enabling automated and visible digital signatures inside ERPNext:
- One-click digital signing using `.pfx` file
- Signature placement via coordinate selection
- Signed PDF automatically replaces the original and is attached to the document
- Full signing process is tracked inside ERPNext
What is a PFX File?
A PFX file (also called PKCS#12 file) is a binary file format used to store a certificate (public key) along with its private key and optionally a chain of trusted certificates. It's commonly used to import and export certificates and private keys securely. Full form: Personal Information Exchange Purpose: Securely bundle private key and certificate(s) in one file Use cases: SSL/TLS certificates, code signing, email encryption, and digital signatures.
How to Obtain a PFX File?
- From a Certificate Authority (CA):
When you purchase an SSL certificate or a digital signing certificate, the CA usually provides a .pfx file after you complete the validation process.
Intended usage PFX: Sign transaction, Sign document, Client Authentication, 1.3.6.1.4.1.311.10.3.12, 1.3.6.1.4.1.311.20.2.2, Acrobat Authentic Documents.
🔧 Features
- Digitally sign submitted Sales Order, Sales Invoices, Purchase Order, and Purchase Invoice using your `.pfx` certificate
- Choose the exact signature position by clicking on a PDF preview
- Automatically attaches the signed PDF to the respective Sales Order, Sales Invoices, Purchase Order, and Purchase Invoice.
- Supports visible signatures on any page
- Secure password input for PFX files
- Intended usage PFX: Sign transaction, Sign document, Client Authentication, 1.3.6.1.4.1.311.10.3.12, 1.3.6.1.4.1.311.20.2.2, Acrobat Authentic Documents etc.
✅ Version Compatibility
ERPNext Version | Frappe Version | Compatibility |
---|---|---|
v14.x | v14.x | ✅ Fully Compatible |
v15.x | v15.x | ✅ Fully Compatible |
⚙️ Setup Instructions
🔧 Document Sign Setting Configuration
To use digital signing, configure the Document Sign Setting in ERPNext:
- Go to "Document Sign Setting" via the awesome bar
- Fill in the following fields:
Field | Description |
---|---|
✅ PFX File Use | Enable this if you're using a `.pfx` file for signing |
PFX File | Upload your `.pfx` certificate file (stored in `private/files/`) |
DSC Password | Password for your `.pfx` file |
Sign Address | Your signing location (e.g., Pune Maharashtra, India) |
URL | The server URL that signs the PDF (e.g., `https://your-site.frappe.cloud/app`) |
Location | Coordinates for signature in format `(x1, y1, x2, y2)` Example: `(345, 50, 545, 100)` |
🔍 Signature Placement Preview

Sample Signature on Sales Invoice

Sample Signature validity on Sales Invoice
Digital Signature: How It Works - Demo

Professional Tax Calculation State Wise
This app enables automated Professional Tax calculation in Salary Slip based on custom formulas defined at the state level.
⚠️ Problem Statement
- Manual Setup: ERPNext’s default payroll requires Professional Tax to be added manually in each Salary Structure. There is no built-in calculation logic tied to state-specific rules.
- Error-Prone: Hand-entering tax slabs or amounts is very error-prone. A misplaced figure or outdated slab can lead to incorrect deductions. Even small payroll errors can have significant financial consequences.
- Compliance Risk: Every state has its own PT schedule (e.g., Maharashtra’s monthly slabs), and these rates change periodically. Failing to update a slab table or formula can result in non-compliance and penalties. Keeping multiple rate tables in sync manually is difficult and risky.
- State Variability: ERPNext’s standard payroll does not easily support multiple state-level rules. Out-of-the-box, each state or region would need separate salary structures or custom scripting to account for its PT calculations, making maintenance cumbersome.
✅ Our Solution
- Introduce a custom “State” doctype with a child table to define per-state, slab-based PT formulas.
- Add a “State (PT)” link field on Employee so each employee is tied to their state’s formula table.
- On Salary Slip validation, automatically evaluate the appropriate PT formula (using safe_eval) and insert the “Professional Tax” deduction.
- Maintain all PT rules in the ERPNext UI—no code changes needed when state rates change.
🔧 Features
- State-wise PT Configuration: Define dynamic tax slabs per state using Python-style formulas in a custom “State” doctype.
- Employee-State Linking: Automatically associate each employee with their state’s PT rules via a custom State field on the Employee doctype.
- Auto Tax Deduction: On Salary Slip creation (manual or via Payroll Entry), the app calculates and injects the correct “Professional Tax” deduction line.
- Safe Formula Evaluation: Uses Frappe’s safe_eval to securely evaluate any valid slab or conditional expression.
- Fully Configurable from UI: Update or add new PT formulas through the ERPNext interface—no code changes required.
- Standalone & Lightweight: No dependency on India Compliance or other external apps—simply install and configure.
✅ Version Compatibility
ERPNext Version | Frappe Version | Compatibility |
---|---|---|
v14.x | v14.x | ✅ Fully Compatible |
v15.x | v15.x | ✅ Fully Compatible |
⚙️ Setup Instructions
To use Professional Tax, configure the State, Formula Component wise, Employe master have field State in ERPNext:
- Define State & Formula Go to State and create a new record (e.g., “Maharashtra”).
- In the Formula child table, add a row for each PT slab: Component: “Professional Tax”
- Formula:
0 if gross_pay <= 7500 else (175 if gross_pay <= 10000 else (200 if getdate(start_date).month != 2 else 300))
- Submit the State record (only submitted states appear for employees).
- Assign State to Employee Open an Employee record.
- In the State (PT) link field, select a submitted State (e.g., “Maharashtra”).
- Automatic PT Calculation on Salary-Slip via Payroll or Manually.

Sample Salary slip

Sample Employee

Sample State