Quittio 0.3 API

Quittio

Table of Contents

Interfaces

TotalsCalculator
Calculates line amounts, allowances and charges, the VAT breakdown and totals.
ProvidesInvoiceData
Implemented by application models that can be turned into an invoice (e.g. an order).
ProvidesInvoiceLine
Implemented by application models that describe an invoice line (e.g. an order item).
ProvidesParty
Implemented by application models that describe a trade party (e.g. a customer).
ProvidesFormats
A country pack that brings output formats, e.g. a national e-invoice format, with their aliases and the serializers of their syntaxes. Quittio::registerCountry() registers them.
ProvidesReferenceRates
A country pack whose late payment law has a reference interest rate, so that Dunning\DefaultInterest::forCountry() calculates default interest for it.
CountryPack
Everything that differs between countries.
CountryResolver
Selects the country packs for an invoice.
Exporter
Country specific export format (e.g. DATEV for Germany, FEC for France). Country packs only declare which exporters they provide (CountryPack::exporters()); Quittio runs none of them, applications may.
ReferenceRates
The reference interest rate of a country's late payment law, e.g. the German Basiszinssatz (section 247 BGB) or the ECB main refinancing rate. Default interest is the reference rate plus the points of the DunningLaw.
QuittioException
Marker interface for all exceptions thrown by Quittio.
FormatResolver
Chooses format and profile when none is given.
FormatRule
A rule of a country pack that decides the output format of an invoice.
Translator
Minimal translator contract so that the core works without Laravel.
PdfRenderer
Turns HTML (from the template) into a PDF, embedding the invoice XML if requested.
PdfPostProcessor
Turns an existing PDF into PDF/A-3 with embedded invoice XML (for callback and passthrough renderers).
PaymentQrGenerator
Creates the payload of a payment QR code (GiroCode, Swiss QR bill, …).
DescribesEmbeddedXml
For profiles whose XML is embedded in a PDF/A-3 with other XMP metadata than Factur-X ("Factur-X/ZUGFeRD Invoice", fx:Version "1.0"), e.g. XRechnung in ZUGFeRD.
ExtendsCodeLists
Profiles that accept additional codes on top of the EN 16931 code lists, e.g. the identifier schemes XR01 to XR03 of the XRechnung extension.
RequiresVatBreakdownRate
Marker for profiles that require the VAT category rate (BT-119) in every VAT breakdown, including category "O" (written as 0). Example: XRechnung (BR-DE-14).
StructuredCashDiscountText
Marker for profiles that expect cash discounts as structured lines in BT-20, e.g. XRechnung: "#SKONTO#TAGE=14#PROZENT=2.00#".
SupportsExtensionFields
Profiles that transmit the fields of extensions of EN 16931, e.g. "xrechnung" for the fields marked with Mapping\Attributes\XRechnungExtensionOnly.
SupportsSubLines
Profiles that transmit sub lines (BG-DEX-01 of the XRechnung extension, the line hierarchy of EXTENDED). Invoices with sub lines are not upgraded to EXTENDED when they use such a profile.
SupportsThirdPartyPayments
Profiles whose UBL invoices transmit third party payments (BG-DEX-09 of the XRechnung extension) without contradicting BR-CO-16.
Profile
An e-invoice profile (CIUS or extension): which fields are allowed or mandatory, which identifier goes into BT-24 and which additional rules apply.
DiagnosingXmlExtractor
An extractor that also reports where the XML came from and what it noticed on the way.
EmbeddedXmlExtractor
Extracts the embedded invoice XML from a hybrid PDF (ZUGFeRD/Factur-X, XRechnung in PDF).
FormatReader
Reads one XML invoice format into the data model.
SnapshotUpcaster
Migrates a stored invoice snapshot from one version to the next one.
DatedTaxPreset
A preset whose rate depends on the date of the supply, e.g. a standard rate that was lowered for half a year. The builder resolves it with the supply date of each line (SupplyDate); rate() returns the rate of today.
TaxPreset
A named VAT treatment provided by a country pack, e.g. "standard rate 19 %" or "small business exemption". Presets set category, rate, VATEX code and legal note text.
TemplateEngine
Turns the view model into HTML for the PDF renderer (Blade, plain PHP, Twig …).
VatIdVerifier
Online check of VAT identifiers (e.g. EU VIES). Implementations must never throw because a service is unavailable; they return a result with $valid = null instead.
Rule
A business or plausibility rule checked in PHP (levels L1 to L3 and L7).
ValidationDriver
A validation driver checks one or more levels (PHP rules, XSD, KoSIT, veraPDF, …).
AddressFormatter
Formats postal addresses according to the conventions of a country.
Formatter
Formats values for display according to a locale.
XmlSerializer
Writes calculated invoice data as XML in one syntax.
InvoiceDefaults
Sets the seller and its defaults (bank account, small business flag …) on the builders of Quittio::invoice() and of the document methods (Quittio::quote() …). The default binding takes them from config/quittio.php (ConfigInvoiceDefaults, Seller::apply()); quittio/managed binds the current issuer.
ManagedInstaller
Implemented by quittio/managed: runs "quittio:install --managed" (migrations, first issuer).
ManagedInvoiceRenderer
Implemented by quittio/managed: renders a stored invoice again ("quittio:render {invoice}").

