PDF v2 -- legacy EJS visual diff

Generated by scripts/render-pdf-visual-diff.ts. Left = legacy EJS pipeline rendered by @accountable/html-pdf (PhantomJS / WebKit), right = new PDF v2 pipeline rendered by Puppeteer (Chromium). Same fixture, same monkey-patched logo bytes. Both PDFs are rasterized to PNG via pdftoppm so the only difference between the two columns is the engine. Every PDF page is shown — pages from the two pipelines are paired row-by-row so pagination drift is visible at a glance. Cases labelled + Project attach a revenueProject fixture (progress installment, 30 %, one prior invoice already billed) to exercise the project-summary block (v2) and the initially-agreed items / remaining-balance path (legacy EJS). Cases labelled (Quote) use an IQuote fixture (type: 'quote', no paymentQrCode, no revenueProject) and exercise the quote rendering path. Cases labelled v2 only are v2-only examples with no legacy equivalent: they use hand-crafted DocumentTemplate fixtures to showcase custom block configurations — block-text / block-divider in a post-table section-content; decorative blocks interspersed inside section-table alongside the standard lifecycle blocks; and standalone blocks placed directly in template.blocks without any section wrapper (a thin divider + scope-of-work text above the table, a medium divider + supplementary paragraph + auto-populated comments and terms below it — each rendered at 100 % document width via block-standalone-entry). Use the sticky topbar to filter by layout, country, or document type (Normal / + Project / Quote / Custom), or jump straight to a case. Expand the JSON sections under each card to inspect the exact inputs that produced the v2 render.

Basic / BE 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Basic / BE legacy page 1
PDF v2 (Puppeteer) · page 1
Basic / BE v2 page 1
Legacy (EJS · PhantomJS) · page 2
Basic / BE legacy page 2
PDF v2 (Puppeteer) · page 2
Basic / BE v2 page 2
Legacy (EJS · PhantomJS) · page 3
Basic / BE legacy page 3
PDF v2 (Puppeteer) · page 3
Basic / BE v2 page 3
Template (resolveTemplate output)
{
  "name": "Basic",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "basic"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {
        "accent_header_background": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "s"
                  }
                }
              ],
              "flex": 1,
              "align": "center",
              "vertical_align": "center"
            }
          ],
          "gap": 0
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {
                    "hide_person_name": true
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-document-title",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "bottom"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "none",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "hide_page_numbers": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d83",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "+++123/4567/89012+++",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nBNAGBEBB\nDupont SRL\nBE68539007547034\nEUR1815.00\n\n\n+++123/4567/89012+++",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "totalVATAmount_21": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Globex S.A.",
    "contactName": "Jane Smith",
    "address": {
      "street": "Rue de la Loi 42",
      "zip": "1000",
      "city": "Brussels",
      "country": "be"
    },
    "VATNumber": "BE0876543210"
  },
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0d94",
  "country": "be",
  "language": 0,
  "firstName": "Pierre",
  "lastName": "Dupont",
  "companyName": "Dupont SRL",
  "accountHolderName": "Dupont SRL",
  "email": "pierre@dupont.be",
  "phoneNumber": "+32 2 123 45 67",
  "address": {
    "street": "Avenue Louise 200",
    "zip": "1050",
    "city": "Brussels",
    "country": "be"
  },
  "VATNumber": "BE0123456789",
  "IBAN": "BE68539007547034",
  "SWIFT": "BNAGBEBB",
  "settings": {
    "invoices": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days."
    },
    "quotes": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "language": "en",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "This quote is valid for 30 days.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Basic / DE 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Basic / DE legacy page 1
PDF v2 (Puppeteer) · page 1
Basic / DE v2 page 1
Legacy (EJS · PhantomJS) · page 2
Basic / DE legacy page 2
PDF v2 (Puppeteer) · page 2
Basic / DE v2 page 2
Legacy (EJS · PhantomJS) · page 3
Basic / DE legacy page 3
PDF v2 (Puppeteer) · page 3
Basic / DE v2 page 3
Template (resolveTemplate output)
{
  "name": "Basic",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "basic"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {
        "accent_header_background": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "s"
                  }
                }
              ],
              "flex": 1,
              "align": "center",
              "vertical_align": "center"
            }
          ],
          "gap": 0
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-document-title",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "bottom"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "none",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days. Late payments incur 9% interest p.a."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "hide_page_numbers": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d84",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "INV-2026-001",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nCOBADEFFXXX\nSchmidt Consulting GmbH\nDE89370400440532013000\nEUR1815.00\n\n\nINV-2026-001",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Müller GmbH",
    "contactName": "Jane Smith",
    "address": {
      "street": "Friedrichstraße 110",
      "zip": "10117",
      "city": "Berlin",
      "country": "de"
    },
    "VATNumber": "DE123456789"
  },
  "totalVATAmount_19": 285000,
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0d92",
  "country": "de",
  "language": 3,
  "firstName": "Anna",
  "lastName": "Schmidt",
  "companyName": "Schmidt Consulting GmbH",
  "accountHolderName": "Schmidt Consulting GmbH",
  "email": "anna@schmidt-consulting.de",
  "phoneNumber": "+49 30 123 4567",
  "address": {
    "street": "Unter den Linden 1",
    "zip": "10117",
    "city": "Berlin",
    "country": "de"
  },
  "VATNumber": "DE987654321",
  "steuernummer": "12/345/67890",
  "IBAN": "DE89370400440532013000",
  "SWIFT": "COBADEFFXXX",
  "settings": {
    "invoices": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days. Late payments incur 9% interest p.a."
    },
    "quotes": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "language": "de",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Dieses Angebot ist 30 Tage gültig.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Circle / BE 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Circle / BE legacy page 1
