счетоводна система KanKrum страшни – империята.

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)

Философия

  1. Виждаш какво става с данните ти
  2. Self-hosted опция – Можеш да го инсталираш на свой сървър
  3. Модерен стек – Технологии от 2024-2026, не от 2004
  4. SAF-T first – Проектирано с мисъл за бъдещето
  5. 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)

Тук става истинската магия.

Създаване на запис:

  1. Избираш тип: Покупка / Продажба / Без ДДС
  2. Въвеждаш документ: номер, дата, контрагент
  3. Добавяш редове: сметка, дебит/кредит, описание
  4. Системата проверява: балансиран ли е записът?
  5. Запазваш като чернова (DRAFT)
  6. Когато си готов – осчетоводяваш (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 файл със стандартизирана структура, съдържащ:

  1. Header – информация за фирмата
  2. MasterFiles – номенклатури (сметки, клиенти, доставчици, продукти)
  3. GeneralLedgerEntries – счетоводни записи
  4. 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 (в процес на създаване).


Заключение

Стигнахме до края на тази (дълга) статия. Нека обобщим:

Какво предлагаме

  1. Пълноценна счетоводна система – не Excel, не demo, а реален софтуер
  2. Модерни технологии – Java 21, React, PostgreSQL, Docker
  3. SAF-T готовност – подготвени за 2027
  4. AI сканиране – край на ръчното въвеждане
  5. 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.

Вашият коментар