curl --request GET \
--url https://{companyName}.api.joinluminous.com/external/api/v1/estimates \
--header 'Authorization: Bearer <token>'import requests
url = "https://{companyName}.api.joinluminous.com/external/api/v1/estimates"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{companyName}.api.joinluminous.com/external/api/v1/estimates', 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://{companyName}.api.joinluminous.com/external/api/v1/estimates",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{companyName}.api.joinluminous.com/external/api/v1/estimates"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{companyName}.api.joinluminous.com/external/api/v1/estimates")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{companyName}.api.joinluminous.com/external/api/v1/estimates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"status": "<string>",
"payment_status": "<string>",
"order_date": "2023-11-07T05:31:56Z",
"ship_by_date": "2023-11-07T05:31:56Z",
"approval_status": "<string>",
"customer_po_number": "<string>",
"payment_terms": "<string>",
"public_note": "<string>",
"private_note": "<string>",
"total_qty": 123,
"total_shipping": 123,
"total_discount": 123,
"total": 123,
"total_paid": 123,
"total_due": 123,
"warehouse_id": 123,
"ship_to": {
"address_1": "<string>",
"address_2": "<string>",
"city": "<string>",
"state": "<string>",
"zip": "<string>",
"country": "<string>"
},
"quickbooks_invoice_id": "<string>",
"quickbooks_message": "<string>",
"customer": {
"id": 123,
"name": "<string>",
"address_1": "<string>",
"address_2": "<string>",
"city": "<string>",
"state": "<string>",
"zip": "<string>",
"country": "<string>",
"phone": "<string>",
"email": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"items": [
{
"id": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"sku": "<string>",
"name": "<string>",
"product_id": 123,
"qty": 123,
"unit_price": 123,
"discount": 123,
"total": 123,
"taxable": true
}
],
"payments": [
{
"id": 123,
"invoice_id": 123,
"gateway": "<string>",
"type": "<string>",
"charge_type": "<string>",
"amount": 123,
"date": "2023-11-07T05:31:56Z",
"status": "<string>",
"external_id": "<string>",
"notes": "<string>",
"reference_id": "<string>",
"gateway_response": {
"status": "<string>",
"code": "<string>",
"message": "<string>",
"metadata": "<string>"
},
"created_by": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"deleted_at": "2023-11-07T05:31:56Z"
}
],
"sales_order": {
"id": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"status": "<string>",
"order_id": "<string>",
"order_number": "<string>",
"order_date": "2023-12-25",
"payment_date": "2023-12-25",
"ship_by_date": "2023-12-25",
"age": 123,
"order_status": "<string>",
"customer_id": "<string>",
"customer_username": "<string>",
"customer_email": "<string>",
"bill_to": {},
"ship_to": {},
"requested_shipping_service": "<string>",
"total": 123,
"total_paid": 123,
"total_tax": 123,
"total_shipping": 123,
"customer_notes": "<string>",
"internal_notes": "<string>",
"ship_date": "2023-12-25",
"hold_until_date": "2023-12-25",
"user_id": 123,
"externally_fulfilled": true,
"externally_fulfilled_by": "<string>",
"is_posted": true,
"posted_by": "<string>",
"not_sync": true,
"sales_posted": true,
"split_order": true,
"skip_inventory": true,
"skip_sales_report": true,
"channel_id": 123,
"total_order_cost": 123,
"total_order_quantity": 123,
"order_cost_details": {},
"source": "<string>",
"shipstation_order_id": "<string>",
"type": "<string>",
"parent_id": 123,
"shipping_revenue": 123,
"product_total": 123,
"total_discount": 123,
"picking_status": "<string>",
"starred_description": "<string>",
"customer_po_number": "<string>"
},
"custom_fields": {
"Field Name 1": "Some Value"
},
"tags": [
{
"id": 123,
"name": "<string>",
"description": "<string>",
"icon": "<string>",
"color": "<string>"
}
]
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 5,
"per_page": 10,
"to": 10,
"total": 50
}
}{
"error": "Unauthorized",
"message": "Authentication credentials are missing or invalid",
"status_code": 401
}{
"error": "Forbidden",
"message": "You do not have permission to access this resource",
"status_code": 403
}Estimates
Get a paginated list of estimates. An estimate is an invoice whose status is ESTIMATE
(create one with POST /invoices and status: ESTIMATE), so each row has the same shape as
GET /invoices and the same filters apply. Invoice endpoints are unchanged and still return
estimates alongside other invoices.
A status filter is still applied on top of the estimate restriction, so for example
status=ACTIVE returns no rows.
See GET /invoices for the full filter list, and the
Filter System Documentation for operators.
curl --request GET \
--url https://{companyName}.api.joinluminous.com/external/api/v1/estimates \
--header 'Authorization: Bearer <token>'import requests
url = "https://{companyName}.api.joinluminous.com/external/api/v1/estimates"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{companyName}.api.joinluminous.com/external/api/v1/estimates', 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://{companyName}.api.joinluminous.com/external/api/v1/estimates",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{companyName}.api.joinluminous.com/external/api/v1/estimates"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{companyName}.api.joinluminous.com/external/api/v1/estimates")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{companyName}.api.joinluminous.com/external/api/v1/estimates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"status": "<string>",
"payment_status": "<string>",
"order_date": "2023-11-07T05:31:56Z",
"ship_by_date": "2023-11-07T05:31:56Z",
"approval_status": "<string>",
"customer_po_number": "<string>",
"payment_terms": "<string>",
"public_note": "<string>",
"private_note": "<string>",
"total_qty": 123,
"total_shipping": 123,
"total_discount": 123,
"total": 123,
"total_paid": 123,
"total_due": 123,
"warehouse_id": 123,
"ship_to": {
"address_1": "<string>",
"address_2": "<string>",
"city": "<string>",
"state": "<string>",
"zip": "<string>",
"country": "<string>"
},
"quickbooks_invoice_id": "<string>",
"quickbooks_message": "<string>",
"customer": {
"id": 123,
"name": "<string>",
"address_1": "<string>",
"address_2": "<string>",
"city": "<string>",
"state": "<string>",
"zip": "<string>",
"country": "<string>",
"phone": "<string>",
"email": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"items": [
{
"id": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"sku": "<string>",
"name": "<string>",
"product_id": 123,
"qty": 123,
"unit_price": 123,
"discount": 123,
"total": 123,
"taxable": true
}
],
"payments": [
{
"id": 123,
"invoice_id": 123,
"gateway": "<string>",
"type": "<string>",
"charge_type": "<string>",
"amount": 123,
"date": "2023-11-07T05:31:56Z",
"status": "<string>",
"external_id": "<string>",
"notes": "<string>",
"reference_id": "<string>",
"gateway_response": {
"status": "<string>",
"code": "<string>",
"message": "<string>",
"metadata": "<string>"
},
"created_by": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"deleted_at": "2023-11-07T05:31:56Z"
}
],
"sales_order": {
"id": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"status": "<string>",
"order_id": "<string>",
"order_number": "<string>",
"order_date": "2023-12-25",
"payment_date": "2023-12-25",
"ship_by_date": "2023-12-25",
"age": 123,
"order_status": "<string>",
"customer_id": "<string>",
"customer_username": "<string>",
"customer_email": "<string>",
"bill_to": {},
"ship_to": {},
"requested_shipping_service": "<string>",
"total": 123,
"total_paid": 123,
"total_tax": 123,
"total_shipping": 123,
"customer_notes": "<string>",
"internal_notes": "<string>",
"ship_date": "2023-12-25",
"hold_until_date": "2023-12-25",
"user_id": 123,
"externally_fulfilled": true,
"externally_fulfilled_by": "<string>",
"is_posted": true,
"posted_by": "<string>",
"not_sync": true,
"sales_posted": true,
"split_order": true,
"skip_inventory": true,
"skip_sales_report": true,
"channel_id": 123,
"total_order_cost": 123,
"total_order_quantity": 123,
"order_cost_details": {},
"source": "<string>",
"shipstation_order_id": "<string>",
"type": "<string>",
"parent_id": 123,
"shipping_revenue": 123,
"product_total": 123,
"total_discount": 123,
"picking_status": "<string>",
"starred_description": "<string>",
"customer_po_number": "<string>"
},
"custom_fields": {
"Field Name 1": "Some Value"
},
"tags": [
{
"id": 123,
"name": "<string>",
"description": "<string>",
"icon": "<string>",
"color": "<string>"
}
]
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 5,
"per_page": 10,
"to": 10,
"total": 50
}
}{
"error": "Unauthorized",
"message": "Authentication credentials are missing or invalid",
"status_code": 401
}{
"error": "Forbidden",
"message": "You do not have permission to access this resource",
"status_code": 403
}Authorizations
Authenticate using a bearer token. To create a token, navigate to /settings/api-tokens and click Create API Token.
Query Parameters
Page number for pagination
Number of items per page (max 100)
x <= 100Comma-separated list of fields to include in each returned estimate (field projection). When omitted, the full invoice object is returned. Example: fields=id,status,total.
Filter by the ID of the company (customer) the invoice belongs to
Alias for company_id — filter by the ID of the company (customer) the invoice belongs to
Filter by the sales channel ID associated with the invoice
Filter by invoice status
Filter by sales order number (if sales order is attached to invoice)
Filter by payment status
Filter by approval status
Filter by customer PO number
Filter by tag name
Filter by order date (YYYY-MM-DD)
Filter by ship by date (YYYY-MM-DD)
Filter by due date (YYYY-MM-DD)
Filter by creation date (YYYY-MM-DD HH:mm:ss)
Filter by last update date (YYYY-MM-DD HH:mm:ss)
Filter by total quantity
Filter by invoice total amount
Filter by shipping amount
Filter by discount amount
Filter by amount paid
Filter by amount due
Filter by custom fields