PDF v2 (Puppeteer) · page 1
Circle / BE v2 page 1
Legacy (EJS · PhantomJS) · page 2
Circle / BE legacy page 2
PDF v2 (Puppeteer) · page 2
Circle / BE v2 page 2
Legacy (EJS · PhantomJS) · page 3
Circle / BE legacy page 3
PDF v2 (Puppeteer) · page 3
Circle / BE v2 page 3
Template (resolveTemplate output)
{
  "name": "Circle",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "circle"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "m"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "center"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {
                    "hide_person_name": true
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "pill",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d83",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "+++123/4567/89012+++",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nBNAGBEBB\nDupont SRL\nBE68539007547034\nEUR1815.00\n\n\n+++123/4567/89012+++",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "totalVATAmount_21": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Globex S.A.",
    "contactName": "Jane Smith",
    "address": {
      "street": "Rue de la Loi 42",
      "zip": "1000",
      "city": "Brussels",
      "country": "be"
    },
    "VATNumber": "BE0876543210"
  },
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0d96",
  "country": "be",
  "language": 0,
  "firstName": "Pierre",
  "lastName": "Dupont",
  "companyName": "Dupont SRL",
  "accountHolderName": "Dupont SRL",
  "email": "pierre@dupont.be",
  "phoneNumber": "+32 2 123 45 67",
  "address": {
    "street": "Avenue Louise 200",
    "zip": "1050",
    "city": "Brussels",
    "country": "be"
  },
  "VATNumber": "BE0123456789",
  "IBAN": "BE68539007547034",
  "SWIFT": "BNAGBEBB",
  "settings": {
    "invoices": {
      "templateType": "circle",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days."
    },
    "quotes": {
      "templateType": "circle",
      "fontFamily": "Assistant",
      "language": "en",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "This quote is valid for 30 days.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Circle / DE 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Circle / DE legacy page 1
PDF v2 (Puppeteer) · page 1
Circle / DE v2 page 1
Legacy (EJS · PhantomJS) · page 2
Circle / DE legacy page 2
PDF v2 (Puppeteer) · page 2
Circle / DE v2 page 2
Legacy (EJS · PhantomJS) · page 3
Circle / DE legacy page 3
PDF v2 (Puppeteer) · page 3
Circle / DE v2 page 3
Template (resolveTemplate output)
{
  "name": "Circle",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "circle"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "m"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "center"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "pill",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days. Late payments incur 9% interest p.a."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d84",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "INV-2026-001",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nCOBADEFFXXX\nSchmidt Consulting GmbH\nDE89370400440532013000\nEUR1815.00\n\n\nINV-2026-001",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Müller GmbH",
    "contactName": "Jane Smith",
    "address": {
      "street": "Friedrichstraße 110",
      "zip": "10117",
      "city": "Berlin",
      "country": "de"
    },
    "VATNumber": "DE123456789"
  },
  "totalVATAmount_19": 285000,
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0d9c",
  "country": "de",
  "language": 3,
  "firstName": "Anna",
  "lastName": "Schmidt",
  "companyName": "Schmidt Consulting GmbH",
  "accountHolderName": "Schmidt Consulting GmbH",
  "email": "anna@schmidt-consulting.de",
  "phoneNumber": "+49 30 123 4567",
  "address": {
    "street": "Unter den Linden 1",
    "zip": "10117",
    "city": "Berlin",
    "country": "de"
  },
  "VATNumber": "DE987654321",
  "steuernummer": "12/345/67890",
  "IBAN": "DE89370400440532013000",
  "SWIFT": "COBADEFFXXX",
  "settings": {
    "invoices": {
      "templateType": "circle",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days. Late payments incur 9% interest p.a."
    },
    "quotes": {
      "templateType": "circle",
      "fontFamily": "Assistant",
      "language": "de",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Dieses Angebot ist 30 Tage gültig.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Rounded / BE 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Rounded / BE legacy page 1
PDF v2 (Puppeteer) · page 1
Rounded / BE v2 page 1
Legacy (EJS · PhantomJS) · page 2
Rounded / BE legacy page 2
PDF v2 (Puppeteer) · page 2
Rounded / BE v2 page 2
Legacy (EJS · PhantomJS) · page 3
Rounded / BE legacy page 3
PDF v2 (Puppeteer) · page 3
Rounded / BE v2 page 3
Template (resolveTemplate output)
{
  "name": "Rounded",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "rounded"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "m"
                  }
                }
              ],
              "flex": 1,
              "align": "center",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {
                    "hide_person_name": true
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "rounded",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d83",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "+++123/4567/89012+++",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nBNAGBEBB\nDupont SRL\nBE68539007547034\nEUR1815.00\n\n\n+++123/4567/89012+++",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "totalVATAmount_21": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Globex S.A.",
    "contactName": "Jane Smith",
    "address": {
      "street": "Rue de la Loi 42",
      "zip": "1000",
      "city": "Brussels",
      "country": "be"
    },
    "VATNumber": "BE0876543210"
  },
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0d98",
  "country": "be",
  "language": 0,
  "firstName": "Pierre",
  "lastName": "Dupont",
  "companyName": "Dupont SRL",
  "accountHolderName": "Dupont SRL",
  "email": "pierre@dupont.be",
  "phoneNumber": "+32 2 123 45 67",
  "address": {
    "street": "Avenue Louise 200",
    "zip": "1050",
    "city": "Brussels",
    "country": "be"
  },
  "VATNumber": "BE0123456789",
  "IBAN": "BE68539007547034",
  "SWIFT": "BNAGBEBB",
  "settings": {
    "invoices": {
      "templateType": "rounded",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days."
    },
    "quotes": {
      "templateType": "rounded",
      "fontFamily": "Assistant",
      "language": "en",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "This quote is valid for 30 days.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Rounded / DE 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Rounded / DE legacy page 1
PDF v2 (Puppeteer) · page 1
Rounded / DE v2 page 1
Legacy (EJS · PhantomJS) · page 2
Rounded / DE legacy page 2
PDF v2 (Puppeteer) · page 2
Rounded / DE v2 page 2
Legacy (EJS · PhantomJS) · page 3
Rounded / DE legacy page 3
PDF v2 (Puppeteer) · page 3
Rounded / DE v2 page 3
Template (resolveTemplate output)
{
  "name": "Rounded",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "rounded"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "m"
                  }
                }
              ],
              "flex": 1,
              "align": "center",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "rounded",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days. Late payments incur 9% interest p.a."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d84",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "INV-2026-001",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nCOBADEFFXXX\nSchmidt Consulting GmbH\nDE89370400440532013000\nEUR1815.00\n\n\nINV-2026-001",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Müller GmbH",
    "contactName": "Jane Smith",
    "address": {
      "street": "Friedrichstraße 110",
      "zip": "10117",
      "city": "Berlin",
      "country": "de"
    },
    "VATNumber": "DE123456789"
  },
  "totalVATAmount_19": 285000,
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0d9a",
  "country": "de",
  "language": 3,
  "firstName": "Anna",
  "lastName": "Schmidt",
  "companyName": "Schmidt Consulting GmbH",
  "accountHolderName": "Schmidt Consulting GmbH",
  "email": "anna@schmidt-consulting.de",
  "phoneNumber": "+49 30 123 4567",
  "address": {
    "street": "Unter den Linden 1",
    "zip": "10117",
    "city": "Berlin",
    "country": "de"
  },
  "VATNumber": "DE987654321",
  "steuernummer": "12/345/67890",
  "IBAN": "DE89370400440532013000",
  "SWIFT": "COBADEFFXXX",
  "settings": {
    "invoices": {
      "templateType": "rounded",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days. Late payments incur 9% interest p.a."
    },
    "quotes": {
      "templateType": "rounded",
      "fontFamily": "Assistant",
      "language": "de",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Dieses Angebot ist 30 Tage gültig.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Straight / BE 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Straight / BE legacy page 1
PDF v2 (Puppeteer) · page 1
Straight / BE v2 page 1
Legacy (EJS · PhantomJS) · page 2
Straight / BE legacy page 2
PDF v2 (Puppeteer) · page 2
Straight / BE v2 page 2
Legacy (EJS · PhantomJS) · page 3
Straight / BE legacy page 3
PDF v2 (Puppeteer) · page 3
Straight / BE v2 page 3
Template (resolveTemplate output)
{
  "name": "Straight",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "straight"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "l"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {
                    "hide_person_name": true
                  }
                },
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "accent_border_top": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d83",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "+++123/4567/89012+++",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nBNAGBEBB\nDupont SRL\nBE68539007547034\nEUR1815.00\n\n\n+++123/4567/89012+++",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "totalVATAmount_21": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Globex S.A.",
    "contactName": "Jane Smith",
    "address": {
      "street": "Rue de la Loi 42",
      "zip": "1000",
      "city": "Brussels",
      "country": "be"
    },
    "VATNumber": "BE0876543210"
  },
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0d9e",
  "country": "be",
  "language": 0,
  "firstName": "Pierre",
  "lastName": "Dupont",
  "companyName": "Dupont SRL",
  "accountHolderName": "Dupont SRL",
  "email": "pierre@dupont.be",
  "phoneNumber": "+32 2 123 45 67",
  "address": {
    "street": "Avenue Louise 200",
    "zip": "1050",
    "city": "Brussels",
    "country": "be"
  },
  "VATNumber": "BE0123456789",
  "IBAN": "BE68539007547034",
  "SWIFT": "BNAGBEBB",
  "settings": {
    "invoices": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days."
    },
    "quotes": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "language": "en",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "This quote is valid for 30 days.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Straight / DE 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Straight / DE legacy page 1
PDF v2 (Puppeteer) · page 1
Straight / DE v2 page 1
Legacy (EJS · PhantomJS) · page 2
Straight / DE legacy page 2
PDF v2 (Puppeteer) · page 2
Straight / DE v2 page 2
Legacy (EJS · PhantomJS) · page 3
Straight / DE legacy page 3
PDF v2 (Puppeteer) · page 3
Straight / DE v2 page 3
Template (resolveTemplate output)
{
  "name": "Straight",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "straight"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "l"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {}
                },
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days. Late payments incur 9% interest p.a."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "accent_border_top": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d84",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "INV-2026-001",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nCOBADEFFXXX\nSchmidt Consulting GmbH\nDE89370400440532013000\nEUR1815.00\n\n\nINV-2026-001",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Müller GmbH",
    "contactName": "Jane Smith",
    "address": {
      "street": "Friedrichstraße 110",
      "zip": "10117",
      "city": "Berlin",
      "country": "de"
    },
    "VATNumber": "DE123456789"
  },
  "totalVATAmount_19": 285000,
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0da0",
  "country": "de",
  "language": 3,
  "firstName": "Anna",
  "lastName": "Schmidt",
  "companyName": "Schmidt Consulting GmbH",
  "accountHolderName": "Schmidt Consulting GmbH",
  "email": "anna@schmidt-consulting.de",
  "phoneNumber": "+49 30 123 4567",
  "address": {
    "street": "Unter den Linden 1",
    "zip": "10117",
    "city": "Berlin",
    "country": "de"
  },
  "VATNumber": "DE987654321",
  "steuernummer": "12/345/67890",
  "IBAN": "DE89370400440532013000",
  "SWIFT": "COBADEFFXXX",
  "settings": {
    "invoices": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days. Late payments incur 9% interest p.a."
    },
    "quotes": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "language": "de",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Dieses Angebot ist 30 Tage gültig.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Straight / DE (DIN 5008) 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Straight / DE (DIN 5008) legacy page 1
PDF v2 (Puppeteer) · page 1
Straight / DE (DIN 5008) v2 page 1
Legacy (EJS · PhantomJS) · page 2
Straight / DE (DIN 5008) legacy page 2
PDF v2 (Puppeteer) · page 2
Straight / DE (DIN 5008) v2 page 2
Legacy (EJS · PhantomJS) · page 3
Straight / DE (DIN 5008) legacy page 3
PDF v2 (Puppeteer) · page 3
Straight / DE (DIN 5008) v2 page 3
Template (resolveTemplate output)
{
  "name": "Straight",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "straight"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "l"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {}
                },
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days. Late payments incur 9% interest p.a."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "accent_border_top": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d84",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "INV-2026-001",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nCOBADEFFXXX\nSchmidt Consulting GmbH\nDE89370400440532013000\nEUR1815.00\n\n\nINV-2026-001",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Müller GmbH",
    "contactName": "Jane Smith",
    "address": {
      "street": "Friedrichstraße 110",
      "zip": "10117",
      "city": "Berlin",
      "country": "de"
    },
    "VATNumber": "DE123456789"
  },
  "totalVATAmount_19": 285000,
  "din5008": true
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0da4",
  "country": "de",
  "language": 3,
  "firstName": "Anna",
  "lastName": "Schmidt",
  "companyName": "Schmidt Consulting GmbH",
  "accountHolderName": "Schmidt Consulting GmbH",
  "email": "anna@schmidt-consulting.de",
  "phoneNumber": "+49 30 123 4567",
  "address": {
    "street": "Unter den Linden 1",
    "zip": "10117",
    "city": "Berlin",
    "country": "de"
  },
  "VATNumber": "DE987654321",
  "steuernummer": "12/345/67890",
  "IBAN": "DE89370400440532013000",
  "SWIFT": "COBADEFFXXX",
  "settings": {
    "invoices": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days. Late payments incur 9% interest p.a."
    },
    "quotes": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "language": "de",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Dieses Angebot ist 30 Tage gültig.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Basic / BE + Project 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Basic / BE + Project legacy page 1
PDF v2 (Puppeteer) · page 1
Basic / BE + Project v2 page 1
Legacy (EJS · PhantomJS) · page 2
Basic / BE + Project legacy page 2
PDF v2 (Puppeteer) · page 2
Basic / BE + Project v2 page 2
Legacy (EJS · PhantomJS) · page 3
Basic / BE + Project legacy page 3
PDF v2 (Puppeteer) · page 3
Basic / BE + Project v2 page 3
Template (resolveTemplate output)
{
  "name": "Basic",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "basic"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {
        "accent_header_background": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "s"
                  }
                }
              ],
              "flex": 1,
              "align": "center",
              "vertical_align": "center"
            }
          ],
          "gap": 0
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {
                    "hide_person_name": true
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-document-title",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "bottom"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "none",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "hide_page_numbers": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d83",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "+++123/4567/89012+++",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nBNAGBEBB\nDupont SRL\nBE68539007547034\nEUR1815.00\n\n\n+++123/4567/89012+++",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "totalVATAmount_21": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Globex S.A.",
    "contactName": "Jane Smith",
    "address": {
      "street": "Rue de la Loi 42",
      "zip": "1000",
      "city": "Brussels",
      "country": "be"
    },
    "VATNumber": "BE0876543210"
  },
  "din5008": false,
  "revenueProject": {
    "snapshot": {
      "projectId": "6a463d866f49077d99cc0d8a",
      "revenues": [
        {
          "revenueId": "6a463d866f49077d99cc0d8b",
          "revenueNumber": "INV-2025-003",
          "invoiceDateNumber": 20251201,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1815000,
          "totalVATAmount": 315000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1815000,
          "baseCurrencyTotalVATAmount": 315000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88"
          ],
          "created": "2025-12-01T00:00:00.000Z"
        },
        {
          "revenueId": "6a463d866f49077d99cc0d83",
          "revenueNumber": "INV-2026-001",
          "invoiceDateNumber": 20260115,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1815000,
          "totalVATAmount": 315000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1815000,
          "baseCurrencyTotalVATAmount": 315000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88",
            "6a463d866f49077d99cc0d89"
          ],
          "created": "2026-01-15T00:00:00.000Z"
        }
      ],
      "currency": "EUR",
      "baseCurrency": "EUR",
      "totalAmountExclVAT": 5000000,
      "totalAmountInclVAT": 6050000,
      "totalVATAmount": 1050000,
      "baseCurrencyTotalAmountExclVAT": 5000000,
      "baseCurrencyTotalAmountInclVAT": 6050000,
      "baseCurrencyTotalVATAmount": 1050000,
      "items": [
        {
          "_id": "6a463d866f49077d99cc0d87",
          "name": "Senior consulting hours",
          "description": "Architecture review and implementation guidance for Q1 2026.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 210,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        },
        {
          "_id": "6a463d866f49077d99cc0d88",
          "name": "UX research workshop",
          "description": "Customer interviews, journey mapping, and persona definition.",
          "unitAmountExclVAT": 100000,
          "quantity": 3000,
          "unit": "items",
          "VATRate": 210,
          "totalVATAmount": 63000,
          "totalAmountExclVAT": 300000,
          "totalAmountInclVAT": 363000,
          "unitAmountInclVAT": 121000,
          "discountPercentage": 100
        },
        {
          "_id": "6a463d866f49077d99cc0d89",
          "name": "Frontend pair-programming",
          "description": "Coaching sessions on the React 19 server components migration.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 210,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        }
      ],
      "VATSubtotals": [
        {
          "VATRate": "21",
          "totalAmountExclVAT": 5000000,
          "totalAmountInclVAT": 6050000,
          "totalVATAmount": 1050000,
          "baseCurrencyTotalAmountExclVAT": 5000000,
          "baseCurrencyTotalAmountInclVAT": 6050000,
          "baseCurrencyTotalVATAmount": 1050000
        }
      ]
    },
    "installmentValue": 1815000,
    "installmentPercentage": 30,
    "installmentAmountShownAs": "percentage",
    "installmentInvoiceType": "progress"
  }
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0da2",
  "country": "be",
  "language": 0,
  "firstName": "Pierre",
  "lastName": "Dupont",
  "companyName": "Dupont SRL",
  "accountHolderName": "Dupont SRL",
  "email": "pierre@dupont.be",
  "phoneNumber": "+32 2 123 45 67",
  "address": {
    "street": "Avenue Louise 200",
    "zip": "1050",
    "city": "Brussels",
    "country": "be"
  },
  "VATNumber": "BE0123456789",
  "IBAN": "BE68539007547034",
  "SWIFT": "BNAGBEBB",
  "settings": {
    "invoices": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days."
    },
    "quotes": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "language": "en",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "This quote is valid for 30 days.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Basic / DE + Project 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Basic / DE + Project legacy page 1
