Skip to main content
POST
/
public
/
v2
/
contracts
/
Create Contract
curl --request POST \
  --url https://api.dualentry.com/public/v2/contracts/ \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: <api-key>' \
  --data '
{
  "custom_fields": [
    {}
  ],
  "memo": "",
  "date": "2023-12-25",
  "start_date": "2023-12-25",
  "end_date": "2023-12-25",
  "company_id": 123,
  "customer_id": 123,
  "name": "",
  "currency_iso_4217_code": "USD",
  "bill_to_address": "",
  "billing_address": {
    "street": "<string>",
    "city": "<string>",
    "postal_code": "<string>",
    "state": "",
    "country": "",
    "second_line": "",
    "name": "<string>"
  },
  "ship_to_address": "",
  "shipping_address": {
    "street": "<string>",
    "city": "<string>",
    "postal_code": "<string>",
    "state": "",
    "country": "",
    "second_line": "",
    "name": "<string>"
  },
  "obligations": [],
  "term_id": 123,
  "default_ar_account_id": 123,
  "contract_template_id": 123,
  "billing_start_date": "2023-12-25",
  "billing_frequency": "monthly",
  "billing_interval": 1,
  "billing_anchor_weekday": 3,
  "recognition_start_date": "2023-12-25",
  "recognition_frequency": "monthly",
  "recognition_interval": 1,
  "recognition_anchor_weekday": 3,
  "recognition_mode": "individual",
  "contract_attachments": [],
  "change_orders_attachments": [],
  "payment": {
    "type": "<string>",
    "id": 123,
    "body": "<string>",
    "link": "<string>"
  },
  "prepared_invoices": [],
  "revenue_recognitions": [],
  "cutover_date": "2023-12-25",
  "prior_recognized_amount": 1,
  "default_early_termination_fee": 1
}
'
import requests

url = "https://api.dualentry.com/public/v2/contracts/"

payload = {
    "custom_fields": [{}],
    "memo": "",
    "date": "2023-12-25",
    "start_date": "2023-12-25",
    "end_date": "2023-12-25",
    "company_id": 123,
    "customer_id": 123,
    "name": "",
    "currency_iso_4217_code": "USD",
    "bill_to_address": "",
    "billing_address": {
        "street": "<string>",
        "city": "<string>",
        "postal_code": "<string>",
        "state": "",
        "country": "",
        "second_line": "",
        "name": "<string>"
    },
    "ship_to_address": "",
    "shipping_address": {
        "street": "<string>",
        "city": "<string>",
        "postal_code": "<string>",
        "state": "",
        "country": "",
        "second_line": "",
        "name": "<string>"
    },
    "obligations": [],
    "term_id": 123,
    "default_ar_account_id": 123,
    "contract_template_id": 123,
    "billing_start_date": "2023-12-25",
    "billing_frequency": "monthly",
    "billing_interval": 1,
    "billing_anchor_weekday": 3,
    "recognition_start_date": "2023-12-25",
    "recognition_frequency": "monthly",
    "recognition_interval": 1,
    "recognition_anchor_weekday": 3,
    "recognition_mode": "individual",
    "contract_attachments": [],
    "change_orders_attachments": [],
    "payment": {
        "type": "<string>",
        "id": 123,
        "body": "<string>",
        "link": "<string>"
    },
    "prepared_invoices": [],
    "revenue_recognitions": [],
    "cutover_date": "2023-12-25",
    "prior_recognized_amount": 1,
    "default_early_termination_fee": 1
}
headers = {
    "X-API-KEY": "<api-key>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
  method: 'POST',
  headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
  body: JSON.stringify({
    custom_fields: [{}],
    memo: '',
    date: '2023-12-25',
    start_date: '2023-12-25',
    end_date: '2023-12-25',
    company_id: 123,
    customer_id: 123,
    name: '',
    currency_iso_4217_code: 'USD',
    bill_to_address: '',
    billing_address: {
      street: '<string>',
      city: '<string>',
      postal_code: '<string>',
      state: '',
      country: '',
      second_line: '',
      name: '<string>'
    },
    ship_to_address: '',
    shipping_address: {
      street: '<string>',
      city: '<string>',
      postal_code: '<string>',
      state: '',
      country: '',
      second_line: '',
      name: '<string>'
    },
    obligations: [],
    term_id: 123,
    default_ar_account_id: 123,
    contract_template_id: 123,
    billing_start_date: '2023-12-25',
    billing_frequency: 'monthly',
    billing_interval: 1,
    billing_anchor_weekday: 3,
    recognition_start_date: '2023-12-25',
    recognition_frequency: 'monthly',
    recognition_interval: 1,
    recognition_anchor_weekday: 3,
    recognition_mode: 'individual',
    contract_attachments: [],
    change_orders_attachments: [],
    payment: {type: '<string>', id: 123, body: JSON.stringify('<string>'), link: '<string>'},
    prepared_invoices: [],
    revenue_recognitions: [],
    cutover_date: '2023-12-25',
    prior_recognized_amount: 1,
    default_early_termination_fee: 1
  })
};

