Verify a report without an account. Verification checks the manifest signature, all bundled hashes and any required timestamp. It does not run PHIVE again. A verified report may record an invalid invoice.
Request a report
POST to /financewolf/v1/einvoices/reports using a key with financewolf:einvoices:read. Supply {"operation_id":"your-operation-uuid"}. The operation must belong to your organisation and its saved result must still be retained. The portal also offers a signed report download from saved results. Issuance requires an activated signing service; HTTP 503 report_unavailable means it is not available and leaves the saved result unchanged.
Generation bundles contain the exact validated XML. Add "include_pdf": true to bind a freshly rendered readable PDF and its template version. Validation-only uploads do not retain source XML, so their reports contain the source hash without an XML file. They cannot include a readable invoice PDF.
Issuance creates no new validation operation or usage charge and does not store another hosted copy. Repeated downloads may have different issuance times, signatures, timestamp tokens or PDF bytes. Original validation facts remain pinned. Report issuance is refused after result deletion or expiry. A downloaded report can still be checked offline.
Bundle contents
manifest.json: canonical Financewolf facts, exact ruleset/VES and engine image, executable artefact checksums, layer outcomes, complete finding count, source hashes, generator/render versions where applicable, issuance time, signing key and claim limits.signature.json: the Ed25519 signature and key ID, using a Financewolf-specific domain separator.result.jsonandfindings.json: the exact saved response and complete finding array, each bound by hash and byte length.report.html: an escaped, printable view derived from the signed manifest. Verification checks that it matches.document.xmland optionalreadable.pdf: retained generated XML and the requested readable representation.timestamp.tsqandtimestamp.tsr: present together when the signed policy requires an RFC 3161 timestamp.
Financewolf currently retains at most 1,000 returned findings. If a saved result says its findings were truncated, report issuance returns 422 report_incomplete. A partial list is never described as a complete signed finding record. Library versions absent from the original observation are not reconstructed from whichever validator happens to be running now.
Trust and timestamps
The public key endpoint contains operator-configured keys. Obtain keys independently of the report itself. Active keys issue reports; retired keys verify previous reports; revoked keys are refused. Offline verification reflects the key list you supply, so maintain revocation updates. A bundled or attacker-provided key is not an independent trust anchor.
Without a trusted timestamp, issuance time is a Financewolf service assertion. If timestamping is configured, only the digest of the domain-separated manifest is sent to the configured timestamp authority. The signed policy requires the returned timestamp pair; stripping it or failing its independent CA verification makes the report unverified. The public verifier makes no network calls, including to a timestamp authority.
Limits and privacy
Both compressed and expanded bundles are limited to 48 MiB, with individual member limits and an exact allowlist of up to nine names. Duplicate, unknown or unsafe ZIP entries are rejected. The hosted check accepts ZIP bytes only, processes them transiently and does not fetch document URLs or upload files elsewhere. The offline CLI makes no network calls.
A signature does not transmit invoices, register Peppol participants, make Ironfang an Access Point, certify legal or tax compliance, prove that an invoice was accepted, or replace accounting and standards review. Use the validation guide to understand what PHIVE checked.