Classes

InvoiceBuilder
Fluent builder for InvoiceData.
Line
Starts an invoice line for InvoiceBuilder::line() and lines() without a callback: ->line(Line::make('Consulting', netPrice: '120.00')->sellerId('C-1')). Simple lines need no builder: ->line('Consulting', netPrice: '120.00', quantity: 4, unit: UnitCode::Hour).
LineBuilder
Fluent builder for an invoice line (BG-25).
Party
Starts a seller or buyer for InvoiceBuilder::seller() and buyer() without a callback: ->buyer(Party::make('Kunde AG')->vatId('DE987654321')->address('Weg 1', '54321', 'Beispielstadt', 'DE')).
PartyBuilder
Fluent builder for the seller (BG-4), the buyer (BG-7) and the payee (BG-10).
PaymentTermsBuilder
Fluent builder for structured payment terms (BT-20, BT-9).
AllowanceSplitter
Splits a document discount over several VAT groups.
CalculationException
CalculationPolicy
Decisions of the calculator that are not fixed by EN 16931. The policy is configuration of the run and not stored with the invoice: the same data calculated under another policy can give other amounts.
DeclaredAmounts
Declared amounts of an existing document (Meta::FLAG_DECLARED_AMOUNTS): whether they are needed at all, and the fingerprint of the amount inputs they belong to.
En16931Calculator
Calculation according to EN 16931.
GrossPriceConverter
Gross price mode for B2C and shops.
LargestRemainder
Distributes an amount over weights so that the rounded parts add up exactly (largest remainder method).
LineCalculator
Calculates the invoice line net amount (BT-131):
CodeList
Access to the official code lists generated from the EN 16931 rules and, for Peppol, the Peppol BIS rules (resources/codelists/*.json, see tools/codelists/update.php).
CodeListGenerator
Generates the code list files (resources/codelists/*.json) from the official EN 16931 Schematron rules (BR-CL-*), as shipped with the KoSIT validator configuration.
RawCode
A code that is not (yet) part of the code list enums shipped with the package.
Config
Configuration of the core without Laravel. The Laravel package translates config/quittio.php into it (Quittio\Laravel\Support\ConfigMapper), whose layout differs from the keys of fromArray().
Cancellation
Full cancellation of an issued invoice: a new invoice with its own number that reverses the original and refers to it (BG-3).
CancellationHistory
What the earlier partial cancellations of an invoice cancelled per VAT group (category and rate), so that the VAT of the next partial cancellation is rounded cumulatively.
AbstractCountryPack
Base class with neutral defaults, so that country packs only override what differs.
CorrectionPolicy
Default handling of cancellations and corrections in a country, and the titles of these documents. Quittio::cancellation() takes the cancellation strategy and the titles "cancellation" and "cancellation_self_billed"; the title "self_billed" is the title of self-billed invoices in PDF and HTML (InvoiceTitle::policyTitle()); the Managed layer takes the correction strategy and the title "correction".
CountryDefaults
Defaults of a country.
CountryGeneric
Neutral pack for countries without an installed country pack: EN 16931 rules only and international formatting. A warning is issued when an invoice is validated with this pack.
CountryRegistry
Installed country packs.
DefaultCountryResolver
The seller's country (BT-40) determines the leading pack. The buyer's country (BT-55) adds rules for cross-border invoices. Without an installed pack, a generic pack is used.
DunningLaw
Statutory late payment rules (EU late payment directive plus national law).
LegalTextCatalog
Legal and informational texts of a country pack per locale.
MandatoryField
A value that must appear in the PDF (checked by the mandatory field guard).
MandatoryFieldList
Values that must be output in the PDF for one invoice.
NumberingRules
Requirements for invoice numbering in a country. The Managed layer applies the default pattern, the default reset and the allowed resets.
ResolvedCountries
Leading pack (seller side) and, for cross-border invoices, the buyer's pack.
RetentionRule
Retention period for invoices.
VatTerritory
The EU VAT territory (Art. 5 to 7 of Directive 2006/112/EC) as far as it can be told from a country code and a postcode.
DocumentAllowance
Document level allowance (BG-20). An allowance has exactly one VAT category and rate.
DocumentAllowanceCharge
Common structure of document level allowances (BG-20) and charges (BG-21).
DocumentCharge
Document level charge (BG-21).
LineAllowance
Invoice line allowance (BG-27).
LineAllowanceCharge
Common structure of invoice line allowances (BG-27) and charges (BG-28).
LineCharge
Invoice line charge (BG-28).
Attachment
Additional supporting document (BG-24).
Delivery
Delivery information (BG-13).
Period
Invoicing period (BG-14: BT-73, BT-74) or invoice line period (BG-26: BT-134, BT-135).
ExtendedData
Document level data that exists only in the Factur-X/ZUGFeRD EXTENDED profile.
ExtendedParty
Additional trade party of profile EXTENDED (invoicer, invoicee, ultimate customer, ship-from, line ship-to).
IncludedProduct
Component of a set or bundle (profile EXTENDED).
Installment
One of several payment terms with its own due date (profile EXTENDED), e.g. instalments.
LineExtendedData
Line level data that exists only in the Factur-X/ZUGFeRD EXTENDED profile.
ThirdPartyPayment
Amount collected on behalf of a third party (XRechnung extension, group BG-DEX-09).
XRechnungExtensionData
Data of the XRechnung extension. Sub invoice lines are modelled via InvoiceLine::$subLines.
Identifier
Identifier with an optional scheme (ISO/IEC 6523 ICD or another code list depending on the field).
InvoiceData
Root of the semantic invoice model (EN 16931, superset of the 2017 and 2026 versions).
Classification
Item classification identifier (BT-158) with scheme (BT-158-1) and scheme version (BT-158-2), e.g. eCl@ss, UNSPSC, CPV or customs tariff numbers.
InvoiceLine
Invoice line (BG-25).
Item
Item information (BG-31).
ItemAttribute
Item attribute (BG-32), e.g. colour, size, vehicle identification number.
LineVat
Line VAT information (BG-30).
Price
Price details (BG-29). Prices may have more than two decimals.
Meta
Package-internal metadata: locale, time zone, exchange rate, free data for templates and flags for country packs.
Note
Invoice note (BG-1).
Address
Postal address (BG-5 seller, BG-8 buyer, BG-12 tax representative, BG-15 deliver to).
BuyerParty
Buyer (BG-7).
Contact
Contact (BG-6 seller: BT-41/42/43, BG-9 buyer: BT-56/57/58).
ElectronicAddress
Electronic address (BT-34 seller, BT-49 buyer) with its EAS scheme.
PayeeParty
Payee (BG-10), only when different from the seller (factoring, collection, group company).
SellerParty
Seller (BG-4).
TaxRepresentativeParty
Seller tax representative (BG-11).
CashDiscount
Cash discount ("Skonto") granted for payment within $days days.
CreditTransfer
Credit transfer (BG-17).
DirectDebit
Direct debit (BG-19).
PaymentCard
Payment card information (BG-18). Only the last 4 to 6 digits of the card number may be stored.
PaymentInstructions
Payment instructions (BG-16).
PaymentTerms
Structured payment terms. Serialised into BT-20 text (and structured elements where the profile allows).
PenaltyTerms
Late payment terms. Structured only in profile EXTENDED, otherwise rendered as text.
Colors
Colours used by the PDF template.
LineGroup
Group of invoice lines with an optional subtotal. Presentation only.
LinePresentation
PDF-only presentation hints for an invoice line. Never written to XML.
Presentation
Data used only for the PDF. Never written to XML.
DocumentReference
Reference to a related document on line level or as additional reference (profile EXTENDED), e.g. delivery note, order, contract or receiving advice.
PrecedingInvoiceReference
Preceding invoice reference (BG-3), used for cancellations, corrections and final invoices.
ProjectReference
Project reference (BT-11). CII requires a name in addition to the identifier.
Totals
Document totals (BG-22), calculated by the calculator.
VatBreakdown
VAT breakdown (BG-23), one entry per combination of VAT category and rate.
AccountStatement
Account statement for a customer: open and paid invoices of a period.
DocumentBuilder
Fluent builder for documents. Parties, lines, notes, discounts and payment data work exactly like in the {@see InvoiceBuilder}.
DocumentCalculator
Calculates documents with the invoice calculator. Optional and alternative lines get their line amounts but are excluded from the totals.
DocumentData
Quote, order confirmation, delivery note, proforma invoice, payment reminder or account statement. Shares parties, lines and calculation with {@see InvoiceData}, but never produces e-invoice XML. Payment reminders and account statements have no lines: their amount comes from {@see Dunning} and {@see AccountStatement}.
DocumentLineOptions
Document specific line details, keyed by line identifier in {@see DocumentData}.
Dunning
Data of a payment reminder: open items, fees, interest and the new deadline.
DunningFee
Fee of a payment reminder (e.g. costs of the reminder, flat rate according to national law).
InterestCharge
Default interest on an open amount for a period (simple interest).
OpenItem
An invoice in a payment reminder or account statement.
Package
Package of a delivery note.
DefaultInterest
Default interest of a late payment law: the reference rate plus the points of the DunningLaw (business or consumer debtors), split at every change of the reference rate, with the day count basis of the law. The result goes into DocumentBuilder::interestCharge().
ConfigurationException
Invalid configuration or an unsupported combination of format and profile.
HydrationException
Array or JSON input does not match the invoice data model.
InvalidArgumentException
\InvalidArgumentException thrown by Quittio; catch QuittioException for every error of the library.
InvalidInvoiceData
Builder or data input is structurally incomplete.
LogicException
\LogicException thrown by Quittio; catch QuittioException for every error of the library.
RuntimeException
\RuntimeException thrown by Quittio; catch QuittioException for every error of the library.
DefaultFormatResolver
Format resolution in this order:
ExtendedFeatures
Detects data that only the profile EXTENDED can carry (sub lines, EXTENDED-only fields).
FormatChoice
Result of the format resolution: output format key and profile key.
FormatRegistry
Known output formats. Country and network packages can register national formats.
OutputFormat
Definition of an output format.
ArrayTranslator
Translator backed by PHP array files: {path}/{locale}/{group}.php.
Translations
Holds the translator used for code labels and validation messages.
Binary
Binary string; arrays and JSON carry it base64 encoded.
Bt
Business term or business group identifier from EN 16931 (e.g. BT-1, BG-25).
Cardinality
Cardinality according to EN 16931: 1, 0..1, 0..n or 1..n.
Cii
Location of the field in UN/CEFACT CII, relative to the parent element (informative).
Computed
The value is set by the calculator and is not a user input.
ExtendedOnly
The value exists only in the Factur-X/ZUGFeRD EXTENDED profile.
InputFor
Marks a user input that the calculator copies into the given business term.
Internal
Package-internal value without an EN 16931 business term (not written to XML).
Level
Lowest Factur-X/ZUGFeRD profile level in which the field may be used.
ListOf
Element type of an array property, used for hydration and schema generation.
MapOf
Value type of an array property keyed by strings, e.g. line options keyed by line identifier; the hydrator keeps the keys.
PdfOnly
The value is used for the PDF only and never written to XML.
RequiredIn
Profile keys in which an optional EN 16931 field becomes mandatory (e.g. "xrechnung").
Since
The field exists from the given version of EN 16931 on.
TaxCurrency
Monetary value expressed in the VAT accounting currency (BT-6) instead of the invoice currency.
Ubl
Location of the field in UBL 2.1, relative to the parent element (informative).
Until
The field exists up to and including the given version of EN 16931.
XRechnungExtensionOnly
The value exists only in the XRechnung extension.
FieldDefinition
Metadata of one DTO field, read from its mapping attributes.
FieldMatrix
Field metadata of all DTOs, derived from the mapping attributes (single source for profile validation, documentation and coverage reports).
FieldReference
Generates docs/field-reference.md from the mapping attributes of the data model.
EmbeddedXml
Invoice XML to be embedded into a PDF/A-3 (ZUGFeRD/Factur-X, XRechnung in PDF).
LogoCache
Prepares logos for the PDF and caches the result.
PdfEmbeddedFileExtractor
Extracts the embedded invoice XML from PDF files (ZUGFeRD 2.x, Factur-X, XRechnung in PDF).
PdfException
MpdfPostProcessor
Imports the pages of an existing PDF (FPDI via mPDF), embeds the XML and writes PDF/A-3 metadata and output intent.
EpcGiroCodeGenerator
EPC QR code ("GiroCode") for SEPA credit transfers, guideline EPC069-12 version 002.
QrImage
Renders QR codes as SVG data URIs for templates (no further dependency besides mpdf/qrcode).
RemoteImageFetcher
Downloads remote logos without server-side request forgery: only http and https, only hosts whose every resolved address (IPv4 and IPv6) is publicly routable, the connection pinned to the checked address (no second DNS lookup) and every redirect checked again.
CallbackRenderer
Own rendering function (e.g. Browsershot, Gotenberg) that returns PDF binary data.
DenyingHttpClient
mPDF HTTP client that refuses every request (defence in depth).
MpdfRenderer
Default renderer: HTML/CSS to PDF/A-3b with mPDF, in pure PHP.
PassthroughRenderer
Uses a finished PDF supplied by the application; only PDF/A and the XML are added.
RenderRequest
Input for a PDF renderer.
FacturXXmp
XMP metadata for Factur-X/ZUGFeRD: the fx description and the PDF/A extension schema.
AbstractProfile
Defaults shared by all profiles. Profiles override what differs.
Basic
Factur-X/ZUGFeRD BASIC: a subset of EN 16931 with lines.
BasicWl
Factur-X/ZUGFeRD BASIC WL (without lines). Not an e-invoice in the sense of EN 16931.
En16931
EN 16931 core invoice (Factur-X/ZUGFeRD profile EN 16931, also as plain CII or UBL).
Extended
Factur-X/ZUGFeRD EXTENDED: EN 16931 plus additional elements.
Minimum
Factur-X/ZUGFeRD MINIMUM. Not an e-invoice in the sense of EN 16931; booking aid only.
PeppolBis3
Peppol BIS Billing 3.0, a UBL based CIUS of EN 16931.
ProfileRegistry
Known profiles by key. Country packs and network packages register further profiles.
Quittio
Entry point without Laravel:
DeclaredExemptionReasons
EN 16931 carries the VAT exemption reason (BT-120, BT-121) only on the VAT breakdown, the data model takes it from the lines (LineVat) and document allowances and charges.
ExtractedXml
The invoice XML found in a hybrid PDF, with the file specification it came from.
InvoiceReader
Reads e-invoices from XML or PDF.
ReadResult
Result of reading an e-invoice: the parsed data, the totals declared in the document (kept unchanged for comparison), findings and the raw input.
UnreadableInvoiceException
The input is not a supported e-invoice.
PendingDocument
Fluent render call for documents: Quittio::document($quote)->locale('de')->render().
PendingInvoice
Fluent render call: Quittio::make($data)->profile()->format()->locale()->render().
PreparedInvoice
Calculated and validated invoice data plus the decisions a render run would take (format, profile, country pack, locale), without rendering anything. The XML of every format (also the one "pdf" embeds with b2cEmbedXml) is generated for the validation only.
RenderedDocument
Rendered quote, delivery note, reminder or other document (PDF and HTML, never XML).
RenderedInvoice
Result of a render run. With several formats, every format is reachable via {@see self::as()}; all share the same calculation.
RenderOptions
Per call options of a render run; unset values fall back to the configuration.
ArrayHydrator
Builds DTOs from plain arrays (the inverse of ArrayNormalizer).
ArrayNormalizer
Converts DTOs into plain arrays (scalars only) for JSON, storage and APIs.
JsonSchemaGenerator
Generates the JSON Schema (draft 2020-12) of InvoiceData::toArray() from the constructor signatures and mapping attributes, so that the schema never drifts from the model.
JsonSchemaValidator
Validates JSON input against the shipped invoice schema before hydration (requires the optional package opis/json-schema).
SnapshotUpcasterChain
Brings stored snapshots step by step to the current version (v1 → v2 → … → current).
SnapshotVersionException
A snapshot cannot be brought to the current version: an upcaster is missing, or the snapshot was written by a newer version of the package.
Amount
Factory for monetary amounts.
Date
Calendar date without time of day.
DatedValues
Values that change on dates, e.g. tax rates or reference interest rates: every value holds from its date until the next change.
Decimal
Helpers for exact decimal arithmetic. Floats are rejected on purpose, see rejectFloat().
Process
Minimal external process runner with stdin, timeout and captured output.
CountryDefaultVat
Default VAT of lines without VAT treatment, for InvoiceBuilder::useDefaultVat():
CustomTaxPreset
Ad-hoc tax preset, e.g. for an exemption with a specific legal reference.
SupplyDate
The date that decides the VAT rate of a line: the end of the line period (BT-135), its start (BT-134), the VAT point date (BT-7), the actual delivery date (BT-72), the end of the invoicing period (BT-74) and finally the issue date (BT-2), in this order.
TaxPresetCollection
PhpTemplateEngine
Plain PHP templates for use without Laravel.
InvoiceFactory
Test data factory: InvoiceData::factory()->reverseCharge()->withLines(5)->make().
Scenarios
Example invoices for previews, tests and the official validation runs.
KositArtifacts
Downloads the KoSIT validator and the XRechnung validator configuration (level L5) and compiles the Peppol BIS Billing 3.0 Schematron to XSLT with the Saxon bundled in the validator (requires Java).
KositReportParser
Converts a KoSIT validator report (VARL) into validation messages.
KositValidator
Official Schematron validation (level L5) with the KoSIT validator.
PhpRulesDriver
Built-in PHP rules: levels L1 (structure), L2 (profile), L3 (business rules) and L7 (plausibility).
VeraPdfValidator
PDF/A conformance check (level L6) with veraPDF.
XsdValidator
XML schema validation (level L4) with the bundled CII D16B and UBL 2.1 schemas.
InvoiceValidator
Runs all configured validation drivers and merges their results.
Messages
Creates validation messages from the message catalog.
Iban
IBAN check digit validation (ISO 13616, mod 97-10) without extensions.
VatIdFormat
Format of VAT identification numbers by country prefix (structure only, no check digits).
VatIdVerification
Result of an online VAT identifier check. $valid is null if no statement is possible: the service was not reachable or answered with an error, or it does not cover the identifier ($supported = false).
ViesVerifier
VAT identifier check via the REST interface of the EU VIES service.
RuleOverrides
Changes to the PHP rules by rule code: rules switched off, findings with another severity and rules replaced by own implementations. Codes match exactly or, with a trailing "*", by prefix (e.g. "DE-USTG-*"). The overrides apply to the PHP rules only; the findings of the XSD schema, KoSIT and veraPDF are never changed.
CallbackRule
A rule defined by a closure. The closure receives the invoice and a reporter.
CodeListRules
Code list rules of EN 16931 (BR-CL-…), based on the official code lists.
En16931Rules
EN 16931 business rules (BR-…) and conditions (BR-CO-…) checked on the data model.
FieldMatrixRule
Mandatory and allowed fields of the selected profile (level L2), derived from the mapping attributes of the data model and the profile's additional requirements.
Inspect
Helpers shared by the rule sets.
PeppolRules
Subset of the Peppol BIS Billing 3.0 rules (PEPPOL-EN16931-R…) with readable messages.
PlausibilityRules
Plausibility checks (level L7): IBAN check digits, BIC and VAT identifier formats, e-mail addresses, date logic and the VAT category against the destination country.
QuittioRules
Package rules (QUITTIO-…) that go beyond EN 16931.
RuleReporter
Collects the findings of one rule.
StructureRules
Structure and data format checks of the data model (level L1).
VatCategoryRules
VAT category rules of EN 16931 (BR-S, BR-Z, BR-E, BR-AE, BR-IC, BR-G, BR-O).
ValidationContext
Information available to rules while validating an invoice.
ValidationException
Thrown when an invoice does not pass validation. The full result is attached.
ValidationMessage
A single validation finding.
ValidationResult
Result of a validation run.
ValidationSubject
What is validated: the calculated data and, where available, the generated XML and PDF.
AccessLog
Records which view model fields a template read (for the mandatory field guard).
CountryNames
Country names from ext-intl with the ISO code as fallback.
FormattedValue
A value for templates: formatted for display and available in raw form.
InternationalAddressFormatter
Fallback address format: street lines, "postcode city", subdivision and, for foreign recipients, the country name in upper case as the last line.
IntlFormatter
Locale aware formatting with ext-intl and a fallback for German and English conventions.
InvoiceTitle
Label key of the document title for a type code (BT-3).
InvoiceViewModel
The only object templates receive. Every value is available formatted ($value->formatted or {{ $value }}) and raw ($value->raw).
LetterLayout
Position of the address field and marks on the first page, in millimetres from the top left corner (e.g. DIN 5008 form A/B in the German country pack).
MandatoryFieldGuard
Checks after rendering that the template printed all mandatory values.
MandatoryFieldMissing
A template omitted mandatory invoice information.
Markdown
Safe Markdown subset for texts: paragraphs, lists, bold and italic. HTML in the input is shown as text, links keep only their text.
ResolvedLogo
A logo of the presentation as the renderer gets it: a local file or a checked data URI (Pdf\LogoCache), resolved before the view model is built, so that the view layer does no I/O.
ViewContext
Everything the view model factory needs besides the invoice data.
ViewModelFactory
Builds the template view model from calculated invoice data.
ViewNode
Read-only node of the invoice view model with recorded property access.
CiiReader
Reads UN/CEFACT Cross Industry Invoices (Factur-X/ZUGFeRD, XRechnung CII) into the data model.
CiiWriter
Writes UN/CEFACT Cross Industry Invoice (D16B) according to the EN 16931 binding (CEN/TS 16931-3-3) and the Factur-X/ZUGFeRD profiles.
Format
Number formats for XML: dot as decimal separator, no grouping, no exponent.
PaymentTermsText
Builds the payment terms text (BT-20) from structured payment terms.
SerializationOptions
Options for XML serialisation.
UblReader
Reads UBL 2.1 Invoice and CreditNote documents (EN 16931, XRechnung UBL, Peppol BIS) into the data model.
UblWriter
Writes OASIS UBL 2.1 Invoice and CreditNote documents according to the EN 16931 binding (CEN/TS 16931-3-2). Credit note type codes produce a CreditNote document.
UnsafeXmlException
Rejected XML input (DOCTYPE, too large, not well-formed).
XmlSecurity
Safe XML loading for untrusted input.
GermanInvoice
German special cases of an invoice, reached with the builder macro de():
GermanInvoiceMacros
Registers the builder macro de() of the German pack, which leads to the German special cases (GermanInvoice):
CountryDE
Country pack for Germany.
BaseRates
Base rates (section 247 BGB) of the application in addition to the table shipped with Quittio, e.g. rates published after the release or fetched with BundesbankBaseRates.
BaseRateTable
Basiszinssatz according to section 247 BGB, published by the Deutsche Bundesbank and changed on 1 January and 1 July. Rates after the last entry are added with withRate(), BaseRates::register() or, in Laravel, the configuration quittio-de.base_rates and the command quittio:base-rate:update (BundesbankBaseRates).
BundesbankBaseRates
Fetches the base rate according to section 247 BGB from the statistics API of the Deutsche Bundesbank (time series BBIN1.M.DE.BBK.BBKBAS2.EUR.ME, formerly SU0115). The series has a value per month; the rate changes on 1 January and 1 July, so the values of January and July are the table entries. A new rate appears once the Bundesbank has published the value of that month.
DefaultInterest
Default interest according to section 288 BGB: base rate plus 9 points (business) or 5 points (consumer), split at every change of the base rate.
GermanFormatRule
Formats that German law prescribes:
XRechnungFormats
The XRechnung formats of the German pack: XRechnung in CII (default) and in UBL, each with the profiles XRechnung and XRechnung extension.
GermanyServiceProvider
Laravel integration of the German country pack (discovered automatically): the base rates of quittio-de.base_rates and of the file written by quittio:base-rate:update are registered with BaseRates, so that DefaultInterest uses them.
Din5008
DIN 5008 business letter layouts: the address field of 85 × 45 mm starts 27 mm (form A) or 45 mm (form B) from the top edge and 20 mm from the left edge. In both forms it holds the Zusatz- und Vermerkzone (17.7 mm, five lines filled from the bottom; without further notes its last line is the Rücksendeangabe) and the Anschriftzone (27.3 mm, six lines), which starts 44.7 mm (A) or 62.7 mm (B) from the top edge. Fold marks at 87/192 mm (A) or 105/210 mm (B), punch mark at 148.5 mm.
XRechnung30
XRechnung 3.0 (German CIUS of EN 16931), syntax CII or UBL.
XRechnung30Extension
XRechnung 3.0 extension: adds sub invoice lines (UBL only) and third party payments.
UstgRules
Mandatory invoice information according to the German VAT act: section 14 (4) and 14a UStG, section 33 UStDV for small amount invoices and section 34a UStDV for small business invoices.
XRechnungRules
Business rules of the CIUS XRechnung 3.0 (BR-DE-…), checked on the data model.
Flags
Meta flags (InvoiceData::$meta->flags) understood by the German country pack.
LeitwegId
Leitweg-ID of public buyers in Germany (BT-10 for XRechnung): coarse address (2–12 digits), optional fine address (up to 30 characters) and check digits according to ISO 7064 Mod 97-10.
TaxNumber
German tax number (Steuernummer, BT-32) as described in "Prüfung der Steuer- und Steueridentifikationsnummer" of the Bayerisches Landesamt für Steuern (ELSTER, as of 2 September 2026): the 13-digit ELSTER format FFFF0BBBUUUUP (NRW: FFFF0BBBBUUUP), the 12-digit federal format without the 0, and the notation of the federal states on tax notices (e.g. 181/815/08155 in Bavaria, 133/8150/8159 in NRW).
CustomVatPreset
Ad-hoc preset of the German pack, e.g. from VatPreset::exempt(). Like the VatPreset cases, its text defaults to German when the invoice has no locale; other locales without a text fall back to English.
TaxTables
German tax values that changed over time, each valid from its date on.
LegalTexts
Mandatory and informational texts for German invoices.
ConfigInvoiceDefaults
The seller, its first bank account and the small business flag of config/quittio.php.
RenderableDocumentBuilder
The document builder of Quittio::quote(), deliveryNote(), paymentReminder() …: renders itself at the end of the chain.
RenderableInvoiceBuilder
The invoice builder of Quittio::invoice(): renders (or checks) itself at the end of the chain.
DocumentRendered
Dispatched after a document (quote, reminder, …) was rendered.
DocumentRendering
Dispatched before a quote, order confirmation, delivery note, proforma invoice, payment reminder or account statement is calculated and rendered.
InvoiceRendered
Dispatched after all requested formats were produced.
InvoiceRendering
Dispatched before an invoice is calculated, validated and rendered.
InvoiceValidated
Dispatched after a render run whose validation did not block it, before InvoiceRendered.
InvoiceValidationFailed
Dispatched when validation blocked rendering.
MandatoryFieldMissing
Dispatched when a template omitted mandatory values.
QueuedDocumentFailed
Dispatched when a queued RenderDocument job failed for good: after its last attempt, or at once for errors that another attempt cannot fix. $job->data() returns the document.
QueuedDocumentStored
Dispatched by a queued RenderDocument job after it stored the document. DocumentRendered precedes it.
QueuedInvoiceFailed
Dispatched when a queued RenderInvoice job failed for good: after its last attempt, or at once for errors that another attempt cannot fix (validation, invalid data, configuration).
QueuedInvoiceStored
Dispatched by a queued RenderInvoice job after it stored the main output, e.g. to link the stored file to an order. InvoiceRendered precedes it.
Quittio
RenderDocument
Renders a quote, delivery note, reminder or other document in the queue and stores it on a disk. The document travels as versioned JSON snapshot (DocumentData::toSnapshot(), brought up to date by quittio.snapshots.document_upcasters), the render options as versioned JSON.
RenderInvoice
Renders an invoice in the queue and stores the main output on a disk.
QuittioManager
Root of the Quittio facade: builds the core from the Laravel configuration, adds events, Blade templates, storage and extension points.
QuittioServiceProvider
Registers the Quittio manager, configuration, views, translations, commands and the local preview route.
PendingDocument
Fluent render call for documents: Quittio::document($quote)->locale('de')->render().
PendingInvoice
Fluent render call: Quittio::make($order)->profile('en16931')->format('zugferd')->locale('de')->render().
QueuedDocument
Pending queued render of a document; dispatching happens on save().
QueuedInvoice
Pending queued render; dispatching happens on save().
RenderedDocument
Rendered quote, delivery note, reminder or statement for Laravel.
RenderedInvoice
Rendered invoice for Laravel: usable as mail attachment and as HTTP response, storable on any filesystem disk.
Seller
Seller from config/quittio.php (when the Managed layer is not in use).
Settings
Typed read access to a configuration array ("quittio" by default) with dot notation.
BladeTemplateEngine
Renders Blade views with the invoice view model as $invoice. The name "default" maps to the configured template. Template names may come from invoice data, so only these views can be selected: the configured template (quittio.pdf.template), the shipped views under "quittio::templates." (no partials) and the views of quittio.pdf.templates ("invoices.*" or "namespace::*" allows every view below a prefix). Names that are no Blade view fall back to the plain PHP templates, which resolve names inside their template directories only (never file paths).
EInvoiceAssertions
The assertions of {@see InteractsWithQuittio} outside a test case class, e.g. in Pest helper functions: (new EInvoiceAssertions)->assertValidEInvoice($pdf, 'xrechnung').
QuittioFake
Calculates invoices and chooses formats and profiles like a real run (requested formats, defaults.format, the automatic choice, profile keys and objects, defaults.profile), but skips validation, XML, template and PDF. Records every render call and every queued render, and dispatches the events of a real run (InvoiceRendering, InvoiceValidated with an empty result unless validation is off, InvoiceRendered).

Traits

BuildsAllowancesAndCharges
Document level allowances and charges (BG-20, BG-21) and discounts split over the VAT rates.
BuildsDelivery
Delivery information (BG-13) and the invoicing period (BG-14).
BuildsExtensions
Data of the EXTENDED profile and of the XRechnung extension.
BuildsHeader
Invoice number, dates, type, currencies, business process and standard version.
BuildsLines
Invoice lines (BG-25) and their groups.
BuildsNotesAndAttachments
Invoice notes (BG-1) and supporting documents (BG-24).
BuildsParties
Seller, buyer, payee and tax representative (BG-4, BG-7, BG-10, BG-11).
BuildsPayment
Payment instructions (BG-16 to BG-19), payment terms and the prepaid and rounding amounts (BT-113, BT-114).
BuildsPresentationAndMeta
Presentation, locale, time zone, custom values, flags and the source of the invoice.
BuildsReferences
Document references (BT-10 to BT-19, BG-3) and the invoiced object.
Immutable
Generic copy-on-write helper for readonly DTOs whose properties are all promoted constructor parameters.
HasLabel
Translated labels for code list enums, e.g. "Stunde" for HUR.
Macroable
Lightweight macro support without a dependency on Laravel.
DeliversFile
Download, inline display, mail attachment and storage for rendered files.
InteractsWithQuittio
Assertions for feature tests.

Enums

DeclaredAmountsMode
What the calculator does with the declared amounts of an existing document (line net amounts BT-131 and VAT breakdown BT-116, BT-117 that another system rounded differently, see Meta::FLAG_DECLARED_AMOUNTS).
DocumentType
Commercial documents that share templates and calculation with invoices but carry no e-invoice XML.
AllowanceReasonCode
Allowance reason code (BT-98, BT-140), UNTDID 5189 subset.
ChargeReasonCode
Charge reason code (BT-105, BT-145), UNTDID 7161 subset. Further codes can be used as RawCode.
DocumentReferenceTypeCode
Document type code for additional supporting documents (BG-24), UNTDID 1001 subset.
ElectronicAddressScheme
Electronic address scheme (BT-34-1, BT-49-1), CEF EAS code list. Further codes can be used as RawCode.
IdentifierScheme
Identifier scheme (ISO/IEC 6523 ICD), e.g. for BT-29, BT-46, BT-157. Further codes can be used as RawCode.
InvoiceTypeCode
Document type code (BT-3), UNTDID 1001 subset allowed by EN 16931.
ItemClassificationScheme
Item classification scheme (BT-158-1), UNTDID 7143 subset. Further codes can be used as RawCode.
MimeType
MIME code of an attached document (BT-125-1).
NoteSubjectCode
Invoice note subject code (BT-21), UNTDID 4451 subset. Further codes can be used as RawCode.
PaymentMeansCode
Payment means type code (BT-81), UNTDID 4461. Further codes can be used as RawCode.
TaxPointDateCode
Value added tax point date code (BT-8).
UnitCode
Unit of measure (BT-130, BT-150), UN/ECE Recommendation 20 and 21. Further codes can be used as RawCode.
VatCategory
VAT category code (BT-95, BT-102, BT-118, BT-151), UNTDID 5305 subset.
VatExemptionReasonCode
VAT exemption reason code (BT-121), VATEX code list. Further codes can be used as RawCode.
ProfileLevel
Ordered Factur-X/ZUGFeRD profile levels. Each level contains all fields of the lower levels.
Syntax
XML syntax of an e-invoice.
StandardVersion
Version of the semantic standard EN 16931-1.
Severity
ValidationLevel
Validation levels.
BmfErrorClass
Error classes of the BMF letter of 15 October 2025.
VatPreset
Tax presets for Germany.
On this page

Search results