Use this script for a 7-10 minute customer-discovery or hiring-manager demo. Keep the positioning narrow: Germany XRechnung workflow evidence for teams that already produce invoice JSON.
Start the API:
docker-compose up --buildIn another terminal, run the focused workflow:
./examples/germany_demo.shOpen the local docs:
http://localhost:8000/docs
-
Start with the pain.
"Most billing and ERP teams already have invoice data. The expensive part is turning that data into a country-specific structured invoice, proving it passed validation, and keeping evidence when an auditor or customer asks what happened."
-
Position the product.
"InvoiceBridge API sits behind the existing billing system. The customer sends normalized invoice JSON; the API checks the country profile, validates required fields and totals, generates the structured document, stores evidence, and exposes status and audit trail APIs."
-
Show the readiness check.
Run:
curl -s -H "X-API-Key: local-dev-key" \ "http://localhost:8000/v1/compliance/production-readiness?country=DE&transaction_type=B2B"
Say:
"This is intentionally honest. Germany can work without a paid network provider, but only if the generated XRechnung document passes official validation for the customer payload."
-
Show validation.
Run:
curl -s -X POST http://localhost:8000/v1/invoices/validate \ -H "X-API-Key: local-dev-key" \ -H "Content-Type: application/json" \ --data @examples/germany_valid_invoice.json
Point out machine-readable validation errors/warnings, totals, country profile, and required format.
-
Show transform and evidence.
Run:
curl -s -X POST http://localhost:8000/v1/invoices/transform \ -H "X-API-Key: local-dev-key" \ -H "Idempotency-Key: demo-de-001" \ -H "Content-Type: application/json" \ --data @examples/germany_valid_invoice.json
Say:
"The response returns an invoice ID, document URL, document SHA-256, and audit event. Idempotency keys prevent accidental duplicate transforms."
-
Show official validation evidence.
Run:
curl -s -X POST http://localhost:8000/v1/invoices/{invoice_id}/official-validate \ -H "X-API-Key: local-dev-key"Say:
"When a validator command is configured, InvoiceBridge stores the validator result, output, exit code, document hash, and audit event. If it is not configured, the API says that explicitly instead of pretending the document is production-ready."
-
Show status and audit trail.
Run:
curl -s -H "X-API-Key: local-dev-key" \ http://localhost:8000/v1/invoices/status/{invoice_id} curl -s -H "X-API-Key: local-dev-key" \ http://localhost:8000/v1/invoices/{invoice_id}/audit-trail
Close with:
"The sellable workflow is not invoice generation. It is compliance evidence around invoices the customer already creates."
-
Show the trust controls.
Say:
"For a pilot, the admin key creates a tenant and returns a tenant API key once. Tenant keys are hashed at rest and can only access their own invoices. If a customer needs cleanup, the archive endpoint redacts the stored payload and XML while preserving evidence hashes."
Run:
curl -s -X POST http://localhost:8000/v1/invoices/{invoice_id}/archive \ -H "X-API-Key: {tenant_api_key}" \ -H "Content-Type: application/json" \ -d '{"reason":"customer retention request"}'
- Do not claim certified Peppol delivery.
- Do not claim government submission for Poland, Romania, Spain, Belgium, or Germany.
- Do not claim legal advice or automatic compliance.
- Do not demo with sensitive production invoice data unless the deployment uses tenant API keys and has agreed retention/privacy terms in place.