Estimate API
Create, read, update, and delete estimates (quotes) using the NetSuite REST API.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /record/v1/estimate | List all estimates |
GET | /record/v1/estimate/{id} | Get specific estimate |
POST | /record/v1/estimate | Create new estimate |
PATCH | /record/v1/estimate/{id} | Update estimate |
DELETE | /record/v1/estimate/{id} | Delete estimate |
Key Fields
Header Fields
| Field | Type | Description | Required |
|---|---|---|---|
id | string | Internal ID (read-only) | - |
tranId | string | Estimate number | Auto-generated |
entity | object | Customer/prospect reference | Yes |
tranDate | string | Estimate date (ISO 8601) | Yes |
dueDate | string | Expiration date | No |
status | object | Estimate status | Read-only |
subsidiary | object | Subsidiary | Yes (OneWorld) |
Financial Fields
| Field | Type | Description | Required |
|---|---|---|---|
currency | object | Transaction currency | Yes |
exchangeRate | number | Exchange rate | Auto-calculated |
subTotal | number | Subtotal (read-only) | - |
taxTotal | number | Total tax (read-only) | - |
total | number | Grand total (read-only) | - |
Sales Fields
| Field | Type | Description | Required |
|---|---|---|---|
probability | number | Win probability % (0-100) | No |
salesRep | object | Sales representative | No |
salesGroup | object | Sales team/group | No |
partner | object | Partner reference | No |
leadsource | object | Lead source | No |
Billing & Shipping
| Field | Type | Description | Required |
|---|---|---|---|
billAddr1 | string | Billing address line 1 | No |
billCity | string | Billing city | No |
billState | string | Billing state/province | No |
billZip | string | Billing postal code | No |
billCountry | object | Billing country | No |
shipAddr1 | string | Shipping address line 1 | No |
shipCity | string | Shipping city | No |
shipState | string | Shipping state/province | No |
shipZip | string | Shipping postal code | No |
shipCountry | object | Shipping country | No |
Other Fields
| Field | Type | Description | Required |
|---|---|---|---|
memo | string | Internal memo | No |
message | object | Message to customer | No |
title | string | Estimate title | No |
otherRefNum | string | External reference number | No |
createdFrom | object | Source transaction (e.g., Opportunity) | No |
Sublists
| Field | Type | Description | Required |
|---|---|---|---|
item | collection | Line items | Yes (at least 1) |
Line Items
The item sublist contains the products/services being quoted.
Item Line Fields
| Field | Type | Description | Required |
|---|---|---|---|
item | object | Item reference | Yes |
quantity | number | Quantity | Yes |
rate | number | Unit price | Yes |
amount | number | Line total (qty × rate) | Auto-calculated |
description | string | Line description | No |
taxCode | object | Tax code | No |
taxRate1 | number | Tax rate % | Auto-calculated |
grossAmt | number | Amount including tax | Auto-calculated |
isClosed | boolean | Line closed | No |
Example: Create Estimate
POST /record/v1/estimate
Content-Type: application/json
{
"entity": {
"id": "456"
},
"tranDate": "2025-12-25",
"dueDate": "2026-01-25",
"subsidiary": {
"id": "1"
},
"currency": {
"id": "1"
},
"salesRep": {
"id": "123"
},
"probability": 75,
"title": "Q1 2026 Product Proposal",
"memo": "Q4 2025 renewal quote",
"message": {
"id": "1"
},
"item": {
"items": [
{
"item": { "id": "789" },
"quantity": 10,
"rate": 99.99,
"description": "Premium Widget - Annual License"
},
{
"item": { "id": "790" },
"quantity": 10,
"rate": 29.99,
"description": "Support & Maintenance - 1 Year"
}
]
}
}
Response:
{
"id": "2001",
"tranId": "EST-2001",
"entity": {
"id": "456",
"refName": "Acme Corporation"
},
"tranDate": "2025-12-25",
"dueDate": "2026-01-25",
"status": {
"id": "A",
"refName": "Open"
},
"probability": 75,
"subTotal": 1299.80,
"taxTotal": 103.98,
"total": 1403.78,
"links": [
{
"rel": "self",
"href": "https://{account}.suitetalk.api.netsuite.com/services/rest/record/v1/estimate/2001"
}
]
}
Example: Update Estimate
PATCH /record/v1/estimate/2001
Content-Type: application/json
{
"probability": 90,
"memo": "Customer very interested - follow up scheduled",
"dueDate": "2026-02-15"
}
Estimate Statuses
| Status | Description |
|---|---|
OPEN | Active quote, not yet converted |
PROCESSED | Converted to sales order/invoice |
CLOSED | Manually closed/expired |
Convert to Sales Order
Create a sales order from an estimate:
POST /record/v1/salesOrder
Content-Type: application/json
{
"createdFrom": {
"id": "2001"
},
"entity": { "id": "456" },
"tranDate": "2025-12-25"
}
Auto-Fill from Estimate
When you provide createdFrom with an estimate ID, NetSuite auto-fills customer, items, prices, and addresses from the estimate.
Query Filters
Find Open Estimates
GET /record/v1/estimate?q=status='OPEN'
Find by Customer
GET /record/v1/estimate?q=entity='456'
Find by Sales Rep
GET /record/v1/estimate?q=salesRep='123'
Find High Probability Quotes
GET /record/v1/estimate?q=probability >= 75 AND status='OPEN'
Find by Date Range
GET /record/v1/estimate?q=tranDate BETWEEN '2025-01-01' AND '2025-12-31'
Find Expiring Soon
GET /record/v1/estimate?q=dueDate < SYSDATE+30 AND status='OPEN'
Important Notes
No Accounting Impact
- Estimates do not affect the general ledger
- They are sales tracking documents only
- No journal entries are created
Estimate Expiration
dueDaterepresents the quote expiration date- Expired estimates can still be converted
- Use custom workflows to auto-close expired estimates
Probability Tracking
- Win probability is used for sales forecasting
- Does not affect transaction processing
- Typically tied to sales stages
Converting Estimates
- Can be converted to Sales Orders or Invoices
- Original estimate status changes to "Processed"
- Maintains reference link via
createdFrom
Multi-Currency
- Currency is set at estimate creation
- Exchange rates are captured at time of creation
- Converted transactions inherit the same currency
Item Availability
- Estimates do not reserve inventory
- Convert to Sales Order to reserve stock
- Check item availability separately
See Also
- Sales Order - Convert estimates to orders
- Invoice - Direct conversion to invoice
- Opportunity - Track sales pipeline
- Customer - Customer management