Skip to content
Early access · ships with version 1.0.0

Issue invoices, don’t just generate them.

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

  • 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

The life of an invoice

From draft to cancellation in five steps.

InvoiceService.php
use Quittio\Managed\Models\Issuer;

$issuer = new Issuer;
$issuer->setSellerParty(Party::make('Example Software Ltd')
    ->vatId('IE1234567T')
    ->address('12 Harbour Road', 'D02 X285', 'Dublin', 'IE')
    ->buildSeller());
$issuer->forceFill(['key' => 'default', 'is_default' => true])->save();

Your company as an issuer profile with bank accounts, defaults, texts, design and numbering. The installer asks for the first profile.

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.

Immutability in the docs

Installation

composer require quittio/managed
php artisan quittio:install --managed
php artisan migrate

SQLite, MySQL 8 / MariaDB, PostgreSQL · PHP 8.3+ · Laravel 13

Self-hosted

Your archive never depends on our licence.

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.

Roadmap

What comes after version 1.0.0

  1. 1.0.0

    Management

    Drafts, numbering, cancellation, correction, archive, audit, delivery

  2. 1.1.0

    Payments

    Payments, bank reconciliation (CAMT.053), dunning

  3. 1.2.0

    Peppol and inbox

    Sending via Peppol, checking and approving incoming invoices

  4. 1.4.0

    Recurring

    Subscriptions, advance and final invoices

  5. 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.

Reserve a spot

Solo

Freelancers, one product of your own

€149

incl. 12 months of updates

then €119 / year, cancel anytime

Founders lifetime: €449

  • 1 project (production installation)
  • Unlimited issuer profiles
  • Local, staging, preview and CI free
  • Issues in the private repository
Early access
Popular with agencies

Agency

Agencies with several client projects

€449

incl. 12 months of updates

then €349 / year, cancel anytime

Founders lifetime: €1,299

  • Unlimited projects
  • Unlimited issuer profiles
  • Licence transferable to your client
  • Issues, handled with priority
Early access

SaaS

Apps in which your customers issue invoices

€999

incl. 12 months of updates

then €799 / year, cancel anytime

  • 1 project with any number of tenants
  • Multi-tenant via tenancy.scope
  • Unlimited issuer profiles
  • Email support, reply within 2 business days
Early access

Enterprise

Larger companies, public sector, OEM

from ~€3,000

per year, by agreement

  • Projects by agreement
  • Individual licence, pay by invoice
  • SLA by contract
  • Redistribution (OEM) possible
Contact

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.

Optional

Role
Number of projects
Do your customers issue invoices in your app themselves?

Optional

I would like to receive one email when Quittio Managed launches. I can withdraw my consent at any time. Details in the privacy policy.

Once at launch, with the founders offer. No newsletter spam.