Estimates in CRM: Overview of Methods and Events
If you are developing integrations for Bitrix24 using AI tools (Codex, Claude Code, Cursor), connect to the MCP server so that the assistant can utilize the official REST documentation.
An estimate is a CRM object that allows you to create printed documents and send them to clients before a deal. An estimate has a subject, a stage, an amount in a currency, a list of product items, and a client — a company and contacts.
Development of the crm.quote.* methods for working with estimates has been discontinued. For new development, use the universal methods crm.item.* with entityTypeId = 7. The custom field methods crm.quote.userfield.* continue to work.
Quick navigation: all methods and events
User documentation: estimates in Bitrix24
Current API Version
An estimate is one of the CRM object types, so it is managed by the universal methods crm.item.* with entityTypeId = 7. The crm.quote.* methods remain only to support existing integrations.
|
If You Need To |
Open the Method |
|
Create an estimate |
|
|
Update an estimate |
|
|
Retrieve an estimate by its identifier |
|
|
Retrieve a list of estimates by filter |
|
|
Delete an estimate |
|
|
Retrieve the description of estimate fields |
|
|
Manage the product items of an estimate |
crm.item.productrow.* with |
In the universal methods, field names are written in camelCase: TITLE becomes title, and ASSIGNED_BY_ID becomes assignedById. The conversion rules for custom fields are described in the section Universal CRM Methods.
Some fields are named differently in the universal methods: the estimate stage STATUS_ID arrives in the stageId field, and the multiple field CONTACT_IDS — in the contactIds field. The exact set of fields for an estimate is returned by the method crm.item.fields with entityTypeId = 7.
Getting Started
- Retrieve the description of estimate fields using the method crm.quote.fields — it returns both system and custom fields with their types
- Find out the available stages using the method crm.status.list with the filter
ENTITY_ID = QUOTE_STATUS, and the list of currencies using the method crm.currency.list - Create an estimate using the method crm.quote.add: pass the subject
TITLE, the stageSTATUS_ID, the client companyCOMPANY_IDor the contactsCONTACT_IDS, and your own companyMYCOMPANY_ID - Add product items using the method crm.quote.productrows.set; to check their composition, use the method crm.quote.productrows.get
- Subscribe to estimate events to receive notifications about changes in your application
Connection of Estimates with Other CRM Entities
Client. The company and contacts the estimate is addressed to. An estimate has a single company, and its identifier is passed in the field COMPANY_ID. There can be several contacts, and their identifiers are passed as an array in the multiple field CONTACT_IDS. You can find the required identifiers using the methods crm.company.list and crm.contact.list.
Deal. An estimate can be created based on a deal and vice versa. The deal identifier is stored in the estimate field DEAL_ID and can be passed to the methods crm.quote.add and crm.quote.update.
Lead. If the estimate was issued for a lead, the lead identifier is stored in the field LEAD_ID. The field is filled in automatically when a lead is converted and can be modified using the same methods.
Invoice. An invoice is linked to an estimate using the universal method crm.item.add: pass entityTypeId = 31 and the estimate identifier in the field parentId7.
Products. The product items of an estimate are created and updated by the method crm.quote.productrows.set and returned by crm.quote.productrows.get. You can retrieve the product identifier for an item using the method catalog.product.list.
Details. Buyer details are pulled into the estimate form from the associated contact or company. Seller details are taken from the company specified in the field MYCOMPANY_ID. To explicitly specify a pair of buyer and seller details, use the method crm.requisite.link.register, passing ENTITY_TYPE_ID = 7 and the estimate identifier in ENTITY_ID.
User Documentation
Estimate Detail Form
The main workspace of an estimate is the General tab of its detail form. It consists of two parts:
-
the left part contains fields with information. If the system fields are insufficient, add your own custom fields using the group of methods crm.quote.userfield.*. They store information in various data formats: string, number, link, address, and others. The name of such a field starts with the prefix
UF_CRM_, and it is under this name that the field is passed to crm.quote.add and returned by crm.quote.get -
the right part contains the estimate timeline. CRM activities in it are created, updated, and deleted by the group of methods crm.activity.* — the estimate is specified there by the pair
OWNER_TYPE_ID = 7andOWNER_ID. Timeline records are managed by the group of methods crm.timeline.*, where the estimate is specified by the pairENTITY_TYPE = quoteandENTITY_ID
User Documentation
Widgets
You can embed an application into the estimate detail form and work with it without leaving the form. There are two embedding scenarios:
- occupy a special embedding location — for example, create your own tab in the detail form
- create a custom field into which the content of your application is loaded
Typical use-cases and scenarios
Overview of Methods and Events
Scope:
crmWho can execute the method: depending on the method — estimate methods check access permissions for estimates, while creating, updating, and deleting custom fields is available only to a CRM administrator
Main Methods
|
Method |
Description |
|
Creates a new estimate |
|
|
Modifies an existing estimate |
|
|
Returns an estimate by its identifier |
|
|
Returns a list of estimates based on a filter |
|
|
Deletes an estimate |
|
|
Returns the description of estimate fields |
|
|
Returns the product items of the estimate |
|
|
Creates or updates the product items of the estimate |
|
Event |
Triggered |
|
When an estimate is created manually or via the method crm.quote.add |
|
|
When an estimate is updated manually or via the method crm.quote.update |
|
|
When an estimate is deleted manually or via the method crm.quote.delete |
Custom Fields
|
Method |
Description |
|
Creates a new custom field for estimates |
|
|
Updates an existing custom field for estimates |
|
|
Returns a custom field for estimates by ID |
|
|
Returns a list of custom fields for estimates by filter |
|
|
Deletes a custom field for estimates |
|
Event |
Triggered |
|
When a custom field is added manually or via the method crm.quote.userfield.add |
|
|
When a custom field is updated manually or via the method crm.quote.userfield.update |
|
|
When a custom field is deleted manually or via the method crm.quote.userfield.delete |
|
|
When the set of values for a list-type custom field is changed manually or via the method crm.quote.userfield.update |