Настройка выставления счетов на оплату в 1С-Битрикс
Счёт на оплату — первичный документ, который магазин выставляет покупателю. В B2B-сегменте без счёта сделка не состоится: бухгалтер не проведёт платёжное поручение без документального основания. В Битрикс выставление счетов реализуется через CRM (для Битрикс24) или через кастомный модуль для Битрикс-сайта.
Два контекста: сайт vs Битрикс24 CRM
Битрикс24 CRM имеет встроенный модуль счетов. Счёт создаётся менеджером прямо в CRM, привязывается к сделке, отправляется покупателю по email. Оплата — через встроенный эквайринг или по реквизитам.
Битрикс (сайт, не CRM) — встроенного модуля счетов нет. Нужно либо строить кастомную систему на базе модуля Sale, либо интегрировать с внешней бухгалтерией (1С, МойСклад и т.п.).
Счёт в Битрикс CRM
В Битрикс24 счёт создаётся через:
- CRM → Счета → Создать
- Или автоматически из сделки: Сделка → Выставить счёт
Подключение оплаты к счёту — через раздел «Подключить эквайринг» в настройках CRM. Поддерживаются Тинькофф, Сбербанк, ЮКасса и другие.
После создания счёт отправляется покупателю с ссылкой на оплату:
https://crm.company.bitrix24.ru/pub/invoices/INVOICE_ID/?hash=HASH
По этой ссылке покупатель может оплатить банковской картой или посмотреть реквизиты для оплаты по безналу.
Кастомная система счетов для Битрикс-сайта
Если нужно выставлять счета на обычном сайте (не Битрикс24):
Структура счёта:
CREATE TABLE b_invoices (
id SERIAL PRIMARY KEY,
order_id INT REFERENCES b_sale_order(ID),
invoice_number VARCHAR(32) UNIQUE NOT NULL, -- ФС-2024-00123
user_id INT,
company_name VARCHAR(256),
inn VARCHAR(12),
kpp VARCHAR(9),
legal_address TEXT,
amount DECIMAL(10,2),
currency CHAR(3) DEFAULT 'RUB',
status VARCHAR(16) DEFAULT 'draft', -- draft|sent|paid|cancelled
due_date DATE,
paid_at TIMESTAMP,
created_at TIMESTAMP DEFAULT NOW()
);
Генерация PDF-счёта:
function generateInvoicePdf(array $invoice, array $orderItems): string
{
// Используем mPDF или TCPDF
$mpdf = new Mpdf\Mpdf(['mode' => 'utf-8', 'format' => 'A4']);
$html = renderInvoiceTemplate($invoice, $orderItems);
$mpdf->WriteHTML($html);
$path = DOCUMENT_ROOT . '/upload/invoices/invoice_' . $invoice['id'] . '.pdf';
$mpdf->Output($path, 'F');
return $path;
}
Нумерация счетов:
function nextInvoiceNumber(): string
{
$db = Bitrix\Main\Application::getConnection();
$year = date('Y');
$last = $db->queryScalar("
SELECT MAX(CAST(SPLIT_PART(invoice_number, '-', 3) AS INT))
FROM b_invoices
WHERE invoice_number LIKE 'FS-" . $year . "-%'
");
$next = ((int)$last + 1);
return sprintf('FS-%d-%05d', $year, $next);
}
Отправка счёта покупателю
// Email с PDF-вложением
$mail = new Bitrix\Main\Mail\Mail([
'TO' => $buyerEmail,
'SUBJECT' => 'Счёт №' . $invoice['invoice_number'] . ' на оплату',
'BODY' => renderInvoiceEmailBody($invoice),
'CHARSET' => 'UTF-8',
'ATTACHMENT' => [
[
'path' => $pdfPath,
'name' => 'Счёт_' . $invoice['invoice_number'] . '.pdf',
'encoding' => 'base64',
'type' => 'application/pdf',
],
],
]);
$mail->send();
Ссылка на онлайн-оплату в счёте
Счёт может содержать не только реквизиты для банка, но и кнопку онлайн-оплаты:
// Генерируем ссылку на оплату через агрегатор
$paymentLink = generatePaymentLink($invoice['order_id']);
// Добавляем в PDF-шаблон счёта:
// "Оплатить онлайн: $paymentLink"
// Или QR-код с этой ссылкой
Это удобно для клиентов, которые предпочитают платить картой, но хотят получить официальный счёт.
Сроки
| Задача | Срок |
|---|---|
| Счета в Битрикс24 CRM (настройка) | 0.5–1 день |
| Кастомная система счетов на сайте | 3–5 дней |
| Генерация PDF по шаблону | 1–2 дня |
| Автоотправка и онлайн-оплата в счёте | 1–2 дня |







