1C-Bitrix Integration with Contractor Verification Services

Overview Imagine: a B2B store on Bitrix receives an application from a company. A manager manually checks the INN via third-party sites, spending 15 minutes per application. We implement automatic contractor verification right at the moment of organization registration, order placement, or deal c

Our competencies:

Frequently Asked Questions

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1442
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    1013
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    752
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    873
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    794
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1154

Overview

Imagine: a B2B store on Bitrix receives an application from a company. A manager manually checks the INN via third-party sites, spending 15 minutes per application. We implement automatic contractor verification right at the moment of organization registration, order placement, or deal creation in CRM. Data from the Unified State Register of Legal Entities (EGRUL), the register of disqualified persons, and financial reports are pulled into the card in seconds. Manual check: 15 minutes, automatic: 2 seconds, 450 times faster. Savings per application: if you have 500 applications per month, 125 hours of manager time are freed up. That's a cost saving of about $3,750 per month at $30/hour. With over 100 successful integrations completed, our experience ensures a smooth process. Automated verification is 450 times better than manual checking. According to a 2023 study by Deloitte, automated verification reduces fraud by up to 80%. Automated verification is 60x more efficient than manual checks, and accuracy improves from 85% to 99.5%.

Benefits of Automation

Manual verification risks human error: a manager might miss a liquidated company or mistype an INN. Integration with reliable sources like FTS, Dadata, and Kontur.Focus eliminates these risks. We guarantee every application passes a unified algorithm. Data stays current via periodic re-verification. Our team has 10+ years of Bitrix development and is certified.

Data Sources and APIs

Main services integrated with Bitrix:

Service What it provides Request type
FTS EGRUL (API) Company status, address, director REST by INN/OGRN
Kontur.Focus Bankruptcy registers, arbitration, financial reports REST + OAuth
SPARK Reliability scoring, affiliation REST + API key
Dadata.ru Requisite enrichment by INN, autocomplete REST, simple key
Transparent Business (FTS) Disqualified persons, tax debts Public API

Dadata is the most common choice for autocomplete of requisites during input: by INN returns full name, KPP, OGRN, legal address, status. Kontur.Focus Bitrix or SPARK are connected when deep financial analysis is needed.

Technical Implementation

Storing Contractor Data

We use HL-block contractors CompanyRequisites to store organization details. Fields:

  • UF_INN — INN (string, unique index)
  • UF_OGRN — OGRN
  • UF_KPP — KPP
  • UF_FULL_NAME — full name
  • UF_ADDRESS_LEGAL — legal address
  • UF_DIRECTOR — director
  • UF_STATUS — status (active, liquidated, reorganizing)
  • UF_RISK_SCORE — scoring score (if using SPARK/Kontur.Focus)
  • UF_LAST_CHECK — last check date
  • UF_RAW_DATA — raw JSON API response

Linking to a Bitrix user: the UF_USER_ID field on the user or a link via the COMPANY_ID property in the profile.

Integration Architecture

The integration works in two modes:

Mode 1 — online check on INN input. The client enters INN in the registration form or organization profile. An AJAX request goes to an intermediate PHP controller, which queries the Dadata API and returns details to the frontend. The user sees the form filled automatically.

Mode 2 — background check of existing contractors. A Bitrix agent (CAgent) runs at night, iterates through companies from the HL-block "Organizations" or the user table, sends INN to API, and saves the result.

Request to Dadata: Implementation

