# Bundle Create

When a bundle is created. It is sent off for digital signing and can be also assigned view actions.

{% hint style="info" %}
A bundle is a collection of messages, settings, recipients, documents and optionally placeholders.
{% endhint %}

FuseSign offers two different modes for document signing: **Sign Entire Document** and **Signature Placeholders**.&#x20;

The property `SigningMode` is optional, which can be set to `SignWhole` or `SignPlacements`. We recommend being explicit by adding this parameter.&#x20;

`SigningMode` defaults to `SignWhole` when not included in the request body but will use `SignPlacements` if set in the business settings.&#x20;

**Signature Placeholders** mode requires `CustomerInputElements` against each `Documents`  of the payload. &#x20;

Both methods of signing include a true digital signature using computer technology to authenticate the signature by way of attaching a **transcript and** embedding a **digital certificate** validating who signed the documents and protecting the information from tampering.

{% hint style="success" %}
We recommend uploading your documents to [Document](/fusesign/api-references/document.md#api-document-upload) to use parameter `DocumentId` rather than `DocumentUrl`.
{% endhint %}

## Sign Entire Document Mode

Sign Entire Document means that **visual signature images will not be placed on specific locations in the documents**. This method significantly reduces the complexity of creating and sending bundles. The signer is effectively agreeing to approving and digitally signing the entire document and the contents contained within the document. They agree to the terms of digital signing by agreeing to the terms when they sign.

FuseSign will place the **signers' initials** on each page of the document **if this option is enabled** in your [Administrative Settings](https://knowledgebase.fuse.work/FuseSign/administrative-settings#AdministrativeSettings-DocumentOutput) (Settings > Document Output > Signers' Initials Position) . The initials will be placed on each page of the entire bundle and cannot be toggled on a bundle basis.

<details>

<summary>Example Payload (Sign Entire)</summary>

This is the payload mentioned in [QuickStart Guide](/fusesign/getting-started/quickstart-guide.md)

