Deal Fields in REST 3.0
Choose a tool for developing with an AI agent:
- use Alaio Vibecode to build an app for Bitrix24 from a task description without knowing any programming language. The agent writes the code and deploys the app to a server, with no manual hosting setup
- use the MCP server to develop a REST API integration in your own project. The agent refers to the official REST documentation
These fields belong to REST 3.0 methods. The call specifics and response format of the new API version are described in the REST 3.0 overview.
Deal fields are returned by the crm.deal.get and crm.deal.list methods and accepted by the crm.deal.add and crm.deal.update methods. The list of fields with their attributes is returned by the crm.deal.field.list method.
Some fields exist in two forms: as an ID and as a related object, for example, assignedById and assignedBy. The ID can be passed when writing data, while the related object can only be requested in select.
Which Fields the Methods Accept and Return
|
Method |
Accepts |
Returns |
|
Fields of the Deal Object table that can be edited, and custom fields. There are no required fields: a deal is created even with an empty |
ID of the created deal |
|
|
Deal |
Success flag |
|
|
Deal |
Without |
|
|
|
Without |
The add and update methods do not accept fields marked "read-only" and return the BITRIX_REST_V3_EXCEPTION_VALIDATION_DTOVALIDATIONEXCEPTION error with the message 'Field "contactId" is read-only.' Related objects, for example, company and stage, are also read-only: to write data, pass the ID — companyId, stageId.
The method validates fields with values from reference lists when writing data. If the value is not in the reference list, the method returns the error 'Field value is not one of the possible values'. For the stage, deal type, source, and currency, the error message lists the allowed values.
Boolean fields accept and return true or false. The values Y, N, 1, and 0 are not accepted: the method returns the error 'This request requires data type "bool" in field "opened"'.
Fields of the date type accept and return a date in the YYYY-MM-DD format, for example, 2026-11-03. Such a field does not accept a date with time or a date in the 03.11.2026 format. Fields of the datetime type are returned in ISO 8601 format, for example, 2026-11-03T14:47:23+03:00. In a filter by a datetime field, also pass a date with time: the method does not accept the value 2026-11-03.
You can filter and sort only by the fields whose description says so. For other fields, the list method returns an error stating that the field 'requires attribute "Filterable"' or '"Sortable"'. Dot notation lets you filter by fields of linked CRM items and of the lastCommunication and utm objects, for example, ["company.title", "=", "Müller GmbH"] or ["utm.source", "=", "google"]. Filtering by fields of employees, stage, pipeline, deal type, and source, for example, assignedBy.id or stage.semanticId, is not supported: the method returns the BITRIX_REST_V3_EXCEPTION_INVALIDFILTEREXCEPTION error. The filter format is described on the crm.<type>.list page and in the REST API 3.0 Overview article.
Deal Object
|
Name |
Description |
|
title |
Deal title, up to 255 characters. Can be edited, filtered, and sorted |
|
typeId |
Deal type ID, for example, Can be edited, filtered, and sorted |
|
type |
Deal type. An object of type deal type. Read-only. Requested in |
|
quoteId |
ID of the estimate from which the deal was created. Read-only. Can be filtered and sorted |
|
quote |
Estimate from which the deal was created. An object of type CRM item. Read-only. Requested in |
|
leadId |
ID of the lead from which the deal was created. Read-only. Can be filtered and sorted |
|
lead |
Lead from which the deal was created. An object of type CRM item. Read-only. Requested in |
|
previousStageId |
ID of the stage the deal was at before the current one, for example, Read-only. Can be filtered and sorted |
|
previousStage |
Previous stage. An object of type stage. If the stage has not changed, Read-only. Requested in |
|
locationId |
Client location ID. A system field. The method checks that the location exists. Can be edited. Cannot be filtered or sorted |
|
isNew |
Whether the deal is at the first stage of the pipeline: Read-only. Can be filtered and sorted |
|
isRepeatedApproach |
Whether the deal is a repeated inquiry from the client: Read-only. Can be filtered and sorted |
|
isReturnCustomer |
Whether this is a repeat deal with the client: Read-only. Can be filtered and sorted |
|
id |
Deal ID. Assigned on creation. Read-only. Can be filtered and sorted |
|
createdTime |
Date and time the deal was created. Read-only. Can be filtered and sorted |
|
createdById |
ID of the user who created the deal. Read-only. Can be filtered and sorted |
|
createdBy |
User who created the deal. An object of type employee. Read-only. Requested in |
|
updatedTime |
Date and time the deal was last updated. Read-only. Can be filtered and sorted |
|
updatedById |
ID of the user who last updated the deal. Read-only. Can be filtered and sorted |
|
updatedBy |
User who last updated the deal. An object of type employee. Read-only. Requested in |
|
lastActivityTime |
Date and time of the last activity in the deal timeline. Read-only. Can be filtered and sorted |
|
lastActivityById |
ID of the author of the last activity in the timeline. Read-only. Can be filtered and sorted |
|
lastActivityBy |
Author of the last activity in the timeline. An object of type employee. Read-only. Requested in |
|
assignedById |
ID of the person responsible for the deal. User IDs are returned by the user.get method. If the user does not exist, the method returns the error 'Field value is not one of the possible values'. Can be edited, filtered, and sorted |
|
assignedBy |
Responsible person. An object of type employee. Read-only. Requested in |
|
opened |
Whether the deal is available to all users: Can be edited, filtered, and sorted |
|
comments |
Comment on the deal. Supports BB codes, for example, Can be edited. Cannot be filtered or sorted |
|
originatorId |
ID of the external system the deal came from. Use together with Can be edited, filtered, and sorted |
|
originId |
Deal ID in the external system. Can be edited, filtered, and sorted |
|
webformId |
ID of the CRM form through which the deal was created. If the deal was not created by a form, Read-only. Can be filtered and sorted |
|
webform |
CRM form through which the deal was created. An object of type CRM form. Read-only. Requested in |
|
lastCommunication |
Dates of the last communications with the client on the deal. An object of type last communication. Read-only. Requested in |
|
entityTypeId |
Object type ID. For a deal, Read-only |
|
canRead |
Whether the current user can view the deal: Read-only |
|
url |
Relative link to the deal card, for example, Read-only |
|
stageId |
Stage ID. In the general pipeline, the ID has no prefix, for example, Can be edited, filtered, and sorted |
|
stage |
Deal stage. An object of type stage. Read-only. Requested in |
|
movedTime |
Date and time of the last stage change. Read-only. Can be filtered and sorted |
|
movedById |
ID of the user who last changed the stage. Read-only. Can be filtered and sorted |
|
movedBy |
User who last changed the stage. An object of type employee. Read-only. Requested in |
|
closed |
Whether the deal is closed: Read-only. Can be filtered and sorted |
|
stageSemanticId |
Stage group. Possible values:
Read-only. Can be filtered and sorted |
|
stageSemantic |
Stage group with its name. An object of type stage group. Read-only. Requested in |
|
beginTime |
Start date. Can be edited, filtered, and sorted |
|
closeTime |
Close date. Can be edited, filtered, and sorted |
|
categoryId |
Pipeline ID. The general pipeline is Can be edited, filtered, and sorted |
|
category |
Deal pipeline. An object of type pipeline. Read-only. Requested in |
|
observersId |
Observer IDs. User IDs are returned by the user.get method. Can be edited and filtered, cannot be sorted. In a filter, |
|
observers |
Observers. An array of objects of type employee. If there are no observers, an empty array. Read-only. Requested in |
|
contactId |
ID of the primary contact, which is the first one in the Read-only. Can be filtered, cannot be sorted |
|
contact |
Primary contact. An object of type CRM item. Read-only. Requested in |
|
contactsId |
IDs of the deal contacts. Contacts are returned by the crm.contact.list method. The passed array replaces the current list of contacts. Can be edited and filtered, cannot be sorted |
|
contacts |
Deal contacts. An array of objects of type CRM item. If there are no contacts, an empty array. Read-only. Requested in |
|
companyId |
Company ID. Companies are returned by the crm.company.list method. Can be edited, filtered, and sorted |
|
company |
Company. An object of type CRM item. Read-only. Requested in |
|
myCompanyId |
ID of your company, on whose behalf you work with the client. The list of your companies is returned by the crm.mycompany.list method. Can be edited, filtered, and sorted |
|
myCompany |
Your company. An object of type CRM item. Read-only. Requested in |
|
sourceId |
Source ID, for example, Can be edited, filtered, and sorted |
|
source |
Source. An object of type reference list value. Read-only. Requested in |
|
sourceDescription |
Additional information about the source. Can be edited and filtered, cannot be sorted |
|
opportunity |
Deal amount, not less than Can be edited, filtered, and sorted |
|
taxValue |
Tax amount. Calculated from the product rows. Read-only. Can be filtered and sorted |
|
isManualOpportunity |
Amount calculation mode: Can be edited, filtered, and sorted |
|
currencyId |
Currency ID, for example, Can be edited, filtered, and sorted |
|
currency |
Currency. An object of type currency. Read-only. Requested in |
|
utm |
UTM tags of the deal. An object of type UTM tags. If there are no tags, Can be edited: pass an object with the tags you need, for example, |
|
trackingSourceId |
ID of the end-to-end analytics source. Can be edited and filtered, cannot be sorted |
|
related<type code>Id |
ID of the parent item of another object type, for example, Can be edited and filtered, cannot be sorted |
|
related<type code> |
Parent item of another object type, for example, Read-only. Requested in |
Fields Linking to Other Types
The related<type code>Id and related<type code> fields appear when Bitrix24 has a link configured in which the deal is subordinate to another object type, for example, an SPA. For each parent type, the deal has a pair of fields:
related<type code>Id— ID of the parent item, for example,relatedSmartProcess177Idfor the SPA withentityTypeId = 177related<type code>— the parent item as an object of type CRM item, for example,relatedSmartProcess177
The field title in the crm.deal.field.list response matches the name of the parent type, for example, "Equipment purchase". The method checks that an item with the passed ID exists. If there is no such item, the method returns the error 'Field value is not one of the possible values'.
The set of these fields depends on the links configured in Bitrix24. The current list is returned by the crm.deal.field.list method.
Related Objects
A related object is requested in select by the field name without the Id suffix: assignedBy, stage, category. The whole object name returns all of its fields, and a dot-notation path returns only the selected ones, for example, ["stage.name", "assignedBy.firstName"]. The path supports one level of nesting.
A linked CRM item — contact, company, myCompany, lead, quote, related<type code> — returns only id when requested by its whole name. Request the other item fields using dot notation, for example, ["company.title", "company.url"].
If a link is not set, the object is returned as null, and an array of objects, for example, observers or contacts, is returned as an empty array.
Employee Object
Fields createdBy, updatedBy, lastActivityBy, assignedBy, movedBy, observers.
|
Name |
Description |
|
id |
User ID |
|
firstName |
First name |
|
lastName |
Last name |
|
personalGender |
Gender: |
|
url |
Relative link to the user profile, for example, |
|
personalPhoto |
Link to the user photo. If there is no photo, |
CRM Item Object
Fields contact, contacts, company, myCompany, lead, quote, related<type code>.
|
Name |
Description |
|
id |
Item ID |
|
entityTypeId |
Object type ID, for example, |
|
canRead |
Whether the current user can view the item |
|
title |
Item title. For a contact, the last name, first name, and middle name |
|
url |
Relative link to the item card, for example, |
Stage Object
Fields stage and previousStage.
|
Name |
Description |
|
id |
Stage ID, for example, |
|
name |
Stage name |
|
sort |
Stage order in the pipeline |
|
color |
Stage color in the |
|
semanticId |
Stage group: |
Stage Group Object
Field stageSemantic. The reference list of groups is returned by the crm.dictionary.stagesemantic.list method.
|
Name |
Description |
|
id |
Group ID: |
|
name |
Group name, for example, |
Pipeline Object
Field category.
|
Name |
Description |
|
id |
Pipeline ID |
|
name |
Pipeline name |
|
sort |
Pipeline sort order |
|
isDefault |
Default pipeline: |
Deal Type Object
Field type.
|
Name |
Description |
|
id |
Type ID, for example, |
|
name |
Type name, for example, |
|
sort |
Sort order |
|
isSystem |
System type: |
Reference List Value Object
Field source.
|
Name |
Description |
|
id |
Value ID, for example, |
|
name |
Value name, for example, |
|
sort |
Sort order |
CRM Form Object
Field webform.
|
Name |
Description |
|
id |
CRM form ID |
|
name |
CRM form name |
Last Communication Object
Field lastCommunication. If there has been no communication of a given kind, the corresponding field is null.
|
Name |
Description |
|
communicationTime |
Date and time of the last communication of any kind |
|
callTime |
Date and time of the last call |
|
emailTime |
Date and time of the last email |
|
imolTime |
Date and time of the last message in an open channel |
|
webformTime |
Date and time the CRM form was last submitted |
Currency Object
Field currency.
|
Name |
Description |
|
id |
Currency code, for example, |
|
fullName |
Currency name |
|
formatString |
Amount display template. The |
|
decPoint |
Decimal separator |
|
thousandsSep |
Thousands separator. May be returned as an HTML entity, for example, |
|
decimals |
Number of decimal places |
|
hideZero |
Whether to hide insignificant trailing zeros in the fractional part |
|
amount |
Exchange rate relative to the base currency |
|
amountCount |
Number of currency units the exchange rate applies to |
|
base |
Base currency: |
|
sort |
Sort order |
|
numericCode |
Numeric currency code, for example, |
|
languageId |
Language for which the name and format are set |
|
createdTime |
Date and time the currency was created |
|
updatedTime |
Date and time the currency was updated |
|
createdById |
ID of the user who created the currency |
|
updatedById |
ID of the user who updated the currency |
UTM Tags Object
Field utm. Each tag is a string of up to 255 characters. Tags that were not passed are returned as null.
|
Name |
Description |
|
source |
Ad platform, the |
|
medium |
Traffic type, the |
|
campaign |
Ad campaign, the |
|
content |
Ad content, the |
|
term |
Keyword, the |
Custom Fields
Custom deal fields are named UF_CRM_<code>, for example, UF_CRM_1687529546. They are passed and requested by name in the same way as standard fields. The list of custom fields is returned by the crm.deal.field.custom.list method.
Each custom field has a paired UF_CRM_…_data field, which is read-only and requested in select. It contains the value in several representations:
value— the value in the same format as in the field itselfrawValue— the value in the storage format, for example,100.5|EURfor a "Money" fieldformattedValue— the value for display to the user:100.50 €for money, the employee name for a "Link to employee" field, the option text for a listextra— additional data: for money,amount,currencyId, andcurrencyFullName; for an employee, the fields of the employee object. For a string, date, and list,null
For a multiple custom field, UF_CRM_…_data is an array of such objects.