> ## Documentation Index
> Fetch the complete documentation index at: https://docs.manifestfinancial.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Smart Contracts

# Overview

The Contract object represents an automation that your enterprise requests from a creator.

For a typical integration, you'll create an Account Connection for a creator in your system, then create a Contract referencing that account connection, before directing them opt in via a [Connect Link](/platform/connect/links).

***

# Methods

<Tabs>
  <Tab title="Create">
    <Card icon="square-plus" iconType="solid" color="#86B74B">
      **`POST`  /contract**<br />
      Create a new contract for an account connection under your enterprise.
    </Card>

    ## Body Parameters

    <ParamField body="account_connection" type="string" required="true">
      ID of Account Connection to request contract from.
    </ParamField>

    <ParamField body="type" type="string" required="true">
      Type of contract to create. See below for a list of available contract types.
    </ParamField>

    <ParamField body="deposit_source" type="string" required="true">
      Source of funds deposited into the creator's account that will trigger this contract. Required if type is `deposit_split`. See below for list of available deposit sources.
    </ParamField>

    <ParamField body="deposit_minimum_in_cents" type="number">
      Minimum deposit amount that will trigger this contract. Must be a non-negative integer.
    </ParamField>

    <ParamField body="deposit_maximum_in_cents" type="number">
      Maximum deposit amount that will trigger this contract. Must be a non-negative integer.
    </ParamField>

    <ParamField body="split_percent_amount" type="number" required="true">
      Percentage of eligible deposit to transfer to your enterprise's operating account. Either this or `split_fixed_amount_in_cents` is required if type is `deposit_split`. Must be a number between `0` and `100`.
    </ParamField>

    <ParamField body="split_fixed_amount_in_cents" type="number" required="true">
      Fixed amount of eligible deposit to transfer to your enterprise's operating account. Either this or `split_percent_amount` is required if type is `deposit_split`. Must be a non-negative integer.
    </ParamField>

    <ParamField body="split_amount_max_in_cents" type="number">
      Maximum amount of transfer to your enterprise's operating account per eligible deposit. Must be a non-negative integer. If not provided, there is no maximum.
    </ParamField>

    <ParamField body="user_data" type="object">
      User defined data that can be attached to the object. See the [User Data](/reference/user-data) page for details.
    </ParamField>

    ## Example

    <CodeGroup>
      ```json Request theme={null}
      // POST /contract
      {
          "account_connection": "acon_XXXXX",
          "type": "deposit_split",
          "deposit_source": "snap",
          "split_percent_amount": 10
      }
      ```

      ```json Response theme={null}
      {
          "id": "con_XXXXX",
          "created_at": "2026-01-15T19:27:58.246Z",
          "updated_at": "2026-01-15T19:27:58.246Z",
          "type": "deposit_split",
          "account_connection": "acon_XXXXX",
          "status": "created",
          "activity": [
              {
                  "entry": "Automation created",
                  "date": "2026-01-15T19:27:58.245Z",
                  "hidden": false
              }
          ],
          "deposit_source": "snap",
          "deposit_minimum_in_cents": 0,
          "split_fixed_amount_in_cents": 0,
          "split_percent_amount": 10,
          "fee_fixed_amount_in_cents": 0,
          "fee_percent_amount": 0,
          "fee_amount_max_in_cents": null
      }
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Get">
    <Card icon="square-arrow-right" iconType="solid" color="#425BE0">
      **`GET`  /contract/:id**<br />
      Retrieve a contract by its ID.
    </Card>

    ## Path Parameters

    <ParamField path="id" type="string" required="true">
      The ID of the contract to retrieve.
    </ParamField>

    ## Example

    <CodeGroup>
      ```json Response theme={null}
      {
          "id": "con_XXXXX",
          "created_at": "2026-01-15T19:27:58.246Z",
          "updated_at": "2026-01-15T19:27:58.246Z",
          "type": "deposit_split",
          "account_connection": "acon_XXXXX",
          "status": "created",
          "activity": [
              {
                  "entry": "Automation created",
                  "date": "2026-01-15T19:27:58.245Z",
                  "hidden": false
              }
          ],
          "deposit_source": "snap",
          "deposit_minimum_in_cents": 0,
          "split_fixed_amount_in_cents": 0,
          "split_percent_amount": 10,
          "fee_fixed_amount_in_cents": 0,
          "fee_percent_amount": 0,
          "fee_amount_max_in_cents": null
      }
      ```
    </CodeGroup>
  </Tab>

  <Tab title="List">
    <Card icon="square-list" iconType="solid" color="#BDE1CD">
      **`GET`  /contract**<br />
      List all contracts associated with your enterprise.
    </Card>

    ## Query Parameters

    <ParamField query="page" type="integer">
      The page number to return. Default is 1.
    </ParamField>

    <ParamField query="page_size" type="integer">
      The number of items to return per page. Default is 10.
    </ParamField>

    ## Example

    <CodeGroup>
      ```json Response theme={null}
      {
          "data": [
              {
                  "id": "con_XXXXX",
                  "created_at": "2026-01-15T19:27:58.246Z",
                  "updated_at": "2026-01-15T19:27:58.246Z",
                  "type": "deposit_split",
                  "account_connection": "acon_XXXXX",
                  "status": "created",
                  "activity": [
                      {
                          "entry": "Automation created",
                          "date": "2026-01-15T19:27:58.245Z",
                          "hidden": false
                      }
                  ],
                  "deposit_source": "snap",
                  "deposit_minimum_in_cents": 0,
                  "split_fixed_amount_in_cents": 0,
                  "split_percent_amount": 10,
                  "fee_fixed_amount_in_cents": 0,
                  "fee_percent_amount": 0,
                  "fee_amount_max_in_cents": null
              },
              {
                  "id": "con_YYYYY",
                  "created_at": "2026-01-15T19:27:58.246Z",
                  "updated_at": "2026-01-15T19:27:58.246Z",
                  "type": "deposit_split",
                  "account_connection": "acon_YYYYY",
                  "status": "created",
                  "activity": [
                      {
                          "entry": "Automation created",
                          "date": "2026-01-15T19:27:58.245Z",
                          "hidden": false
                      }
                  ],
                  "deposit_source": "google",
                  "deposit_minimum_in_cents": 0,
                  "split_fixed_amount_in_cents": 0,
                  "split_percent_amount": 10,
                  "fee_fixed_amount_in_cents": 0,
                  "fee_percent_amount": 0,
                  "fee_amount_max_in_cents": null
              }
          ],
          "pagination": {
              "page": 1,
              "page_size": 10,
              "total": 2
          }
      }
      ```
    </CodeGroup>
  </Tab>

  <Tab title="List for Account Connection">
    <Card icon="square-list" iconType="solid" color="#BDE1CD">
      **`GET`  /account-connection/:id/contract**<br />
      List all contracts from your enterprise to a specific account connection.
    </Card>

    ## Path Parameters

    <ParamField path="id" type="string" required="true">
      The ID of the account connection to list contracts for.
    </ParamField>

    ## Query Parameters

    <ParamField query="page" type="integer">
      The page number to return. Default is 1.
    </ParamField>

    <ParamField query="page_size" type="integer">
      The number of items to return per page. Default is 10.
    </ParamField>

    ## Example

    <CodeGroup>
      ```json Response theme={null}
      {
          "data": [
              {
                  "id": "con_XXXXX",
                  "created_at": "2026-01-15T19:27:58.246Z",
                  "updated_at": "2026-01-15T19:27:58.246Z",
                  "type": "deposit_split",
                  "account_connection": "acon_XXXXX",
                  "status": "created",
                  "activity": [
                      {
                          "entry": "Automation created",
                          "date": "2026-01-15T19:27:58.245Z",
                          "hidden": false
                      }
                  ],
                  "deposit_source": "snap",
                  "deposit_minimum_in_cents": 0,
                  "split_fixed_amount_in_cents": 0,
                  "split_percent_amount": 10,
                  "fee_fixed_amount_in_cents": 0,
                  "fee_percent_amount": 0,
                  "fee_amount_max_in_cents": null
              },
              {
                  "id": "con_YYYYY",
                  "created_at": "2026-01-15T19:27:58.246Z",
                  "updated_at": "2026-01-15T19:27:58.246Z",
                  "type": "deposit_split",
                  "account_connection": "acon_XXXXX",
                  "status": "created",
                  "activity": [
                      {
                          "entry": "Automation created",
                          "date": "2026-01-15T19:27:58.245Z",
                          "hidden": false
                      }
                  ],
                  "deposit_source": "google",
                  "deposit_minimum_in_cents": 0,
                  "split_fixed_amount_in_cents": 0,
                  "split_percent_amount": 10,
                  "fee_fixed_amount_in_cents": 0,
                  "fee_percent_amount": 0,
                  "fee_amount_max_in_cents": null
              }
          ],
          "pagination": {
              "page": 1,
              "page_size": 10,
              "total": 2
          }
      }
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Delete">
    <Card icon="square-x" iconType="solid" color="#E04B4B">
      **`DELETE`  /contract/:id**<br />
      Terminate contract. This will stop any future automations from occurring under this contract.
    </Card>

    ## Path Parameters

    <ParamField path="id" type="string" required="true">
      The ID of the contract to terminate.
    </ParamField>

    ## Example

    <CodeGroup>
      ```json Response theme={null}
      {
          "id": "con_XXXXX",
          "created_at": "2026-01-15T19:29:26.000Z",
          "updated_at": "2026-01-15T19:35:30.000Z",
          "type": "deposit_split",
          "account_connection": "acon_XXXXX",
          "status": "terminated",
          "expires_at": null,
          "agreement_at": null,
          "agreement_ip": null,
          "deleted_at": "2026-01-15T19:35:30.000Z",
          "activity": [
              {
                  "date": "2026-01-15T19:29:26.948Z",
                  "entry": "Automation created",
                  "hidden": false
              },
              {
                  "date": "2026-01-15T19:35:30.847Z",
                  "entry": "Automation terminated by enterprise",
                  "hidden": false
              }
          ],
          "deposit_source": "snap",
          "deposit_minimum_in_cents": 0,
          "deposit_maximum_in_cents": null,
          "split_fixed_amount_in_cents": 0,
          "split_percent_amount": 10,
          "split_amount_max_in_cents": null,
          "fee_fixed_amount_in_cents": 0,
          "fee_percent_amount": 0,
          "fee_amount_max_in_cents": null
      }
      ```
    </CodeGroup>
  </Tab>