fetch('https://api.dualentry.com/public/v2/contracts/', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.dualentry.com/public/v2/contracts/",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
    'custom_fields' => [
        [
                
        ]
    ],
    'memo' => '',
    'date' => '2023-12-25',
    'start_date' => '2023-12-25',
    'end_date' => '2023-12-25',
    'company_id' => 123,
    'customer_id' => 123,
    'name' => '',
    'currency_iso_4217_code' => 'USD',
    'bill_to_address' => '',
    'billing_address' => [
        'street' => '<string>',
        'city' => '<string>',
        'postal_code' => '<string>',
        'state' => '',
        'country' => '',
        'second_line' => '',
        'name' => '<string>'
    ],
    'ship_to_address' => '',
    'shipping_address' => [
        'street' => '<string>',
        'city' => '<string>',
        'postal_code' => '<string>',
        'state' => '',
        'country' => '',
        'second_line' => '',
        'name' => '<string>'
    ],
    'obligations' => [
        
    ],
    'term_id' => 123,
    'default_ar_account_id' => 123,
    'contract_template_id' => 123,
    'billing_start_date' => '2023-12-25',
    'billing_frequency' => 'monthly',
    'billing_interval' => 1,
    'billing_anchor_weekday' => 3,
    'recognition_start_date' => '2023-12-25',
    'recognition_frequency' => 'monthly',
    'recognition_interval' => 1,
    'recognition_anchor_weekday' => 3,
    'recognition_mode' => 'individual',
    'contract_attachments' => [
        
    ],
    'change_orders_attachments' => [
        
    ],
    'payment' => [
        'type' => '<string>',
        'id' => 123,
        'body' => '<string>',
        'link' => '<string>'
    ],
    'prepared_invoices' => [
        
    ],
    'revenue_recognitions' => [
        
    ],
    'cutover_date' => '2023-12-25',
    'prior_recognized_amount' => 1,
    'default_early_termination_fee' => 1
  ]),
  CURLOPT_HTTPHEADER => [
    "Content-Type: application/json",
    "X-API-KEY: <api-key>"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.dualentry.com/public/v2/contracts/"

	payload := strings.NewReader("{\n  \"custom_fields\": [\n    {}\n  ],\n  \"memo\": \"\",\n  \"date\": \"2023-12-25\",\n  \"start_date\": \"2023-12-25\",\n  \"end_date\": \"2023-12-25\",\n  \"company_id\": 123,\n  \"customer_id\": 123,\n  \"name\": \"\",\n  \"currency_iso_4217_code\": \"USD\",\n  \"bill_to_address\": \"\",\n  \"billing_address\": {\n    \"street\": \"<string>\",\n    \"city\": \"<string>\",\n    \"postal_code\": \"<string>\",\n    \"state\": \"\",\n    \"country\": \"\",\n    \"second_line\": \"\",\n    \"name\": \"<string>\"\n  },\n  \"ship_to_address\": \"\",\n  \"shipping_address\": {\n    \"street\": \"<string>\",\n    \"city\": \"<string>\",\n    \"postal_code\": \"<string>\",\n    \"state\": \"\",\n    \"country\": \"\",\n    \"second_line\": \"\",\n    \"name\": \"<string>\"\n  },\n  \"obligations\": [],\n  \"term_id\": 123,\n  \"default_ar_account_id\": 123,\n  \"contract_template_id\": 123,\n  \"billing_start_date\": \"2023-12-25\",\n  \"billing_frequency\": \"monthly\",\n  \"billing_interval\": 1,\n  \"billing_anchor_weekday\": 3,\n  \"recognition_start_date\": \"2023-12-25\",\n  \"recognition_frequency\": \"monthly\",\n  \"recognition_interval\": 1,\n  \"recognition_anchor_weekday\": 3,\n  \"recognition_mode\": \"individual\",\n  \"contract_attachments\": [],\n  \"change_orders_attachments\": [],\n  \"payment\": {\n    \"type\": \"<string>\",\n    \"id\": 123,\n    \"body\": \"<string>\",\n    \"link\": \"<string>\"\n  },\n  \"prepared_invoices\": [],\n  \"revenue_recognitions\": [],\n  \"cutover_date\": \"2023-12-25\",\n  \"prior_recognized_amount\": 1,\n  \"default_early_termination_fee\": 1\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("X-API-KEY", "<api-key>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.dualentry.com/public/v2/contracts/")
  .header("X-API-KEY", "<api-key>")
  .header("Content-Type", "application/json")
  .body("{\n  \"custom_fields\": [\n    {}\n  ],\n  \"memo\": \"\",\n  \"date\": \"2023-12-25\",\n  \"start_date\": \"2023-12-25\",\n  \"end_date\": \"2023-12-25\",\n  \"company_id\": 123,\n  \"customer_id\": 123,\n  \"name\": \"\",\n  \"currency_iso_4217_code\": \"USD\",\n  \"bill_to_address\": \"\",\n  \"billing_address\": {\n    \"street\": \"<string>\",\n    \"city\": \"<string>\",\n    \"postal_code\": \"<string>\",\n    \"state\": \"\",\n    \"country\": \"\",\n    \"second_line\": \"\",\n    \"name\": \"<string>\"\n  },\n  \"ship_to_address\": \"\",\n  \"shipping_address\": {\n    \"street\": \"<string>\",\n    \"city\": \"<string>\",\n    \"postal_code\": \"<string>\",\n    \"state\": \"\",\n    \"country\": \"\",\n    \"second_line\": \"\",\n    \"name\": \"<string>\"\n  },\n  \"obligations\": [],\n  \"term_id\": 123,\n  \"default_ar_account_id\": 123,\n  \"contract_template_id\": 123,\n  \"billing_start_date\": \"2023-12-25\",\n  \"billing_frequency\": \"monthly\",\n  \"billing_interval\": 1,\n  \"billing_anchor_weekday\": 3,\n  \"recognition_start_date\": \"2023-12-25\",\n  \"recognition_frequency\": \"monthly\",\n  \"recognition_interval\": 1,\n  \"recognition_anchor_weekday\": 3,\n  \"recognition_mode\": \"individual\",\n  \"contract_attachments\": [],\n  \"change_orders_attachments\": [],\n  \"payment\": {\n    \"type\": \"<string>\",\n    \"id\": 123,\n    \"body\": \"<string>\",\n    \"link\": \"<string>\"\n  },\n  \"prepared_invoices\": [],\n  \"revenue_recognitions\": [],\n  \"cutover_date\": \"2023-12-25\",\n  \"prior_recognized_amount\": 1,\n  \"default_early_termination_fee\": 1\n}")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://api.dualentry.com/public/v2/contracts/")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"custom_fields\": [\n    {}\n  ],\n  \"memo\": \"\",\n  \"date\": \"2023-12-25\",\n  \"start_date\": \"2023-12-25\",\n  \"end_date\": \"2023-12-25\",\n  \"company_id\": 123,\n  \"customer_id\": 123,\n  \"name\": \"\",\n  \"currency_iso_4217_code\": \"USD\",\n  \"bill_to_address\": \"\",\n  \"billing_address\": {\n    \"street\": \"<string>\",\n    \"city\": \"<string>\",\n    \"postal_code\": \"<string>\",\n    \"state\": \"\",\n    \"country\": \"\",\n    \"second_line\": \"\",\n    \"name\": \"<string>\"\n  },\n  \"ship_to_address\": \"\",\n  \"shipping_address\": {\n    \"street\": \"<string>\",\n    \"city\": \"<string>\",\n    \"postal_code\": \"<string>\",\n    \"state\": \"\",\n    \"country\": \"\",\n    \"second_line\": \"\",\n    \"name\": \"<string>\"\n  },\n  \"obligations\": [],\n  \"term_id\": 123,\n  \"default_ar_account_id\": 123,\n  \"contract_template_id\": 123,\n  \"billing_start_date\": \"2023-12-25\",\n  \"billing_frequency\": \"monthly\",\n  \"billing_interval\": 1,\n  \"billing_anchor_weekday\": 3,\n  \"recognition_start_date\": \"2023-12-25\",\n  \"recognition_frequency\": \"monthly\",\n  \"recognition_interval\": 1,\n  \"recognition_anchor_weekday\": 3,\n  \"recognition_mode\": \"individual\",\n  \"contract_attachments\": [],\n  \"change_orders_attachments\": [],\n  \"payment\": {\n    \"type\": \"<string>\",\n    \"id\": 123,\n    \"body\": \"<string>\",\n    \"link\": \"<string>\"\n  },\n  \"prepared_invoices\": [],\n  \"revenue_recognitions\": [],\n  \"cutover_date\": \"2023-12-25\",\n  \"prior_recognized_amount\": 1,\n  \"default_early_termination_fee\": 1\n}"

response = http.request(request)
puts response.read_body
{
  "id": 123,
  "number": 123,
  "name": "<string>",
  "memo": "<string>",
  "date": "2023-12-25",
  "start_date": "2023-12-25",
  "bill_to_address": "<string>",
  "ship_to_address": "<string>",
  "is_incomplete": true,
  "is_locked": true,
  "revenue_recognitions": [
    {
      "id": 123,
      "number": 123,
      "contract_id": 123,
      "date": "2023-12-25",
      "transaction_date": "2023-12-25",
      "amount": "<string>",
      "transaction_id": 123,
      "income_account_id": 123,
      "deferrered_revenue_account_id": 123,
      "performance_obligation_id": 123,
      "is_reversal": false
    }
  ],
  "invoices": [
    {
      "id": 123,
      "number": 123,
      "date": "2023-12-25",
      "due_date": "2023-12-25",
      "amount": "<string>",
      "tax_amount": "<string>",
      "paid_total": "<string>",
      "source": "<string>",
      "term_id": 123
    }
  ],
  "obligations": [
    {
      "position": 123,
      "memo": "<string>",
      "billing_start_date": "2023-12-25",
      "billing_interval": 123,
      "recognition_start_date": "2023-12-25",
      "recognition_interval": 123,
      "is_incomplete": true,
      "amount": "<string>",
      "discount_amount": "<string>",
      "net_amount": "<string>",
      "qualifies_for_mrr": true,
      "id": 123,
      "item_id": 123,
      "item_type": "<string>",
      "item_name": "<string>",
      "hsn_sac_code": "<string>",
      "quantity": "<string>",
      "rate": "<string>",
      "standalone_selling_price": "<string>",
      "term_id": 123,
      "billing_group": 1,
      "recognition_strategy": "straight_line",
      "obligation_conditions": {},
      "classifications": [],
      "billing_end_date": "2023-12-25",
      "sync_billing_with_recognition": false,
      "skip_invoice_generation": false,
      "recognition_end_date": "2023-12-25",
      "discount_value": "<string>",
      "allocated_amount": "<string>",
      "selected_vat_rate_id": 123,
      "selected_gst_tax_rate_id": 123,
      "is_auto_renewable": false,
      "auto_renewal_date": "2023-12-25",
      "renewed_from_id": 123,
      "changed_from_id": 123,
      "change_lineage_root_id": 123
    }
  ],
  "obligation_usage": [
    {
      "id": 123,
      "contract_id": 123,
      "obligation_id": 123,
      "usage_date": "2023-12-25",
      "quantity": "<string>",
      "amount": "<string>",
      "effective_rate": "<string>",
      "created_at": "2023-11-07T05:31:56Z",
      "updated_at": "2023-11-07T05:31:56Z",
      "rate": "<string>",
      "revenue_recognition_id": 123,
      "invoice_status": "<string>",
      "memo": "",
      "classifications": []
    }
  ],
  "amount": "<string>",
  "metrics": {
    "mrr": "<string>",
    "arr": "<string>",
    "amount_invoiced": "<string>",
    "invoices_paid": "<string>",
    "revenue_recognized": "<string>",
    "unbilled_revenue": "<string>",
    "unrecognized_revenue": "<string>",
    "deferred_revenue": "<string>",
    "total_contract_value": "<string>",
    "amount_invoiced_percentage": "<string>",
    "invoices_paid_percentage": "<string>",
    "revenue_recognized_percentage": "<string>",
    "next_invoice_date": "2023-12-25",
    "total_discount_amount": "0",
    "total_tax_amount": "0"
  },
  "custom_fields": [],
  "completed_approvals_count": 0,
  "total_approvals_count": 0,
  "integration_remote_records": [],
  "company_id": 123,
  "company_name": "<string>",
  "customer_id": 123,
  "customer_name": "<string>",
  "term_id": 123,
  "default_ar_account_id": 123,
  "contract_template_id": 123,
  "end_date": "2023-12-25",
  "billing_address": {
    "street": "<string>",
    "city": "<string>",
    "postal_code": "<string>",
    "state": "",
    "country": "",
    "second_line": "",
    "name": "<string>"
  },
  "shipping_address": {
    "street": "<string>",
    "city": "<string>",
    "postal_code": "<string>",
    "state": "",
    "country": "",
    "second_line": "",
    "name": "<string>"
  },
  "billing_anchor_weekday": 123,
  "recognition_anchor_weekday": 123,
  "cutover_date": "2023-12-25",
  "prior_recognized_amount": "<string>",
  "default_early_termination_fee": "<string>",
  "recognition_mode": "individual",
  "workflow_status": "<string>",
  "pending_approvers_count": 0,
  "payment": {
    "type": "<string>",
    "id": 123,
    "body": "<string>",
    "link": "<string>"
  },
  "renewed_end_date": "2023-12-25",
  "next_renewal_date": "2023-12-25",
  "days_till_expiry": 123,
  "termination": {
    "id": 123,
    "number": 123,
    "contract_id": 123,
    "termination_type": "<string>",
    "termination_date": "2023-12-25",
    "transaction_id": 123,
    "memo": "<string>",
    "date": "2023-12-25",
    "early_termination_fee": "<string>",
    "early_termination_fee_item_id": 123,
    "fee_invoice_id": 123,
    "refund_amount": "<string>",
    "refund_credit_account_id": 123
  },
  "change_orders": [],
  "customer_credits": [],
  "cached_metrics": {
    "tcv": "<string>",
    "mrr": "0",
    "arr": "0",
    "amount_invoiced_percentage": "<string>",
    "revenue_recognized": "0",
    "revenue_recognized_percentage": "<string>",
    "next_invoice_date": "2023-12-25"
  },
  "has_usage_obligations": false,
  "has_usages": false,
  "approval_info": {
    "workflow_name": "<string>",
    "workflow_version": 123,
    "step_name": "<string>",
    "current_substep": 123,
    "substeps": [
      {
        "order": 123,
        "approvers": [
          {
            "id": 123,
            "first_name": "<string>",
            "last_name": "<string>",
            "email": "<string>",
            "full_name": "<string>",
            "avatar_url": "<string>"
          }
        ],
        "approved_by": [
          {
            "id": 123,
            "first_name": "<string>",
            "last_name": "<string>",
            "email": "<string>",
            "full_name": "<string>",
            "avatar_url": "<string>"
          }
        ],
        "rejected_by": [
          {
            "id": 123,
            "first_name": "<string>",
            "last_name": "<string>",
            "email": "<string>",
            "full_name": "<string>",
            "avatar_url": "<string>"
          }
        ]
      }
    ]
  },
  "approval_chain": {
    "workflow_name": "<string>",
    "workflow_version": 123,
    "steps": [
      {
        "order": 123,
        "name": "<string>",
        "substeps": [
          {
            "order": 123,
            "approvers": [
              {
                "id": 123,
                "first_name": "<string>",
                "last_name": "<string>",
                "email": "<string>",
                "full_name": "<string>",
                "avatar_url": "<string>"
              }
            ],
            "approved_by": [
              {
                "id": 123,
                "first_name": "<string>",
                "last_name": "<string>",
                "email": "<string>",
                "full_name": "<string>",
                "avatar_url": "<string>"
              }
            ],
            "rejected_by": [
              {
                "id": 123,
                "first_name": "<string>",
                "last_name": "<string>",
                "email": "<string>",
                "full_name": "<string>",
                "avatar_url": "<string>"
              }
            ]
          }
        ],
        "approvers": [
          {
            "id": 123,
            "first_name": "<string>",
            "last_name": "<string>",
            "email": "<string>",
            "full_name": "<string>",
            "avatar_url": "<string>"
          }
        ],
        "approved_by": [
          {
            "id": 123,
            "first_name": "<string>",
            "last_name": "<string>",
            "email": "<string>",
            "full_name": "<string>",
            "avatar_url": "<string>"
          }
        ],
        "rejected_by": [
          {
            "id": 123,
            "first_name": "<string>",
            "last_name": "<string>",
            "email": "<string>",
            "full_name": "<string>",
            "avatar_url": "<string>"
          }
        ]
      }
    ]
  },
  "bank_match_status": "<string>",
  "contract_attachments": [],
  "change_orders_attachments": []
}
{
  "errors": {},
  "success": false
}
{
  "errors": {},
  "success": false
}

Authorizations

X-API-KEY
string
header
required

Body

application/json
status
enum<string>
required
Available options:
draft,
active,
completed,
terminated,
archived
custom_fields
Custom Fields · object[] | null
memo
string
default:""
Maximum string length: 512
date
string<date>
start_date
string<date>
end_date
string<date> | null
company_id
integer | null
customer_id
integer | null
name
string
default:""
Maximum string length: 128
currency_iso_4217_code
enum<string>
default:USD
Available options:
AED,
AFN,
ALL,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BTN,
BWP,
BYN,
BZD,
CAD,
CDF,
CHF,
CLF,
CLP,
CNY,
COP,
CRC,
CUP,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ERN,
ETB,
EUR,
FJD,
FKP,
GBP,
GEL,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HTG,
HUF,
IDR,
ILS,
INR,
IQD,
IRR,
ISK,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KMF,
KPW,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MRU,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SDG,
SEK,
SGD,
SHP,
SLL,
SOS,
SRD,
STN,
SVC,
SYP,
SZL,
THB,
TJS,
TMT,
TND,
TOP,
TRY,
TTD,
TWD,
TZS,
UAH,
UGX,
USD,
UYU,
UZS,
VES,
VND,
VUV,
WST,
XAF,
XAG,
XAU,
XCD,
XDR,
XOF,
XPD,
XPF,
XPT,
YER,
ZAR,
ZMW,
ZWL
bill_to_address
string
default:""
billing_address
AddressSchemaIn · object | null
ship_to_address
string
default:""
shipping_address
AddressSchemaIn · object | null
obligations
PerformanceObligationIn · object[]
term_id
integer | null
default_ar_account_id
integer | null
contract_template_id
integer | null
billing_start_date
string<date> | null
billing_frequency
enum<string>
default:monthly
Available options:
one_time,
daily,
weekly,
monthly,
quarterly,
semi_annually,
annually
billing_interval
integer
default:1
Required range: x >= 1
billing_anchor_weekday
integer | null

Optional weekday anchor for weekly billing (0=Monday)

Required range: 0 <= x <= 6
recognition_start_date
string<date> | null
recognition_frequency
enum<string>
default:monthly
Available options:
daily,
weekly,
monthly,
quarterly,
semi_annually,
annually
recognition_interval
integer
default:1
Required range: x >= 1
recognition_anchor_weekday
integer | null

Optional weekday anchor for weekly recognition (0=Monday)

Required range: 0 <= x <= 6
recognition_mode
enum<string>
default:individual
Available options:
individual,
subledger
contract_attachments
AttachmentSchemaOut · object[]
change_orders_attachments
AttachmentSchemaOut · object[]
payment
PaymentSchemaIn · object | null

Schema for payment collection configuration input (matches frontend structure).

prepared_invoices
InvoiceSchemaCreateIn · object[]
revenue_recognitions
RevenueRecognitionSchemaCreateIn · object[]
cutover_date
string<date> | null
prior_recognized_amount
Required range: x >= 0
default_early_termination_fee
Required range: x >= 0

Response

Created

Full detail schema — extends list schema with attachments and obligation usage.

id
integer
required
number
integer
required
name
string
required
currency_iso_4217_code
enum<string>
required
Available options:
AED,
AFN,
ALL,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BTN,
BWP,
BYN,
BZD,
CAD,
CDF,
CHF,
CLF,
CLP,
CNY,
COP,
CRC,
CUP,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ERN,
ETB,
EUR,
FJD,
FKP,
GBP,
GEL,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HTG,
HUF,
IDR,
ILS,
INR,
IQD,
IRR,
ISK,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KMF,
KPW,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MRU,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SDG,
SEK,
SGD,
SHP,
SLL,
SOS,
SRD,
STN,
SVC,
SYP,
SZL,
THB,
TJS,
TMT,
TND,
TOP,
TRY,
TTD,
TWD,
TZS,
UAH,
UGX,
USD,
UYU,
UZS,
VES,
VND,
VUV,
WST,
XAF,
XAG,
XAU,
XCD,
XDR,
XOF,
XPD,
XPF,
XPT,
YER,
ZAR,
ZMW,
ZWL
memo
string
required
date
string<date>
required
start_date
string<date>
required
bill_to_address
string
required
ship_to_address
string
required
is_incomplete
boolean
required
status
enum<string>
required
Available options:
draft,
active,
completed,
terminated,
archived
record_status
enum<string>
required
Available options:
draft,
posted,
archived
is_locked
boolean
required
revenue_recognitions
RevenueRecognitionSchemaOut · object[]
required
invoices
ContractInvoiceSchemaOut · object[]
required
obligations
PerformanceObligationOut · object[]
required
obligation_usage
ObligationUsageSchemaOut · object[]
required
amount
string
required
Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
metrics
ContractMetricsSchemaOut · object
required
read-only

Derived contract metrics (MRR, ARR, TCV, invoiced, recognized, etc.).

custom_fields
CustomFieldValuePairOutputSchema · object[]
completed_approvals_count
integer
default:0
total_approvals_count
integer
default:0
integration_remote_records
IntegrationRemoteRecordSchemaOut · object[]
company_id
integer | null
company_name
string | null
company_currency
enum<string> | null
Available options:
AED,
AFN,
ALL,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BTN,
BWP,
BYN,
BZD,
CAD,
CDF,
CHF,
CLF,
CLP,
CNY,
COP,
CRC,
CUP,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ERN,
ETB,
EUR,
FJD,
FKP,
GBP,
GEL,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HTG,
HUF,
IDR,
ILS,
INR,
IQD,
IRR,
ISK,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KMF,
KPW,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MRU,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SDG,
SEK,
SGD,
SHP,
SLL,
SOS,
SRD,
STN,
SVC,
SYP,
SZL,
THB,
TJS,
TMT,
TND,
TOP,
TRY,
TTD,
TWD,
TZS,
UAH,
UGX,
USD,
UYU,
UZS,
VES,
VND,
VUV,
WST,
XAF,
XAG,
XAU,
XCD,
XDR,
XOF,
XPD,
XPF,
XPT,
YER,
ZAR,
ZMW,
ZWL
customer_id
integer | null
customer_name
string | null
term_id
integer | null
default_ar_account_id
integer | null
contract_template_id
integer | null
end_date
string<date> | null
billing_address
AddressSchemaIn · object | null
shipping_address
AddressSchemaIn · object | null
billing_anchor_weekday
integer | null
recognition_anchor_weekday
integer | null
cutover_date
string<date> | null
prior_recognized_amount
string | null
Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
default_early_termination_fee
string | null
Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
recognition_mode
enum<string>
default:individual
Available options:
individual,
subledger
workflow_status
string | null
pending_approvers_count
integer
default:0
payment
PaymentSchemaOut · object | null

Schema for payment collection configuration output.

renewed_end_date
string<date> | null
next_renewal_date
string<date> | null
days_till_expiry
integer | null
termination
EmbeddedTerminationSchemaOut · object | null
change_orders
EmbeddedChangeOrderSchemaOut · object[]
customer_credits
ContractCustomerCreditSchemaOut · object[]
cached_metrics
ContractCachedMetricsSchemaOut · object | null

Precomputed contract metrics from the cache table.

has_usage_obligations
boolean
default:false
has_usages
boolean
default:false
approval_info
ApprovalInfoSchema · object | null

Schema for complete approval workflow information.

approval_chain
ApprovalChainSchema · object | null

Full approval chain.

bank_match_status
string | null
contract_attachments
AttachmentSchemaOut · object[]
change_orders_attachments
AttachmentSchemaOut · object[]
Last modified on July 13, 2026