# Sign V3

V3 continues our mission to enhance the convenience and security of digital signing in Singapore. It significantly reduces technical complexity, ensuring faster and safer implementation, and provides greater access to digital signing to businesses and citizens across various aspects of their lives.

## Change log

<table><thead><tr><th width="118.1431884765625">Date</th><th>Changes</th></tr></thead><tbody><tr><td>2 June 2025</td><td><p><strong>V3.0</strong></p><p>Initial version</p></td></tr><tr><td>14 August 2025</td><td>Added acceptable PDF dimensions</td></tr><tr><td>7 Oct 2025 </td><td><p><strong>V3.2</strong> </p><p>Released PDF viewer within Sign Portal; support for multiple signing locations by the same signer within the document, and option for RP to specify an intended signer; and returning of signer information to the RP's webhook.</p></td></tr><tr><td>21 Oct 2025</td><td>Update PDF requirements that it must not be hybrid-referenced</td></tr><tr><td>15 Jan 2026</td><td><strong>Cancel Sign Request:</strong> New feature to allow Relying Parties (RPs) to cancel an initiated sign request <br><strong>Increased limit for multiple signing locations:</strong> Support for up to 20 locations per signing request</td></tr></tbody></table>

## High-level integration flow

Relying Parties (RPs) will send us the document, and then redirect the user to our Sign portal to perform the signing. Sign will then notify the RP of a successful signing via their webhook, from which RPs can retrieve the signed document.&#x20;

<figure><img src="https://372330916-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXnljQgt54HuOtH3cKCRP%2Fuploads%2Fs3H8dde9UPELTWzucX79%2Fsign_v3.jpg?alt=media&#x26;token=c8ad8b69-51e9-4f63-84e4-45a603512b63" alt=""><figcaption><p>Sign V3 High-level integration flow</p></figcaption></figure>

RPs are expected to implement the following steps referenced from the diagram above:

<table><thead><tr><th width="62.7664794921875">Step</th><th width="106.00433349609375">Component</th><th width="264.38543701171875">Summary</th><th>Specifications</th></tr></thead><tbody><tr><td>1</td><td>Backend</td><td>Send raw document to Sign with Singpass and get <code>signing_url</code></td><td><a data-mention href="sign-v3/initiate-sign-request">initiate-sign-request</a></td></tr><tr><td>2</td><td>Frontend</td><td>Redirect user to Sign with Singpass</td><td>Redirect user to the <a href="sign-v3/sign-portal">Sign Portal</a> via the <code>signing_url</code> retuned in step 1. RP should follow <a data-mention href="../ux-guidelines">ux-guidelines</a> to render the "Sign with Singpass" button.</td></tr><tr><td>3.1</td><td>Frontend</td><td>Accept redirect from Sign with Singpass</td><td><a data-mention href="sign-v3/redirect-from-sign-with-singpass">redirect-from-sign-with-singpass</a></td></tr><tr><td>3.2</td><td>Backend</td><td>Accept success signing webhook</td><td><a data-mention href="sign-v3/accept-success-signing-webhook">accept-success-signing-webhook</a></td></tr><tr><td>4</td><td>Backend</td><td>Get signing result</td><td><a data-mention href="sign-v3/get-signing-result">get-signing-result</a></td></tr><tr><td>5</td><td>Backend</td><td>Download signed document</td><td>N/A. Just fetch the signed document from <code>signed_doc_url</code></td></tr><tr><td>0</td><td>Backend</td><td>JWKS specifications</td><td><a data-mention href="sign-v3/jwks-specification">jwks-specification</a></td></tr></tbody></table>

## Production and staging URLs

**Staging Base URL:** <https://staging.sign.singpass.gov.sg/api/v3>

**Production Base URL:** <https://app.sign.singpass.gov.sg/api/v3>

## Developer tools

{% hint style="warning" %}
These tools are open-source community projects and are not officially supported or maintained by the Sign team. We welcome contributions to improve them. Their inclusion here does not imply endorsement or preference by the Sign team.
{% endhint %}

### Demo App

[Sign V3 Demo App](https://github.com/singpass/sign-v3-demo-app) is a reference implementation that demonstrates how RPs can integrate with V3. It helps partners explore the API and conduct early-stage integration testing.

### Mockpass

[**Mockpass**](https://github.com/opengovsg/mockpass) is an open-source mock server that stubs various Singpass APIs, including the **Sign v3** signing flow. It is designed for local development, CI and low environment testing, enabling fast, repeatable, and secure integration without relying on staging infrastructure.

### Sign Location helper

[Sign Location Helper](https://github.com/singpass/sign-location-helper) is a fully client-side browser-based tool for visually determining signature coordinates within a PDF document. It allows users to upload a PDF, place and drag signature boxes, and copy normalised `(x, y, page)` values for use in Sign v3. Ideal for RPs experimenting signature placement.

<br>
