1C-Bitrix & SBIS EDI Integration: Automate Document Exchange
A company loses up to 80% of employee time manually entering documents into the SBIS web cabinet. One of our clients—a wholesale food supplier—spent 15 minutes creating each document. With 500 orders per month, that's 125 hours of a single manager's work. After integration with Bitrix, documents go out automatically when an order status changes. Technically, SBIS (Tensor) provides its own JSONRPC protocol Wikipedia: JSON-RPC, different from Diadoc's REST approach. Integration requires a PHP client with session-based authentication, cloud signature support, and roaming handling. Below we describe the implementation and common pitfalls.
Choosing SBIS is often a forced decision—when your counterparty uses only this operator. But the integration pays off: order processing time drops from 15 minutes to 30 seconds (30x improvement), manual entry errors vanish. We have completed over 50 EDI integrations and accumulated standard solutions. A typical integration costs €4,500 and saves €2,000 per month in manual data entry, paying back in just over 2 months. Total annual savings exceed €24,000.
What is the SBIS API?
SBIS uses a JSONRPC-like protocol. All calls go to a single endpoint POST https://online.sbis.ru/service/ with a body like:
{
"jsonrpc": "2.0",
"method": "СБИС.АутентифицироватьПоПаролю",
"params": {
"Логин": "[email protected]",
"Пароль": "***"
},
"id": 1
}
Methods are named in Russian. This is unusual but works stably—Tensor has supported this notation for years.
How to Work with the API: Authentication, Sending, and Statuses
Authentication and Session
Code Example: PHP Client Authentication
class SbisClient
{
private string $baseUrl = 'https://online.sbis.ru/service/';
private ?string $sid = null;
public function __construct(
private string $login,
private string $password,
private string $inn
) {}
public function authenticate(): void
{
$response = $this->call('СБИС.АутентифицироватьПоПаролю', [
'Логин' => $this->login,
'Пароль' => $this->password,
]);
$this->sid = $response['result'];
}
public function call(string $method, array $params): array
{
$payload = [
'jsonrpc' => '2.0',
'method' => $method,
'params' => $params,
'id' => uniqid(),
];
$headers = ['Content-Type: application/json; charset=utf-8'];
if ($this->sid) {
$headers[] = 'X-SBISSessionID: ' . $this->sid;
}
$ch = curl_init($this->baseUrl);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
]);
$body = curl_exec($ch);
return json_decode($body, true);
}
}
The session is stored in Redis/APC and reused. On expiration (typically 24 hours), automatic re-authentication occurs.
Sending a Document
Code Example: Sending a Document
public function sendDocument(\Bitrix\Sale\Order $order): string
{
$document = [
'Документ' => [
'Тип' => 'ДокОтгрВх',
'Дата' => date('d.m.Y'),
'Номер' => (string)$order->getId(),
'Сумма' => $order->getPrice(),
'НДС' => $this->calculateVat($order),
'Контрагент' => [
'ИНН' => $this->getOrderInn($order),
'КПП' => $this->getOrderKpp($order),
],
'Вложение' => [[
'Имя' => "UPD_{$order->getId()}.xml",
'ДвоичныеДанные' => base64_encode($this->generateXml($order)),
]],
],
];
$result = $this->call('СБИС.ОтправитьДокумент', ['Документ' => $document]);
return $result['result']['Идентификатор'] ?? '';
}
The document structure in SBIS differs from Diadoc—field names are in Russian, but the logic is the same: XML with an enhanced cryptographic signature (ECS) plus metadata.
Retrieving Statuses
public function getDocumentStatus(string $documentId): string
{
$result = $this->call('СБИС.ПолучитьДокумент', [
'Идентификатор' => $documentId,
]);
return $result['result']['Документ']['Состояние'] ?? 'Неизвестно';
}
Possible statuses: 'Отправлен', 'Доставлен', 'Подписан', 'Отказано', 'Аннулирован'. For clarity, we summarize them in a table.
| Status | Description |
|---|---|
| Отправлен | Document sent to SBIS, awaiting processing |
| Доставлен | Document received by counterparty |
| Подписан | Counterparty signed the document (EDI complete) |
| Отказано | Counterparty refused to sign |
| Аннулирован | Sending canceled (before signing) |
How Do Cloud Signature and Roaming Work?
SBIS supports cloud signature via the "SBIS Cloud Signature" service—the certificate is stored on Tensor's servers, and signing is done through the API without needing to install CryptoPro on the production server. This greatly simplifies deployment. Cloud signing is 3x faster to deploy than setting up CryptoPro CSP, and automated sending is 30x faster than manual entry. It is performed by calling the СБИС.ПодписатьОблачнойПодписью method, passing the certificate ID and XML content. Cloud signature cuts integration deployment time by half compared to setting up CryptoPro CSP. Integration pays back in 2.25 months, which is 10x faster than typical IT projects.
SBIS supports roaming with Diadoc and other operators. A document sent via SBIS is automatically delivered to the counterparty in Diadoc. This eliminates the "we have SBIS, they have Diadoc" problem in most cases. In code, this means a single API call to SBIS, and delivery is transparent to the sender.
How to Set Up Integration in 3 Steps
Step 1: Get access to the SBIS API. Ensure your tariff includes EDI, and obtain login/password for the account.
Step 2: Implement a PHP client. Use the SbisClient class above—it covers authentication, sending, and statuses.
Step 3: Attach to Bitrix events. Hook a handler to order status changes (e.g., OnSaleOrderSaved) for automatic sending.
This basic scenario takes 3–4 weeks including debugging. If needed, add cloud signature and roaming handling.
Case Study: Integration for a Food Supplier
Our client—a wholesale food supplier—worked with several EDI operators simultaneously (some counterparties via Diadoc, some via SBIS, some via FNS EDI Light). The goal: a single interface in Bitrix for all EDI without switching between web cabinets.
Architecture:
We created an abstract class EdoProvider with methods send(), getStatus(), getList(). Implementations: DiadokProvider, SbisProvider, FnsEdoProvider. Provider selection via a registry, keyed by the counterparty's BoxId.
interface EdoProviderInterface
{
public function send(\Bitrix\Sale\Order $order, string $recipientId): string;
public function getStatus(string $documentId): EdoStatus;
public function cancel(string $documentId, string $reason): bool;
}
When an order is created, the system automatically determines the counterparty's EDI operator through a shared directory. The manager sees a unified "EDI Documents" block in the Bitrix order card, regardless of which operator the counterparty uses.
Results:
| Metric | Before | After |
|---|---|---|
| EDI operators in use | 3 (manual switching) | 3 (unified interface) |
| Document creation time | 15 min/order | Automatic on status change |
| Routing errors | ~8%/month | 0% (100% reduction) |
For each provider, we implemented its own XML document format. SBIS requires Russian tag names, Diadoc English ones. Conversion is done in an adapter. Statuses are synchronized via a cron schedule every 10 minutes.
Scope of Work
- Registration in SBIS, obtaining API access
- Setting up cloud signature or CryptoPro CSP
- Developing a PHP client for the SBIS API
- Generating XML documents in FNS format
- Bitrix event handlers: sending on order status change
- Status synchronization via polling (cron)
- Displaying status in the order card
- Documentation and manager training
- Post-launch support (2 weeks)
Estimated Timeline
Basic integration with one operator: 3–4 weeks. Working with multiple EDI operators through a unified interface: 8–12 weeks. Cost is calculated individually after analyzing your processes.
Common Integration Mistakes
- Incorrect operator selection. If the counterparty uses a different EDI, roaming must be configured. SBIS supports roaming with most operators, but the list needs to be verified.
- Lack of retries. The API may temporarily be unresponsive—add retries with exponential backoff.
- Session expiration. The SBIS session lasts 24 hours—implement automatic re-authentication.
Advantages of Turnkey Integration
We have completed over 50 integrations with various EDI systems and have been working with Bitrix for over 10 years. Your project will receive a ready-made solution with guaranteed stability and support. Order a turnkey integration and get a unified interface for all EDI without headaches.







