Requires the digital-signer add-on · $15/mo
Manage add-ons
Integrations

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.

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

Sign a /v1/quotations PDF and email to the customer

Common uses

  1. 01

    Sign a /v1/quotations PDF and email to the customer

  2. 02

    Bulk-sign month-end /v1/sales-invoices

  3. 03

    Countersign supplier /v1/purchase-orders

Integration code

Open API reference

Sign 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

POST /v1/signaturesGET /v1/signatures/{id}POST /v1/quotations/{id}/signPOST /v1/sales-invoices/{id}/sign

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.