Blog and
Latest News

Welcome to where insights meet innovation! Dive into our latest articles
to explore the cutting-edge trends and strategies shaping the business world.
bt_bb_section_bottom_section_coverage_image

Self-Hosted E-Signatures in Odoo : How TC PDF e-Sign Keeps Your Documents on Your Own Server

E-Signatures in Odoo

Every business runs on documents that need a signature. Quotations, NDAs, offer letters, purchase orders, handover forms, KYC packets. The signature is usually the last step before work can start, and it is often the step that takes the longest.

The common fix is to subscribe to an external e-signature service. It works, but it comes with three costs that are easy to underestimate. You pay per document or per signature, forever. Your contracts leave your infrastructure and sit on a vendor’s servers. And the signed file ends up in a system that has no idea what a sales order or an employee record is, so someone has to download it and re-attach it in Odoo by hand.

TC PDF e-Sign takes the other approach. The entire signing workflow runs inside your own Odoo, and the signed PDF lands on the record it belongs to.

The workflow in four steps

Upload the PDF. Any PDF becomes a signable document. There is no template format to learn and no conversion step.

Place the fields. Drag fields directly onto the page. Eleven types ship with the module: text, signature, initials, date, image, company stamp, checkbox, radio button, rectangle, circle and highlight. Each field remembers its own page, position, size and rotation, so a multi-page contract behaves the way you laid it out. Save the arrangement and reuse it as a layout next time.

Send for signature. The signer receives a token-secured portal link. They open it in any browser and sign. No Odoo account, no login, no software to install. Each party gets a distinct token, so one link can never be used to sign another party’s fields.

Archive and verify. The completed PDF is stored on the document record with its full audit trail and a SHA-256 hash.

Two-party signing that enforces the order

Plenty of tools let two people sign the same file. Fewer of them enforce who signs first.

TC PDF e-Sign has two modes, Single Signature and Both Signature. In Both Signature mode each field is assigned to the first or the second party. The second party’s link does not become signable until the first party has finished, and a field freezes permanently once it has been signed. Nobody can go back and edit a value after the fact, and nobody can jump the queue.

This matters for anything where sequence is part of the agreement. A vendor countersigning a purchase order, an employee accepting an offer that a manager has already approved, a lease where the tenant signs before the landlord.

Proving a document was not altered

A signature is only as good as your ability to defend it later.

Every relevant action is logged: sent, viewed, signed, declined, resent. Each entry records the actor, their IP address, their browser user agent and a timestamp. The trail is visible on the document itself.

On top of that, each signed document carries a SHA-256 hash and, optionally, a QR code that points to a public verification page. Recomputing the hash of a file proves whether it still matches the record stored in Odoo. If someone edits a single pixel of the PDF, the hash no longer agrees.

The public verification page is a switch you control. If you would rather not expose one at all, QR codes and the verification page can be turned off entirely in Settings.

The output is still a real PDF

This is a detail that separates signing tools quietly and matters a lot in practice.

Some tools flatten a signed document by rasterizing it, which turns your contract into a picture of a contract. Text stops being selectable, search stops working, and print quality degrades.

TC PDF e-Sign merges fields using reportlab and pypdf, so the original PDF is never rasterized. Text stays selectable, vector graphics stay sharp, and the file remains print-ready.

Automation so nothing stalls

Documents sent for signature have a habit of going quiet. Scheduled actions ship with the module to handle that.

Reminders chase pending signers after a configurable number of days. Documents sent without a manual expiry date get one automatically, ten days by default, and are closed when it passes. Expired requests can be re-sent from the same record rather than rebuilt from scratch. Mail templates are reusable, and a signed copy can be resent to both parties or to any additional address.

Where it fits in Odoo

Signed documents are ordinary Odoo records. They are sequence-numbered, multi-company, chatter-enabled and filterable by status, with a signature-certificate report available. That means the paperwork lives next to the business process instead of in a separate silo:

  • Sales and CRM. Quotations, proposals, sales orders.
  • Contracts and Legal. NDAs, agreements, leases.
  • HR and Onboarding. Offer letters, policies, HR forms.
  • Purchase and Vendors. Purchase orders, vendor forms, certificates.
  • Projects and Field Work. Challans, handover forms, inspection sheets.
  • Regulated and Confidential. KYC, consent forms, compliance packets.

Access is controlled the way everything else in Odoo is. The module ships security groups, model access rights and record rules, so ordinary users see their own documents while managers see everything across the companies they are permitted to access.

Configuration without a developer

One settings page controls the default signature mode, drawn signatures, image and stamp fields, QR codes, the public verification page, portal access, expiry days and reminder days. Changing how signing behaves does not require touching code.

What you actually get by self-hosting

Stripped of the feature list, the argument is short. There are no subscription fees and no per-signature charges. Your documents stay on your infrastructure, inside the database you already back up. Signers need nothing but a browser. Every signature carries an audit trail you own. And because it is LGPL-3, you can read the code and adapt it.

For most teams the deciding factor is not the signing itself. It is that the signed document ends up attached to the right record, in the right system, without anyone re-uploading it.

Nikhil