PDF v2 (Puppeteer) · page 1
Basic / DE + Project v2 page 1
Legacy (EJS · PhantomJS) · page 2
Basic / DE + Project legacy page 2
PDF v2 (Puppeteer) · page 2
Basic / DE + Project v2 page 2
Legacy (EJS · PhantomJS) · page 3
Basic / DE + Project legacy page 3
PDF v2 (Puppeteer) · page 3
Basic / DE + Project v2 page 3
Template (resolveTemplate output)
{
  "name": "Basic",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "basic"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {
        "accent_header_background": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "s"
                  }
                }
              ],
              "flex": 1,
              "align": "center",
              "vertical_align": "center"
            }
          ],
          "gap": 0
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-document-title",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "bottom"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "none",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days. Late payments incur 9% interest p.a."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "hide_page_numbers": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d84",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "INV-2026-001",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nCOBADEFFXXX\nSchmidt Consulting GmbH\nDE89370400440532013000\nEUR1815.00\n\n\nINV-2026-001",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Müller GmbH",
    "contactName": "Jane Smith",
    "address": {
      "street": "Friedrichstraße 110",
      "zip": "10117",
      "city": "Berlin",
      "country": "de"
    },
    "VATNumber": "DE123456789"
  },
  "totalVATAmount_19": 285000,
  "din5008": false,
  "revenueProject": {
    "snapshot": {
      "projectId": "6a463d866f49077d99cc0d8a",
      "revenues": [
        {
          "revenueId": "6a463d866f49077d99cc0d8b",
          "revenueNumber": "INV-2025-003",
          "invoiceDateNumber": 20251201,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1785000,
          "totalVATAmount": 285000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1785000,
          "baseCurrencyTotalVATAmount": 285000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88"
          ],
          "created": "2025-12-01T00:00:00.000Z"
        },
        {
          "revenueId": "6a463d866f49077d99cc0d84",
          "revenueNumber": "INV-2026-001",
          "invoiceDateNumber": 20260115,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1785000,
          "totalVATAmount": 285000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1785000,
          "baseCurrencyTotalVATAmount": 285000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88",
            "6a463d866f49077d99cc0d89"
          ],
          "created": "2026-01-15T00:00:00.000Z"
        }
      ],
      "currency": "EUR",
      "baseCurrency": "EUR",
      "totalAmountExclVAT": 5000000,
      "totalAmountInclVAT": 5950000,
      "totalVATAmount": 950000,
      "baseCurrencyTotalAmountExclVAT": 5000000,
      "baseCurrencyTotalAmountInclVAT": 5950000,
      "baseCurrencyTotalVATAmount": 950000,
      "items": [
        {
          "_id": "6a463d866f49077d99cc0d87",
          "name": "Senior consulting hours",
          "description": "Architecture review and implementation guidance for Q1 2026.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 190,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        },
        {
          "_id": "6a463d866f49077d99cc0d88",
          "name": "UX research workshop",
          "description": "Customer interviews, journey mapping, and persona definition.",
          "unitAmountExclVAT": 100000,
          "quantity": 3000,
          "unit": "items",
          "VATRate": 190,
          "totalVATAmount": 63000,
          "totalAmountExclVAT": 300000,
          "totalAmountInclVAT": 363000,
          "unitAmountInclVAT": 121000,
          "discountPercentage": 100
        },
        {
          "_id": "6a463d866f49077d99cc0d89",
          "name": "Frontend pair-programming",
          "description": "Coaching sessions on the React 19 server components migration.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 190,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        }
      ],
      "VATSubtotals": [
        {
          "VATRate": "19",
          "totalAmountExclVAT": 5000000,
          "totalAmountInclVAT": 5950000,
          "totalVATAmount": 950000,
          "baseCurrencyTotalAmountExclVAT": 5000000,
          "baseCurrencyTotalAmountInclVAT": 5950000,
          "baseCurrencyTotalVATAmount": 950000
        }
      ]
    },
    "installmentValue": 1785000,
    "installmentPercentage": 30,
    "installmentAmountShownAs": "percentage",
    "installmentInvoiceType": "progress"
  }
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0da8",
  "country": "de",
  "language": 3,
  "firstName": "Anna",
  "lastName": "Schmidt",
  "companyName": "Schmidt Consulting GmbH",
  "accountHolderName": "Schmidt Consulting GmbH",
  "email": "anna@schmidt-consulting.de",
  "phoneNumber": "+49 30 123 4567",
  "address": {
    "street": "Unter den Linden 1",
    "zip": "10117",
    "city": "Berlin",
    "country": "de"
  },
  "VATNumber": "DE987654321",
  "steuernummer": "12/345/67890",
  "IBAN": "DE89370400440532013000",
  "SWIFT": "COBADEFFXXX",
  "settings": {
    "invoices": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days. Late payments incur 9% interest p.a."
    },
    "quotes": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "language": "de",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Dieses Angebot ist 30 Tage gültig.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Circle / BE + Project 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Circle / BE + Project legacy page 1
