Open the JSON playground or use a runnable quickstart below. The public playground needs no API key. Only an explicit Generate action sends your JSON to Financewolf.
1. Choose a synthetic example
Save your example as input.json. Consult the versioned JSON Schema for supported fields. Amounts and quantities are decimal strings, dates use YYYY-MM-DD, and unknown or duplicate fields are rejected. Invoice text is treated as text. The generator reports inconsistent supplied totals; it does not silently repair invoices.
2. Run a quickstart
Download a script to your project and run it with an input and output filename. Each script sends the input to the production generation endpoint, requires a successful validation through all five layers, verifies the returned XML hash and length against the validation result, and only then writes the XML file.
| Runtime | Download | Command |
|---|---|---|
| curl + Python 3 | generate.sh | bash generate.sh input.json invoice.xml |
| Node.js 22.18+ | generate.ts | node generate.ts input.json invoice.xml |
| Python 3 | generate.py | python3 generate.py input.json invoice.xml |
| Go | generate.go | go run generate.go input.json invoice.xml |
The default request selects ruleset=latest and profile=peppol-bis-billing-3. The result records the exact resolved ruleset and validator image. For reproducible integrations, use an exact ruleset from the live registry and the OpenAPI contract.
3. Save and retrieve results
For retained results, set IRONFANG_API_KEY in your shell environment to a key with financewolf:einvoices:write. Keep it out of source files and browser code. Set FINANCEWOLF_IDEMPOTENCY_KEY to a unique value for one logical generation, and reuse it only when retrying the same input and options. The scripts do not retry automatically. An interrupted request may have completed; retry with the same key to retrieve its original result without another operation.
Anonymous generation is transient. Authenticated results and generated XML are retained for 30 days, with earlier deletion available. Original JSON is not retained. The portal playground provides saved results and readable PDF downloads. Reading or rendering a retained result needs financewolf:einvoices:read. Expired or deleted results return 410; downloaded copies remain under your control.
Understand failures and limits
JSON is limited to 5 MiB. Field errors identify unsupported or malformed input. A generator or validation service failure does not establish an invoice verdict and does not release generated XML. Respect Retry-After on HTTP 429. Use FINANCEWOLF_API_BASE only to target an explicitly trusted development or staging API; the scripts send any configured key to that address.
Generation preserves the exact bytes sent through PHIVE as the returned XML. A readable PDF represents those values; it does not replace the XML. Validation does not transmit invoices, register participants, make Ironfang a Peppol Access Point, certify legal or tax compliance, or guarantee recipient acceptance. See the validation pipeline and its limits.
