Configuring Commercial Proposals in Bitrix24 CRM
A manager sends a commercial proposal from Bitrix24, the client receives a PDF with poor layout, no logo, and incorrect prices from a price list that is two months out of date. This is the standard situation when working with the out-of-the-box proposal module without any configuration.
What a Proposal Is in Bitrix24 and How It Works Technically
A commercial proposal in Bitrix24 is a CRM entity (CCrmQuote) stored in the table b_crm_quote. It is linked to a deal (b_crm_deal) or contact/company via b_crm_quote_contact and b_crm_quote_company.
Proposal line items are stored in b_crm_product_row with the flag OWNER_TYPE = QUOTE. Each line item references a product from the catalog (b_iblock_element) — which is why a properly configured product catalog in the catalog module is required for proposals to work correctly.
When creating a proposal, three things are important to understand:
- Price source — which catalog and which price type the line items are pulled from
- Print form template — which PDF/HTML is generated when sending to the client
- Proposal statuses — how they affect the deal pipeline
Configuring Print Form Templates
This is the main pain point. The standard proposal template is located in /bitrix/modules/crm/lib/document/quote/. It is edited via CRM → Settings → Document settings — where you can also upload a logo and configure company details.
For a fully branded proposal, HTML-based templates are used. A template is created through the crm module admin section, path: Bitrix24 → CRM → Settings → Documents → Commercial Proposals → Add template.
Variables in the template are passed via {=Document.FIELD_NAME}. Available fields are found by clicking the "Insert field" button in the editor — it shows the full list of values for the proposal entity and the linked deal.
Price Types and Multi-currency
If the catalog has multiple price types (retail, wholesale, dealer), the price type must be explicitly set when adding line items to a proposal. This is done in the CRM module settings: CRM → Settings → Price types for CRM.
In multi-currency deals, prices are automatically recalculated at the exchange rate defined in b_catalog_currency — but only if the currency module is configured. The error "price does not convert" almost always means the current exchange rate is missing.
Proposal-Deal Relationship and Statuses
Out of the box, a proposal does not automatically affect the deal stage. If you need the deal to advance to the next stage when a proposal is accepted — this is configured via robots on the proposal stage: the OnCrmQuoteStatusChange trigger or the "Change deal stage" robot with a condition based on proposal status.
Proposal statuses are stored in the QUOTE_STATUS reference directory — edited in CRM → Settings → Reference books.
Implementation Timeframes
| Task | Time |
|---|---|
| Configure company details and logo | 1–2 h |
| Custom HTML proposal template | 3–5 h |
| Configure price types and currency | 1–2 h |
| Link proposals to deal robots | 1–2 h |
Full proposal configuration for a business process takes 1 working day. Most of the time is spent on the template layout — especially if tables with conditional formatting of line items are needed.