PDF v2 (Puppeteer) · page 1
Circle / BE + Project v2 page 1
Legacy (EJS · PhantomJS) · page 2
Circle / BE + Project legacy page 2
PDF v2 (Puppeteer) · page 2
Circle / BE + Project v2 page 2
Legacy (EJS · PhantomJS) · page 3
Circle / BE + Project legacy page 3
PDF v2 (Puppeteer) · page 3
Circle / BE + Project v2 page 3
Template (resolveTemplate output)
{
  "name": "Circle",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "circle"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "m"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "center"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {
                    "hide_person_name": true
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "pill",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d83",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "+++123/4567/89012+++",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nBNAGBEBB\nDupont SRL\nBE68539007547034\nEUR1815.00\n\n\n+++123/4567/89012+++",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "totalVATAmount_21": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Globex S.A.",
    "contactName": "Jane Smith",
    "address": {
      "street": "Rue de la Loi 42",
      "zip": "1000",
      "city": "Brussels",
      "country": "be"
    },
    "VATNumber": "BE0876543210"
  },
  "din5008": false,
  "revenueProject": {
    "snapshot": {
      "projectId": "6a463d866f49077d99cc0d8a",
      "revenues": [
        {
          "revenueId": "6a463d866f49077d99cc0d8b",
          "revenueNumber": "INV-2025-003",
          "invoiceDateNumber": 20251201,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1815000,
          "totalVATAmount": 315000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1815000,
          "baseCurrencyTotalVATAmount": 315000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88"
          ],
          "created": "2025-12-01T00:00:00.000Z"
        },
        {
          "revenueId": "6a463d866f49077d99cc0d83",
          "revenueNumber": "INV-2026-001",
          "invoiceDateNumber": 20260115,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1815000,
          "totalVATAmount": 315000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1815000,
          "baseCurrencyTotalVATAmount": 315000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88",
            "6a463d866f49077d99cc0d89"
          ],
          "created": "2026-01-15T00:00:00.000Z"
        }
      ],
      "currency": "EUR",
      "baseCurrency": "EUR",
      "totalAmountExclVAT": 5000000,
      "totalAmountInclVAT": 6050000,
      "totalVATAmount": 1050000,
      "baseCurrencyTotalAmountExclVAT": 5000000,
      "baseCurrencyTotalAmountInclVAT": 6050000,
      "baseCurrencyTotalVATAmount": 1050000,
      "items": [
        {
          "_id": "6a463d866f49077d99cc0d87",
          "name": "Senior consulting hours",
          "description": "Architecture review and implementation guidance for Q1 2026.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 210,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        },
        {
          "_id": "6a463d866f49077d99cc0d88",
          "name": "UX research workshop",
          "description": "Customer interviews, journey mapping, and persona definition.",
          "unitAmountExclVAT": 100000,
          "quantity": 3000,
          "unit": "items",
          "VATRate": 210,
          "totalVATAmount": 63000,
          "totalAmountExclVAT": 300000,
          "totalAmountInclVAT": 363000,
          "unitAmountInclVAT": 121000,
          "discountPercentage": 100
        },
        {
          "_id": "6a463d866f49077d99cc0d89",
          "name": "Frontend pair-programming",
          "description": "Coaching sessions on the React 19 server components migration.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 210,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        }
      ],
      "VATSubtotals": [
        {
          "VATRate": "21",
          "totalAmountExclVAT": 5000000,
          "totalAmountInclVAT": 6050000,
          "totalVATAmount": 1050000,
          "baseCurrencyTotalAmountExclVAT": 5000000,
          "baseCurrencyTotalAmountInclVAT": 6050000,
          "baseCurrencyTotalVATAmount": 1050000
        }
      ]
    },
    "installmentValue": 1815000,
    "installmentPercentage": 30,
    "installmentAmountShownAs": "percentage",
    "installmentInvoiceType": "progress"
  }
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0da6",
  "country": "be",
  "language": 0,
  "firstName": "Pierre",
  "lastName": "Dupont",
  "companyName": "Dupont SRL",
  "accountHolderName": "Dupont SRL",
  "email": "pierre@dupont.be",
  "phoneNumber": "+32 2 123 45 67",
  "address": {
    "street": "Avenue Louise 200",
    "zip": "1050",
    "city": "Brussels",
    "country": "be"
  },
  "VATNumber": "BE0123456789",
  "IBAN": "BE68539007547034",
  "SWIFT": "BNAGBEBB",
  "settings": {
    "invoices": {
      "templateType": "circle",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days."
    },
    "quotes": {
      "templateType": "circle",
      "fontFamily": "Assistant",
      "language": "en",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "This quote is valid for 30 days.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Circle / DE + Project 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Circle / DE + Project legacy page 1
PDF v2 (Puppeteer) · page 1
Circle / DE + Project v2 page 1
Legacy (EJS · PhantomJS) · page 2
Circle / DE + Project legacy page 2
PDF v2 (Puppeteer) · page 2
Circle / DE + Project v2 page 2
Legacy (EJS · PhantomJS) · page 3
Circle / DE + Project legacy page 3
PDF v2 (Puppeteer) · page 3
Circle / DE + Project v2 page 3
Template (resolveTemplate output)
{
  "name": "Circle",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "circle"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "m"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "center"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "pill",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days. Late payments incur 9% interest p.a."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d84",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "INV-2026-001",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nCOBADEFFXXX\nSchmidt Consulting GmbH\nDE89370400440532013000\nEUR1815.00\n\n\nINV-2026-001",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Müller GmbH",
    "contactName": "Jane Smith",
    "address": {
      "street": "Friedrichstraße 110",
      "zip": "10117",
      "city": "Berlin",
      "country": "de"
    },
    "VATNumber": "DE123456789"
  },
  "totalVATAmount_19": 285000,
  "din5008": false,
  "revenueProject": {
    "snapshot": {
      "projectId": "6a463d866f49077d99cc0d8a",
      "revenues": [
        {
          "revenueId": "6a463d866f49077d99cc0d8b",
          "revenueNumber": "INV-2025-003",
          "invoiceDateNumber": 20251201,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1785000,
          "totalVATAmount": 285000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1785000,
          "baseCurrencyTotalVATAmount": 285000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88"
          ],
          "created": "2025-12-01T00:00:00.000Z"
        },
        {
          "revenueId": "6a463d866f49077d99cc0d84",
          "revenueNumber": "INV-2026-001",
          "invoiceDateNumber": 20260115,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1785000,
          "totalVATAmount": 285000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1785000,
          "baseCurrencyTotalVATAmount": 285000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88",
            "6a463d866f49077d99cc0d89"
          ],
          "created": "2026-01-15T00:00:00.000Z"
        }
      ],
      "currency": "EUR",
      "baseCurrency": "EUR",
      "totalAmountExclVAT": 5000000,
      "totalAmountInclVAT": 5950000,
      "totalVATAmount": 950000,
      "baseCurrencyTotalAmountExclVAT": 5000000,
      "baseCurrencyTotalAmountInclVAT": 5950000,
      "baseCurrencyTotalVATAmount": 950000,
      "items": [
        {
          "_id": "6a463d866f49077d99cc0d87",
          "name": "Senior consulting hours",
          "description": "Architecture review and implementation guidance for Q1 2026.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 190,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        },
        {
          "_id": "6a463d866f49077d99cc0d88",
          "name": "UX research workshop",
          "description": "Customer interviews, journey mapping, and persona definition.",
          "unitAmountExclVAT": 100000,
          "quantity": 3000,
          "unit": "items",
          "VATRate": 190,
          "totalVATAmount": 63000,
          "totalAmountExclVAT": 300000,
          "totalAmountInclVAT": 363000,
          "unitAmountInclVAT": 121000,
          "discountPercentage": 100
        },
        {
          "_id": "6a463d866f49077d99cc0d89",
          "name": "Frontend pair-programming",
          "description": "Coaching sessions on the React 19 server components migration.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 190,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        }
      ],
      "VATSubtotals": [
        {
          "VATRate": "19",
          "totalAmountExclVAT": 5000000,
          "totalAmountInclVAT": 5950000,
          "totalVATAmount": 950000,
          "baseCurrencyTotalAmountExclVAT": 5000000,
          "baseCurrencyTotalAmountInclVAT": 5950000,
          "baseCurrencyTotalVATAmount": 950000
        }
      ]
    },
    "installmentValue": 1785000,
    "installmentPercentage": 30,
    "installmentAmountShownAs": "percentage",
    "installmentInvoiceType": "progress"
  }
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0db8",
  "country": "de",
  "language": 3,
  "firstName": "Anna",
  "lastName": "Schmidt",
  "companyName": "Schmidt Consulting GmbH",
  "accountHolderName": "Schmidt Consulting GmbH",
  "email": "anna@schmidt-consulting.de",
  "phoneNumber": "+49 30 123 4567",
  "address": {
    "street": "Unter den Linden 1",
    "zip": "10117",
    "city": "Berlin",
    "country": "de"
  },
  "VATNumber": "DE987654321",
  "steuernummer": "12/345/67890",
  "IBAN": "DE89370400440532013000",
  "SWIFT": "COBADEFFXXX",
  "settings": {
    "invoices": {
      "templateType": "circle",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days. Late payments incur 9% interest p.a."
    },
    "quotes": {
      "templateType": "circle",
      "fontFamily": "Assistant",
      "language": "de",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Dieses Angebot ist 30 Tage gültig.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Rounded / BE + Project 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Rounded / BE + Project legacy page 1
PDF v2 (Puppeteer) · page 1
Rounded / BE + Project v2 page 1
Legacy (EJS · PhantomJS) · page 2
Rounded / BE + Project legacy page 2
PDF v2 (Puppeteer) · page 2
Rounded / BE + Project v2 page 2
Legacy (EJS · PhantomJS) · page 3
Rounded / BE + Project legacy page 3
PDF v2 (Puppeteer) · page 3
Rounded / BE + Project v2 page 3
Template (resolveTemplate output)
{
  "name": "Rounded",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "rounded"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "m"
                  }
                }
              ],
              "flex": 1,
              "align": "center",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {
                    "hide_person_name": true
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "rounded",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d83",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "+++123/4567/89012+++",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nBNAGBEBB\nDupont SRL\nBE68539007547034\nEUR1815.00\n\n\n+++123/4567/89012+++",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "totalVATAmount_21": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Globex S.A.",
    "contactName": "Jane Smith",
    "address": {
      "street": "Rue de la Loi 42",
      "zip": "1000",
      "city": "Brussels",
      "country": "be"
    },
    "VATNumber": "BE0876543210"
  },
  "din5008": false,
  "revenueProject": {
    "snapshot": {
      "projectId": "6a463d866f49077d99cc0d8a",
      "revenues": [
        {
          "revenueId": "6a463d866f49077d99cc0d8b",
          "revenueNumber": "INV-2025-003",
          "invoiceDateNumber": 20251201,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1815000,
          "totalVATAmount": 315000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1815000,
          "baseCurrencyTotalVATAmount": 315000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88"
          ],
          "created": "2025-12-01T00:00:00.000Z"
        },
        {
          "revenueId": "6a463d866f49077d99cc0d83",
          "revenueNumber": "INV-2026-001",
          "invoiceDateNumber": 20260115,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1815000,
          "totalVATAmount": 315000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1815000,
          "baseCurrencyTotalVATAmount": 315000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88",
            "6a463d866f49077d99cc0d89"
          ],
          "created": "2026-01-15T00:00:00.000Z"
        }
      ],
      "currency": "EUR",
      "baseCurrency": "EUR",
      "totalAmountExclVAT": 5000000,
      "totalAmountInclVAT": 6050000,
      "totalVATAmount": 1050000,
      "baseCurrencyTotalAmountExclVAT": 5000000,
      "baseCurrencyTotalAmountInclVAT": 6050000,
      "baseCurrencyTotalVATAmount": 1050000,
      "items": [
        {
          "_id": "6a463d866f49077d99cc0d87",
          "name": "Senior consulting hours",
          "description": "Architecture review and implementation guidance for Q1 2026.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 210,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        },
        {
          "_id": "6a463d866f49077d99cc0d88",
          "name": "UX research workshop",
          "description": "Customer interviews, journey mapping, and persona definition.",
          "unitAmountExclVAT": 100000,
          "quantity": 3000,
          "unit": "items",
          "VATRate": 210,
          "totalVATAmount": 63000,
          "totalAmountExclVAT": 300000,
          "totalAmountInclVAT": 363000,
          "unitAmountInclVAT": 121000,
          "discountPercentage": 100
        },
        {
          "_id": "6a463d866f49077d99cc0d89",
          "name": "Frontend pair-programming",
          "description": "Coaching sessions on the React 19 server components migration.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 210,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        }
      ],
      "VATSubtotals": [
        {
          "VATRate": "21",
          "totalAmountExclVAT": 5000000,
          "totalAmountInclVAT": 6050000,
          "totalVATAmount": 1050000,
          "baseCurrencyTotalAmountExclVAT": 5000000,
          "baseCurrencyTotalAmountInclVAT": 6050000,
          "baseCurrencyTotalVATAmount": 1050000
        }
      ]
    },
    "installmentValue": 1815000,
    "installmentPercentage": 30,
    "installmentAmountShownAs": "percentage",
    "installmentInvoiceType": "progress"
  }
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0daa",
  "country": "be",
  "language": 0,
  "firstName": "Pierre",
  "lastName": "Dupont",
  "companyName": "Dupont SRL",
  "accountHolderName": "Dupont SRL",
  "email": "pierre@dupont.be",
  "phoneNumber": "+32 2 123 45 67",
  "address": {
    "street": "Avenue Louise 200",
    "zip": "1050",
    "city": "Brussels",
    "country": "be"
  },
  "VATNumber": "BE0123456789",
  "IBAN": "BE68539007547034",
  "SWIFT": "BNAGBEBB",
  "settings": {
    "invoices": {
      "templateType": "rounded",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days."
    },
    "quotes": {
      "templateType": "rounded",
      "fontFamily": "Assistant",
      "language": "en",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "This quote is valid for 30 days.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Rounded / DE + Project 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Rounded / DE + Project legacy page 1
PDF v2 (Puppeteer) · page 1
Rounded / DE + Project v2 page 1
Legacy (EJS · PhantomJS) · page 2
Rounded / DE + Project legacy page 2
PDF v2 (Puppeteer) · page 2
Rounded / DE + Project v2 page 2
Legacy (EJS · PhantomJS) · page 3
Rounded / DE + Project legacy page 3
PDF v2 (Puppeteer) · page 3
Rounded / DE + Project v2 page 3
Template (resolveTemplate output)
{
  "name": "Rounded",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "rounded"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "m"
                  }
                }
              ],
              "flex": 1,
              "align": "center",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "rounded",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days. Late payments incur 9% interest p.a."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d84",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "INV-2026-001",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nCOBADEFFXXX\nSchmidt Consulting GmbH\nDE89370400440532013000\nEUR1815.00\n\n\nINV-2026-001",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Müller GmbH",
    "contactName": "Jane Smith",
    "address": {
      "street": "Friedrichstraße 110",
      "zip": "10117",
      "city": "Berlin",
      "country": "de"
    },
    "VATNumber": "DE123456789"
  },
  "totalVATAmount_19": 285000,
  "din5008": false,
  "revenueProject": {
    "snapshot": {
      "projectId": "6a463d866f49077d99cc0d8a",
      "revenues": [
        {
          "revenueId": "6a463d866f49077d99cc0d8b",
          "revenueNumber": "INV-2025-003",
          "invoiceDateNumber": 20251201,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1785000,
          "totalVATAmount": 285000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1785000,
          "baseCurrencyTotalVATAmount": 285000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88"
          ],
          "created": "2025-12-01T00:00:00.000Z"
        },
        {
          "revenueId": "6a463d866f49077d99cc0d84",
          "revenueNumber": "INV-2026-001",
          "invoiceDateNumber": 20260115,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1785000,
          "totalVATAmount": 285000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1785000,
          "baseCurrencyTotalVATAmount": 285000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88",
            "6a463d866f49077d99cc0d89"
          ],
          "created": "2026-01-15T00:00:00.000Z"
        }
      ],
      "currency": "EUR",
      "baseCurrency": "EUR",
      "totalAmountExclVAT": 5000000,
      "totalAmountInclVAT": 5950000,
      "totalVATAmount": 950000,
      "baseCurrencyTotalAmountExclVAT": 5000000,
      "baseCurrencyTotalAmountInclVAT": 5950000,
      "baseCurrencyTotalVATAmount": 950000,
      "items": [
        {
          "_id": "6a463d866f49077d99cc0d87",
          "name": "Senior consulting hours",
          "description": "Architecture review and implementation guidance for Q1 2026.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 190,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        },
        {
          "_id": "6a463d866f49077d99cc0d88",
          "name": "UX research workshop",
          "description": "Customer interviews, journey mapping, and persona definition.",
          "unitAmountExclVAT": 100000,
          "quantity": 3000,
          "unit": "items",
          "VATRate": 190,
          "totalVATAmount": 63000,
          "totalAmountExclVAT": 300000,
          "totalAmountInclVAT": 363000,
          "unitAmountInclVAT": 121000,
          "discountPercentage": 100
        },
        {
          "_id": "6a463d866f49077d99cc0d89",
          "name": "Frontend pair-programming",
          "description": "Coaching sessions on the React 19 server components migration.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 190,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        }
      ],
      "VATSubtotals": [
        {
          "VATRate": "19",
          "totalAmountExclVAT": 5000000,
          "totalAmountInclVAT": 5950000,
          "totalVATAmount": 950000,
          "baseCurrencyTotalAmountExclVAT": 5000000,
          "baseCurrencyTotalAmountInclVAT": 5950000,
          "baseCurrencyTotalVATAmount": 950000
        }
      ]
    },
    "installmentValue": 1785000,
    "installmentPercentage": 30,
    "installmentAmountShownAs": "percentage",
    "installmentInvoiceType": "progress"
  }
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0dac",
  "country": "de",
  "language": 3,
  "firstName": "Anna",
  "lastName": "Schmidt",
  "companyName": "Schmidt Consulting GmbH",
  "accountHolderName": "Schmidt Consulting GmbH",
  "email": "anna@schmidt-consulting.de",
  "phoneNumber": "+49 30 123 4567",
  "address": {
    "street": "Unter den Linden 1",
    "zip": "10117",
    "city": "Berlin",
    "country": "de"
  },
  "VATNumber": "DE987654321",
  "steuernummer": "12/345/67890",
  "IBAN": "DE89370400440532013000",
  "SWIFT": "COBADEFFXXX",
  "settings": {
    "invoices": {
      "templateType": "rounded",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days. Late payments incur 9% interest p.a."
    },
    "quotes": {
      "templateType": "rounded",
      "fontFamily": "Assistant",
      "language": "de",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Dieses Angebot ist 30 Tage gültig.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Straight / BE + Project 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Straight / BE + Project legacy page 1
PDF v2 (Puppeteer) · page 1
Straight / BE + Project v2 page 1
Legacy (EJS · PhantomJS) · page 2
Straight / BE + Project legacy page 2
PDF v2 (Puppeteer) · page 2
Straight / BE + Project v2 page 2
Legacy (EJS · PhantomJS) · page 3
Straight / BE + Project legacy page 3
PDF v2 (Puppeteer) · page 3
Straight / BE + Project v2 page 3
Template (resolveTemplate output)
{
  "name": "Straight",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "straight"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "l"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {
                    "hide_person_name": true
                  }
                },
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "accent_border_top": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d83",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "+++123/4567/89012+++",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nBNAGBEBB\nDupont SRL\nBE68539007547034\nEUR1815.00\n\n\n+++123/4567/89012+++",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "totalVATAmount_21": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Globex S.A.",
    "contactName": "Jane Smith",
    "address": {
      "street": "Rue de la Loi 42",
      "zip": "1000",
      "city": "Brussels",
      "country": "be"
    },
    "VATNumber": "BE0876543210"
  },
  "din5008": false,
  "revenueProject": {
    "snapshot": {
      "projectId": "6a463d866f49077d99cc0d8a",
      "revenues": [
        {
          "revenueId": "6a463d866f49077d99cc0d8b",
          "revenueNumber": "INV-2025-003",
          "invoiceDateNumber": 20251201,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1815000,
          "totalVATAmount": 315000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1815000,
          "baseCurrencyTotalVATAmount": 315000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88"
          ],
          "created": "2025-12-01T00:00:00.000Z"
        },
        {
          "revenueId": "6a463d866f49077d99cc0d83",
          "revenueNumber": "INV-2026-001",
          "invoiceDateNumber": 20260115,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1815000,
          "totalVATAmount": 315000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1815000,
          "baseCurrencyTotalVATAmount": 315000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88",
            "6a463d866f49077d99cc0d89"
          ],
          "created": "2026-01-15T00:00:00.000Z"
        }
      ],
      "currency": "EUR",
      "baseCurrency": "EUR",
      "totalAmountExclVAT": 5000000,
      "totalAmountInclVAT": 6050000,
      "totalVATAmount": 1050000,
      "baseCurrencyTotalAmountExclVAT": 5000000,
      "baseCurrencyTotalAmountInclVAT": 6050000,
      "baseCurrencyTotalVATAmount": 1050000,
      "items": [
        {
          "_id": "6a463d866f49077d99cc0d87",
          "name": "Senior consulting hours",
          "description": "Architecture review and implementation guidance for Q1 2026.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 210,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        },
        {
          "_id": "6a463d866f49077d99cc0d88",
          "name": "UX research workshop",
          "description": "Customer interviews, journey mapping, and persona definition.",
          "unitAmountExclVAT": 100000,
          "quantity": 3000,
          "unit": "items",
          "VATRate": 210,
          "totalVATAmount": 63000,
          "totalAmountExclVAT": 300000,
          "totalAmountInclVAT": 363000,
          "unitAmountInclVAT": 121000,
          "discountPercentage": 100
        },
        {
          "_id": "6a463d866f49077d99cc0d89",
          "name": "Frontend pair-programming",
          "description": "Coaching sessions on the React 19 server components migration.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 210,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        }
      ],
      "VATSubtotals": [
        {
          "VATRate": "21",
          "totalAmountExclVAT": 5000000,
          "totalAmountInclVAT": 6050000,
          "totalVATAmount": 1050000,
          "baseCurrencyTotalAmountExclVAT": 5000000,
          "baseCurrencyTotalAmountInclVAT": 6050000,
          "baseCurrencyTotalVATAmount": 1050000
        }
      ]
    },
    "installmentValue": 1815000,
    "installmentPercentage": 30,
    "installmentAmountShownAs": "percentage",
    "installmentInvoiceType": "progress"
  }
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0db6",
  "country": "be",
  "language": 0,
  "firstName": "Pierre",
  "lastName": "Dupont",
  "companyName": "Dupont SRL",
  "accountHolderName": "Dupont SRL",
  "email": "pierre@dupont.be",
  "phoneNumber": "+32 2 123 45 67",
  "address": {
    "street": "Avenue Louise 200",
    "zip": "1050",
    "city": "Brussels",
    "country": "be"
  },
  "VATNumber": "BE0123456789",
  "IBAN": "BE68539007547034",
  "SWIFT": "BNAGBEBB",
  "settings": {
    "invoices": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days."
    },
    "quotes": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "language": "en",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "This quote is valid for 30 days.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Straight / DE + Project 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Straight / DE + Project legacy page 1
PDF v2 (Puppeteer) · page 1
Straight / DE + Project v2 page 1
Legacy (EJS · PhantomJS) · page 2
Straight / DE + Project legacy page 2
PDF v2 (Puppeteer) · page 2
Straight / DE + Project v2 page 2
Legacy (EJS · PhantomJS) · page 3
Straight / DE + Project legacy page 3
PDF v2 (Puppeteer) · page 3
Straight / DE + Project v2 page 3
Template (resolveTemplate output)
{
  "name": "Straight",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "straight"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "l"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {}
                },
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days. Late payments incur 9% interest p.a."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "accent_border_top": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d84",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "INV-2026-001",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nCOBADEFFXXX\nSchmidt Consulting GmbH\nDE89370400440532013000\nEUR1815.00\n\n\nINV-2026-001",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Müller GmbH",
    "contactName": "Jane Smith",
    "address": {
      "street": "Friedrichstraße 110",
      "zip": "10117",
      "city": "Berlin",
      "country": "de"
    },
    "VATNumber": "DE123456789"
  },
  "totalVATAmount_19": 285000,
  "din5008": false,
  "revenueProject": {
    "snapshot": {
      "projectId": "6a463d866f49077d99cc0d8a",
      "revenues": [
        {
          "revenueId": "6a463d866f49077d99cc0d8b",
          "revenueNumber": "INV-2025-003",
          "invoiceDateNumber": 20251201,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1785000,
          "totalVATAmount": 285000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1785000,
          "baseCurrencyTotalVATAmount": 285000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88"
          ],
          "created": "2025-12-01T00:00:00.000Z"
        },
        {
          "revenueId": "6a463d866f49077d99cc0d84",
          "revenueNumber": "INV-2026-001",
          "invoiceDateNumber": 20260115,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1785000,
          "totalVATAmount": 285000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1785000,
          "baseCurrencyTotalVATAmount": 285000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88",
            "6a463d866f49077d99cc0d89"
          ],
          "created": "2026-01-15T00:00:00.000Z"
        }
      ],
      "currency": "EUR",
      "baseCurrency": "EUR",
      "totalAmountExclVAT": 5000000,
      "totalAmountInclVAT": 5950000,
      "totalVATAmount": 950000,
      "baseCurrencyTotalAmountExclVAT": 5000000,
      "baseCurrencyTotalAmountInclVAT": 5950000,
      "baseCurrencyTotalVATAmount": 950000,
      "items": [
        {
          "_id": "6a463d866f49077d99cc0d87",
          "name": "Senior consulting hours",
          "description": "Architecture review and implementation guidance for Q1 2026.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 190,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        },
        {
          "_id": "6a463d866f49077d99cc0d88",
          "name": "UX research workshop",
          "description": "Customer interviews, journey mapping, and persona definition.",
          "unitAmountExclVAT": 100000,
          "quantity": 3000,
          "unit": "items",
          "VATRate": 190,
          "totalVATAmount": 63000,
          "totalAmountExclVAT": 300000,
          "totalAmountInclVAT": 363000,
          "unitAmountInclVAT": 121000,
          "discountPercentage": 100
        },
        {
          "_id": "6a463d866f49077d99cc0d89",
          "name": "Frontend pair-programming",
          "description": "Coaching sessions on the React 19 server components migration.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 190,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        }
      ],
      "VATSubtotals": [
        {
          "VATRate": "19",
          "totalAmountExclVAT": 5000000,
          "totalAmountInclVAT": 5950000,
          "totalVATAmount": 950000,
          "baseCurrencyTotalAmountExclVAT": 5000000,
          "baseCurrencyTotalAmountInclVAT": 5950000,
          "baseCurrencyTotalVATAmount": 950000
        }
      ]
    },
    "installmentValue": 1785000,
    "installmentPercentage": 30,
    "installmentAmountShownAs": "percentage",
    "installmentInvoiceType": "progress"
  }
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0dae",
  "country": "de",
  "language": 3,
  "firstName": "Anna",
  "lastName": "Schmidt",
  "companyName": "Schmidt Consulting GmbH",
  "accountHolderName": "Schmidt Consulting GmbH",
  "email": "anna@schmidt-consulting.de",
  "phoneNumber": "+49 30 123 4567",
  "address": {
    "street": "Unter den Linden 1",
    "zip": "10117",
    "city": "Berlin",
    "country": "de"
  },
  "VATNumber": "DE987654321",
  "steuernummer": "12/345/67890",
  "IBAN": "DE89370400440532013000",
  "SWIFT": "COBADEFFXXX",
  "settings": {
    "invoices": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days. Late payments incur 9% interest p.a."
    },
    "quotes": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "language": "de",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Dieses Angebot ist 30 Tage gültig.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Straight / DE (DIN 5008) + Project 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Straight / DE (DIN 5008) + Project legacy page 1
PDF v2 (Puppeteer) · page 1
Straight / DE (DIN 5008) + Project v2 page 1
Legacy (EJS · PhantomJS) · page 2
Straight / DE (DIN 5008) + Project legacy page 2
PDF v2 (Puppeteer) · page 2
Straight / DE (DIN 5008) + Project v2 page 2
Legacy (EJS · PhantomJS) · page 3
Straight / DE (DIN 5008) + Project legacy page 3
PDF v2 (Puppeteer) · page 3
Straight / DE (DIN 5008) + Project v2 page 3
Template (resolveTemplate output)
{
  "name": "Straight",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "straight"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "l"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {}
                },
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days. Late payments incur 9% interest p.a."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "accent_border_top": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d84",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "INV-2026-001",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nCOBADEFFXXX\nSchmidt Consulting GmbH\nDE89370400440532013000\nEUR1815.00\n\n\nINV-2026-001",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Müller GmbH",
    "contactName": "Jane Smith",
    "address": {
      "street": "Friedrichstraße 110",
      "zip": "10117",
      "city": "Berlin",
      "country": "de"
    },
    "VATNumber": "DE123456789"
  },
  "totalVATAmount_19": 285000,
  "din5008": true,
  "revenueProject": {
    "snapshot": {
      "projectId": "6a463d866f49077d99cc0d8a",
      "revenues": [
        {
          "revenueId": "6a463d866f49077d99cc0d8b",
          "revenueNumber": "INV-2025-003",
          "invoiceDateNumber": 20251201,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1785000,
          "totalVATAmount": 285000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1785000,
          "baseCurrencyTotalVATAmount": 285000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88"
          ],
          "created": "2025-12-01T00:00:00.000Z"
        },
        {
          "revenueId": "6a463d866f49077d99cc0d84",
          "revenueNumber": "INV-2026-001",
          "invoiceDateNumber": 20260115,
          "totalAmountExclVAT": 1500000,
          "totalAmountInclVAT": 1785000,
          "totalVATAmount": 285000,
          "baseCurrencyTotalAmountExclVAT": 1500000,
          "baseCurrencyTotalAmountInclVAT": 1785000,
          "baseCurrencyTotalVATAmount": 285000,
          "items": [
            "6a463d866f49077d99cc0d87",
            "6a463d866f49077d99cc0d88",
            "6a463d866f49077d99cc0d89"
          ],
          "created": "2026-01-15T00:00:00.000Z"
        }
      ],
      "currency": "EUR",
      "baseCurrency": "EUR",
      "totalAmountExclVAT": 5000000,
      "totalAmountInclVAT": 5950000,
      "totalVATAmount": 950000,
      "baseCurrencyTotalAmountExclVAT": 5000000,
      "baseCurrencyTotalAmountInclVAT": 5950000,
      "baseCurrencyTotalVATAmount": 950000,
      "items": [
        {
          "_id": "6a463d866f49077d99cc0d87",
          "name": "Senior consulting hours",
          "description": "Architecture review and implementation guidance for Q1 2026.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 190,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        },
        {
          "_id": "6a463d866f49077d99cc0d88",
          "name": "UX research workshop",
          "description": "Customer interviews, journey mapping, and persona definition.",
          "unitAmountExclVAT": 100000,
          "quantity": 3000,
          "unit": "items",
          "VATRate": 190,
          "totalVATAmount": 63000,
          "totalAmountExclVAT": 300000,
          "totalAmountInclVAT": 363000,
          "unitAmountInclVAT": 121000,
          "discountPercentage": 100
        },
        {
          "_id": "6a463d866f49077d99cc0d89",
          "name": "Frontend pair-programming",
          "description": "Coaching sessions on the React 19 server components migration.",
          "unitAmountExclVAT": 150000,
          "quantity": 8000,
          "unit": "hours",
          "VATRate": 190,
          "totalVATAmount": 252000,
          "totalAmountExclVAT": 1200000,
          "totalAmountInclVAT": 1452000,
          "unitAmountInclVAT": 181500,
          "discountPercentage": 0
        }
      ],
      "VATSubtotals": [
        {
          "VATRate": "19",
          "totalAmountExclVAT": 5000000,
          "totalAmountInclVAT": 5950000,
          "totalVATAmount": 950000,
          "baseCurrencyTotalAmountExclVAT": 5000000,
          "baseCurrencyTotalAmountInclVAT": 5950000,
          "baseCurrencyTotalVATAmount": 950000
        }
      ]
    },
    "installmentValue": 1785000,
    "installmentPercentage": 30,
    "installmentAmountShownAs": "percentage",
    "installmentInvoiceType": "progress"
  }
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0db0",
  "country": "de",
  "language": 3,
  "firstName": "Anna",
  "lastName": "Schmidt",
  "companyName": "Schmidt Consulting GmbH",
  "accountHolderName": "Schmidt Consulting GmbH",
  "email": "anna@schmidt-consulting.de",
  "phoneNumber": "+49 30 123 4567",
  "address": {
    "street": "Unter den Linden 1",
    "zip": "10117",
    "city": "Berlin",
    "country": "de"
  },
  "VATNumber": "DE987654321",
  "steuernummer": "12/345/67890",
  "IBAN": "DE89370400440532013000",
  "SWIFT": "COBADEFFXXX",
  "settings": {
    "invoices": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days. Late payments incur 9% interest p.a."
    },
    "quotes": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "language": "de",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Dieses Angebot ist 30 Tage gültig.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Basic / BE (Quote) 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Basic / BE (Quote) legacy page 1
PDF v2 (Puppeteer) · page 1
Basic / BE (Quote) v2 page 1
Legacy (EJS · PhantomJS) · page 2
Basic / BE (Quote) legacy page 2
PDF v2 (Puppeteer) · page 2
Basic / BE (Quote) v2 page 2
Legacy (EJS · PhantomJS) · page 3
Basic / BE (Quote) legacy page 3
PDF v2 (Puppeteer) · page 3
Basic / BE (Quote) v2 page 3
Template (resolveTemplate output)
{
  "name": "Basic",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "basic"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {
        "accent_header_background": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "s"
                  }
                }
              ],
              "flex": 1,
              "align": "center",
              "vertical_align": "center"
            }
          ],
          "gap": 0
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {
                    "hide_person_name": true
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-document-title",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "bottom"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "none",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "This quote is valid for 30 days."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "hide_page_numbers": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d85",
  "type": "quote",
  "quoteNumber": "QUO-2026-001",
  "quoteDate": "2026-01-15",
  "expiryDate": "2026-02-15",
  "currency": "EUR",
  "currencyRate": 1,
  "baseCurrency": "EUR",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "baseCurrencyTotalAmountExclVAT": 1500000,
  "baseCurrencyTotalAmountInclVAT": 1815000,
  "baseCurrencyTotalVATAmount": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Globex S.A.",
    "contactName": "Jane Smith",
    "address": {
      "street": "Rue de la Loi 42",
      "zip": "1000",
      "city": "Brussels",
      "country": "be"
    },
    "VATNumber": "BE0876543210"
  },
  "status": "not-sent",
  "filePath": "",
  "emailActionToken": "",
  "quoteNumberSort": 1,
  "approvedBy": "user",
  "rejectedBy": "user",
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0db2",
  "country": "be",
  "language": 0,
  "firstName": "Pierre",
  "lastName": "Dupont",
  "companyName": "Dupont SRL",
  "accountHolderName": "Dupont SRL",
  "email": "pierre@dupont.be",
  "phoneNumber": "+32 2 123 45 67",
  "address": {
    "street": "Avenue Louise 200",
    "zip": "1050",
    "city": "Brussels",
    "country": "be"
  },
  "VATNumber": "BE0123456789",
  "IBAN": "BE68539007547034",
  "SWIFT": "BNAGBEBB",
  "settings": {
    "invoices": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days."
    },
    "quotes": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "language": "en",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "This quote is valid for 30 days.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Basic / DE (Quote) 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Basic / DE (Quote) legacy page 1
