curl --request POST \
--url https://api.dualentry.com/public/v3-alpha/quotes/ \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"company_id": 123,
"email": "<string>",
"currency_iso_4217_code": "<string>",
"close_date": "2023-12-25",
"contract_start_date": "2023-12-25",
"bill_to_address": "",
"ship_to_address": "",
"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>"
},
"valid_until": "2023-12-25",
"customer_id": 123,
"name": "",
"term_id": 123,
"memo": "",
"contract_end_type": "after",
"number_of_months": 12,
"contract_end_date": "2023-12-25",
"contract_legal_terms": "<string>",
"document_total_rows": [],
"document_year_by_year": true,
"items": [],
"recipients": [
{
"id": 123,
"organization_user_id": 123,
"customer_id": 123,
"name": "",
"email": "",
"is_signer": true,
"signing_order": 2,
"position": 1
}
],
"record_status": "posted"
}
'import requests
url = "https://api.dualentry.com/public/v3-alpha/quotes/"
payload = {
"company_id": 123,
"email": "<string>",
"currency_iso_4217_code": "<string>",
"close_date": "2023-12-25",
"contract_start_date": "2023-12-25",
"bill_to_address": "",
"ship_to_address": "",
"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>"
},
"valid_until": "2023-12-25",
"customer_id": 123,
"name": "",
"term_id": 123,
"memo": "",
"contract_end_type": "after",
"number_of_months": 12,
"contract_end_date": "2023-12-25",
"contract_legal_terms": "<string>",
"document_total_rows": [],
"document_year_by_year": True,
"items": [],
"recipients": [
{
"id": 123,
"organization_user_id": 123,
"customer_id": 123,
"name": "",
"email": "",
"is_signer": True,
"signing_order": 2,
"position": 1
}
],
"record_status": "posted"
}
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({
company_id: 123,
email: '<string>',
currency_iso_4217_code: '<string>',
close_date: '2023-12-25',
contract_start_date: '2023-12-25',
bill_to_address: '',
ship_to_address: '',
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>'
},
valid_until: '2023-12-25',
customer_id: 123,
name: '',
term_id: 123,
memo: '',
contract_end_type: 'after',
number_of_months: 12,
contract_end_date: '2023-12-25',
contract_legal_terms: '<string>',
document_total_rows: [],
document_year_by_year: true,
items: [],
recipients: [
{
id: 123,
organization_user_id: 123,
customer_id: 123,
name: '',
email: '',
is_signer: true,
signing_order: 2,
position: 1
}
],
record_status: 'posted'
})
};
fetch('https://api.dualentry.com/public/v3-alpha/quotes/', 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/v3-alpha/quotes/",
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([
'company_id' => 123,
'email' => '<string>',
'currency_iso_4217_code' => '<string>',
'close_date' => '2023-12-25',
'contract_start_date' => '2023-12-25',
'bill_to_address' => '',
'ship_to_address' => '',
'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>'
],
'valid_until' => '2023-12-25',
'customer_id' => 123,
'name' => '',
'term_id' => 123,
'memo' => '',
'contract_end_type' => 'after',
'number_of_months' => 12,
'contract_end_date' => '2023-12-25',
'contract_legal_terms' => '<string>',
'document_total_rows' => [
],
'document_year_by_year' => true,
'items' => [
],
'recipients' => [
[
'id' => 123,
'organization_user_id' => 123,
'customer_id' => 123,
'name' => '',
'email' => '',
'is_signer' => true,
'signing_order' => 2,
'position' => 1
]
],
'record_status' => 'posted'
]),
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/v3-alpha/quotes/"
payload := strings.NewReader("{\n \"company_id\": 123,\n \"email\": \"<string>\",\n \"currency_iso_4217_code\": \"<string>\",\n \"close_date\": \"2023-12-25\",\n \"contract_start_date\": \"2023-12-25\",\n \"bill_to_address\": \"\",\n \"ship_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 \"shipping_address\": {\n \"street\": \"<string>\",\n \"city\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"\",\n \"country\": \"\",\n \"second_line\": \"\",\n \"name\": \"<string>\"\n },\n \"valid_until\": \"2023-12-25\",\n \"customer_id\": 123,\n \"name\": \"\",\n \"term_id\": 123,\n \"memo\": \"\",\n \"contract_end_type\": \"after\",\n \"number_of_months\": 12,\n \"contract_end_date\": \"2023-12-25\",\n \"contract_legal_terms\": \"<string>\",\n \"document_total_rows\": [],\n \"document_year_by_year\": true,\n \"items\": [],\n \"recipients\": [\n {\n \"id\": 123,\n \"organization_user_id\": 123,\n \"customer_id\": 123,\n \"name\": \"\",\n \"email\": \"\",\n \"is_signer\": true,\n \"signing_order\": 2,\n \"position\": 1\n }\n ],\n \"record_status\": \"posted\"\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/v3-alpha/quotes/")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"company_id\": 123,\n \"email\": \"<string>\",\n \"currency_iso_4217_code\": \"<string>\",\n \"close_date\": \"2023-12-25\",\n \"contract_start_date\": \"2023-12-25\",\n \"bill_to_address\": \"\",\n \"ship_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 \"shipping_address\": {\n \"street\": \"<string>\",\n \"city\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"\",\n \"country\": \"\",\n \"second_line\": \"\",\n \"name\": \"<string>\"\n },\n \"valid_until\": \"2023-12-25\",\n \"customer_id\": 123,\n \"name\": \"\",\n \"term_id\": 123,\n \"memo\": \"\",\n \"contract_end_type\": \"after\",\n \"number_of_months\": 12,\n \"contract_end_date\": \"2023-12-25\",\n \"contract_legal_terms\": \"<string>\",\n \"document_total_rows\": [],\n \"document_year_by_year\": true,\n \"items\": [],\n \"recipients\": [\n {\n \"id\": 123,\n \"organization_user_id\": 123,\n \"customer_id\": 123,\n \"name\": \"\",\n \"email\": \"\",\n \"is_signer\": true,\n \"signing_order\": 2,\n \"position\": 1\n }\n ],\n \"record_status\": \"posted\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dualentry.com/public/v3-alpha/quotes/")
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 \"company_id\": 123,\n \"email\": \"<string>\",\n \"currency_iso_4217_code\": \"<string>\",\n \"close_date\": \"2023-12-25\",\n \"contract_start_date\": \"2023-12-25\",\n \"bill_to_address\": \"\",\n \"ship_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 \"shipping_address\": {\n \"street\": \"<string>\",\n \"city\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"\",\n \"country\": \"\",\n \"second_line\": \"\",\n \"name\": \"<string>\"\n },\n \"valid_until\": \"2023-12-25\",\n \"customer_id\": 123,\n \"name\": \"\",\n \"term_id\": 123,\n \"memo\": \"\",\n \"contract_end_type\": \"after\",\n \"number_of_months\": 12,\n \"contract_end_date\": \"2023-12-25\",\n \"contract_legal_terms\": \"<string>\",\n \"document_total_rows\": [],\n \"document_year_by_year\": true,\n \"items\": [],\n \"recipients\": [\n {\n \"id\": 123,\n \"organization_user_id\": 123,\n \"customer_id\": 123,\n \"name\": \"\",\n \"email\": \"\",\n \"is_signer\": true,\n \"signing_order\": 2,\n \"position\": 1\n }\n ],\n \"record_status\": \"posted\"\n}"
response = http.request(request)
puts response.read_body{
"bill_to_address": "<string>",
"ship_to_address": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"id": 123,
"number": 123,
"record_status": "draft",
"valid_until": "2023-12-25",
"company_id": 123,
"company_name": "<string>",
"company_currency": "<string>",
"customer_id": 123,
"customer_name": "<string>",
"name": "<string>",
"email": "<string>",
"currency_iso_4217_code": "<string>",
"term_id": 123,
"term_name": "<string>",
"memo": "<string>",
"close_date": "2023-12-25",
"contract_start_date": "2023-12-25",
"contract_end_type": "after",
"number_of_months": 123,
"contract_end_date": "2023-12-25",
"contract_legal_terms": "<string>",
"sent_at": "2023-11-07T05:31:56Z",
"document_headline_total": "tcv",
"document_total_rows": [
"one_time"
],
"document_year_by_year": true,
"items": [
{
"id": 123,
"item_id": 123,
"item_name": "<string>",
"quantity": "<string>",
"rate": "<string>",
"position": 123,
"memo": "<string>",
"billing_frequency": "one_time",
"billing_interval": 123,
"billing_start_date": "2023-12-25",
"billing_end_date": "2023-12-25",
"service_start_date": "2023-12-25",
"service_end_date": "2023-12-25",
"periods_in_term": 123,
"ramp_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"net_amount": "<string>",
"tax_amount": "<string>",
"gross_amount": "<string>",
"amount": "<string>",
"discount_amount": "<string>",
"line_tcv": "<string>",
"item_type": "<string>",
"hsn_sac_code": "<string>",
"discount_type": "PERCENTAGE",
"discount_value": "<string>",
"tax": {
"code": "<string>",
"rate": "<string>",
"amount": "<string>",
"is_taxable": true,
"tax_exempt_amount": "<string>",
"vat_rate_id": 123,
"gst_tax_rate_id": 123,
"tax_metadata": {},
"tax_components": [
{
"component_type": "CGST",
"rate": "<string>",
"amount": "<string>",
"position": 123,
"region": "<string>"
}
],
"amount_with_tax": "<string>",
"rate_name": "<string>",
"rate_description": "<string>",
"rate_type": "<string>",
"tax_treatment": "<string>",
"valid_to": "2023-12-25"
}
}
],
"recipients": [
{
"id": 123,
"side": "company",
"organization_user_id": 123,
"customer_id": 123,
"name": "<string>",
"email": "<string>",
"is_signer": true,
"signing_order": 123,
"position": 123
}
],
"subtotal": "<string>",
"discount_total": "<string>",
"tax_total": "<string>",
"amount": "<string>",
"contract_value": "<string>",
"totals": {
"one_time": {
"subtotal": "<string>",
"discount_total": "<string>",
"tax_total": "<string>",
"total": "<string>"
},
"recurring": [
{
"subtotal": "<string>",
"discount_total": "<string>",
"tax_total": "<string>",
"total": "<string>",
"billing_frequency": "one_time",
"billing_interval": 123
}
],
"mrr": "<string>",
"arr": "<string>",
"first_invoice_amount": "<string>",
"first_year_value": "<string>",
"tcv": "<string>",
"initial_term_tcv": "<string>",
"years": [
{
"year": 123,
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"total": "<string>"
}
]
},
"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>"
},
"completed_approvals_count": 0,
"total_approvals_count": 0,
"workflow_status": "<string>",
"pending_approvers_count": 0,
"send_status": "draft",
"can_send": false,
"approval_info": {
"workflow_name": "<string>",
"workflow_version": 123,
"step_name": "<string>",
"current_substep": 123,
"substeps": [
{
"order": 123,
"status": "completed",
"approve_condition": "any",
"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>",
"status": "completed",
"approve_condition": "any",
"substeps": [
{
"order": 123,
"status": "completed",
"approve_condition": "any",
"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>",
"code": "<string>",
"created_by": {
"actor_type": "<string>",
"email": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
},
"updated_by": {
"actor_type": "<string>",
"email": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"errors": {},
"success": false,
"error_code": "<string>",
"error_reason": "<string>"
}{
"errors": {},
"success": false,
"error_code": "<string>",
"error_reason": "<string>"
}{
"errors": {},
"success": false,
"error_code": "<string>",
"error_reason": "<string>"
}Create Quote record
Create a new Quote record with the provided data. Validates all required fields and business rules.
curl --request POST \
--url https://api.dualentry.com/public/v3-alpha/quotes/ \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"company_id": 123,
"email": "<string>",
"currency_iso_4217_code": "<string>",
"close_date": "2023-12-25",
"contract_start_date": "2023-12-25",
"bill_to_address": "",
"ship_to_address": "",
"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>"
},
"valid_until": "2023-12-25",
"customer_id": 123,
"name": "",
"term_id": 123,
"memo": "",
"contract_end_type": "after",
"number_of_months": 12,
"contract_end_date": "2023-12-25",
"contract_legal_terms": "<string>",
"document_total_rows": [],
"document_year_by_year": true,
"items": [],
"recipients": [
{
"id": 123,
"organization_user_id": 123,
"customer_id": 123,
"name": "",
"email": "",
"is_signer": true,
"signing_order": 2,
"position": 1
}
],
"record_status": "posted"
}
'import requests
url = "https://api.dualentry.com/public/v3-alpha/quotes/"
payload = {
"company_id": 123,
"email": "<string>",
"currency_iso_4217_code": "<string>",
"close_date": "2023-12-25",
"contract_start_date": "2023-12-25",
"bill_to_address": "",
"ship_to_address": "",
"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>"
},
"valid_until": "2023-12-25",
"customer_id": 123,
"name": "",
"term_id": 123,
"memo": "",
"contract_end_type": "after",
"number_of_months": 12,
"contract_end_date": "2023-12-25",
"contract_legal_terms": "<string>",
"document_total_rows": [],
"document_year_by_year": True,
"items": [],
"recipients": [
{
"id": 123,
"organization_user_id": 123,
"customer_id": 123,
"name": "",
"email": "",
"is_signer": True,
"signing_order": 2,
"position": 1
}
],
"record_status": "posted"
}
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({
company_id: 123,
email: '<string>',
currency_iso_4217_code: '<string>',
close_date: '2023-12-25',
contract_start_date: '2023-12-25',
bill_to_address: '',
ship_to_address: '',
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>'
},
valid_until: '2023-12-25',
customer_id: 123,
name: '',
term_id: 123,
memo: '',
contract_end_type: 'after',
number_of_months: 12,
contract_end_date: '2023-12-25',
contract_legal_terms: '<string>',
document_total_rows: [],
document_year_by_year: true,
items: [],
recipients: [
{
id: 123,
organization_user_id: 123,
customer_id: 123,
name: '',
email: '',
is_signer: true,
signing_order: 2,
position: 1
}
],
record_status: 'posted'
})
};
fetch('https://api.dualentry.com/public/v3-alpha/quotes/', 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/v3-alpha/quotes/",
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([
'company_id' => 123,
'email' => '<string>',
'currency_iso_4217_code' => '<string>',
'close_date' => '2023-12-25',
'contract_start_date' => '2023-12-25',
'bill_to_address' => '',
'ship_to_address' => '',
'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>'
],
'valid_until' => '2023-12-25',
'customer_id' => 123,
'name' => '',
'term_id' => 123,
'memo' => '',
'contract_end_type' => 'after',
'number_of_months' => 12,
'contract_end_date' => '2023-12-25',
'contract_legal_terms' => '<string>',
'document_total_rows' => [
],
'document_year_by_year' => true,
'items' => [
],
'recipients' => [
[
'id' => 123,
'organization_user_id' => 123,
'customer_id' => 123,
'name' => '',
'email' => '',
'is_signer' => true,
'signing_order' => 2,
'position' => 1
]
],
'record_status' => 'posted'
]),
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/v3-alpha/quotes/"
payload := strings.NewReader("{\n \"company_id\": 123,\n \"email\": \"<string>\",\n \"currency_iso_4217_code\": \"<string>\",\n \"close_date\": \"2023-12-25\",\n \"contract_start_date\": \"2023-12-25\",\n \"bill_to_address\": \"\",\n \"ship_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 \"shipping_address\": {\n \"street\": \"<string>\",\n \"city\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"\",\n \"country\": \"\",\n \"second_line\": \"\",\n \"name\": \"<string>\"\n },\n \"valid_until\": \"2023-12-25\",\n \"customer_id\": 123,\n \"name\": \"\",\n \"term_id\": 123,\n \"memo\": \"\",\n \"contract_end_type\": \"after\",\n \"number_of_months\": 12,\n \"contract_end_date\": \"2023-12-25\",\n \"contract_legal_terms\": \"<string>\",\n \"document_total_rows\": [],\n \"document_year_by_year\": true,\n \"items\": [],\n \"recipients\": [\n {\n \"id\": 123,\n \"organization_user_id\": 123,\n \"customer_id\": 123,\n \"name\": \"\",\n \"email\": \"\",\n \"is_signer\": true,\n \"signing_order\": 2,\n \"position\": 1\n }\n ],\n \"record_status\": \"posted\"\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/v3-alpha/quotes/")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"company_id\": 123,\n \"email\": \"<string>\",\n \"currency_iso_4217_code\": \"<string>\",\n \"close_date\": \"2023-12-25\",\n \"contract_start_date\": \"2023-12-25\",\n \"bill_to_address\": \"\",\n \"ship_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 \"shipping_address\": {\n \"street\": \"<string>\",\n \"city\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"\",\n \"country\": \"\",\n \"second_line\": \"\",\n \"name\": \"<string>\"\n },\n \"valid_until\": \"2023-12-25\",\n \"customer_id\": 123,\n \"name\": \"\",\n \"term_id\": 123,\n \"memo\": \"\",\n \"contract_end_type\": \"after\",\n \"number_of_months\": 12,\n \"contract_end_date\": \"2023-12-25\",\n \"contract_legal_terms\": \"<string>\",\n \"document_total_rows\": [],\n \"document_year_by_year\": true,\n \"items\": [],\n \"recipients\": [\n {\n \"id\": 123,\n \"organization_user_id\": 123,\n \"customer_id\": 123,\n \"name\": \"\",\n \"email\": \"\",\n \"is_signer\": true,\n \"signing_order\": 2,\n \"position\": 1\n }\n ],\n \"record_status\": \"posted\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dualentry.com/public/v3-alpha/quotes/")
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 \"company_id\": 123,\n \"email\": \"<string>\",\n \"currency_iso_4217_code\": \"<string>\",\n \"close_date\": \"2023-12-25\",\n \"contract_start_date\": \"2023-12-25\",\n \"bill_to_address\": \"\",\n \"ship_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 \"shipping_address\": {\n \"street\": \"<string>\",\n \"city\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"\",\n \"country\": \"\",\n \"second_line\": \"\",\n \"name\": \"<string>\"\n },\n \"valid_until\": \"2023-12-25\",\n \"customer_id\": 123,\n \"name\": \"\",\n \"term_id\": 123,\n \"memo\": \"\",\n \"contract_end_type\": \"after\",\n \"number_of_months\": 12,\n \"contract_end_date\": \"2023-12-25\",\n \"contract_legal_terms\": \"<string>\",\n \"document_total_rows\": [],\n \"document_year_by_year\": true,\n \"items\": [],\n \"recipients\": [\n {\n \"id\": 123,\n \"organization_user_id\": 123,\n \"customer_id\": 123,\n \"name\": \"\",\n \"email\": \"\",\n \"is_signer\": true,\n \"signing_order\": 2,\n \"position\": 1\n }\n ],\n \"record_status\": \"posted\"\n}"
response = http.request(request)
puts response.read_body{
"bill_to_address": "<string>",
"ship_to_address": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"id": 123,
"number": 123,
"record_status": "draft",
"valid_until": "2023-12-25",
"company_id": 123,
"company_name": "<string>",
"company_currency": "<string>",
"customer_id": 123,
"customer_name": "<string>",
"name": "<string>",
"email": "<string>",
"currency_iso_4217_code": "<string>",
"term_id": 123,
"term_name": "<string>",
"memo": "<string>",
"close_date": "2023-12-25",
"contract_start_date": "2023-12-25",
"contract_end_type": "after",
"number_of_months": 123,
"contract_end_date": "2023-12-25",
"contract_legal_terms": "<string>",
"sent_at": "2023-11-07T05:31:56Z",
"document_headline_total": "tcv",
"document_total_rows": [
"one_time"
],
"document_year_by_year": true,
"items": [
{
"id": 123,
"item_id": 123,
"item_name": "<string>",
"quantity": "<string>",
"rate": "<string>",
"position": 123,
"memo": "<string>",
"billing_frequency": "one_time",
"billing_interval": 123,
"billing_start_date": "2023-12-25",
"billing_end_date": "2023-12-25",
"service_start_date": "2023-12-25",
"service_end_date": "2023-12-25",
"periods_in_term": 123,
"ramp_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"net_amount": "<string>",
"tax_amount": "<string>",
"gross_amount": "<string>",
"amount": "<string>",
"discount_amount": "<string>",
"line_tcv": "<string>",
"item_type": "<string>",
"hsn_sac_code": "<string>",
"discount_type": "PERCENTAGE",
"discount_value": "<string>",
"tax": {
"code": "<string>",
"rate": "<string>",
"amount": "<string>",
"is_taxable": true,
"tax_exempt_amount": "<string>",
"vat_rate_id": 123,
"gst_tax_rate_id": 123,
"tax_metadata": {},
"tax_components": [
{
"component_type": "CGST",
"rate": "<string>",
"amount": "<string>",
"position": 123,
"region": "<string>"
}
],
"amount_with_tax": "<string>",
"rate_name": "<string>",
"rate_description": "<string>",
"rate_type": "<string>",
"tax_treatment": "<string>",
"valid_to": "2023-12-25"
}
}
],
"recipients": [
{
"id": 123,
"side": "company",
"organization_user_id": 123,
"customer_id": 123,
"name": "<string>",
"email": "<string>",
"is_signer": true,
"signing_order": 123,
"position": 123
}
],
"subtotal": "<string>",
"discount_total": "<string>",
"tax_total": "<string>",
"amount": "<string>",
"contract_value": "<string>",
"totals": {
"one_time": {
"subtotal": "<string>",
"discount_total": "<string>",
"tax_total": "<string>",
"total": "<string>"
},
"recurring": [
{
"subtotal": "<string>",
"discount_total": "<string>",
"tax_total": "<string>",
"total": "<string>",
"billing_frequency": "one_time",
"billing_interval": 123
}
],
"mrr": "<string>",
"arr": "<string>",
"first_invoice_amount": "<string>",
"first_year_value": "<string>",
"tcv": "<string>",
"initial_term_tcv": "<string>",
"years": [
{
"year": 123,
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"total": "<string>"
}
]
},
"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>"
},
"completed_approvals_count": 0,
"total_approvals_count": 0,
"workflow_status": "<string>",
"pending_approvers_count": 0,
"send_status": "draft",
"can_send": false,
"approval_info": {
"workflow_name": "<string>",
"workflow_version": 123,
"step_name": "<string>",
"current_substep": 123,
"substeps": [
{
"order": 123,
"status": "completed",
"approve_condition": "any",
"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>",
"status": "completed",
"approve_condition": "any",
"substeps": [
{
"order": 123,
"status": "completed",
"approve_condition": "any",
"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>",
"code": "<string>",
"created_by": {
"actor_type": "<string>",
"email": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
},
"updated_by": {
"actor_type": "<string>",
"email": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"errors": {},
"success": false,
"error_code": "<string>",
"error_reason": "<string>"
}{
"errors": {},
"success": false,
"error_code": "<string>",
"error_reason": "<string>"
}{
"errors": {},
"success": false,
"error_code": "<string>",
"error_reason": "<string>"
}Authorizations
Headers
Optional. A unique value (a UUID works well) identifying this operation. If the request is repeated with the same key, the original response is replayed instead of the operation running again, so a retry cannot create a duplicate record. Results are replayable for 48 hours. Reusing a key with a different request body returns 422.
255Body
Create a quote. record_status posted submits it: it runs the quote approval policy, and the quote is approved when no policy applies. Send draft to save without submitting. items replaces the quote lines wholesale: send id to keep a line, and send its billing fields (billing_frequency, billing_interval, billing_start_date, billing_end_date, ramp_group_id) or it is saved as a one-time line that follows the quote contract dates. On recurring lines rate is the price per billing period.
Deprecated: send the structured billing_address / shipping_address instead.
Deprecated: send the structured billing_address / shipping_address instead.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
128after, ongoing, date x >= 1The large total on the quote document when the quote has recurring lines. Omit to use the organization default on create and keep the saved value on update.
tcv, annual, quarterly, monthly, first_year Total rows that print on the quote document, in print order. The row of the large total does not print. Omit to use the organization default on create and keep the saved rows on update.
7Total rows on the quote document. Monthly, quarterly and annual are the recurring value per period.
one_time, monthly, quarterly, annual, first_year, first_invoice, tcv Print the year-by-year breakdown table on the quote document. Omit to keep the saved value on update; new quotes start with it off.
Show child attributes
Show child attributes
Omit to leave the saved recipients unchanged
Show child attributes
Show child attributes
draft, posted, archived Response
OK
A quote with its lines, recipients (signing order included), send status, and totals by billing frequency.
Deprecated: send the structured billing_address / shipping_address instead.
Deprecated: send the structured billing_address / shipping_address instead.
draft, posted, archived after, ongoing, date tcv, annual, quarterly, monthly, first_year Total rows on the quote document. Monthly, quarterly and annual are the recurring value per period.
one_time, monthly, quarterly, annual, first_year, first_invoice, tcv Show child attributes
Show child attributes
Show child attributes
Show child attributes
Sum of quantity x rate before discounts and tax
^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$Sum of inline line discounts
^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$Sum of line tax
^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$Quote total for one billing period of each line, calculated like an invoice total
^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$Contract amount this quote converts to: quantity x rate over each line's term, before discount and tax; approvals compare this
^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$Totals by billing frequency
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
draft, awaiting_approval, approved, rejected Schema for complete approval workflow information.
Show child attributes
Show child attributes
Full approval chain.
Show child attributes
Show child attributes
Code from the company quote sequence, e.g. QT-0001
Schema for audit actor information.
Show child attributes
Show child attributes
Schema for audit actor information.
Show child attributes
Show child attributes
Was this page helpful?