Quittio Managed handles the invoices of your Laravel app: gapless numbering, immutable invoices, an archive with checksums, cancellations, corrections, delivery and an audit log. In your own database, no SaaS and no fee per invoice.
Lifecycle of an invoice: a draft is issued with issue(). Partial cancellations lead to partially cancelled; a cancellation or correction leads to cancelled. After issue() an invoice never changes again. Cancellations and corrections are invoices of their own with their own number.
Do you need Managed?
Whoever issues the invoice has to manage it.
Quittio is enough if …
an ERP, accounting software or a shop keeps the invoices and assigns their numbers. Quittio then only creates the files.
You need Managed if …
your app issues the invoices. Then numbers must be unique and gapless, issued invoices must never change, and everything must be kept for 8 years (German VAT Act, Fiscal Code, GoBD).
Comparison
Without and with Managed
Task
Without Managed
With Managed
Seller
seller in config/quittio.php or ->seller() per invoice
issuer profiles in the database, also for several companies, brands or tenants
Customers
pass the buyer data for every invoice
invoices link to your own models, e.g. $user->invoices()
Invoice numbers
assign them yourself and watch for gaps
gapless and unique from a pattern such as RE-{Y}-{seq:4}, safe under concurrent issuing
Storing
store data, PDF and XML yourself
drafts (editable, preview with watermark) and issued invoices as records
After issuing
nothing prevents changes
immutable: model, query builder and optional database triggers block changes
Archive
save() overwrites existing files
write-once archive with SHA-256, document versions and an integrity check
Cancellation and correction
render the cancellation yourself, track the history yourself
cancel(), cancelPartially() and correct(); numbers, links, VAT and status are kept for you
Delivery
write your own Mailable
$invoice->send() with a log of every delivery attempt
Audit and retention
keep your own records
audit log, retention period per invoice, legal hold, deletion command after expiry
Seller
Without Managed: seller in config/quittio.php or ->seller() per invoice
With Managed: issuer profiles in the database, also for several companies, brands or tenants
Customers
Without Managed: pass the buyer data for every invoice
With Managed: invoices link to your own models, e.g. $user->invoices()
Invoice numbers
Without Managed: assign them yourself and watch for gaps
With Managed: gapless and unique from a pattern such as RE-{Y}-{seq:4}, safe under concurrent issuing
Storing
Without Managed: store data, PDF and XML yourself
With Managed: drafts (editable, preview with watermark) and issued invoices as records
After issuing
Without Managed: nothing prevents changes
With Managed: immutable: model, query builder and optional database triggers block changes
Archive
Without Managed: save() overwrites existing files
With Managed: write-once archive with SHA-256, document versions and an integrity check
Cancellation and correction
Without Managed: render the cancellation yourself, track the history yourself
With Managed: cancel(), cancelPartially() and correct(); numbers, links, VAT and status are kept for you
Delivery
Without Managed: write your own Mailable
With Managed: $invoice->send() with a log of every delivery attempt
Audit and retention
Without Managed: keep your own records
With Managed: audit log, retention period per invoice, legal hold, deletion command after expiry
An issued invoice never changes. A cancellation is an invoice of its own, with its own number, that refers to the original.
Features
What Managed takes care of
Issuer profiles
One or more companies with bank accounts, texts, design and numbering.
Your models
Invoices link to customers, orders or contracts in your app.
Numbering
Patterns with placeholders, yearly or monthly resets, separate number spaces.
Gapless
No duplicate numbers and no gaps, even under concurrent issuing.
Drafts
Change, check in advance and preview as a PDF with a watermark.
Immutable
Model, query builder and database triggers for MySQL, MariaDB, PostgreSQL and SQLite.
Archive
Write-once with SHA-256, document versions, manifest and integrity check.
Cancellation and correction
Full and partial cancellations with cumulatively aligned VAT, correction by cancel and reissue.
Delivery
Mail with the archived documents and a log of every attempt.
Audit log
Append-only: who did what and when.
Retention
Retention period per invoice, legal hold and a command that deletes expired invoices.
Tenants and permissions
Tenancy scope, policies and factories for your tests.
Immutable means immutable
Issued is issued.
After issue() the model, the query builder and optional database triggers block every change to the invoice data. Only payment, delivery and render status may change.
We also say what is not prevented: without triggers, the base query builder and raw SQL bypass the rules, and MySQL fires no triggers on TRUNCATE. Details are in the documentation.
Invoices stay in your database. No data shared with third parties, no SaaS outage risk, no cost per invoice. No licence check at runtime: issue(), cancel() and the archive never fail because of a licence server.
Regulatory updates
New XRechnung, Peppol and CII/UBL versions, KoSIT rules, code lists and legal changes are released at least 4 weeks before a rule becomes binding, provided the specification was published in time.
Laravel compatibility
New Laravel major versions are supported within 4 weeks of their release.
Security fixes
Critical issues within 72 hours, all others with the next patch. Even after your licence has expired.
Sending via Peppol, checking and approving incoming invoices
1.4.0
Recurring
Subscriptions, advance and final invoices
1.5.0
Export
DATEV export, reports
The defaults for cancellations, corrections and the VAT alignment of partial cancellations are being reviewed by a tax adviser. We publish the results in the changelog.
Pricing
Once per project and year.
Launch only
Founders Lifetime
Pay once, updates without expiry: Solo for €449, Agency for €1,299. At most 100 licences or 3 months after launch, whichever comes first. Covers all future versions of quittio/managed, not separate add-ons.
All prices net of VAT, for businesses only (B2B). Sales start with version 1.0.0; until then the prices are a preview.
Questions about Managed
Which tier do I need?
One project: Solo. Several client projects: Agency. Do your customers issue invoices in your app themselves (tenants via tenancy.scope): SaaS.
What happens if I do not renew?
You keep using the last version you received indefinitely and still get security fixes. Regulatory updates, new features and support require an active licence.
Does Managed check the licence at runtime?
No. There is no licence server and no phone-home. The licence only grants access to the private Composer repository.
Can I try Managed first?
Local, staging and CI are free with every licence. After purchase you have a 14-day refund, no questions asked.
Does Managed work without Laravel?
No. Managed uses Eloquent, the queue and mail and requires Laravel 13. Without Laravel, use the open-source core.
Which databases are supported?
SQLite, MySQL 8 and MariaDB, and PostgreSQL. The test matrix uses MySQL 8.4 and PostgreSQL 16.
Early access
Be there at launch.
We will email you once at launch, with the founders offer.