PDF v2 (Puppeteer) · page 1
Basic / DE (Quote) v2 page 1
Legacy (EJS · PhantomJS) · page 2
Basic / DE (Quote) legacy page 2
PDF v2 (Puppeteer) · page 2
Basic / DE (Quote) v2 page 2
Legacy (EJS · PhantomJS) · page 3
Basic / DE (Quote) legacy page 3
PDF v2 (Puppeteer) · page 3
Basic / DE (Quote) v2 page 3
Template (resolveTemplate output)
{
  "name": "Basic",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "basic"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {
        "accent_header_background": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "s"
                  }
                }
              ],
              "flex": 1,
              "align": "center",
              "vertical_align": "center"
            }
          ],
          "gap": 0
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-document-title",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "bottom"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "none",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Dieses Angebot ist 30 Tage gültig."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "hide_page_numbers": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d86",
  "type": "quote",
  "quoteNumber": "QUO-2026-001",
  "quoteDate": "2026-01-15",
  "expiryDate": "2026-02-15",
  "currency": "EUR",
  "currencyRate": 1,
  "baseCurrency": "EUR",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1785000,
  "totalVATAmount": 285000,
  "baseCurrencyTotalAmountExclVAT": 1500000,
  "baseCurrencyTotalAmountInclVAT": 1785000,
  "baseCurrencyTotalVATAmount": 285000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Müller GmbH",
    "contactName": "Jane Smith",
    "address": {
      "street": "Friedrichstraße 110",
      "zip": "10117",
      "city": "Berlin",
      "country": "de"
    },
    "VATNumber": "DE123456789"
  },
  "status": "not-sent",
  "filePath": "",
  "emailActionToken": "",
  "quoteNumberSort": 1,
  "approvedBy": "user",
  "rejectedBy": "user",
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0db4",
  "country": "de",
  "language": 3,
  "firstName": "Anna",
  "lastName": "Schmidt",
  "companyName": "Schmidt Consulting GmbH",
  "accountHolderName": "Schmidt Consulting GmbH",
  "email": "anna@schmidt-consulting.de",
  "phoneNumber": "+49 30 123 4567",
  "address": {
    "street": "Unter den Linden 1",
    "zip": "10117",
    "city": "Berlin",
    "country": "de"
  },
  "VATNumber": "DE987654321",
  "steuernummer": "12/345/67890",
  "IBAN": "DE89370400440532013000",
  "SWIFT": "COBADEFFXXX",
  "settings": {
    "invoices": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days. Late payments incur 9% interest p.a."
    },
    "quotes": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "language": "de",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Dieses Angebot ist 30 Tage gültig.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Circle / BE (Quote) 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Circle / BE (Quote) legacy page 1