</Tabs>

***

# Properties

<ParamField path="id" type="string">
  Identifier for this contract.
</ParamField>

<ParamField path="type" type="string">
  Type of smart contract. Must be `deposit_split`.
</ParamField>

<ParamField path="status" type="string">
  Status of account connection. One of `created`, `active`, `declined`, `terminated`, or `expired`. Only users can activate a contract (through the Connect flow).
</ParamField>

<ParamField path="deposit_source" type="string">
  Source of funds for deposit split contracts. One of `google`, `snap`, or `only_fans`.
</ParamField>

<ParamField path="deposit_minimum_in_cents" type="number">
  Minimum deposit amount that will trigger this contract.
</ParamField>

<ParamField path="deposit_maximum_in_cents" type="number">
  Maximum deposit amount that will trigger this contract.
</ParamField>

<ParamField path="split_percent_amount" type="number">
  Percentage of eligible deposit to transfer to your enterprise's operating account.
</ParamField>

<ParamField path="split_fixed_amount_in_cents" type="number">
  Fixed amount of eligible deposit to transfer to your enterprise's operating account.
</ParamField>

<ParamField path="split_amount_max_in_cents" type="number">
  Maximum amount of transfer to your enterprise's operating account per eligible deposit.
</ParamField>

<ParamField path="activity" type="object[]">
  An activity log that tracks the status changes, internal transfers, and any errors associated with a given contract.
</ParamField>

<ParamField path="user_data" type="object">
  User defined data that can be attached to the object. See the [User Data](/reference/user-data) page for details.
</ParamField>
