Fincontrol Регистрация Вход
Инструменти · Фактуриране

Генератор на фактури

Попълнете данните и изтеглете фактурата като PDF - безплатно, без регистрация и без запис на данните ви.

1Данни на доставчика (вашата фирма)
2Данни на получателя (клиент)
3Данни за фактурата
4Артикули / Услуги
Описание Номер СМЦ Кол-во Ед. мярка Ед. цена ДДС % Сума Бележка
Сума по артикули:0,00
Данъчна основа:0,00
ДДС:0,00
Общо с ДДС:0,00
5Допълнителни данъчни полета (по избор)
6Бележки / Условия (по избор)

Фактурата ще се отвори в нов прозорец. Натиснете „Печат“ и изберете „Запази като PDF“.

'; } function invoiceCSS() { var t = '#21696E', td = '#1A5457', bg = '#f4f8f8', brd = '#c8dede'; return '* {margin:0;padding:0;box-sizing:border-box;}' + '@import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;600;700&family=Unbounded:wght@600;700&display=swap");' + 'body{font-family:"Segoe UI",system-ui,sans-serif;font-size:13px;color:#0f2426;background:' + bg + ';padding:20px;}' + '.pbar{text-align:center;padding:12px 16px;background:#fff;border-bottom:1px solid ' + brd + ';margin-bottom:20px;position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:center;gap:10px;}' + '.pbar button{background:' + t + ';color:#fff;border:none;padding:9px 26px;font-size:13px;font-family:"Segoe UI",system-ui,sans-serif;font-weight:600;border-radius:8px;cursor:pointer;transition:background .15s;}' + '.pbar button:last-child{background:transparent;color:' + t + ';border:1.5px solid ' + brd + ';}' + '.pbar button:hover{background:' + td + ';}' + '.pbar button:last-child:hover{background:' + bg + ';}' + '.inv{max-width:820px;margin:0 auto;background:#fff;border-radius:12px;box-shadow:0 4px 32px rgba(33,105,110,.13);overflow:hidden;}' + '.inv-hdr{background:' + t + ';color:#fff;padding:26px 34px;display:flex;justify-content:space-between;align-items:flex-start;}' + '.logo img{max-height:68px;max-width:200px;object-fit:contain;}' + '.logo-txt{font-family:"Segoe UI",system-ui,sans-serif;font-size:19px;font-weight:700;letter-spacing:1px;}' + '.inv-title{text-align:right;}' + '.inv-title h1{font-family:"Segoe UI",system-ui,sans-serif;font-size:22px;font-weight:700;letter-spacing:3px;opacity:.95;}' + '.inv-doctype{display:inline-block;margin-top:4px;padding:2px 10px;border:1.5px solid rgba(255,255,255,.6);border-radius:4px;font-size:10px;font-weight:700;letter-spacing:2px;opacity:.85;}' + '.inv-num{font-size:16px;font-weight:600;margin-top:6px;opacity:.9;}' + '.inv-dates{font-size:11.5px;opacity:.72;margin-top:10px;line-height:1.9;}' + '.inv-parties{display:flex;padding:22px 34px;gap:16px;border-bottom:2px solid ' + brd + ';}' + '.party{flex:1;padding:15px;border-radius:10px;}' + '.party.seller{background:' + bg + ';border:1px solid ' + brd + ';}' + '.party.buyer{background:#fffdf0;border:1px solid #e8d88a;}' + '.pty{font-size:10px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;color:' + t + ';margin-bottom:9px;}' + '.pname{font-size:14px;font-weight:700;margin-bottom:5px;color:#0f2426;}' + '.party table{width:100%;border-collapse:collapse;margin-top:5px;}' + '.party td{padding:2.5px 0;font-size:12px;}' + '.party td:first-child{color:#5a8a8e;width:82px;}' + '.party td:last-child{font-weight:500;}' + '.inv-items{padding:0 34px 20px;}' + '.itbl{width:100%;border-collapse:collapse;margin-top:16px;}' + '.itbl thead tr{background:' + t + ';color:#fff;}' + '.itbl thead th{padding:10px 9px;font-size:10.5px;letter-spacing:.7px;text-transform:uppercase;text-align:left;font-weight:600;}' + '.itbl thead th.r{text-align:right;}' + '.itbl tbody tr:nth-child(even){background:' + bg + ';}' + '.itbl tbody td{padding:9px;border-bottom:1px solid ' + brd + ';font-size:12.5px;}' + '.r{text-align:right;font-variant-numeric:tabular-nums;}' + '.row-meta{font-size:10.5px;color:#5a8a8e;font-style:italic;}' + '.inv-tots{padding:0 34px 20px;}' + '.ttbl{width:100%;max-width:420px;border-collapse:collapse;margin-left:auto;}' + '.ttbl-hdr td{font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:' + t + ';padding:4px 9px;border-bottom:2px solid ' + brd + ';text-align:right;}' + '.ttbl-hdr td:first-child{text-align:left;}' + '.ttbl td{padding:6px 9px;font-size:13px;border-bottom:1px solid ' + brd + ';text-align:right;font-variant-numeric:tabular-nums;font-weight:500;}' + '.ttbl td:first-child{text-align:left;font-weight:400;color:#5a8a8e;}' + '.ttbl .dr td{color:#e05a2b;}' + '.ttbl .grand td{font-size:14px;font-weight:700;background:' + t + ';color:#fff;padding:11px 9px;border-bottom:none;}' + '.ttbl .grand td:first-child{font-family:"Unbounded",sans-serif;font-size:11px;letter-spacing:.5px;}' + '.inv-words{max-width:420px;margin-left:auto;margin-top:10px;padding:10px 14px;background:' + bg + ';border:1px solid ' + brd + ';border-radius:8px;}' + '.words-row{font-size:12px;padding:2px 0;display:flex;gap:8px;line-height:1.6;}' + '.wl{color:' + t + ';font-weight:600;min-width:95px;flex-shrink:0;}' + '.inv-ftr{padding:18px 34px;background:' + bg + ';display:flex;gap:20px;border-top:2px solid ' + brd + ';}' + '.inv-pay,.inv-notes{flex:1;}' + '.ft{font-size:10px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;color:' + t + ';margin-bottom:8px;}' + '.inv-pay table{border-collapse:collapse;}' + '.inv-pay td{padding:3px 0;font-size:12px;}' + '.inv-pay td:first-child{color:#5a8a8e;width:82px;}' + '.inv-notes p{font-size:12px;color:#2a4a4e;line-height:1.7;}' + '.inv-legal{padding:12px 34px;background:#fffdf0;border-top:1px solid #e8d88a;font-size:12px;line-height:1.9;}' + '.inv-legal div{margin-bottom:2px;}' + '.ll{color:' + t + ';font-weight:600;}' + '.inv-sigs{padding:24px 34px;display:flex;gap:48px;border-top:1px solid ' + brd + ';}' + '.sig{flex:1;}' + '.sline{border-bottom:2px solid ' + brd + ';height:42px;margin-bottom:7px;}' + '.sig p{font-size:11px;color:#5a8a8e;}' + '@media print{' + '*{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important;}' + 'body{background:#fff;padding:0;margin:0;}' + '.pbar{display:none;}' + '.inv{box-shadow:none;border-radius:0;zoom:0.72;margin:0 auto;}' + '@page{margin:5mm;size:A4;}' + '}'; } /* ---------------- Сума словом (български) ---------------- */ // Стойността се взима вече закръглена до два знака - същото число, което // се отпечатва в „ОБЩА СУМА“. Иначе бланката казва 30.00, а словом излиза // „двадесет и девет евро и 100 цента“. function numToWordsBG(amount) { var rounded = Math.abs(Number((amount || 0).toFixed(2))); var whole = Math.floor(rounded); var cents = Math.round((rounded - whole) * 100); if (cents === 100) { whole += 1; cents = 0; } // евро е от среден род: „едно евро“, не „един евро“ return intToWordsBG(whole, 'n') + ' евро и ' + String(cents).padStart(2, '0') + ' цента'; } // „И“ се пише само пред последната съставка: „сто двадесет и пет“, // „хиляда и триста“, „хиляда двеста тридесет и четири“. function joinBG(parts) { if (parts.length < 2) return parts.join(''); return parts.slice(0, -1).join(' ') + ' и ' + parts[parts.length - 1]; } /** * @param n цяло неотрицателно число * @param gender род на броеното - важи само за 1 и 2 в последната позиция: * 'm' един/два (милион), 'f' една/две (хиляда), 'n' едно/две (евро) */ function intToWordsBG(n, gender) { if (n === 0) return 'нула'; var small = ['', 'един', 'два', 'три', 'четири', 'пет', 'шест', 'седем', 'осем', 'девет', 'десет', 'единадесет', 'дванадесет', 'тринадесет', 'четиринадесет', 'петнадесет', 'шестнадесет', 'седемнадесет', 'осемнадесет', 'деветнадесет']; var forms = { m: ['един', 'два'], f: ['една', 'две'], n: ['едно', 'две'] }; var tens = ['', '', 'двадесет', 'тридесет', 'четиридесет', 'петдесет', 'шестдесет', 'седемдесет', 'осемдесет', 'деветдесет']; var hnds = ['', 'сто', 'двеста', 'триста', 'четиристотин', 'петстотин', 'шестстотин', 'седемстотин', 'осемстотин', 'деветстотин']; var parts = []; if (n >= 1000000) { var m = Math.floor(n / 1000000); parts.push(m === 1 ? 'един милион' : intToWordsBG(m, 'm') + ' милиона'); n %= 1000000; } if (n >= 1000) { var t = Math.floor(n / 1000); parts.push(t === 1 ? 'хиляда' : intToWordsBG(t, 'f') + ' хиляди'); n %= 1000; } if (n >= 100) { parts.push(hnds[Math.floor(n / 100)]); n %= 100; } if (n >= 20) { parts.push(tens[Math.floor(n / 10)]); n %= 10; } if (n > 0) { parts.push(n <= 2 ? forms[gender || 'm'][n - 1] : small[n]); } return joinBG(parts); } /* ---------------- Helpers ---------------- */ function e(str) { return String(str || '') .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"'); } function fmt2(n) { return parseFloat(n || 0).toFixed(2).replace('.', ',').replace(/\B(?=(\d{3})+(?!\d))/g, ' '); } function fmtQty(n) { var f = parseFloat(n || 0); return (f % 1 === 0) ? String(f) : f.toFixed(3).replace(/\.?0+$/, ''); } function fmtDate(s) { if (!s) return '-'; var p = s.split('-'); return p.length === 3 ? p[2] + '.' + p[1] + '.' + p[0] : s; } function toIso(date) { var y = date.getFullYear(); var m = String(date.getMonth() + 1).padStart(2, '0'); var d = String(date.getDate()).padStart(2, '0'); return y + '-' + m + '-' + d; } })();

Как работи?

  • Попълвате данните на доставчика и получателя, добавяте артикули
  • Фактурата се изчислява на момента: данъчна основа, ДДС по ставки, отстъпка, суми словом на български
  • Всички суми са в евро (€) - периодът на двойно обозначаване приключи на 08.08.2026 г.
  • Натискате „Генерирайте фактурата“ - отваря се готова за печат бланка, която запазвате като PDF

Нищо не се записва на сървър - данните остават само в браузъра ви. Ако издавате фактури редовно, в платформата на Fincontrol те се номерират автоматично, осчетоводяват се и влизат в дневниците по ЗДДС.

Фактуриране и счетоводство във Финконтрол

Генераторът създава единична фактура. В платформата фактурата се осчетоводява и се включва в отчетността на фирмата.

  • Автоматична поредна номерация, включително в отделни серии
  • Осчетоводяване и включване в дневника за продажбите по ЗДДС
  • Изпращане на фактурата на клиента по имейл и отбелязване на постъпилото плащане

Инструментът се ползва безплатно. Абонаментът е за платформата - вижте плановете.