PDF v2 (Puppeteer) · page 1
Circle / BE (Quote) v2 page 1
Legacy (EJS · PhantomJS) · page 2
Circle / BE (Quote) legacy page 2
PDF v2 (Puppeteer) · page 2
Circle / BE (Quote) v2 page 2
Legacy (EJS · PhantomJS) · page 3
Circle / BE (Quote) legacy page 3
PDF v2 (Puppeteer) · page 3
Circle / BE (Quote) v2 page 3
Template (resolveTemplate output)
{
  "name": "Circle",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "circle"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "m"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "center"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {
                    "hide_person_name": true
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "pill",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "This quote is valid for 30 days."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d85",
  "type": "quote",
  "quoteNumber": "QUO-2026-001",
  "quoteDate": "2026-01-15",
  "expiryDate": "2026-02-15",
  "currency": "EUR",
  "currencyRate": 1,
  "baseCurrency": "EUR",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "baseCurrencyTotalAmountExclVAT": 1500000,
  "baseCurrencyTotalAmountInclVAT": 1815000,
  "baseCurrencyTotalVATAmount": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Globex S.A.",
    "contactName": "Jane Smith",
    "address": {
      "street": "Rue de la Loi 42",
      "zip": "1000",
      "city": "Brussels",
      "country": "be"
    },
    "VATNumber": "BE0876543210"
  },
  "status": "not-sent",
  "filePath": "",
  "emailActionToken": "",
  "quoteNumberSort": 1,
  "approvedBy": "user",
  "rejectedBy": "user",
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0dba",
  "country": "be",
  "language": 0,
  "firstName": "Pierre",
  "lastName": "Dupont",
  "companyName": "Dupont SRL",
  "accountHolderName": "Dupont SRL",
  "email": "pierre@dupont.be",
  "phoneNumber": "+32 2 123 45 67",
  "address": {
    "street": "Avenue Louise 200",
    "zip": "1050",
    "city": "Brussels",
    "country": "be"
  },
  "VATNumber": "BE0123456789",
  "IBAN": "BE68539007547034",
  "SWIFT": "BNAGBEBB",
  "settings": {
    "invoices": {
      "templateType": "circle",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days."
    },
    "quotes": {
      "templateType": "circle",
      "fontFamily": "Assistant",
      "language": "en",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "This quote is valid for 30 days.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Circle / DE (Quote) 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Circle / DE (Quote) legacy page 1
PDF v2 (Puppeteer) · page 1
Circle / DE (Quote) v2 page 1
Legacy (EJS · PhantomJS) · page 2
Circle / DE (Quote) legacy page 2
PDF v2 (Puppeteer) · page 2
Circle / DE (Quote) v2 page 2
Legacy (EJS · PhantomJS) · page 3
Circle / DE (Quote) legacy page 3
PDF v2 (Puppeteer) · page 3
Circle / DE (Quote) v2 page 3
Template (resolveTemplate output)
{
  "name": "Circle",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "circle"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "m"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "center"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "pill",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Dieses Angebot ist 30 Tage gültig."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d86",
  "type": "quote",
  "quoteNumber": "QUO-2026-001",
  "quoteDate": "2026-01-15",
  "expiryDate": "2026-02-15",
  "currency": "EUR",
  "currencyRate": 1,
  "baseCurrency": "EUR",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1785000,
  "totalVATAmount": 285000,
  "baseCurrencyTotalAmountExclVAT": 1500000,
  "baseCurrencyTotalAmountInclVAT": 1785000,
  "baseCurrencyTotalVATAmount": 285000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Müller GmbH",
    "contactName": "Jane Smith",
    "address": {
      "street": "Friedrichstraße 110",
      "zip": "10117",
      "city": "Berlin",
      "country": "de"
    },
    "VATNumber": "DE123456789"
  },
  "status": "not-sent",
  "filePath": "",
  "emailActionToken": "",
  "quoteNumberSort": 1,
  "approvedBy": "user",
  "rejectedBy": "user",
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0dbc",
  "country": "de",
  "language": 3,
  "firstName": "Anna",
  "lastName": "Schmidt",
  "companyName": "Schmidt Consulting GmbH",
  "accountHolderName": "Schmidt Consulting GmbH",
  "email": "anna@schmidt-consulting.de",
  "phoneNumber": "+49 30 123 4567",
  "address": {
    "street": "Unter den Linden 1",
    "zip": "10117",
    "city": "Berlin",
    "country": "de"
  },
  "VATNumber": "DE987654321",
  "steuernummer": "12/345/67890",
  "IBAN": "DE89370400440532013000",
  "SWIFT": "COBADEFFXXX",
  "settings": {
    "invoices": {
      "templateType": "circle",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days. Late payments incur 9% interest p.a."
    },
    "quotes": {
      "templateType": "circle",
      "fontFamily": "Assistant",
      "language": "de",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Dieses Angebot ist 30 Tage gültig.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Rounded / BE (Quote) 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Rounded / BE (Quote) legacy page 1
PDF v2 (Puppeteer) · page 1
Rounded / BE (Quote) v2 page 1
Legacy (EJS · PhantomJS) · page 2
Rounded / BE (Quote) legacy page 2
PDF v2 (Puppeteer) · page 2
Rounded / BE (Quote) v2 page 2
Legacy (EJS · PhantomJS) · page 3
Rounded / BE (Quote) legacy page 3
PDF v2 (Puppeteer) · page 3
Rounded / BE (Quote) v2 page 3
Template (resolveTemplate output)
{
  "name": "Rounded",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "rounded"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "m"
                  }
                }
              ],
              "flex": 1,
              "align": "center",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {
                    "hide_person_name": true
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "rounded",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "This quote is valid for 30 days."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d85",
  "type": "quote",
  "quoteNumber": "QUO-2026-001",
  "quoteDate": "2026-01-15",
  "expiryDate": "2026-02-15",
  "currency": "EUR",
  "currencyRate": 1,
  "baseCurrency": "EUR",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "baseCurrencyTotalAmountExclVAT": 1500000,
  "baseCurrencyTotalAmountInclVAT": 1815000,
  "baseCurrencyTotalVATAmount": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Globex S.A.",
    "contactName": "Jane Smith",
    "address": {
      "street": "Rue de la Loi 42",
      "zip": "1000",
      "city": "Brussels",
      "country": "be"
    },
    "VATNumber": "BE0876543210"
  },
  "status": "not-sent",
  "filePath": "",
  "emailActionToken": "",
  "quoteNumberSort": 1,
  "approvedBy": "user",
  "rejectedBy": "user",
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0dc0",
  "country": "be",
  "language": 0,
  "firstName": "Pierre",
  "lastName": "Dupont",
  "companyName": "Dupont SRL",
  "accountHolderName": "Dupont SRL",
  "email": "pierre@dupont.be",
  "phoneNumber": "+32 2 123 45 67",
  "address": {
    "street": "Avenue Louise 200",
    "zip": "1050",
    "city": "Brussels",
    "country": "be"
  },
  "VATNumber": "BE0123456789",
  "IBAN": "BE68539007547034",
  "SWIFT": "BNAGBEBB",
  "settings": {
    "invoices": {
      "templateType": "rounded",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days."
    },
    "quotes": {
      "templateType": "rounded",
      "fontFamily": "Assistant",
      "language": "en",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "This quote is valid for 30 days.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Rounded / DE (Quote) 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Rounded / DE (Quote) legacy page 1
PDF v2 (Puppeteer) · page 1
Rounded / DE (Quote) v2 page 1
Legacy (EJS · PhantomJS) · page 2
Rounded / DE (Quote) legacy page 2
PDF v2 (Puppeteer) · page 2
Rounded / DE (Quote) v2 page 2
Legacy (EJS · PhantomJS) · page 3
Rounded / DE (Quote) legacy page 3
PDF v2 (Puppeteer) · page 3
Rounded / DE (Quote) v2 page 3
Template (resolveTemplate output)
{
  "name": "Rounded",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "rounded"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "m"
                  }
                }
              ],
              "flex": 1,
              "align": "center",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "rounded",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Dieses Angebot ist 30 Tage gültig."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d86",
  "type": "quote",
  "quoteNumber": "QUO-2026-001",
  "quoteDate": "2026-01-15",
  "expiryDate": "2026-02-15",
  "currency": "EUR",
  "currencyRate": 1,
  "baseCurrency": "EUR",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1785000,
  "totalVATAmount": 285000,
  "baseCurrencyTotalAmountExclVAT": 1500000,
  "baseCurrencyTotalAmountInclVAT": 1785000,
  "baseCurrencyTotalVATAmount": 285000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Müller GmbH",
    "contactName": "Jane Smith",
    "address": {
      "street": "Friedrichstraße 110",
      "zip": "10117",
      "city": "Berlin",
      "country": "de"
    },
    "VATNumber": "DE123456789"
  },
  "status": "not-sent",
  "filePath": "",
  "emailActionToken": "",
  "quoteNumberSort": 1,
  "approvedBy": "user",
  "rejectedBy": "user",
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0dbe",
  "country": "de",
  "language": 3,
  "firstName": "Anna",
  "lastName": "Schmidt",
  "companyName": "Schmidt Consulting GmbH",
  "accountHolderName": "Schmidt Consulting GmbH",
  "email": "anna@schmidt-consulting.de",
  "phoneNumber": "+49 30 123 4567",
  "address": {
    "street": "Unter den Linden 1",
    "zip": "10117",
    "city": "Berlin",
    "country": "de"
  },
  "VATNumber": "DE987654321",
  "steuernummer": "12/345/67890",
  "IBAN": "DE89370400440532013000",
  "SWIFT": "COBADEFFXXX",
  "settings": {
    "invoices": {
      "templateType": "rounded",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days. Late payments incur 9% interest p.a."
    },
    "quotes": {
      "templateType": "rounded",
      "fontFamily": "Assistant",
      "language": "de",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Dieses Angebot ist 30 Tage gültig.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Straight / BE (Quote) 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Straight / BE (Quote) legacy page 1
PDF v2 (Puppeteer) · page 1
Straight / BE (Quote) v2 page 1
Legacy (EJS · PhantomJS) · page 2
Straight / BE (Quote) legacy page 2
PDF v2 (Puppeteer) · page 2
Straight / BE (Quote) v2 page 2
Legacy (EJS · PhantomJS) · page 3
Straight / BE (Quote) legacy page 3
PDF v2 (Puppeteer) · page 3
Straight / BE (Quote) v2 page 3
Template (resolveTemplate output)
{
  "name": "Straight",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "straight"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "l"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {
                    "hide_person_name": true
                  }
                },
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "This quote is valid for 30 days."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "accent_border_top": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d85",
  "type": "quote",
  "quoteNumber": "QUO-2026-001",
  "quoteDate": "2026-01-15",
  "expiryDate": "2026-02-15",
  "currency": "EUR",
  "currencyRate": 1,
  "baseCurrency": "EUR",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "baseCurrencyTotalAmountExclVAT": 1500000,
  "baseCurrencyTotalAmountInclVAT": 1815000,
  "baseCurrencyTotalVATAmount": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Globex S.A.",
    "contactName": "Jane Smith",
    "address": {
      "street": "Rue de la Loi 42",
      "zip": "1000",
      "city": "Brussels",
      "country": "be"
    },
    "VATNumber": "BE0876543210"
  },
  "status": "not-sent",
  "filePath": "",
  "emailActionToken": "",
  "quoteNumberSort": 1,
  "approvedBy": "user",
  "rejectedBy": "user",
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0dc2",
  "country": "be",
  "language": 0,
  "firstName": "Pierre",
  "lastName": "Dupont",
  "companyName": "Dupont SRL",
  "accountHolderName": "Dupont SRL",
  "email": "pierre@dupont.be",
  "phoneNumber": "+32 2 123 45 67",
  "address": {
    "street": "Avenue Louise 200",
    "zip": "1050",
    "city": "Brussels",
    "country": "be"
  },
  "VATNumber": "BE0123456789",
  "IBAN": "BE68539007547034",
  "SWIFT": "BNAGBEBB",
  "settings": {
    "invoices": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days."
    },
    "quotes": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "language": "en",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "This quote is valid for 30 days.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Straight / DE (Quote) 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Straight / DE (Quote) legacy page 1
PDF v2 (Puppeteer) · page 1
Straight / DE (Quote) v2 page 1
Legacy (EJS · PhantomJS) · page 2
Straight / DE (Quote) legacy page 2
PDF v2 (Puppeteer) · page 2
Straight / DE (Quote) v2 page 2
Legacy (EJS · PhantomJS) · page 3
Straight / DE (Quote) legacy page 3
PDF v2 (Puppeteer) · page 3
Straight / DE (Quote) v2 page 3
Template (resolveTemplate output)
{
  "name": "Straight",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "straight"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "l"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {}
                },
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Dieses Angebot ist 30 Tage gültig."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "accent_border_top": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d86",
  "type": "quote",
  "quoteNumber": "QUO-2026-001",
  "quoteDate": "2026-01-15",
  "expiryDate": "2026-02-15",
  "currency": "EUR",
  "currencyRate": 1,
  "baseCurrency": "EUR",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1785000,
  "totalVATAmount": 285000,
  "baseCurrencyTotalAmountExclVAT": 1500000,
  "baseCurrencyTotalAmountInclVAT": 1785000,
  "baseCurrencyTotalVATAmount": 285000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Müller GmbH",
    "contactName": "Jane Smith",
    "address": {
      "street": "Friedrichstraße 110",
      "zip": "10117",
      "city": "Berlin",
      "country": "de"
    },
    "VATNumber": "DE123456789"
  },
  "status": "not-sent",
  "filePath": "",
  "emailActionToken": "",
  "quoteNumberSort": 1,
  "approvedBy": "user",
  "rejectedBy": "user",
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0dc4",
  "country": "de",
  "language": 3,
  "firstName": "Anna",
  "lastName": "Schmidt",
  "companyName": "Schmidt Consulting GmbH",
  "accountHolderName": "Schmidt Consulting GmbH",
  "email": "anna@schmidt-consulting.de",
  "phoneNumber": "+49 30 123 4567",
  "address": {
    "street": "Unter den Linden 1",
    "zip": "10117",
    "city": "Berlin",
    "country": "de"
  },
  "VATNumber": "DE987654321",
  "steuernummer": "12/345/67890",
  "IBAN": "DE89370400440532013000",
  "SWIFT": "COBADEFFXXX",
  "settings": {
    "invoices": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days. Late payments incur 9% interest p.a."
    },
    "quotes": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "language": "de",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Dieses Angebot ist 30 Tage gültig.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Straight / DE (DIN 5008) (Quote) 3 pages

legacy html · legacy pdf · v2 html · v2 pdf

Legacy (EJS · PhantomJS) · page 1
Straight / DE (DIN 5008) (Quote) legacy page 1
PDF v2 (Puppeteer) · page 1
Straight / DE (DIN 5008) (Quote) v2 page 1
Legacy (EJS · PhantomJS) · page 2
Straight / DE (DIN 5008) (Quote) legacy page 2
PDF v2 (Puppeteer) · page 2
Straight / DE (DIN 5008) (Quote) v2 page 2
Legacy (EJS · PhantomJS) · page 3
Straight / DE (DIN 5008) (Quote) legacy page 3
PDF v2 (Puppeteer) · page 3
Straight / DE (DIN 5008) (Quote) v2 page 3
Template (resolveTemplate output)
{
  "name": "Straight",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "straight"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "l"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-document-number",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {}
                },
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "subtle",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Dieses Angebot ist 30 Tage gültig."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "accent_border_top": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                },
                {
                  "type": "block-pagination",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d86",
  "type": "quote",
  "quoteNumber": "QUO-2026-001",
  "quoteDate": "2026-01-15",
  "expiryDate": "2026-02-15",
  "currency": "EUR",
  "currencyRate": 1,
  "baseCurrency": "EUR",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1785000,
  "totalVATAmount": 285000,
  "baseCurrencyTotalAmountExclVAT": 1500000,
  "baseCurrencyTotalAmountInclVAT": 1785000,
  "baseCurrencyTotalVATAmount": 285000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 190,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 190,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Müller GmbH",
    "contactName": "Jane Smith",
    "address": {
      "street": "Friedrichstraße 110",
      "zip": "10117",
      "city": "Berlin",
      "country": "de"
    },
    "VATNumber": "DE123456789"
  },
  "status": "not-sent",
  "filePath": "",
  "emailActionToken": "",
  "quoteNumberSort": 1,
  "approvedBy": "user",
  "rejectedBy": "user",
  "din5008": true
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0dc6",
  "country": "de",
  "language": 3,
  "firstName": "Anna",
  "lastName": "Schmidt",
  "companyName": "Schmidt Consulting GmbH",
  "accountHolderName": "Schmidt Consulting GmbH",
  "email": "anna@schmidt-consulting.de",
  "phoneNumber": "+49 30 123 4567",
  "address": {
    "street": "Unter den Linden 1",
    "zip": "10117",
    "city": "Berlin",
    "country": "de"
  },
  "VATNumber": "DE987654321",
  "steuernummer": "12/345/67890",
  "IBAN": "DE89370400440532013000",
  "SWIFT": "COBADEFFXXX",
  "settings": {
    "invoices": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days. Late payments incur 9% interest p.a."
    },
    "quotes": {
      "templateType": "straight",
      "fontFamily": "Assistant",
      "language": "de",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Dieses Angebot ist 30 Tage gültig.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Custom text / content section (BE) v2 only legacy 0 · v2 3 pages

v2 html · v2 pdf

PDF v2 (Puppeteer) · page 1
Custom text / content section (BE) v2 page 1
PDF v2 (Puppeteer) · page 2
Custom text / content section (BE) v2 page 2
PDF v2 (Puppeteer) · page 3
Custom text / content section (BE) v2 page 3
Template (resolveTemplate output)
{
  "_id": "6a463d866f49077d99cc0d8c",
  "userId": "6a463d866f49077d99cc0d8d",
  "is_default": false,
  "name": "Custom text content section",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "basic"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {
        "accent_header_background": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "s"
                  }
                }
              ],
              "flex": 1,
              "align": "center",
              "vertical_align": "center"
            }
          ],
          "gap": 0
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {
                    "hide_person_name": true
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-document-title",
                  "settings": {
                    "display_style": "muted"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "bottom"
            },
            {
              "blocks": [
                {
                  "type": "block-document-title",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "none",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-text",
          "settings": {
            "content": [
              {
                "type": "heading-one",
                "children": [
                  {
                    "text": "Payment & Terms"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-divider",
          "settings": {
            "thickness": "thin"
          }
        },
        {
          "type": "block-text",
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment is due within "
                  },
                  {
                    "text": "30 days",
                    "bold": true
                  },
                  {
                    "text": " of the invoice date. Late payments are subject to a "
                  },
                  {
                    "text": "2 % monthly interest fee",
                    "italic": true
                  },
                  {
                    "text": " per Article 5 of the Late Payment Directive (2011/7/EU)."
                  }
                ]
              },
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "All bank charges outside Belgium are at the expense of the payer. Please use the structured communication reference when transferring funds."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-text",
          "settings": {
            "content": [
              {
                "type": "heading-two",
                "children": [
                  {
                    "text": "Scope & Limitations"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-text",
          "settings": {
            "content": [
              {
                "type": "bulleted-list",
                "children": [
                  {
                    "type": "list-item",
                    "children": [
                      {
                        "text": "Services are delivered as described in the attached statement of work."
                      }
                    ]
                  },
                  {
                    "type": "list-item",
                    "children": [
                      {
                        "text": "Changes outside the agreed scope will be quoted separately before any work begins."
                      }
                    ]
                  },
                  {
                    "type": "list-item",
                    "children": [
                      {
                        "text": "Intellectual property transfers to the client upon receipt of full payment."
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-divider",
          "settings": {
            "thickness": "medium"
          }
        },
        {
          "type": "block-text",
          "settings": {
            "content": [
              {
                "type": "heading-two",
                "children": [
                  {
                    "text": "Dispute Resolution"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-text",
          "settings": {
            "content": [
              {
                "type": "numbered-list",
                "children": [
                  {
                    "type": "list-item",
                    "children": [
                      {
                        "text": "Any dispute shall first be submitted to informal mediation within 30 days of written notice."
                      }
                    ]
                  },
                  {
                    "type": "list-item",
                    "children": [
                      {
                        "text": "Unresolved disputes are subject to the exclusive jurisdiction of the courts of Brussels."
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "hide_page_numbers": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d83",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "+++123/4567/89012+++",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nBNAGBEBB\nDupont SRL\nBE68539007547034\nEUR1815.00\n\n\n+++123/4567/89012+++",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "totalVATAmount_21": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Globex S.A.",
    "contactName": "Jane Smith",
    "address": {
      "street": "Rue de la Loi 42",
      "zip": "1000",
      "city": "Brussels",
      "country": "be"
    },
    "VATNumber": "BE0876543210"
  },
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0dc8",
  "country": "be",
  "language": 0,
  "firstName": "Pierre",
  "lastName": "Dupont",
  "companyName": "Dupont SRL",
  "accountHolderName": "Dupont SRL",
  "email": "pierre@dupont.be",
  "phoneNumber": "+32 2 123 45 67",
  "address": {
    "street": "Avenue Louise 200",
    "zip": "1050",
    "city": "Brussels",
    "country": "be"
  },
  "VATNumber": "BE0123456789",
  "IBAN": "BE68539007547034",
  "SWIFT": "BNAGBEBB",
  "settings": {
    "invoices": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days."
    },
    "quotes": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "language": "en",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "This quote is valid for 30 days.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Custom blocks inside table section (BE) v2 only legacy 0 · v2 3 pages

v2 html · v2 pdf

PDF v2 (Puppeteer) · page 1
Custom blocks inside table section (BE) v2 page 1
PDF v2 (Puppeteer) · page 2
Custom blocks inside table section (BE) v2 page 2
PDF v2 (Puppeteer) · page 3
Custom blocks inside table section (BE) v2 page 3
Template (resolveTemplate output)
{
  "_id": "6a463d866f49077d99cc0d8e",
  "userId": "6a463d866f49077d99cc0d8f",
  "is_default": false,
  "name": "Custom blocks inside table section",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "basic"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {
        "accent_header_background": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "s"
                  }
                }
              ],
              "flex": 1,
              "align": "center",
              "vertical_align": "center"
            }
          ],
          "gap": 0
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {
                    "hide_person_name": true
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-document-title",
                  "settings": {
                    "display_style": "muted"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "bottom"
            },
            {
              "blocks": [
                {
                  "type": "block-document-title",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "none",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-text",
          "settings": {
            "content": [
              {
                "type": "heading-two",
                "children": [
                  {
                    "text": "Services Rendered"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-divider",
          "settings": {
            "thickness": "thin"
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-text",
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "All prices are in EUR. ",
                    "bold": true
                  },
                  {
                    "text": "Exchange rate fluctuations between the invoice date and the payment date are at the buyer's risk.",
                    "italic": true
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "block-comments",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "block-terms",
          "locked": true,
          "settings": {
            "content": [
              {
                "type": "paragraph",
                "children": [
                  {
                    "text": "Payment due within 30 days."
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    {
      "type": "section-footer",
      "settings": {
        "hide_page_numbers": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d83",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "+++123/4567/89012+++",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nBNAGBEBB\nDupont SRL\nBE68539007547034\nEUR1815.00\n\n\n+++123/4567/89012+++",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "totalVATAmount_21": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Globex S.A.",
    "contactName": "Jane Smith",
    "address": {
      "street": "Rue de la Loi 42",
      "zip": "1000",
      "city": "Brussels",
      "country": "be"
    },
    "VATNumber": "BE0876543210"
  },
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0dca",
  "country": "be",
  "language": 0,
  "firstName": "Pierre",
  "lastName": "Dupont",
  "companyName": "Dupont SRL",
  "accountHolderName": "Dupont SRL",
  "email": "pierre@dupont.be",
  "phoneNumber": "+32 2 123 45 67",
  "address": {
    "street": "Avenue Louise 200",
    "zip": "1050",
    "city": "Brussels",
    "country": "be"
  },
  "VATNumber": "BE0123456789",
  "IBAN": "BE68539007547034",
  "SWIFT": "BNAGBEBB",
  "settings": {
    "invoices": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days."
    },
    "quotes": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "language": "en",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "This quote is valid for 30 days.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}

Standalone blocks at top level (BE) v2 only legacy 0 · v2 3 pages

v2 html · v2 pdf

PDF v2 (Puppeteer) · page 1
Standalone blocks at top level (BE) v2 page 1
PDF v2 (Puppeteer) · page 2
Standalone blocks at top level (BE) v2 page 2
PDF v2 (Puppeteer) · page 3
Standalone blocks at top level (BE) v2 page 3
Template (resolveTemplate output)
{
  "_id": "6a463d866f49077d99cc0d90",
  "userId": "6a463d866f49077d99cc0d91",
  "is_default": false,
  "name": "Standalone blocks at top level",
  "document_type": "all",
  "style_settings": {
    "font_family": "Assistant",
    "font_size": "standard",
    "density": "standard",
    "accent_color": {
      "r": 22,
      "g": 113,
      "b": 195
    },
    "hide_accent_band": true,
    "decorative_shape": "none",
    "totals_emphasis": "bold",
    "style_variant": "basic"
  },
  "blocks": [
    {
      "type": "section-header",
      "settings": {
        "accent_header_background": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-logo",
                  "settings": {
                    "logo_size": "s"
                  }
                }
              ],
              "flex": 1,
              "align": "center",
              "vertical_align": "center"
            }
          ],
          "gap": 0
        },
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-sender",
                  "settings": {
                    "hide_person_name": true
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-client",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-content",
      "settings": {},
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-document-title",
                  "settings": {
                    "display_style": "muted"
                  }
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "bottom"
            },
            {
              "blocks": [
                {
                  "type": "block-document-title",
                  "settings": {
                    "display_style": "compact"
                  }
                },
                {
                  "type": "block-dates",
                  "settings": {}
                },
                {
                  "type": "block-order-reference",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 16
        }
      ]
    },
    {
      "type": "section-project",
      "settings": {},
      "content": [
        {
          "type": "block-project-initial-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-additional-items",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-project-invoices",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "block-text",
      "settings": {
        "content": [
          {
            "type": "heading-two",
            "children": [
              {
                "text": "Scope of Work"
              }
            ]
          },
          {
            "type": "paragraph",
            "children": [
              {
                "text": "The following services were delivered under the "
              },
              {
                "text": "master services agreement",
                "bold": true
              },
              {
                "text": " dated 1 January 2026. All deliverables were accepted by the client without reservation."
              }
            ]
          }
        ]
      }
    },
    {
      "type": "block-divider",
      "settings": {
        "thickness": "thin"
      }
    },
    {
      "type": "section-table",
      "settings": {
        "table_header_radius": "square",
        "bold_table_headers": true,
        "table_borders": "none",
        "columns": {
          "show_item_numbers": false,
          "hide_quantity": false,
          "hide_unit": true,
          "hide_price_excl_vat": false,
          "show_price_incl_vat": false,
          "hide_vat_per_item": false,
          "hide_discount": false,
          "show_gross_total": false
        }
      },
      "content": [
        {
          "type": "block-table-header",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-table-item-row",
          "locked": true,
          "settings": {
            "render_items_count": -1
          }
        },
        {
          "type": "block-table-calculation",
          "locked": true,
          "settings": {}
        },
        {
          "type": "block-legal-notes",
          "locked": true,
          "settings": {}
        }
      ]
    },
    {
      "type": "block-divider",
      "settings": {
        "thickness": "medium"
      }
    },
    {
      "type": "block-text",
      "settings": {
        "content": [
          {
            "type": "paragraph",
            "children": [
              {
                "text": "Hourly rates are invoiced at cost without mark-up. Reimbursable expenses are exempt from VAT under Article 44 §1. ",
                "italic": true
              },
              {
                "text": "Please reference the invoice number in all bank transfers.",
                "bold": true
              }
            ]
          }
        ]
      }
    },
    {
      "type": "block-comments",
      "settings": {
        "content": [
          {
            "type": "paragraph",
            "children": [
              {
                "text": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below."
              }
            ]
          }
        ]
      }
    },
    {
      "type": "block-terms",
      "settings": {
        "content": [
          {
            "type": "paragraph",
            "children": [
              {
                "text": "Payment due within 30 days."
              }
            ]
          }
        ]
      }
    },
    {
      "type": "section-footer",
      "settings": {
        "hide_page_numbers": true
      },
      "content": [
        {
          "type": "layout-row",
          "columns": [
            {
              "blocks": [
                {
                  "type": "block-payment-qr",
                  "settings": {
                    "helper_label_position": "above-row"
                  }
                }
              ],
              "flex": 0,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-bank-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "left",
              "vertical_align": "top"
            },
            {
              "blocks": [
                {
                  "type": "block-contact-info",
                  "settings": {}
                }
              ],
              "flex": 1,
              "align": "right",
              "vertical_align": "top"
            }
          ],
          "gap": 4
        }
      ]
    }
  ]
}
Revenue
{
  "_id": "6a463d866f49077d99cc0d83",
  "type": "invoice",
  "revenueNumber": "INV-2026-001",
  "invoiceDate": "2026-01-15T00:00:00.000Z",
  "dueDate": "2026-02-15T00:00:00.000Z",
  "deliveryDate": "2026-01-10T00:00:00.000Z",
  "orderReference": "PO-789-XYZ",
  "currency": "EUR",
  "communication": "+++123/4567/89012+++",
  "comments": "Thank you for your continued trust in our services.\nPlease reference invoice number INV-2026-001 in all communication.\nPayment is appreciated via bank transfer using the QR code below.",
  "paymentQrCode": "BCD\n002\n1\nSCT\nBNAGBEBB\nDupont SRL\nBE68539007547034\nEUR1815.00\n\n\n+++123/4567/89012+++",
  "totalAmountExclVAT": 1500000,
  "totalAmountInclVAT": 1815000,
  "totalVATAmount": 315000,
  "totalVATAmount_21": 315000,
  "items": [
    {
      "_id": "6a463d866f49077d99cc0d65",
      "name": "Senior consulting hours",
      "description": "Architecture review and implementation guidance for Q1 2026.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d66",
      "name": "UX research workshop",
      "description": "Customer interviews, journey mapping, and persona definition.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d67",
      "name": "Frontend pair-programming",
      "description": "Coaching sessions on the React 19 server components migration.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d68",
      "name": "Reimbursable travel",
      "description": "Train tickets Brussels ⇄ Berlin for the kickoff workshop week.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d69",
      "name": "Backend API hardening",
      "description": "Refactoring authentication middleware and per-route rate limiting.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6a",
      "name": "Project management",
      "description": "Weekly status meetings, stakeholder reporting, and risk log upkeep.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6b",
      "name": "Mobile development sprint",
      "description": "iOS and Android parity for the customer onboarding flow.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6c",
      "name": "Conference passes",
      "description": "KubeCon Paris 2026 tickets for the platform team — VAT exempt under Art. 132.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6d",
      "name": "DevOps consulting hours",
      "description": "CI/CD pipeline hardening, secrets rotation, and observability rollout.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d6e",
      "name": "Sprint facilitation",
      "description": "Backlog refinement, sprint planning, and retrospective facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d6f",
      "name": "Security assessment",
      "description": "OWASP Top 10 review of public-facing APIs and remediation pairing sessions.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d70",
      "name": "Government filing fees",
      "description": "Notary and registry fees for the corporate restructuring.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d71",
      "name": "Cloud migration planning",
      "description": "AWS landing-zone design and migration wave sequencing.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d72",
      "name": "Stakeholder workshop",
      "description": "Quarterly business review with the steering committee.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d73",
      "name": "Database performance audit",
      "description": "Query analysis, missing-index discovery, and remediation plan.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d74",
      "name": "Stamp duties",
      "description": "Brussels region administrative stamps for the permit application.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d75",
      "name": "Technical writing hours",
      "description": "Internal architecture handbook and onboarding runbooks.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d76",
      "name": "Risk assessment workshop",
      "description": "Threat modelling and mitigation prioritisation for the new platform.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d77",
      "name": "Code review sessions",
      "description": "Async PR reviews with detailed inline feedback for the platform team.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d78",
      "name": "Public transport reimbursement",
      "description": "Monthly STIB passes for the on-site engineering team.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d79",
      "name": "Accessibility audit",
      "description": "WCAG 2.2 AA conformance review of the checkout journey.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7a",
      "name": "Compliance review",
      "description": "GDPR data-processing register update and DPIA refresh.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7b",
      "name": "Performance optimization",
      "description": "Lighthouse score improvements and bundle-size reduction sprint.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7c",
      "name": "Hotel pass-through",
      "description": "Accommodation costs for the on-site workshop week — invoiced at cost.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7d",
      "name": "Localization setup",
      "description": "i18n framework integration and translation workflow design.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d7e",
      "name": "Vendor selection workshop",
      "description": "RFP scoring sessions and vendor due diligence interviews.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d7f",
      "name": "Data pipeline engineering",
      "description": "Airflow DAG design and dbt model implementation for the finance warehouse.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d80",
      "name": "Postal and courier fees",
      "description": "Express courier for original signed contracts and notarised documents.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 0,
      "whyZeroVAT": "exempt-item",
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    },
    {
      "_id": "6a463d866f49077d99cc0d81",
      "name": "Machine learning consulting",
      "description": "Embedding model selection and RAG retrieval tuning workshops.",
      "unitAmountExclVAT": 150000,
      "quantity": 8000,
      "unit": "hours",
      "VATRate": 210,
      "totalVATAmount": 252000,
      "totalAmountExclVAT": 1200000,
      "totalAmountInclVAT": 1452000,
      "unitAmountInclVAT": 181500,
      "discountPercentage": 0
    },
    {
      "_id": "6a463d866f49077d99cc0d82",
      "name": "Quarterly retrospective",
      "description": "End-of-quarter team and project health check facilitation.",
      "unitAmountExclVAT": 100000,
      "quantity": 3000,
      "unit": "items",
      "VATRate": 210,
      "totalVATAmount": 63000,
      "totalAmountExclVAT": 300000,
      "totalAmountInclVAT": 363000,
      "unitAmountInclVAT": 121000,
      "discountPercentage": 100
    }
  ],
  "client": {
    "name": "Globex S.A.",
    "contactName": "Jane Smith",
    "address": {
      "street": "Rue de la Loi 42",
      "zip": "1000",
      "city": "Brussels",
      "country": "be"
    },
    "VATNumber": "BE0876543210"
  },
  "din5008": false
}
User snapshot
{
  "_id": "6a463d876f49077d99cc0dc9",
  "country": "be",
  "language": 0,
  "firstName": "Pierre",
  "lastName": "Dupont",
  "companyName": "Dupont SRL",
  "accountHolderName": "Dupont SRL",
  "email": "pierre@dupont.be",
  "phoneNumber": "+32 2 123 45 67",
  "address": {
    "street": "Avenue Louise 200",
    "zip": "1050",
    "city": "Brussels",
    "country": "be"
  },
  "VATNumber": "BE0123456789",
  "IBAN": "BE68539007547034",
  "SWIFT": "BNAGBEBB",
  "settings": {
    "invoices": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "Payment due within 30 days."
    },
    "quotes": {
      "templateType": "basic",
      "fontFamily": "Assistant",
      "language": "en",
      "currency": "EUR",
      "header": {
        "color": {
          "r": 22,
          "g": 113,
          "b": 195
        }
      },
      "logo": {
        "filePath": "profile/visual-diff/logo.png",
        "filename": "logo.png"
      },
      "termsAndConditions": "This quote is valid for 30 days.",
      "doesUnitPriceIncludeVAT": false,
      "quoteNumberMethod": "highest-number",
      "emailHtmlTemplate": "",
      "enableTracking": false
    }
  }
}
No cases match the current filter — clear a filter to see results.