What crm.company.add does
Creates the organization entity that contacts and deals attach to in B2B flows. Typically paired with requisites (legal details) and contact bindings.
Business use cases
- ERP/accounting customer masters mirrored into CRM
- B2B signup flows creating company + contact + deal
- Trade-license/KYC systems enriching company records
- Dealer/distributor onboarding portals
Typical fields and parameters
TITLE— Company name — display value, not your dedup keyCOMPANY_TYPE— Customer, supplier, partner… from the directoryINDUSTRY— Industry classification for segmentationPHONE / EMAIL / WEB— Multi-value arrays as elsewhereASSIGNED_BY_ID— Account ownerUF_CRM_*— Tax ID / TRN / GSTIN, ERP code — your real dedup keys
Example workflow
- ERP publishes a new customer master record
- crm.company.list filtered by UF_CRM_TAX_ID — none found
- crm.company.add with title, type, and tax ID
- crm.requisite.add attaches legal name, registration, address
- Primary contact resolved/created and bound via crm.contact.company.add
Example request
POST .../crm.company.add.json
{
"fields": {
"TITLE": "Falcon Trading LLC",
"COMPANY_TYPE": "CUSTOMER",
"INDUSTRY": "MANUFACTURING",
"PHONE": [{ "VALUE": "+97142223344", "VALUE_TYPE": "WORK" }],
"ASSIGNED_BY_ID": 7,
"UF_CRM_TAX_ID": "100234567890003",
"UF_CRM_ERP_CODE": "C-00812"
}
}Example response
{ "result": 214, "time": { ... } }Field mapping notes
- Company names are the worst dedup key in B2B ('Falcon Trading', 'Falcon Trading LLC', 'FALCON TRD') — key on registration/tax numbers
- Legal details belong in requisites (crm.requisite.*), not stuffed into custom fields, if you generate documents from CRM
- Keep the ERP code bidirectional, same as contacts
Security notes
- Company financials (credit limits, balances) synced from ERP should be visible only to roles that need them — field-level thinking, configured via permissions
Common errors
- Duplicate companies per branch/spelling — Dedup by tax ID; where one legal entity has branches, model branches as a field or SPA, not separate companies
- Requisites missing on generated documents — You set custom fields instead of crm.requisite records — documents read requisites
Production implementation tips
- Company + requisite + contact binding is a natural batch bundle
- Sync ERP → CRM one-way for master data and CRM → ERP for new prospects, with a clear field-ownership matrix — 'both systems can edit everything' is how masters diverge
Webhook or OAuth app?
ERP master-data syncs run for years — OAuth app preferred; a strictly-managed webhook is acceptable for internal one-way mirrors.
Full decision guide: webhook vs OAuth app in Bitrix24.
When to use a queue worker
Nightly master syncs move thousands of records — batch in 50s under rate limits and reconcile counts at the end.
How Tech Titan can help
Tech Titan builds production Bitrix24 integrations around crm.company.add and its siblings — with authentication, field mapping, queue workers, retry logic, duplicate handling, and structured logs as standard. If this method is on your critical path, bring the requirement to a free audit call and leave with an architecture sketch.