31 януари 2026 г. | KanKrum Team
Пролог: Тъмните времена
Представи си следната картина.
Собственик си на малка фирма. Може би онлайн магазин, може би консултантска дейност, може би малък производствен бизнес. Имаш 5-10 служители. Оборот – някъде между 100 и 500 хиляди годишно. Нищо грандиозно, но честен бизнес.
И всеки месец се случва едно и също:
Сцена 1: Excel адът
Счетоводителката ти (или ти самият, ако си смел) отваря Excel файл с 47 sheet-а. Файлът е 15 MB. Отваря се 2 минути. Формулите са толкова сложни, че никой не смее да ги пипа. Миналия месец някой случайно изтри ред и цялата оборотна ведомост показваше минус 2 милиона.
Сцена 2: Facebook „експертът“
В някоя група виждаш пост: „Продавам СУПЕР Excel таблица за ДДС дневници! Автоматично изчислява всичко! Само 79 лева!“
Купуваш. Отваряш. Това е… таблица с 3 колони и един SUMIF. „Автоматично“ означава, че трябва ръчно да копираш данните от 5 други места.
Сцена 3: „Истинският“ софтуер
Обаждаш се на голям доставчик на ERP. Демо изглежда добре. После идва офертата:
- Лиценз: 2400 лева/година
- Внедряване: 1500 лева
- Обучение: 800 лева
- Поддръжка: 200 лева/месец
- Модул ДМА: +600 лева
- Модул Склад: +800 лева
Общо за първата година: 6300+ лева
За малка фирма това е… много.
Сцена 4: 2027 идва
И точно когато мислиш, че нещата не могат да станат по-зле, НАП обявява: SAF-T става задължителен от 2027 година.
SAF-T (Standard Audit File for Tax) е международен XML формат за подаване на счетоводни данни. Не Excel. Не PDF. XML с точно определена структура, кодове, номенклатури.
Питаш Facebook „експерта“ дали неговият Excel поддържа SAF-T.
Тишина.
Проблемът с българския пазар
Нека бъдем директни за състоянието на счетоводния софтуер в България:
Категория 1: Динозаврите
Софтуери, писани през 90-те и началото на 2000-те. Windows Forms интерфейс. Локална инсталация. База данни на компютъра (често Paradox или Access).
Плюсове: Работят. Счетоводителите ги познават.
Минуси:
- Изглеждат като Windows 98
- Няма уеб достъп
- Backup = копираш папка на флашка
- Интеграции? Какво е това?
- SAF-T? „Ще го направим… някой ден“
Категория 2: Облачните гиганти
Международни платформи, адаптирани за България. Модерен интерфейс. Месечен абонамент.
Плюсове: Красиви са. Работят в браузър.
Минуси:
- Абонамент 50-150 лева/месец (600-1800 лева/година)
- Българската локализация е… приблизителна
- Поддръжката е на английски
- Данните ти са… някъде в облака
- SAF-T по български стандарт? „Работим по въпроса“
Категория 3: Excel „решенията“
Таблици, продавани във Facebook групи. Безплатни шаблони от интернет. Неща, създадени от „този познат, който се оправя с компютри“.
Плюсове: Евтино. Познато.
Минуси:
- Не е счетоводен софтуер
- Няма одитна следа
- Няма контрол на достъпа
- Формулите се чупят
- SAF-T? Смях.
- Данъчна проверка? Кошмар.
Категория 4: Нищо
Изненадващо голям брой малки фирми просто… нямат система. Счетоводителят работи в своя софтуер. Собственикът няма достъп до нищо. Веднъж годишно получава баланс на хартия.
Какво е KanKrum?
KanKrum е нашият отговор на всичко горе.
Една система. Пълна функционалност. Реално работеща.
Не е концепция. Не е „скоро излиза“. Не е MVP с 3 екрана.
Това е production система с:
- 46 database миграции (всяка тествана)
- 1000+ файла код (Java + React)
- Пълна българска локализация
- SAF-T номенклатури на НАП (заредени и работещи)
- Реална VIES интеграция (проверка на ДДС номера в реално време)
- AI разпознаване на фактури (не OCR от 2005)
Философия
- Виждаш какво става с данните ти
- Self-hosted опция – Можеш да го инсталираш на свой сървър
- Модерен стек – Технологии от 2024-2026, не от 2004
- SAF-T first – Проектирано с мисъл за бъдещето
- Developer friendly – REST API за всичко
Технологичен стек в детайли
За тези, които се интересуват какво има под капака:
Backend: Java 21 + Spring Boot 3.2
// Не PHP. Не Node.js прототип. Enterprise Java.
@RestController
@RequestMapping("/api/accounting")
public class AccountingController {
@PostMapping("/entries/bulk-post")
public ResponseEntity<BulkOperationResult> bulkPostEntries(
@RequestBody List<Long> entryIds) {
return ResponseEntity.ok(
accountingService.bulkPostEntries(entryIds)
);
}
}
Защо Java?
- Типизиран език = по-малко runtime грешки
- Огромна екосистема
- Spring Boot е индустриален стандарт
- Лесно се scale-ва
- Всеки enterprise developer го знае
Frontend: React 18 + TypeScript + Material UI
// Модерен React с типове. Не jQuery от 2010.
const JournalEntries: React.FC = () => {
const [selectedIds, setSelectedIds] = useState<number[]>([]);
const [entries, setEntries] = useState<JournalEntry[]>([]);
const handleBulkPost = async () => {
const result = await accountingService.bulkPostEntries(selectedIds);
// ...
};
return (
<TableContainer component={Paper}>
{/* Material UI компоненти */}
</TableContainer>
);
};
Защо React + TypeScript?
- Компонентна архитектура
- Type safety
- Огромна общност
- Material UI дава професионален вид
- Hot reload при разработка
Database: PostgreSQL 16
-- Не SQLite. Не MySQL. PostgreSQL.
-- Пример: Счетоводни записи с full audit trail
CREATE TABLE journal_entries (
id BIGSERIAL PRIMARY KEY,
company_id UUID NOT NULL REFERENCES companies(id),
date DATE NOT NULL,
description VARCHAR(500),
status VARCHAR(20) DEFAULT 'DRAFT',
document_number VARCHAR(50),
document_date DATE,
vat_purchase_operation VARCHAR(50),
vat_sales_operation VARCHAR(50),
vat_period VARCHAR(7),
payment_method_code VARCHAR(10),
counterpart_id BIGINT REFERENCES counterparts(id),
created_by BIGINT REFERENCES users(id),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- ... още полета
);
-- Индекси за бързодействие
CREATE INDEX idx_je_company_date ON journal_entries(company_id, date);
CREATE INDEX idx_je_status ON journal_entries(status);
CREATE INDEX idx_je_vat_period ON journal_entries(vat_period);
Защо PostgreSQL?
- ACID транзакции (критично за счетоводство!)
- JSON поддръжка
- Отлична производителност
- Безплатен и open source
- Използва се от Instagram, Spotify, Netflix
Graph Database: ArangoDB
// За AI анализи - граф на доставчици, клиенти, транзакции
FOR doc IN scanned_documents
FOR v, e, p IN 1..3 OUTBOUND doc vendor_edges
RETURN {
vendor: v.name,
totalAmount: SUM(p.edges[*].amount),
invoiceCount: COUNT(p.edges)
}
Защо ArangoDB?
- Граф + документи в една база
- Перфектно за анализи на връзки
- „Кой е най-големият ми доставчик?“
- „Какви са тенденциите по месеци?“
AI/ML: Mistral OCR
# Не обикновен OCR. Cognitive Services.
# Azure разпознава:
# - Структура на документа
# - Полета (доставчик, дата, суми)
# - Таблици с артикули
# - Дори ръкописен текст
{
"vendor_name": "ЕООД Примерна Фирма",
"vendor_vat": "BG123456789",
"invoice_number": "0000001234",
"invoice_date": "2026-01-15",
"subtotal": 1000.00,
"vat_amount": 200.00,
"total": 1200.00,
"confidence": 0.94
}
Reports: JasperReports
<!-- Професионални PDF справки -->
<jasperReport name="TrialBalance">
<parameter name="COMPANY_NAME"/>
<parameter name="START_DATE"/>
<parameter name="END_DATE"/>
<columnHeader>
<staticText><text>Сметка</text></staticText>
<staticText><text>Начално салдо</text></staticText>
<staticText><text>Обороти</text></staticText>
<staticText><text>Крайно салдо</text></staticText>
</columnHeader>
<!-- Данни от базата -->
</jasperReport>
Deployment: Docker + Caddy
# docker-compose.yml - цялата система в един файл
services:
backend:
build: ./backend
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/kankrum
depends_on:
postgres:
condition: service_healthy
frontend:
build: ./frontend
postgres:
image: postgres:16
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready"]
caddy:
image: caddy:2
ports:
- "80:80"
- "443:443"
# Автоматичен SSL сертификат!
Резултат:
git clone [repo]
docker compose up -d
# Готово. Системата работи с HTTPS.
Модул: Счетоводство
Сърцето на системата. Нека разгледаме в детайли.
Сметкоплан
Не започваш от нулата. Системата идва с:
- Пълна SAF-T номенклатура на НАП – 500+ стандартни сметки
- Възможност за собствени сметки – добавяш каквото ти трябва
- Mapping към SAF-T кодове – всяка твоя сметка се свързва със стандартна
Твоя сметка SAF-T код Описание
──────────────────────────────────────────────
302 302 Материали
302-1 302 Материали - Склад А
302-2 302 Материали - Склад Б
401 401 Доставчици
401-ЕООД 401 Доставчик Х ЕООД
Типове сметки:
- Активни (Asset)
- Пасивни (Liability)
- Собствен капитал (Equity)
- Приходи (Revenue)
- Разходи (Expense)
Флагове:
- Материална/Стокова сметка (за количествено отчитане)
- SAF-T balance type (Debit/Credit)
Счетоводни записи (Journal Entries)
Тук става истинската магия.
Създаване на запис:
- Избираш тип: Покупка / Продажба / Без ДДС
- Въвеждаш документ: номер, дата, контрагент
- Добавяш редове: сметка, дебит/кредит, описание
- Системата проверява: балансиран ли е записът?
- Запазваш като чернова (DRAFT)
- Когато си готов – осчетоводяваш (POST)
Статуси:
DRAFT– чернова, може да се редактира и изтриваPOSTED– осчетоводен, защитен от промени
Bulk операции (НОВО!):
Имаш 50 записа за осчетоводяване? Не ги правиш един по един.
[✓] Избери всички
[✓] Запис 1 - Фактура 001
[✓] Запис 2 - Фактура 002
[✓] Запис 3 - Фактура 003
...
[Осчетоводи избраните] [Върни в чернова] [Изтрий]
Резултат: „Осчетоводени: 48, неуспешни: 2“
Неуспешните? Системата ти казва защо – небалансирани, затворен период, и т.н.
Счетоводни периоди
Защита на историческите данни:
Период Статус Затворен от Дата
────────────────────────────────────────────
2025-12 ЗАТВОРЕН admin 05.01.2026
2026-01 ОТВОРЕН - -
2026-02 ОТВОРЕН - -
Когато затвориш период:
- Не можеш да създаваш записи в него
- Не можеш да редактираш съществуващи
- Не можеш да изтриваш
Можеш да отвориш отново (ако имаш права), но има пълен audit trail.
Начални салда
Преминаваш от друга система? Въвеждаш началните салда:
Дата: 01.01.2026
Сметка Дебит Кредит
────────────────────────────────
302 15,000.00 -
401 - 8,000.00
501 3,000.00 -
503 25,000.00 -
...
Системата проверява дали сборът на дебитите = сборът на кредитите.
Оборотна ведомост (Trial Balance)
Класическата 6-колонна ведомост:
Начално салдо Обороти Крайно салдо
Сметка Дебит Кредит Дебит Кредит Дебит Кредит
─────────────────────────────────────────────────────────────────
302 Материали 15,000 - 5,000 3,000 17,000 -
401 Доставчици - 8,000 7,500 4,000 - 4,500
501 Каса 3,000 - 2,000 1,500 3,500 -
...
─────────────────────────────────────────────────────────────────
ОБЩО 43,000 43,000 50,000 50,000 48,000 48,000
Генерира се като:
- Таблица в браузъра
- PDF (чрез JasperReports)
- Excel (за тези, които все още обичат Excel)
Модул: ДДС и данъци
Българското ДДС е… специално. Системата го разбира.
Типове сделки
Покупки:
- Покупка с право на данъчен кредит (най-честият случай)
- Покупка без право на данъчен кредит
- ВОП (вътреобщностно придобиване) – с протокол за самоначисляване
Продажби:
- Продажба 20% (стандартна ставка)
- Продажба 9% (хотели, туризъм)
- Продажба 0% (износ)
- ВОД (вътреобщностна доставка)
- Освободени доставки
ДДС дневници
Автоматично генериране на:
Дневник за покупките:
№ Дата Доставчик ДДС № Док.№ Основа ДДС
──────────────────────────────────────────────────────────────────────────
1 05.01.26 Офис Консумативи ООД BG123456789 0001 500.00 100.00
2 08.01.26 Телеком България АД BG987654321 F-2345 80.00 16.00
3 12.01.26 DE Supplier GmbH DE123456789 INV-99 1000.00 200.00*
...
──────────────────────────────────────────────────────────────────────────
ОБЩО: 1580.00 316.00
* Самоначисляване по чл. 82
Дневник за продажбите:
№ Дата Клиент ДДС № Док.№ Основа ДДС
──────────────────────────────────────────────────────────────────────────
1 03.01.26 Клиент Едно ЕООД BG111222333 0000001 2000.00 400.00
2 07.01.26 Клиент Две ООД BG444555666 0000002 1500.00 300.00
...
ДДС декларация
Обобщение за периода:
РАЗДЕЛ А: Начислен ДДС (продажби)
─────────────────────────────────
01. Данъчна основа 20%: 3,500.00
02. Начислен ДДС 20%: 700.00
03. Данъчна основа 9%: 0.00
04. Начислен ДДС 9%: 0.00
05. ВОД (0%): 500.00
...
РАЗДЕЛ Б: Данъчен кредит (покупки)
──────────────────────────────────
31. Данъчна основа с право на НК: 1,580.00
32. Ползван данъчен кредит: 316.00
...
РЕЗУЛТАТ
────────
50. ДДС за внасяне: 384.00
или
51. ДДС за възстановяване: 0.00
VIES интеграция
Реална връзка с EU VIES системата:
Въведи ДДС номер: DE123456789
[Провери в VIES]
Резултат:
✓ Валиден ДДС номер
Име: Example GmbH
Адрес: Musterstraße 1, 10115 Berlin, Germany
[Добави като контрагент]
Не fake проверка. Реална заявка към ec.europa.eu.
Самоначисляване (Reverse Charge)
За ВОП системата автоматично генерира протокол:
Фактура от EU доставчик:
Основа: 1000 EUR
Курс: 1.9558
Основа BGN: 1955.80
Автоматично генерирани редове:
Дт 4531 ДДС покупки 391.16 (самоначисляване)
Кт 4532 ДДС продажби 391.16 (самоначисляване)
Модул: AI сканиране на фактури
Това е функцията, която спестява часове.
Как работи?
Стъпка 1: Качване
Drag & drop PDF или снимка. Поддържа:
- PDF (включително сканирани)
- PNG, JPG (снимки от телефон)
- Множество файлове наведнъж
Стъпка 2: AI обработка
mistral ocr анализира документа:
{
"vendor": {
"name": "ЕООД Примерна Фирма",
"vatNumber": "BG123456789",
"address": "ул. Примерна 1, София",
"confidence": 0.96
},
"invoice": {
"number": "0000001234",
"date": "2026-01-15",
"confidence": 0.98
},
"amounts": {
"subtotal": 1000.00,
"vatAmount": 200.00,
"total": 1200.00,
"confidence": 0.94
},
"lineItems": [
{
"description": "Офис консумативи",
"quantity": 10,
"unitPrice": 100.00,
"amount": 1000.00
}
]
}
Стъпка 3: VIES валидация
Системата автоматично проверява ДДС номера:
ДДС номер: BG123456789
Статус: ✓ Валиден в VIES
Име от VIES: ЕООД Примерна Фирма
Съвпадение: ✓ Да
Стъпка 4: Контрагент
Ако контрагентът не съществува:
[!] Нов контрагент
Име: ЕООД Примерна Фирма
ДДС: BG123456789
[Добави в базата]
Стъпка 5: Осчетоводяване
Един клик генерира счетоводен запис:
Дата: 15.01.2026
Документ: Фактура 0000001234
Доставчик: ЕООД Примерна Фирма
Редове:
Дт 602 Разходи за материали 1000.00
Дт 4531 ДДС за възстановяване 200.00
Кт 401 Задължения към доставчици 1200.00
Workflow за масова обработка
1. Качи 50 фактури наку|п
2. AI ги обработва (1-2 минути)
3. Преглед на резултатите:
- 45 успешни (зелено)
- 3 нужда от проверка (жълто)
- 2 грешки (червено)
4. VIES валидация на всички
5. Добави новите контрагенти
6. Осчетоводи всички с един клик
Време за 50 фактури: ~10 минути вместо 2-3 часа ръчно въвеждане.
Модул: Дълготрайни материални активи
Пълно управление на ДМА по българското законодателство.
Категории по ЗКПО (CITA)
Вградени категории с данъчни норми:
Категория Мин % Макс % Данъчен %
──────────────────────────────────────────────────────────────
I. Масивни сгради 4% 4% 4%
II. Машини и оборудване 30% 50% 30%
III. Транспортни средства 25% 25% 25%
IV. Компютри и софтуер 50% 50% 50%
V. Други ДМА 15% 15% 15%
Инвентарна книга
Инв.№ Наименование Дата придоб. Стойност Баланс Статус
──────────────────────────────────────────────────────────────────────────────
001 Сървър Dell PowerEdge 01.03.2025 5,000.00 3,750.00 Активен
002 Лаптоп Lenovo ThinkPad 15.05.2025 2,400.00 2,100.00 Активен
003 Автомобил VW Passat 20.08.2024 35,000.00 26,250.00 Активен
004 Принтер HP LaserJet 10.01.2024 800.00 0.00 Амортизиран
Амортизации
Методи:
- Линеен (равномерен)
- Намаляващ се баланс
Изчисление за период:
Период: Януари 2026
Актив Метод Ставка Амортизация
────────────────────────────────────────────────────────
001 Сървър Dell Линеен 50% 208.33
002 Лаптоп Lenovo Линеен 50% 100.00
003 Автомобил VW Линеен 25% 729.17
────────────────────────────────────────────────────────
ОБЩО: 1,037.50
[Изчисли] [Осчетоводи]
Автоматично контиране
Конфигурираш веднъж:
Тип движение Дебит сметка Кредит сметка
─────────────────────────────────────────────────────
Придобиване 204 Машини 401 Доставчици
Амортизация 603 Разх. аморт. 241 Натр. аморт.
Продажба 411 Клиенти 709 Други приходи
Бракуване 609 Други разходи 204 Машини
При осчетоводяване на амортизация:
Автоматично създаден запис:
Дата: 31.01.2026
Описание: Амортизация за 01/2026
Дт 603 Разходи за амортизация 1,037.50
Кт 241 Натрупана амортизация 1,037.50
Модул: Материални запаси и склад
За фирми с физически стоки и материали.
Продукти и услуги
Код Наименование Мярка Цена Тип Сметка
─────────────────────────────────────────────────────────────────────
P001 Хартия А4 500л. опак. 8.50 Материал 302
P002 Тонер HP 85A бр. 45.00 Материал 302
P003 Консултация 1 час час 80.00 Услуга -
S001 Стол офис бр. 250.00 Стока 304
Складови движения
SAF-T кодове за движения:
Код Тип движение Дебит Кредит
──────────────────────────────────────────────────────
10 Покупка 302 Материали 401 Доставчици
30 Продажба 411 Клиенти 702 Приходи
40 Връщане от клиент 702 Приходи 411 Клиенти
80 Вътрешен трансфер 302-Б 302-А
160 Бракуване 609 Разходи 302 Материали
Автоматично контиране (НОВО!)
Подобно на ДМА – конфигурираш веднъж, системата контира автоматично:
Създаваш складово движение:
Тип: Покупка (код 10)
Продукт: P001 Хартия А4
Количество: 100
Цена: 8.50
Стойност: 850.00
Автоматично създаден счетоводен запис:
Дт 302 Материали 850.00
Кт 401 Доставчици 850.00
Оценка на запасите
FIFO (First In, First Out):
- При продажба първо излизат най-старите
- По-точно отразява реалността
Средна претеглена:
- При всяка покупка се преизчислява средната цена
- По-лесно за проследяване
Модул: Банкова интеграция
Три начина за свързване на банкови сметки.
1. Salt Edge (Open Banking / PSD2)
Поддържа 50+ банки в България и Европа:
Свързване:
1. Избери банка (напр. UniCredit Bulbank)
2. Препратка към банковия портал
3. Въведи потребител и парола
4. Потвърди с код от телефона
5. Готово - транзакциите се импортират
Автоматична синхронизация на всеки 4 часа.
2. Wise Direct API
За бизнеси с Wise акаунт:
1. Генерирай API key от Wise Settings
2. Въведи в KanKrum
3. Автоматичен импорт на всички транзакции
Плюс: Поддържа multi-currency (EUR, USD, GBP…)
3. XML импорт
За банки без API:
1. Изтегли XML от онлайн банкирането
2. Качи в KanKrum
3. Системата разпознава формата (UniCredit, DSK, Postbank...)
4. Транзакциите се импортират
Booking на транзакции
Банкова транзакция → Счетоводен запис:
Транзакция:
Дата: 15.01.2026
Сума: -1,200.00 BGN
Описание: ПЛАЩАНЕ ПО Ф-РА 0001234 ЕООД ПРИМЕРНА ФИРМА
Системата предлага:
Контрагент: ЕООД Примерна Фирма (разпознат по име)
Документ: 0001234 (разпознат от описанието)
Дт 401 Доставчици 1,200.00
Кт 503 Банка 1,200.00
[Потвърди]
SAF-T: Готови за 2027
Standard Audit File for Tax. Бъдещето на данъчната отчетност.
Какво е SAF-T?
XML файл със стандартизирана структура, съдържащ:
- Header – информация за фирмата
- MasterFiles – номенклатури (сметки, клиенти, доставчици, продукти)
- GeneralLedgerEntries – счетоводни записи
- SourceDocuments – фактури (в разработка)
Структура на файла
<?xml version="1.0" encoding="UTF-8"?>
<AuditFile xmlns="urn:OECD:StandardAuditFile-Tax:BG_1.00">
<Header>
<AuditFileVersion>1.00</AuditFileVersion>
<CompanyID>123456789</CompanyID>
<TaxRegistrationNumber>BG123456789</TaxRegistrationNumber>
<CompanyName>Моята Фирма ЕООД</CompanyName>
<CompanyAddress>
<City>София</City>
<PostalCode>1000</PostalCode>
<StreetName>ул. Примерна 1</StreetName>
<Country>BG</Country>
</CompanyAddress>
<FiscalYear>2026</FiscalYear>
<StartDate>2026-01-01</StartDate>
<EndDate>2026-01-31</EndDate>
<DateCreated>2026-02-05</DateCreated>
<SoftwareCompanyName>KanKrum</SoftwareCompanyName>
<SoftwareID>KanKrum ERP</SoftwareID>
<SoftwareVersion>1.0.0</SoftwareVersion>
</Header>
<MasterFiles>
<GeneralLedgerAccounts>
<Account>
<AccountID>302</AccountID>
<AccountDescription>Материали</AccountDescription>
<StandardAccountID>302</StandardAccountID>
<AccountType>Asset</AccountType>
</Account>
<!-- ... още сметки -->
</GeneralLedgerAccounts>
<Customers>
<Customer>
<CustomerID>C001</CustomerID>
<Name>Клиент ЕООД</Name>
<TaxRegistrationNumber>BG111222333</TaxRegistrationNumber>
<!-- ... -->
</Customer>
</Customers>
<Suppliers>
<!-- аналогично -->
</Suppliers>
<Products>
<!-- продукти и услуги -->
</Products>
</MasterFiles>
<GeneralLedgerEntries>
<NumberOfEntries>156</NumberOfEntries>
<TotalDebit>125000.00</TotalDebit>
<TotalCredit>125000.00</TotalCredit>
<Journal>
<JournalID>J001</JournalID>
<Description>Главна книга</Description>
<Transaction>
<TransactionID>1</TransactionID>
<TransactionDate>2026-01-15</TransactionDate>
<Description>Фактура 0001234</Description>
<Line>
<AccountID>602</AccountID>
<DebitAmount>1000.00</DebitAmount>
</Line>
<Line>
<AccountID>4531</AccountID>
<DebitAmount>200.00</DebitAmount>
</Line>
<Line>
<AccountID>401</AccountID>
<CreditAmount>1200.00</CreditAmount>
</Line>
</Transaction>
<!-- ... още транзакции -->
</Journal>
</GeneralLedgerEntries>
</AuditFile>
Генериране в KanKrum
SAF-T Експорт
─────────────
Тип отчет: [x] Месечен [ ] Годишен [ ] По заявка
Година: [2026]
Месец: [Януари]
Включени данни:
[✓] Header (информация за фирмата)
[✓] Сметкоплан (156 сметки)
[✓] Клиенти (45 записа)
[✓] Доставчици (78 записа)
[✓] Продукти (234 артикула)
[✓] Счетоводни записи (312 транзакции)
[Генерирай XML]
Резултат: SAF-T_BG123456789_202601.xml (2.4 MB)
Архитектура за разработчици
За тези, които искат да интегрират или разширят системата.
Обща архитектура
┌─────────────────┐
│ Caddy │
│ (Reverse Proxy)│
│ + Auto SSL │
└────────┬────────┘
│
┌────────────────────────┼────────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ React │ │ Spring Boot │ │ Jasper │
│ Frontend │ │ Backend │ │ Reports │
│ (Nginx) │ │ (Tomcat) │ │ (REST) │
└───────────────┘ └───────┬───────┘ └───────────────┘
│
┌────────────────────────────┼────────────────────────────┐
│ │ │
▼ ▼ ▼
┌────────────────┐ ┌────────────────┐ ┌────────────────┐
│ PostgreSQL │ │ ArangoDB │ │ Mistral AI │
│ (Main DB) │ │ (Analytics) │ │ (OCR) │
└────────────────┘ └────────────────┘ └────────────────┘
REST API endpoints
Автентикация:
POST /api/auth/login # JWT login
POST /api/auth/register # Публична регистрация
POST /api/auth/forgot-password # Забравена парола
POST /api/auth/reset-password # Нова парола
Фирми:
GET /api/companies # Списък фирми на потребителя
POST /api/companies # Създай фирма
GET /api/companies/{id} # Детайли за фирма
PUT /api/companies/{id} # Редактирай фирма
Счетоводство:
GET /api/accounting/companies/{id}/accounts # Сметкоплан
POST /api/accounting/companies/{id}/accounts # Нова сметка
GET /api/accounting/companies/{id}/entries # Всички записи
GET /api/accounting/companies/{id}/entries/paginated # С пагинация
POST /api/accounting/companies/{id}/entries # Нов запис
POST /api/accounting/entries/{id}/post # Осчетоводи
POST /api/accounting/entries/{id}/unpost # Върни в чернова
PUT /api/accounting/entries/{id} # Редактирай
DELETE /api/accounting/entries/{id} # Изтрий
POST /api/accounting/entries/bulk-post # Групово осчетоводяване
POST /api/accounting/entries/bulk-unpost # Групово връщане
POST /api/accounting/entries/bulk-delete # Групово изтриване
ДДС:
GET /api/companies/{id}/vat-returns # ДДС декларации
POST /api/companies/{id}/vat-returns # Нова декларация
GET /api/companies/{id}/vat-returns/{period} # Детайли
POST /api/companies/{id}/vat-returns/{period}/calculate # Изчисли
GET /api/companies/{id}/vat-returns/{period}/export # Експорт
ДМА:
GET /api/companies/{id}/fixed-assets # Активи
POST /api/companies/{id}/fixed-assets # Нов актив
POST /api/companies/{id}/fixed-assets/{assetId}/transactions # Движение
POST /api/companies/{id}/fixed-assets/calculate-depreciation # Изчисли
POST /api/companies/{id}/fixed-assets/post-depreciation # Осчетоводи
GET /api/companies/{id}/fixed-assets/account-mappings # Кореспонденции
Склад:
GET /api/companies/{id}/stock/transactions # Движения
POST /api/companies/{id}/stock/transactions # Ново движение
GET /api/companies/{id}/stock/accounting-map # Кореспонденции
PUT /api/companies/{id}/stock/accounting-map/{code} # Настрой кореспонденция
AI Scanner:
POST /api/companies/{id}/scanner/upload # Качи документ
GET /api/companies/{id}/scanner/documents # Сканирани документи
POST /api/companies/{id}/scanner/{docId}/vies-validate # VIES проверка
POST /api/companies/{id}/scanner/{docId}/book # Осчетоводи
SAF-T:
GET /api/companies/{id}/saft/export?year=2026&month=1 # Генерирай XML
Database schema (ключови таблици)
-- Потребители и фирми
users (id, username, email, password_hash, global_role, ...)
companies (id, name, eik, vat_number, address, ...)
user_company_roles (user_id, company_id, role)
-- Счетоводство
accounts (id, company_id, code, name, type, saft_account_code, ...)
journal_entries (id, company_id, date, status, description, ...)
journal_entry_lines (id, entry_id, account_id, debit, credit, ...)
-- Контрагенти
counterparts (id, company_id, name, eik, vat_number, ...)
-- Продукти
products (id, company_id, code, name, unit, price, inventory_account_id, ...)
-- ДМА
fixed_asset_categories (id, company_id, name, cita_category, ...)
fixed_assets (id, company_id, category_id, name, acquisition_cost, ...)
fixed_asset_transactions (id, asset_id, type, date, amount, ...)
asset_account_mappings (id, company_id, movement_type_id, debit_account_id, credit_account_id, ...)
-- Склад
warehouses (id, company_id, name, ...)
stock_transactions (id, company_id, product_id, warehouse_id, movement_type, quantity, ...)
stock_accounting_maps (id, company_id, movement_type_id, debit_account_id, credit_account_id, ...)
-- ДДС
vat_returns (id, company_id, year, month, status, ...)
-- Scanner
scanned_documents (id, company_id, file_path, status, extracted_data, ...)
Примерен код за интеграция
JavaScript/TypeScript:
import axios from 'axios';
const api = axios.create({
baseURL: 'https://your-kankrum-instance.com/api',
headers: {
'Content-Type': 'application/json',
},
});
// Login
const { data: auth } = await api.post('/auth/login', {
username: 'user@example.com',
password: 'password123'
});
api.defaults.headers.Authorization = `Bearer ${auth.token}`;
// Get journal entries
const { data: entries } = await api.get(
`/accounting/companies/${companyId}/entries/paginated`,
{ params: { page: 0, size: 20 } }
);
// Create entry
const { data: newEntry } = await api.post(
`/accounting/companies/${companyId}/entries`,
{
date: '2026-01-15',
description: 'Test entry',
lines: [
{ accountCode: '602', debit: 100, credit: 0 },
{ accountCode: '401', debit: 0, credit: 100 }
]
}
);
// Bulk post
const { data: result } = await api.post(
'/accounting/entries/bulk-post',
[1, 2, 3, 4, 5] // entry IDs
);
console.log(`Posted: ${result.successCount}, Failed: ${result.failedCount}`);
Python:
import requests
BASE_URL = 'https://your-kankrum-instance.com/api'
# Login
auth = requests.post(f'{BASE_URL}/auth/login', json={
'username': 'user@example.com',
'password': 'password123'
}).json()
headers = {'Authorization': f'Bearer {auth["token"]}'}
# Get accounts
accounts = requests.get(
f'{BASE_URL}/accounting/companies/{company_id}/accounts',
headers=headers
).json()
# Create entry
entry = requests.post(
f'{BASE_URL}/accounting/companies/{company_id}/entries',
headers=headers,
json={
'date': '2026-01-15',
'description': 'Python test',
'lines': [
{'accountCode': '602', 'debit': 100, 'credit': 0},
{'accountCode': '401', 'debit': 0, 'credit': 100}
]
}
).json()
Как да започнеш?
Вариант 1: Облачна версия (най-лесно)
1. Отиди на https://[your-domain]
2. Кликни "Регистрация"
3. Попълни данни за потребител и фирма
4. Готово - започвай да работиш
Вариант 2: Self-hosted (Docker)
# 1. Clone
git clone https://github.com/[your-repo]/kankrum.git
cd kankrum
# 2. Configure
cp .env.example .env
# Edit .env with your settings
# 3. Run
docker compose up -d
# 4. Access
open https://localhost
Системни изисквания:
- Docker & Docker Compose
- 2+ GB RAM
- 10+ GB disk
- Linux/macOS/Windows (with WSL2)
Вариант 3: Development setup
# Backend
cd backend
./mvnw spring-boot:run
# Frontend (нов терминал)
cd frontend
npm install
npm run dev
# Database
docker compose up postgres -d
Roadmap 2026-2027
Q1 2026 (Януари – Март)
| Функционалност | Статус | Описание |
|---|---|---|
| Bulk операции | ✅ Готово | Групово осчетоводяване/изтриване |
| Автоматично контиране | ✅ Готово | За склад и ДМА |
| Фактуриране | 🚧 В процес | Издаване на фактури, ДИ, КИ |
| E-invoice (PEPPOL) | 📋 Планирано | Електронни фактури |
Q2 2026 (Април – Юни)
| Функционалност | Статус | Описание |
|---|---|---|
| Payroll | 📋 Планирано | Заплати, осигуровки, Д1/Д6 |
| Договори | 📋 Планирано | Управление на договори |
| Mobile PWA | 📋 Планирано | Мобилен достъп |
| API документация | 📋 Планирано | Swagger/OpenAPI |
Q3 2026 (Юли – Септември)
| Функционалност | Статус | Описание |
|---|---|---|
| Multi-company reports | 📋 Планирано | Консолидирани справки |
| Бюджетиране | 📋 Планирано | План vs. факт |
| AI асистент | 📋 Планирано | Чатбот за счетоводни въпроси |
| Workflow автоматизация | 📋 Планирано | Правила за автоматично контиране |
Q4 2026 – Q1 2027
| Функционалност | Статус | Описание |
|---|---|---|
| SAF-T v2 | 📋 Планирано | Пълна поддръжка на SourceDocuments |
| НАП интеграция | 📋 Планирано | Директно подаване |
| BI Dashboard | 📋 Планирано | Бизнес анализи |
| Marketplace | 📋 Планирано | Плъгини и разширения |
Често задавани въпроси
Общи въпроси
Q: Безплатен ли е софтуерът?
A: Да, core функционалността е безплатна и open source. В бъдеще може да има premium функции, но основното счетоводство ще остане безплатно.
Q: Мога ли да го инсталирам на свой сървър?
A: Да, 100%. Docker compose up и готово. Данните ти остават при теб.
Q: Колко фирми мога да водя?
A: Неограничено. Системата поддържа multi-company от ден първи.
Q: Безопасни ли са данните ми?
A:
- JWT автентикация
- HTTPS по подразбиране (Caddy auto SSL)
- Passwords се хешират с bcrypt
- Roles & permissions система
- Audit trail за всички операции
Технически въпроси
Q: Какви браузъри се поддържат?
A: Всички модерни – Chrome, Firefox, Safari, Edge. IE не се поддържа (и не трябва да се използва).
Q: Работи ли на телефон?
A: Интерфейсът е responsive, но засега не е оптимизиран за mobile. PWA версия идва в Q2 2026.
Q: Мога ли да импортирам данни от друга система?
A: Да, чрез:
- Начални салда (ръчно или CSV)
- API (за автоматизиран импорт)
- Директен SQL (за напреднали)
Q: Колко бърза е системата?
A:
- Backend response time: <100ms за повечето операции
- Frontend: React SPA, бързо зареждане
- Database: PostgreSQL с оптимизирани индекси
Q: Има ли API rate limiting?
A: Не в момента, но планираме за public API.
Счетоводни въпроси
Q: Поддържате ли двустранно счетоводство?
A: Да, това е core на системата. Всеки запис трябва да е балансиран (дебит = кредит).
Q: Мога ли да водя валутно счетоводство?
A: Да, поддържаме:
- Множество валути
- Автоматичен курс от ECB
- Валутни разлики
Q: Работи ли с касови апарати?
A: Не директно. Интеграция с касови апарати е в roadmap.
Q: Поддържате ли специфични режими (ДДС касова отчетност, туроператори)?
A: ДДС касова отчетност – да. Туроператори, земеделски производители – планирано.
Поддръжка
Q: Как мога да получа помощ?
A:
- GitHub Issues за бъгове
- GitHub Discussions за въпроси
- Email: [your-email]
Q: Правите ли персонализации?
A: Да, свържете се с нас за enterprise изисквания.
Q: Има ли обучения?
A: Документация + видео tutorials (в процес на създаване).
Заключение
Стигнахме до края на тази (дълга) статия. Нека обобщим:
Какво предлагаме
- Пълноценна счетоводна система – не Excel, не demo, а реален софтуер
- Модерни технологии – Java 21, React, PostgreSQL, Docker
- SAF-T готовност – подготвени за 2027
- AI сканиране – край на ръчното въвеждане
- Open source – прозрачност и контрол
Какво НЕ сме
- Не сме поредният „MVP който ще бъде готов скоро“
- Не сме скъпо enterprise решение с 5-цифрени лицензи
- Не сме Excel таблица с fancy име
Защо го правим
Защото Bulgarian business заслужава по-добър софтуер.
Защото 2027 идва и повечето решения на пазара не са готови.
Защото можем.
Call to Action
Стъпка 1: Регистрирай се на [URL]
Стъпка 2: Създай тестова фирма
Стъпка 3: Пробвай функциите
Стъпка 4: Дай ни feedback
Ние работим. Ние тестваме. В реално време.
Заедно ще направим счетоводния софтуер, който българският бизнес заслужава.
KanKrum Team
31 януари 2026
Хаштагове: #KanKrum #BulgarianAccounting #SAFT #OpenSource #NoMoreExcel #DigitalTransformation #Счетоводство #БългарскиСофтуер
Следващи статии:
- Как да настроиш автоматично контиране за складови операции
- SAF-T за начинаещи: Какво трябва да знаеш
- От Excel към KanKrum: Пълно ръководство за миграция
© 2026 KanKrum. All rights reserved.