PHPackages                             stacss/laravel-upd - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [PDF &amp; Document Generation](/categories/documents)
4. /
5. stacss/laravel-upd

ActiveLibrary[PDF &amp; Document Generation](/categories/documents)

stacss/laravel-upd
==================

Laravel package for generating PDF documents: UPD, reconciliation statements and Russian invoices

1.3.2(2mo ago)235MITPHPPHP &gt;=8.1

Since Nov 28Pushed 2mo agoCompare

[ Source](https://github.com/Stacss/laravel-upd)[ Packagist](https://packagist.org/packages/stacss/laravel-upd)[ Docs](https://github.com/stacss/laravel-upd)[ RSS](/packages/stacss-laravel-upd/feed)WikiDiscussions main Synced today

READMEChangelog (5)Dependencies (10)Versions (8)Used By (0)

Laravel-UPD
===========

[](#laravel-upd)

`stacss/laravel-upd` — Laravel package для генерации PDF-документов:

- УПД
- акта сверки
- счета на оплату

Пакет использует `barryvdh/laravel-dompdf`, считает НДС через встроенный `VatCalculator` и отдает готовый `Barryvdh\DomPDF\PDF`.

Совместимость
-------------

[](#совместимость)

Поддерживаются:

- PHP `8.1+`
- Laravel `10`
- Laravel `11`
- Laravel `12`

Пакет не заявляет поддержку всех версий Laravel. По текущим constraints в [composer.json](/home/stacss/dev/laravel-upd/composer.json) поддерживаются только `illuminate/support ^10|^11|^12`.

Установка
---------

[](#установка)

Установка в обычный Laravel-проект:

```
composer require stacss/laravel-upd
```

Публикация конфига и шаблонов:

```
php artisan vendor:publish --tag=upd-config
php artisan vendor:publish --tag=upd-views
```

Быстрый старт
-------------

[](#быстрый-старт)

### УПД

[](#упд)

```
use Stacss\LaravelUpd\UpdRenderer;

$renderer = app(UpdRenderer::class);

$pdf = $renderer->pdf([
    'document' => [
        'number' => '123',
        'date' => now(),
        'status' => 1,
    ],
    'seller' => config('upd.seller'),
    'buyer' => [
        'name' => 'ООО Покупатель',
        'inn' => '1234567890',
        'kpp' => '123456789',
        'address' => 'г. Москва',
    ],
    'items' => [
        [
            'name' => 'Тестовый товар',
            'code' => 'TST-001',
            'unit' => 'шт',
            'unit_code' => '796',
            'quantity' => 2,
            'price' => 100,
            'vat_rate' => 20,
            'price_type' => 'net',
        ],
    ],
]);

$pdf->save(storage_path('upd.pdf'));
```

### Акт сверки

[](#акт-сверки)

```
use Stacss\LaravelUpd\ReconciliationRenderer;

$renderer = app(ReconciliationRenderer::class);

$pdf = $renderer->pdf([
    'act_date' => now(),
    'period' => [
        'from' => now()->startOfMonth(),
        'to' => now()->endOfMonth(),
    ],
    'left' => [
        'full_name' => 'ООО Ромашка',
        'short_name' => 'ООО Ромашка',
        'director_post' => 'генерального директора',
        'director_full' => 'Иванова Ивана Ивановича',
        'director_short' => 'Иванов И. И.',
        'director_sign_note' => 'Иванов ' . now()->format('d.m.Y'),
        'basis' => 'Устава',
    ],
    'right' => [
        'full_name' => 'ООО Покупатель',
        'short_name' => 'ООО Покупатель',
        'director_post' => 'генерального директора',
        'director_full' => 'Петрова Петра Петровича',
        'director_short' => 'Петров П. П.',
        'director_sign_note' => 'Петров ' . now()->format('d.m.Y'),
        'basis' => 'Устава',
    ],
    'opening' => [
        'date' => now()->startOfMonth(),
        'balance' => 0,
    ],
    'closing' => [
        'date' => now()->endOfMonth(),
        'balance' => 10000,
    ],
    'operations' => [
        [
            'title' => 'Накладная №1',
            'debit' => 10000,
            'credit' => 0,
        ],
    ],
]);

$pdf->save(storage_path('reconciliation.pdf'));
```

### Счет на оплату

[](#счет-на-оплату)

```
use Stacss\LaravelUpd\InvoiceRenderer;

$renderer = app(InvoiceRenderer::class);

$pdf = $renderer->pdf([
    'document' => [
        'number' => '15',
        'date' => now(),
        'due_date' => now()->addDays(5),
        'base' => 'Оплата по счету за товары',
        'contract' => 'Договор №5 от 01.01.2026',
    ],
    'seller' => [
        'name' => 'ООО Ромашка',
        'short_name' => 'ООО Ромашка',
        'inn' => '7700000000',
        'kpp' => '770001001',
        'ogrn' => '1027700000000',
        'address' => 'г. Москва, ул. Пример, д. 1',
        'phone' => '+7 (999) 123-45-67',
        'email' => 'info@example.ru',
    ],
    'seller_bank' => [
        'bank_name' => 'ПАО Сбербанк',
        'bik' => '044525225',
        'account' => '40702810900000000001',
        'corr_account' => '30101810400000000225',
    ],
    'buyer' => [
        'name' => 'ООО Покупатель',
        'short_name' => 'ООО Покупатель',
        'inn' => '7800000000',
        'kpp' => '780001001',
        'address' => 'г. Санкт-Петербург, ул. Тестовая, д. 5',
    ],
    'items' => [
        [
            'name' => 'Товар 1',
            'brand' => 'ACME',
            'code' => 'ABC-001',
            'unit' => 'шт',
            'unit_code' => '796',
            'quantity' => 2,
            'price' => 1000,
            'vat_rate' => 20,
            'price_type' => 'net',
        ],
    ],
    'payment' => [
        'comment' => 'Без доверенности. Оплата означает согласие с условиями поставки.',
    ],
    'signatures' => [
        'director' => 'Иванов И.И.',
        'accountant' => 'Петров П.П.',
    ],
]);

$pdf->save(storage_path('invoice.pdf'));
```

Примеры документов
------------------

[](#примеры-документов)

### Счет на оплату

[](#счет-на-оплату-1)

[![Счет на оплату](docs/images/invoice.png)](docs/images/invoice.png)

### УПД

[](#упд-1)

[![УПД](docs/images/upd.png)](docs/images/upd.png)

Формат данных для счета
-----------------------

[](#формат-данных-для-счета)

Обязательные поля:

- `document.number`
- `document.date`
- `seller.name`
- `seller_bank.bank_name`
- `seller_bank.bik`
- `seller_bank.account`
- `items[*].name`
- `items[*].unit`
- `items[*].quantity`
- `items[*].price`

Опциональные поля:

- весь блок `buyer`
- `document.due_date`
- `document.base`
- `document.contract`
- `seller.short_name`
- `seller.ogrn`
- `seller.phone`
- `seller.email`
- `seller_bank.corr_account`
- `items[*].brand`
- `items[*].code`
- `items[*].unit_code`
- `payment.purpose`
- `payment.vat_text`
- `payment.comment`
- `signatures.director`
- `signatures.accountant`

Примечания:

- если `buyer` не передан, счет все равно будет сгенерирован
- если `payment.purpose` не передан, пакет сформирует строку автоматически
- если `payment.vat_text` не передан, пакет сформирует его из рассчитанного НДС
- колонки `Бренд` и `Код` выводятся только если хотя бы у одной позиции есть непустые значения
- `brand` нормализуется из `brand`, `brand_name`, `manufacturer`, `vendor`
- `code` нормализуется из `code`, `sku`, `article`

Конфигурация
------------

[](#конфигурация)

Файл `config/upd.php`:

```
return [
    'seller' => [
        'name' => 'АВТОиностранец',
        'inn' => '',
        'kpp' => '',
        'address' => '',
        'phone' => '',
    ],

    'default_vat_rate' => 20.0,
    'default_price_type' => 'net',

    'view' => 'laravel-upd::upd',
    'reconciliation_view' => 'laravel-upd::reconciliation',
    'invoice_view' => 'laravel-upd::invoice',

    'bank_details' => [
        'bank_name' => '',
        'bik' => '',
        'account' => '',
        'corr_account' => '',
    ],

    'invoice_defaults' => [
        'base' => '',
        'contract' => '',
        'comment' => '',
    ],
];
```

Если опубликованы шаблоны
-------------------------

[](#если-опубликованы-шаблоны)

Если вы уже публиковали views пакета в проекте-потребителе, Laravel будет использовать их вместо шаблонов из `vendor`.

После обновления шаблонов пакета перепубликуйте их:

```
php artisan vendor:publish --tag=upd-views --force
php artisan view:clear
```

Если вы меняли опубликованные шаблоны вручную, перепубликация с `--force` их перезапишет.

Тестирование
------------

[](#тестирование)

```
composer test
```

Стиль кода
----------

[](#стиль-кода)

Проверка:

```
composer cs
```

Исправление:

```
composer cs-fix
```

Лицензия
--------

[](#лицензия)

MIT

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance83

Actively maintained with recent releases

Popularity12

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~25 days

Recently: every ~32 days

Total

6

Last Release

89d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/27720309?v=4)[Stas](/maintainers/Stacss)[@Stacss](https://github.com/Stacss)

---

Top Contributors

[![Stacss](https://avatars.githubusercontent.com/u/27720309?v=4)](https://github.com/Stacss "Stacss (14 commits)")

---

Tags

dompdfinvoicelaravelphpdompdfPDF GENERATORupdуниверсальный передаточный документупд ларавелlaravel updупд pdfсчёт-фактураакт

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/stacss-laravel-upd/health.svg)

```
[![Health](https://phpackages.com/badges/stacss-laravel-upd/health.svg)](https://phpackages.com/packages/stacss-laravel-upd)
```

###  Alternatives

[barryvdh/laravel-dompdf

A DOMPDF Wrapper for Laravel

7.4k99.4M385](/packages/barryvdh-laravel-dompdf)[venturedrake/laravel-crm

A free open source CRM built as a package for laravel projects

43411.2k](/packages/venturedrake-laravel-crm)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
