Skip to main content
Tech Titan

API Method Guide

crm.company.add

Module: CRM (companies)Scope: crm

Direct answer

crm.company.add creates an organization record. Deduplicate by tax/registration number (stored as a requisite or custom field) rather than by name — names vary, registrations don't.

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

  • TITLECompany name — display value, not your dedup key
  • COMPANY_TYPECustomer, supplier, partner… from the directory
  • INDUSTRYIndustry classification for segmentation
  • PHONE / EMAIL / WEBMulti-value arrays as elsewhere
  • ASSIGNED_BY_IDAccount owner
  • UF_CRM_*Tax ID / TRN / GSTIN, ERP code — your real dedup keys

Example workflow

  1. ERP publishes a new customer master record
  2. crm.company.list filtered by UF_CRM_TAX_ID — none found
  3. crm.company.add with title, type, and tax ID
  4. crm.requisite.add attaches legal name, registration, address
  5. 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/spellingDedup by tax ID; where one legal entity has branches, model branches as a field or SPA, not separate companies
  • Requisites missing on generated documentsYou 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.

Frequently asked questions

How do I create a company with legal details via API?

crm.company.add for the record, then crm.requisite.add for legal name, registration, and address. Documents and invoices read requisites.

How do I attach contacts to a company?

crm.contact.company.add per contact, or set COMPANY_ID when creating contacts. For many-to-many, use the items.set variants.

Need crm.company.add working in production?

Bring your integration to a free audit call — you'll leave with an architecture sketch and an honest scope, whether or not you engage us.