Digital Signer
Sign quotations, sales orders, and invoices as PDF/A with a legally binding hash chain.
The snag
Sending PDFs to DocuSign for each quote adds friction and cost, and the signed doc rarely finds its way back to the ERP record.
How Zivvy helps
The digital-signer add-on signs the PDF inline against /v1/quotations, /v1/sales-orders, and /v1/sales-invoices, and stores the signed PDF/A + hash back on the record.
Before Zivvy
Handoffs go missing, owners are unclear, audits get painful.
What you get
- Sign inline from Quotation, Sales Order, and Sales Invoice
- PDF/A output with embedded hash chain
- signatures.completed webhook fires the follow-up workflow
Workflow stream
Common uses
01
Sign a /v1/quotations PDF and email to the customer
02
Bulk-sign month-end /v1/sales-invoices
03
Countersign supplier /v1/purchase-orders
Integration code
Open API referenceSign a quotation
curl -X POST https://integrate.zivvy.xyz/v1/quotations/SAL-QTN-2026-0001/sign \
-H "Authorization: Bearer $ZIVVY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"signer_email": "cfo@acme.com",
"signer_name": "Alex Chen",
"notify": true
}'Wait for completion
import { zivvy } from "./zivvy-client";
const sig = await zivvy.signatures.create({
doctype: "Sales Invoice",
name: "SAL-INV-2026-0042",
signer_email: "cfo@acme.com"
});
zivvy.webhooks.on("signatures.completed", async ({ signature_id }) => {
if (signature_id === sig.id) {
// signed PDF is stored under /v1/attachments
}
});API endpoints
Events emitted
HMAC-SHA256 signed webhooks, retried for 24 hours.
- signatures.completed
- signatures.declined
- signatures.expired
0
free seats forever
0
card required to start
1
workspace for the workflow
Questions
Ready to try it?
Free plan. Two seats. No card.