A simple example payload for the [Bundle](/fusesign/api-references/bundle.md#api-bundle-create) endpoint:

```json
{
  "subject": "This is the subject field in the email",
  "body": "Hello Signer, Could you please sign please",
  "createMode": "CreateAndSend",
  "customers": [
    {
      "customer": {
        "name": "MY NAME HERE",
        "email": "MY EMAIL HERE",
        "phoneNumber": "+61411111111"
      }
    }
  ],
  "documents": [
    {
      "displayName": "Name of Document",
      "documentUrl": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
      "documentOrder": 0,
      "customerSigners": [
        0
      ]
    }
  ],
  "viewMode": "SmsToSign",
  "settings": {
    "webhookUrl": "https://example.com/my_fusesign_webhookID"
  }
}
```

</details>

<details>

<summary>Example Signed PDF (Sign Entire)</summary>

<figure><img src="/files/iyD2AQnAJHYrKlVT2efM" alt=""><figcaption><p>Note the initials on the bottom left of the page</p></figcaption></figure>

<figure><img src="/files/2zJGBqnmk3UrhuYgpRae" alt=""><figcaption><p>Sign Entire document audit</p></figcaption></figure>

</details>

## Signature Placeholders Mode

Signature Placeholders means that when preparing a bundle, the user will add a ‘signature placeholder’ to assign each of the **specific locations within the documents where your recipients' signature will visually appear**.

This method **does not include signers' initials on each page**, even if this option is enabled in business settings.

### Signature Placement Type

If a recipient has a signing action on a document, at least one of these placeholders will be required. When your recipient signs, their signature will appear on the document where you place these.

#### Signature Placements

* `Standard` - Adds a standard signature placeholder to the document
* `WithDate` - Similar to the above, but also automatically adds the signing date below the signature

#### User Inputs

These options allow your users to fill out additional information on your document. You can also set properties for these inputs from the right panel to make them mandatory, or to assign a default value.

* `TextLine` - Adds a single text line for your recipient to fill in
* `CheckBox` - Adds a checkbox to the document, that can be checked by the recipient
* `Date` - Allows your recipient to manually fill in a date
* `Paragraph` - Adds a multi-line text input that you recipient can fill in

#### Signature Stamps

These stamps do not require any interaction from your recipient and will be automatically filled when the document is finalised.

* `SignedDate` - Automatically stamps the date the document was signed by this recipient.
* `SignerName` - Automatically stamps the signer’s name

### PlacementType

Placement type is another property of  `CustomerInputElements` . There are two options for placement:

#### ByCoordinate (for static documents)

If the documents you are sending from your API are the same every time, we recommend this mode.

It uses X, Y, W and H to set the dimensions of the placeholder. (*X / Y is the co-ordinate from the top left of the page)*

<details>

<summary>Example Payload (Signature Placeholders, co-ordinate)</summary>

A complex example payload for the [Bundle/Create](/fusesign/api-references/bundle.md#api-bundle-create) endpoint:

{% hint style="success" %}
Note the Use of `CustomerInputElements`
{% endhint %}

```json
{
  "subject": "test",
  "body": "body",
  "createMode": "CreateAndSend",
  "createdBy": null,
  "customers": [
    {
      "customer": {
        "customerId": null,
        "name": "Your Name",
        "email": "youremail@yourdomain.com",
        "phoneNumber": null,
        "noMobile": true,
        "meta": null,
        "cannotModify": false,
        "options": {
          "ignorePhoneNumberIfInvalid": false,
          "updateExistingCustomersByMetaMatch": false
        }
      },
      "lastSigner": false,
      "signingGroup": 0,
      "lockLastSigningGroup": false,
      "cannotRemoveFromBundleDraft": false,
      "smsNotify": false
    }
  ],
  "documents": [
    {
      "displayName": "Signing document",
      "documentId": null,
      "documentBase64": null,
      "documentUrl": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
      "documentOrder": 0,
      "customerSigners": [],
      "customerInputElements": [
        {
          "customerIndex": 0,
          "inputElements": [
            {
              "pageIndex": 0,
              "x": 10,
              "y": 10,
              "w": 50,
              "h": 20,
              "type": "Standard",
              "placementType": "ByCoordinate",
              "anchorText": null,
              "anchorXOffset": 0,
              "anchorYOffset": 0,
              "anchorFindCount": 0
            }
          ]
        }
      ],
      "customerViewers": [],
      "meta": null
    }
  ],
  "dueDate": "0001-01-01T00:00:00+00:00",
  "dueReminderMode": null,
  "overdueReminderMode": null,
  "viewMode": null,
  "recipientReceiveMode": null,
  "signingMode": "SignPlacements",
  "settings": null,
  "meta": null,
  "teamId": null,
  "senderIP": null
}
```

</details>

<details>

<summary>Using FuseSign to get precise co-ordinates</summary>

We recommend creating a bundle in our app at <https://app.fuse.work/fusesign/>, dragging and dropping placeholders to get the exact co-ordinate you need:<br>

<figure><img src="/files/gxMa476ZV74fC7qdK4BR" alt=""><figcaption><p>Placeholders Tab can inform you of the exact X, Y, W and H of a placeholder</p></figcaption></figure>

</details>

<details>

<summary>Example Signed PDF (Placeholder mode)</summary>

<figure><img src="/files/Vo4Z1BfcZ2HfzgF14ULG" alt=""><figcaption><p><code>Standard</code> placeholder at the top of the page</p></figcaption></figure>

<figure><img src="/files/lnRE5z1wXnIS1uG6AhGe" alt=""><figcaption><p>Placeholders document audit</p></figcaption></figure>

</details>

#### ByAnchorText (for dynamic documents)

If the documents in dynamic and you require placeholders in different locations we recommend this mode.

Specify `AnchorText` to have the display over the text found.

Tips for `AnchorText`

* Use a special / unique word without any special characters
* Keep it short and simple but not a subset of other words
* Should be hidden by having the colour match the background. Ie. white.

*You can also specify the `AnchorFindCount`that is the number of instances being placed (0 = unlimited)*

### Pending Documents

When documents are uploaded via the Document Upload endpoint they exist in a `Pending` state until they are linked to a bundle via the Bundle Create endpoint.

&#x20;`Pending` documents are removed every 24 hours.&#x20;

You can list any pending documents via the `/api/Document/ListPending` endpoint.

### Base64 Uploads

The **Base64 content option** in the Bundle Create endpoint should only be used in limited scenarios. Because all Base64-encoded documents are included directly in the payload, this approach significantly restricts the maximum file size that can be uploaded.

Instead, we recommend using the **`/api/Document/Upload`** endpoint to upload documents. Once uploaded, include the returned `DocumentId` in the Bundle Create payload. This approach avoids payload size limitations and is the preferred method for handling document uploads.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://fuseworks.gitbook.io/fusesign/deep-dives/bundle-create.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