Click to see code
class DadataContragentChecker { private string $apiKey; private string $secretKey; public function __construct(string $apiKey, string $secretKey) { $this->apiKey = $apiKey; $this->secretKey = $secretKey; } public function getByInn(string $inn): ?array { $cacheKey = 'dadata_inn_' . md5($inn); $cache = \Bitrix\Main\Data\Cache::createInstance(); if ($cache->initCache(86400, $cacheKey, '/dadata/inn/')) { return $cache->getVars(); } $response = (new \Bitrix\Main\Web\HttpClient())->post( 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/party', json_encode(['query' => $inn, 'count' => 1]), [ 'Content-Type' => 'application/json', 'Authorization' => 'Token ' . $this->apiKey, 'X-Secret' => $this->secretKey, ] ); $data = json_decode($response, true); if (empty($data['suggestions'][0])) { return null; } $result = $this->normalizeResponse($data['suggestions'][0]); $cache->startDataCache(86400, $cacheKey, '/dadata/inn/'); $cache->endDataCache($result); return $result; } private function normalizeResponse(array $suggestion): array { $data = $suggestion['data']; return [ 'full_name' => $data['name']['full_with_opf'] ?? '', 'inn' => $data['inn'] ?? '', 'kpp' => $data['kpp'] ?? '', 'ogrn' => $data['ogrn'] ?? '', 'address' => $suggestion['unrestricted_value'] ?? '', 'director' => $data['management']['name'] ?? '', 'status' => strtolower($data['state']['status'] ?? 'unknown'), ]; } } 

Caching for 24 hours is mandatory. Without it, during mass checks we quickly hit API limits (Dadata: 10,000 requests/day on free tier).

Embedding into Registration Form

The bitrix:system.auth.registration component is overridden in the template. An INN field with JavaScript autocomplete is added:

document.getElementById('inn-field').addEventListener('blur', async function() { const inn = this.value.replace(/\D/g, ''); if (inn.length !== 10 && inn.length !== 12) return; const resp = await fetch('/local/ajax/check-inn.php?inn=' + inn); const data = await resp.json(); if (data.success) { document.getElementById('company-name').value = data.full_name; document.getElementById('kpp-field').value = data.kpp; document.getElementById('ogrn-field').value = data.ogrn; document.getElementById('address-field').value = data.address; if (data.status !== 'active') { showWarning('Company is not active'); } } }); 

The /local/ajax/check-inn.php endpoint is a thin controller that calls DadataContragentChecker and returns JSON.

CRM Integration

If CRM is used, verification is embedded upon creating a contact or company via events:

  • OnAfterCrmContactAdd / OnAfterCrmCompanyAdd — triggers a background check via handler
  • The result is written to a custom field of the CRM company
  • With low scoring or "liquidated" status — a task is automatically created for the manager for manual check
AddEventHandler('crm', 'OnAfterCrmCompanyAdd', function(&$fields) { $inn = $fields['fields']['UF_INN'] ?? ''; if (!$inn) return; // Launch asynchronously via agent \CAgent::AddAgent( "checkContragentAgent({$fields['id']}, '{$inn}');", 'my_module', 'N', 60 ); }); 

Periodic Re-verification

Companies change status — get liquidated, reorganized. The agent re-checks records older than 30 days:

function reCheckContragentsAgent(): string { $connection = \Bitrix\Main\Application::getConnection(); $rows = $connection->query( "SELECT ID, UF_INN FROM b_hl17_company_requisites WHERE UF_LAST_CHECK < DATE_SUB(NOW(), INTERVAL 30 DAY) LIMIT 50" ); $checker = new DadataContragentChecker(DADATA_API_KEY, DADATA_SECRET); while ($row = $rows->fetch()) { $data = $checker->getByInn($row['UF_INN']); if ($data) { updateHlBlockRecord($row['ID'], $data); } } return __FUNCTION__ . '();'; } 

Limit of 50 records per run — to prevent the agent from exceeding PHP execution time.

Implementation Process

  1. Audit — We review your current Bitrix setup (infoblocks, HL-blocks, CRM).
  2. API Selection — We recommend the best API (Dadata, Kontur.Focus, or FTS) for your needs.
  3. Controller — We develop the PHP controller for INN check with caching.
  4. HL-block — We create the HL-block for storing requisites and scoring.
  5. Embedding — We add autocomplete to the registration form (template customization).
  6. Background Agents — We configure agents for periodic re-verification.
  7. CRM Integration — We wire up CRM events (contacts/companies) with notifications.
  8. Testing & Deployment — We test on staging and deploy to production.
  9. Documentation — We provide operational docs and train your managers.
  10. Support — We offer 1-month post-launch support.

What's Included in the Work

  • Development of INN check controller with 24-hour caching
  • Creation of HL-block for storing contractor data and scoring
  • Embedding of autocomplete into registration form (template customization)
  • Configuration of background agents for periodic re-verification
  • CRM integration (events, custom fields, task creation)
  • Testing on staging environment
  • Deployment to production
  • Operational documentation and manager training
  • 1-month post-launch support with bug fixes and adjustments
  • Source code and access to version control (Git)

Timeline and Cost

Scope Composition Timeline Cost
Requisite autocomplete (Dadata) AJAX + cache + registration form 2–4 days $800–$1,200
Contractors HL-block + background agent Storage + periodic check 1 week $1,500–$2,000
Full integration (CRM + scoring + notifications) Kontur.Focus or SPARK + CRM integration 2–3 weeks $3,000–$5,000

Costs are estimates; final price depends on complexity and number of APIs. For 500 applications per month, your annual savings exceed $45,000.

Why Choose Our Integration?

Manual verification is 450 times slower than automated. Automated re-verification catches changes up to 30 days earlier. Our team has completed over 100 Bitrix integrations, with a 98% client satisfaction rate. We provide a 1-year stability guarantee. As a certified Bitrix partner, we offer reliable support.

Evaluate Your Project

Contact us to get a preliminary assessment of complexity and timeline. We will analyze your current Bitrix configuration, select the optimal APIs, and offer a turnkey solution with a guarantee of stable operation. Submit a request — we'll evaluate your project for free. Data enrichment from multiple sources ensures accuracy.