From a9ad26dc1b55621e266a274093eb63fb5b663378 Mon Sep 17 00:00:00 2001 From: DemchaAV Date: Sun, 25 Oct 2026 22:39:49 +0000 Subject: [PATCH 1/3] test(qa): hold the ways a page breaks inside a panel in the DOCX fidelity corpus The DOCX fidelity corpus had no document in which a page breaks inside a panel, so the gate holding every line of the corpus in LibreOffice and Word could not see an editor set one off the page again. A synthetic family joins it, built for shapes no preset has: a page break among a card's children and inside a card nested in it, breaks the page ignores in a row's column and a stack's layer, and a bordered card whose table runs over three pages with other margins from the second. ObsidianInvoice and MeteredInvoice with their line items repeated join the invoices. The Word and Windows LibreOffice baselines take the five documents' rows alone. --- .github/workflows/ci.yml | 7 +- CHANGELOG.md | 24 + CONTRIBUTING.md | 7 +- .../fidelity/DocxCorpusDocument.java | 7 +- .../fidelity/DocxFidelityCorpusTest.java | 6 +- .../fidelity/SyntheticDocxCorpus.java | 125 +++ .../invoice/presets/InvoiceDocxCorpus.java | 23 + .../InvoiceNaturalPageBreakDocxTest.java | 20 +- .../InvoicePanelOverPagesDocxTest.java | 17 +- .../libreoffice-windows-lines.tsv | 838 +++++++++++++++++ .../docx-fidelity/libreoffice-windows.tsv | 6 + .../docx-fidelity/word-windows-lines.tsv | 855 ++++++++++++++++++ .../resources/docx-fidelity/word-windows.tsv | 6 + 13 files changed, 1900 insertions(+), 41 deletions(-) create mode 100644 qa/src/test/java/com/demcha/compose/document/templates/fidelity/SyntheticDocxCorpus.java diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f6c20652a..12356a772 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -535,9 +535,10 @@ jobs: docx-fidelity: name: DOCX Fidelity (LibreOffice) - # Every template preset exported to DOCX, set by LibreOffice, and held line by - # line to qa/src/test/resources/docx-fidelity/libreoffice-linux*.tsv - # (DocxFidelityCorpusTest): a change that sets any line of any preset further + # Every template preset, and the documents built for shapes no preset has, exported to + # DOCX, set by LibreOffice, and held line by line to + # qa/src/test/resources/docx-fidelity/libreoffice-linux*.tsv + # (DocxFidelityCorpusTest): a change that sets any line of any document further # from the engine's PDF, down or across, at other words, or on more pages fails here. Gated on # `docx` — what an export of the corpus is made from. # diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e6121b77..726be6026 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4230,6 +4230,30 @@ follow semantic versioning; release dates are ISO 8601. ### Tests +- **The DOCX fidelity corpus holds the ways a page breaks inside a panel.** + - Five documents join it, so the gate holds every line of each where the editor set it, in + LibreOffice in CI and in Word on Windows, as it holds the presets: + - `SyntheticDocxCorpus`, a family of documents built for shapes no preset has on its own + fixture: a page break among a card's children and inside a card nested in it; page breaks + in a row's column and in a stack's layer, where the page breaks none; and a bordered card + whose table runs over three pages, the pages after the first set against a larger top + margin. Their text is set in Lato, which the export embeds, so both editors break its lines + at the page's words. + - `ObsidianInvoice` with its line items repeated 12 times — its line items card run over four + pages with other margins from page 2, and the page break after its info cards — and + `MeteredInvoice` with them repeated 9 times, the gap above its closing row carried onto + page 4. + - Measured in Word 16, every line of all five stands on the page the PDF sets it on, nine in + ten within 1.2pt of it. Word sets the amounts of the bordered card's table 36.4pt left, the + table's first column narrower than its grid, which LibreOffice keeps. In LibreOffice 24.2 and + 26.8 the parts of the card after its explicit breaks stand 3 to 5pt high. LibreOffice 26.8 on + Windows carries `ObsidianInvoice`'s info cards to page 5, 17 lines, where Word and LibreOffice + 24.2, CI's, keep them on page 4, as it did before the page break after them was fixed; its + baseline holds that as it stands. + - The Word and Windows LibreOffice baselines take the five documents' rows alone; the presets' + rows stay as recorded. The tests holding `ObsidianInvoice` and `MeteredInvoice` with their line + items repeated take the corpus's helper for that. + - **The DOCX field ledger names what a session hands an export beside the tree.** Every part of `SemanticExportContext` and of the `LayoutGraph` it carries has a fate, and a part with none fails the ledger. A session's per-page margins reached the layout, no export read them, diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 80680df50..7192a2a06 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -347,14 +347,17 @@ Choose the smallest tests that match the change: and the [per-preset smoke tests](qa/src/test/java/com/demcha/compose/document/templates/cv/presets) - For DOCX export (`render-docx`) changes: [DocxFidelityCorpusTest.java](qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityCorpusTest.java). - It exports every template preset to DOCX, has LibreOffice set each one, and holds every + It exports every template preset to DOCX, with documents built for shapes no preset has on + its own fixture, has LibreOffice set each one, and holds every line of every document to the drift its baseline records, down and across: a line set further from the page either way, a line set at other words, or a page more fails it. It needs LibreOffice and runs only when asked for — install first, as for any standalone `qa` run: `./mvnw -B -ntp test -f qa/pom.xml -Dtest=DocxFidelityCorpusTest -Dgraphcompose.docxFidelity=libreoffice`. A change that moves documents nearer the page rewrites the baseline with `-Dgraphcompose.docxFidelity.update=true`, and commits it with the change: its diff shows - which documents moved. A new preset joins the corpus in its family's `*DocxCorpus` class. + which documents moved. A new preset joins the corpus in its family's `*DocxCorpus` class, + and a shape no preset has — a page break inside a panel, a card run over pages — in + `SyntheticDocxCorpus`. CI runs it on Linux (the `DOCX Fidelity` job) against `libreoffice-linux.tsv`, and uploads what it measured: LibreOffice sets text a little differently per platform, so a change that moves documents nearer the page takes that artifact's files as the Linux baseline, and its own diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxCorpusDocument.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxCorpusDocument.java index 1f9ca92ee..cc26188d7 100644 --- a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxCorpusDocument.java +++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxCorpusDocument.java @@ -6,10 +6,11 @@ import java.util.function.Consumer; /** - * One document of the DOCX fidelity corpus: a template preset composed on its fixture. + * One document of the DOCX fidelity corpus: a template preset composed on its fixture, or a + * document built for a shape no preset has ({@link SyntheticDocxCorpus}). * - * @param family the template family, such as {@code cv} or {@code invoice} - * @param name the preset, unique within its family + * @param family the template family, such as {@code cv} or {@code invoice}, or {@code synthetic} + * @param name the preset, or the shape, unique within its family * @param margin the page margin on A4, in points, or a negative value for the session's own * page and margins * @param compose composes the document into a fresh session diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityCorpusTest.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityCorpusTest.java index 4e8960556..4da920484 100644 --- a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityCorpusTest.java +++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/DocxFidelityCorpusTest.java @@ -23,7 +23,8 @@ import static org.assertj.core.api.Assertions.assertThat; /** - * Every template preset's DOCX, set by an editor, stands no further from the engine's PDF than + * Every template preset's DOCX, and that of each document built for a shape no preset has + * ({@link SyntheticDocxCorpus}), set by an editor, stands no further from the engine's PDF than * its baseline holds it. * *

The engine draws each corpus document to PDF and exports it to DOCX; an editor converts the @@ -141,7 +142,7 @@ private static void deleteTree(Path dir) throws java.io.IOException { } } - /** Every family's presets. */ + /** Every family's presets, and the documents built for shapes no preset has. */ static List corpus() { List corpus = new ArrayList<>(); corpus.addAll(CvDocxCorpus.documents()); @@ -150,6 +151,7 @@ static List corpus() { corpus.addAll(ProposalDocxCorpus.documents()); corpus.addAll(ReceiptDocxCorpus.documents()); corpus.addAll(RotaDocxCorpus.documents()); + corpus.addAll(SyntheticDocxCorpus.documents()); return corpus; } diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/SyntheticDocxCorpus.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/SyntheticDocxCorpus.java new file mode 100644 index 000000000..272bcc867 --- /dev/null +++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/SyntheticDocxCorpus.java @@ -0,0 +1,125 @@ +package com.demcha.compose.document.templates.fidelity; + +import com.demcha.compose.document.api.DocumentSession; +import com.demcha.compose.document.api.PageMarginRule; +import com.demcha.compose.document.dsl.ParagraphBuilder; +import com.demcha.compose.document.dsl.SectionBuilder; +import com.demcha.compose.document.style.DocumentColor; +import com.demcha.compose.document.style.DocumentInsets; +import com.demcha.compose.document.style.DocumentStroke; +import com.demcha.compose.document.style.DocumentTextStyle; +import com.demcha.compose.document.table.DocumentTableColumn; +import com.demcha.compose.document.table.DocumentTableStyle; +import com.demcha.compose.font.FontName; + +import java.util.List; +import java.util.function.Consumer; + +/** + * Documents of the DOCX fidelity corpus built for a shape no template preset has on its own + * fixture, so that an editor setting one off the page fails the gate as a preset would. + * + *

Each sets a way the page breaks inside a panel or a column: a page break among a panel's + * children and inside a panel nested in it, page breaks the page sets as boxes of no height in a + * row's column and in a stack's layer, and a card whose table the layout runs over three pages, + * with other margins from the second. Their text is set in a face the export embeds, so both + * editors break its lines at the page's words.

+ */ +final class SyntheticDocxCorpus { + + private static final DocumentTextStyle TEXT = DocumentTextStyle.builder().fontName(FontName.LATO).size(10).build(); + private static final DocumentTableStyle CELLS = DocumentTableStyle.builder().textStyle(TEXT).build(); + private static final DocumentColor SURFACE = DocumentColor.rgb(238, 243, 249); + private static final DocumentColor INNER = DocumentColor.rgb(224, 233, 244); + private static final DocumentColor INK = DocumentColor.rgb(26, 86, 148); + private static final DocumentInsets MARGIN = DocumentInsets.of(36); + + private SyntheticDocxCorpus() { + } + + /** The documents of the {@code synthetic} family, one for each shape. */ + static List documents() { + return List.of( + synthetic("break_in_panel", SyntheticDocxCorpus::breakInAPanel), + synthetic("break_in_column", SyntheticDocxCorpus::breakInAColumn), + synthetic("card_over_pages", SyntheticDocxCorpus::cardOverPages)); + } + + /** + * A card with a page break among its children, and a card nested in it with a break of its + * own: the card runs over three pages, each part where the page sets it. + */ + private static void breakInAPanel(DocumentSession session) { + session.pageSize(400, 500).margin(MARGIN); + session.pageFlow(page -> page.spacing(8) + .addParagraph(p -> text(p, "Before the card, on the first page.")) + .addSection(card -> card.fillColor(SURFACE).stroke(DocumentStroke.of(INK, 1)) + .padding(DocumentInsets.of(8)).spacing(6) + .addParagraph(p -> text(p, "The card opens on the first page.")) + .addParagraph(p -> text(p, "Its second line stands under the first.")) + .addPageBreak(pageBreak -> { }) + .addParagraph(p -> text(p, "After the card's own break, on the second page.")) + .addSection(inner -> inner.fillColor(INNER).padding(DocumentInsets.of(6)).spacing(4) + .addParagraph(p -> text(p, "The inner card opens under it.")) + .addPageBreak(pageBreak -> { }) + .addParagraph(p -> text(p, "After the inner card's break, on the third page."))) + .addParagraph(p -> text(p, "The card closes on the third page."))) + .addParagraph(p -> text(p, "After the card, on the third page."))); + } + + /** + * Page breaks the page sets as boxes of no height: in a row's column and in a stack's one + * layer. The page goes on with what follows on the same page, and so does the editor. + */ + private static void breakInAColumn(DocumentSession session) { + session.pageSize(400, 500).margin(MARGIN); + session.pageFlow(page -> page.spacing(8) + .addParagraph(p -> text(p, "A row and a stack, each with a break in it.")) + .addRow(row -> row.spacing(12) + .addSection(column -> column.spacing(4) + .addParagraph(p -> text(p, "Part A of the column.")) + .addPageBreak(pageBreak -> { }) + .addParagraph(p -> text(p, "Part B of the column."))) + .addParagraph(p -> text(p, "The column beside it."))) + .addLayerStack(stack -> stack.topLeft(new SectionBuilder().spacing(4) + .addParagraph(p -> text(p, "The layer before its break.")) + .addPageBreak(pageBreak -> { }) + .addParagraph(p -> text(p, "The layer after its break.")) + .build())) + .addParagraph(p -> text(p, "After the row and the stack, on the same page."))); + } + + /** + * A bordered card whose table of sixty rows the layout runs over three pages, its header + * repeated at the top of each, the pages after the first set against a larger top margin. + * + *

Spaced so that page 1's rows leave room under them for the paragraph that ends a Word + * section at the cut, as gaps of 2 to 6pt and 12 to 16pt do: at 8 or 10pt the export names + * page 2's margins instead, and both editors set page 2 with page 1's.

+ */ + private static void cardOverPages(DocumentSession session) { + session.pageSize(400, 600).margin(MARGIN); + session.pageMargins(List.of(PageMarginRule.from(2, new DocumentInsets(90, 36, 36, 36)))); + session.pageFlow(page -> page.spacing(4) + .addParagraph(p -> text(p, "The card's table runs over three pages.")) + .addSection(card -> card.fillColor(SURFACE).stroke(DocumentStroke.of(INK, 1)) + .padding(DocumentInsets.of(6)) + .addTable(table -> { + table.columns(DocumentTableColumn.fixed(220), DocumentTableColumn.fixed(90)) + .defaultCellStyle(CELLS).headerStyle(CELLS) + .header("Item", "Amount").repeatHeader(); + for (int row = 1; row <= 60; row++) { + table.row("Line item " + row, String.valueOf(row * 7)); + } + })) + .addParagraph(p -> text(p, "After the card, on its last page."))); + } + + private static ParagraphBuilder text(ParagraphBuilder paragraph, String text) { + return paragraph.text(text).textStyle(TEXT); + } + + private static DocxCorpusDocument synthetic(String name, Consumer compose) { + return new DocxCorpusDocument("synthetic", name, -1, compose); + } +} diff --git a/qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoiceDocxCorpus.java b/qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoiceDocxCorpus.java index ffc80ad5a..2f7cde444 100644 --- a/qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoiceDocxCorpus.java +++ b/qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoiceDocxCorpus.java @@ -1,7 +1,10 @@ package com.demcha.compose.document.templates.invoice.presets; +import com.demcha.compose.document.templates.data.invoice.InvoiceServiceLines; +import com.demcha.compose.document.templates.data.invoice.StructuredInvoiceData; import com.demcha.compose.document.templates.fidelity.DocxCorpusDocument; +import java.util.ArrayList; import java.util.List; /** The invoice presets of the DOCX fidelity corpus, with the long fixtures that run to more pages. */ @@ -27,8 +30,16 @@ public static List documents() { invoice("luma_studio_long", -1, s -> LumaStudioInvoice.create().compose(s, LumaStudioInvoiceFixtures.overflowInvoice())), invoice("metered", -1, s -> MeteredInvoice.create().compose(s, MeteredInvoiceFixtures.invoice())), + // Nine times its line items: the layout carries the gap above the closing row onto page 4. + invoice("metered_long", -1, s -> MeteredInvoice.create() + .compose(s, withLinesRepeated(MeteredInvoiceFixtures.invoice(), 9))), invoice("merchant", -1, s -> MerchantInvoice.create().compose(s, MerchantInvoiceFixtures.invoice())), invoice("obsidian", -1, s -> ObsidianInvoice.create().compose(s, ObsidianInvoiceFixtures.invoice())), + // Twelve times its line items: the card holding them runs over four pages, the pages + // after the first set against other margins, and the layout breaks page 5 between + // the info cards and the footer divider. + invoice("obsidian_long", -1, s -> ObsidianInvoice.create() + .compose(s, withLinesRepeated(ObsidianInvoiceFixtures.invoice(), 12))), invoice("platform", -1, s -> PlatformInvoice.create().compose(s, PlatformInvoiceFixtures.invoice())), invoice("payments", -1, s -> PaymentsInvoice.create().compose(s, PaymentsInvoiceFixtures.canonicalInvoice())), @@ -38,6 +49,18 @@ public static List documents() { s -> WorkspaceInvoice.create().compose(s, WorkspaceInvoiceFixtures.canonicalInvoice()))); } + /** The invoice with its line items repeated {@code times}. */ + static StructuredInvoiceData withLinesRepeated(StructuredInvoiceData data, int times) { + List lines = new ArrayList<>(); + for (int time = 0; time < times; time++) { + lines.addAll(data.serviceLines().lines()); + } + return new StructuredInvoiceData(data.brand(), data.supplier(), data.masthead(), + data.billTo(), data.shipTo(), data.summary(), + new InvoiceServiceLines(data.serviceLines().columns(), lines), data.totals(), data.payment(), + data.notes(), data.currencyCode()); + } + private static DocxCorpusDocument invoice(String name, double margin, java.util.function.Consumer compose) { return new DocxCorpusDocument("invoice", name, margin, compose); diff --git a/qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoiceNaturalPageBreakDocxTest.java b/qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoiceNaturalPageBreakDocxTest.java index 76fca52ed..d059127a8 100644 --- a/qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoiceNaturalPageBreakDocxTest.java +++ b/qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoiceNaturalPageBreakDocxTest.java @@ -5,8 +5,6 @@ import com.demcha.compose.document.backend.semantic.docx.DocxSemanticBackend; import com.demcha.compose.document.layout.LayoutGraph; import com.demcha.compose.document.layout.PlacedNode; -import com.demcha.compose.document.templates.data.invoice.InvoiceServiceLines; -import com.demcha.compose.document.templates.data.invoice.StructuredInvoiceData; import org.apache.poi.xwpf.usermodel.IBodyElement; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; @@ -41,7 +39,8 @@ class InvoiceNaturalPageBreakDocxTest { @Test void obsidiansInfoCardsKeepNothingWithTheDividerTheNextPageOpensWith() throws Exception { try (DocumentSession session = GraphCompose.document().create()) { - ObsidianInvoice.create().compose(session, longer(ObsidianInvoiceFixtures.invoice(), 12)); + ObsidianInvoice.create().compose(session, + InvoiceDocxCorpus.withLinesRepeated(ObsidianInvoiceFixtures.invoice(), 12)); LayoutGraph layout = session.layoutGraph(); PlacedNode cards = named(layout, "InfoCardsRow"); PlacedNode divider = named(layout, "FooterDivider"); @@ -77,7 +76,8 @@ void obsidiansInfoCardsKeepNothingWithTheDividerTheNextPageOpensWith() throws Ex @Test void meteredsClosingRowHoldsTheGapTheLayoutCarriesOntoItsPage() throws Exception { try (DocumentSession session = GraphCompose.document().create()) { - MeteredInvoice.create().compose(session, longer(MeteredInvoiceFixtures.invoice(), 9)); + MeteredInvoice.create().compose(session, + InvoiceDocxCorpus.withLinesRepeated(MeteredInvoiceFixtures.invoice(), 9)); LayoutGraph layout = session.layoutGraph(); PlacedNode items = named(layout, "LineItems"); PlacedNode closing = named(layout, "ClosingRow"); @@ -148,16 +148,4 @@ private static List paragraphsIn(XWPFTable table) { } return paragraphs; } - - /** The invoice with its line items repeated {@code times}. */ - private static StructuredInvoiceData longer(StructuredInvoiceData data, int times) { - List lines = new ArrayList<>(); - for (int time = 0; time < times; time++) { - lines.addAll(data.serviceLines().lines()); - } - return new StructuredInvoiceData(data.brand(), data.supplier(), data.masthead(), - data.billTo(), data.shipTo(), data.summary(), - new InvoiceServiceLines(data.serviceLines().columns(), lines), data.totals(), data.payment(), - data.notes(), data.currencyCode()); - } } diff --git a/qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoicePanelOverPagesDocxTest.java b/qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoicePanelOverPagesDocxTest.java index e5197359c..799e24256 100644 --- a/qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoicePanelOverPagesDocxTest.java +++ b/qa/src/test/java/com/demcha/compose/document/templates/invoice/presets/InvoicePanelOverPagesDocxTest.java @@ -4,7 +4,6 @@ import com.demcha.compose.document.api.DocumentSession; import com.demcha.compose.document.backend.semantic.docx.DocxSemanticBackend; import com.demcha.compose.document.layout.PlacedNode; -import com.demcha.compose.document.templates.data.invoice.InvoiceServiceLines; import com.demcha.compose.document.templates.data.invoice.StructuredInvoiceData; import org.apache.poi.xwpf.usermodel.IBodyElement; import org.apache.poi.xwpf.usermodel.XWPFDocument; @@ -48,7 +47,7 @@ void obsidiansContinuationMarginsStartAWordSectionAtTheCardsFirstCut() throws Ex // From page 2 on the page sets a larger foot; the card's cut where page 2 starts ends a Word // section with the first page's margins, and the pages after it are set with page 2's. for (int times : new int[]{3, 6}) { - byte[] docx = export(longer(ObsidianInvoiceFixtures.invoice(), times), + byte[] docx = export(InvoiceDocxCorpus.withLinesRepeated(ObsidianInvoiceFixtures.invoice(), times), (s, d) -> ObsidianInvoice.create().compose(s, d)); try (XWPFDocument document = new XWPFDocument(new ByteArrayInputStream(docx))) { List body = document.getBodyElements(); @@ -77,18 +76,6 @@ private static long twips(double points) { return Math.round(points * 20); } - /** The invoice with its line items repeated {@code times}. */ - private static StructuredInvoiceData longer(StructuredInvoiceData data, int times) { - List lines = new ArrayList<>(); - for (int time = 0; time < times; time++) { - lines.addAll(data.serviceLines().lines()); - } - return new StructuredInvoiceData(data.brand(), data.supplier(), data.masthead(), - data.billTo(), data.shipTo(), data.summary(), - new InvoiceServiceLines(data.serviceLines().columns(), lines), data.totals(), data.payment(), - data.notes(), data.currencyCode()); - } - private static byte[] export(StructuredInvoiceData data, BiConsumer preset) throws Exception { try (DocumentSession session = GraphCompose.document().create()) { @@ -106,7 +93,7 @@ private static byte[] export(StructuredInvoiceData data, BiConsumer preset, String card, String header) throws Exception { - StructuredInvoiceData longer = longer(data, times); + StructuredInvoiceData longer = InvoiceDocxCorpus.withLinesRepeated(data, times); int pages; byte[] docx; try (DocumentSession session = GraphCompose.document().create()) { diff --git a/qa/src/test/resources/docx-fidelity/libreoffice-windows-lines.tsv b/qa/src/test/resources/docx-fidelity/libreoffice-windows-lines.tsv index 59e36f8f8..5daddd68d 100644 --- a/qa/src/test/resources/docx-fidelity/libreoffice-windows-lines.tsv +++ b/qa/src/test/resources/docx-fidelity/libreoffice-windows-lines.tsv @@ -1,4 +1,5 @@ # libreoffice build bf6ef2662401 on windows — document, line, drift below the page (pt), drift right of the page (pt), letters +# rows of invoice-metered_long, invoice-obsidian_long, synthetic-break_in_column, synthetic-break_in_panel, synthetic-card_over_pages: libreoffice build bf6ef2662401 on windows cv-blue_banner 0:8f1010120ed6 0.02 1.95 jordanrivera cv-blue_banner 0:8d7a2cca3060 0.00 0.24 +442055551000|jordan.rivera@exam cv-blue_banner 0:b944906ed84c -0.20 -0.38 professionalsummary @@ -2732,6 +2733,356 @@ invoice-metered 0:34ea2ec3fe72 -0.51 0.10 forbillingandaccountsupport,visi invoice-metered 0:e28672d64882 -0.04 0.12 northwindcloudservicesltd.isasub invoice-metered 0:985e43c2de34 -0.04 0.12 120riversideway,bristol,bs16qt,u invoice-metered 0:7b14b8d2c5c4 -0.04 0.16 page1of1 +invoice-metered_long 0:8a80987c409a 0.08 0.12 northwindcloud +invoice-metered_long 0:52d6e3de4fa0 0.05 0.26 invoice +invoice-metered_long 0:41305d2c2d3b 0.01 0.12 northwindcloudservicesltd. +invoice-metered_long 0:c3f5f4cc9def 0.02 0.12 120riversideway +invoice-metered_long 0:5be08c6bee4c 0.01 0.12 bristol,bs16qt +invoice-metered_long 0:2474519f77a9 0.00 0.12 unitedkingdom +invoice-metered_long 0:2474519f77a9#1 -0.07 0.13 unitedkingdom +invoice-metered_long 0:2474519f77a9#2 -0.11 0.06 unitedkingdom +invoice-metered_long 0:ec6d474a1bfc -0.01 0.12 vatid: +invoice-metered_long 0:b03c22d79b17 -0.01 0.06 gb412883027 +invoice-metered_long 0:83e16ec72a3f -0.03 0.12 phone: +invoice-metered_long 0:bff9aeb5400b -0.03 0.06 +44(0)1174962280 +invoice-metered_long 0:439961205ae6 -0.05 0.12 email: +invoice-metered_long 0:228e0a39fe6e -0.05 0.06 billing@northwind.example +invoice-metered_long 0:294ed2cfe15e -0.06 0.12 website:https://northwind.exampl +invoice-metered_long 0:6282391a4cc1 0.12 0.11 invoicenumber: +invoice-metered_long 0:0edf022238f1 0.18 0.08 inv-2026-00041882 +invoice-metered_long 0:8d05f5d55191 0.10 0.11 invoicedate: +invoice-metered_long 0:52c8b7a9ee5f 0.11 0.08 31july2026 +invoice-metered_long 0:0e0fb0fc0939 0.10 0.11 duedate: +invoice-metered_long 0:6a077b4f161e 0.11 0.08 30august2026 +invoice-metered_long 0:aa1e9c8092ab 0.10 0.11 billperiod: +invoice-metered_long 0:3e380076ca84 0.11 0.08 01jul2026–31jul2026 +invoice-metered_long 0:18e2cca1098e 0.11 0.11 paymentterms: +invoice-metered_long 0:c6af9fc633ee 0.11 0.08 net30days +invoice-metered_long 0:967e0b6ca4b9 0.11 0.11 currency: +invoice-metered_long 0:54f8e1b3fe44 0.11 0.08 gbp +invoice-metered_long 0:aeba3a7b3598 -0.24 0.13 billto +invoice-metered_long 0:45fe04dbae24 0.00 0.13 brightfutureltd. +invoice-metered_long 0:45fe04dbae24#1 0.00 0.06 brightfutureltd. +invoice-metered_long 0:65405af34bf9 0.01 0.13 45kingstreet +invoice-metered_long 0:1f8da9c4e269 -0.03 0.13 manchester,m24wu +invoice-metered_long 0:1f8da9c4e269#1 -0.07 0.06 manchester,m24wu +invoice-metered_long 0:c7a9cfdd1c55 -0.11 0.13 vatid:gb987654321 +invoice-metered_long 0:725a8f5062e7 -0.24 0.06 shipto +invoice-metered_long 0:5895c7cd8d5b 0.01 0.06 warehouse7 +invoice-metered_long 0:caf76743df2d -0.03 0.06 northindustrialestate +invoice-metered_long 0:c9046f7a37ad 0.03 -0.42 description +invoice-metered_long 0:9df6b026a8c6 0.03 -0.39 service +invoice-metered_long 0:32e8369a9c4f 0.03 -0.39 qty +invoice-metered_long 0:d1062d072acd 0.03 -0.36 unitprice +invoice-metered_long 0:cf38d95c9c6b 0.03 -0.38 amount +invoice-metered_long 0:f13d9c7c6f89 -0.06 -0.42 computeinstances +invoice-metered_long 0:f13d9c7c6f89#1 -0.13 -0.42 computeinstances +invoice-metered_long 0:d08426b31521 -0.04 -0.42 on-demandusage +invoice-metered_long 0:d08426b31521#1 -0.11 -0.42 on-demandusage +invoice-metered_long 0:05313a23f706 0.00 -0.34 london(eu-west) +invoice-metered_long 0:05313a23f706#1 -0.02 -0.34 london(eu-west) +invoice-metered_long 0:05313a23f706#2 -0.03 -0.34 london(eu-west) +invoice-metered_long 0:05313a23f706#3 -0.07 -0.34 london(eu-west) +invoice-metered_long 0:05313a23f706#4 -0.09 -0.34 london(eu-west) +invoice-metered_long 0:05313a23f706#5 -0.10 -0.34 london(eu-west) +invoice-metered_long 0:6e477a22f840 0.00 -0.02 744hrs +invoice-metered_long 0:6e477a22f840#1 -0.03 -0.02 744hrs +invoice-metered_long 0:6e477a22f840#2 -0.07 -0.02 744hrs +invoice-metered_long 0:6e477a22f840#3 -0.10 -0.02 744hrs +invoice-metered_long 0:352967434b63 0.00 -0.28 gbp0.0710 +invoice-metered_long 0:352967434b63#1 -0.07 -0.28 gbp0.0710 +invoice-metered_long 0:eec5f520909e 0.00 0.11 gbp52.82 +invoice-metered_long 0:eec5f520909e#1 -0.07 0.11 gbp52.82 +invoice-metered_long 0:721ffa554e56 -0.07 -0.42 objectstorage +invoice-metered_long 0:721ffa554e56#1 -0.14 -0.42 objectstorage +invoice-metered_long 0:df2f05798b9e -0.05 -0.42 storedvolume +invoice-metered_long 0:df2f05798b9e#1 -0.12 -0.42 storedvolume +invoice-metered_long 0:41542149a8a5 -0.02 -0.02 480gb +invoice-metered_long 0:41542149a8a5#1 -0.09 -0.02 480gb +invoice-metered_long 0:2242bd7aa8ce -0.02 -0.28 gbp0.0215 +invoice-metered_long 0:2242bd7aa8ce#1 -0.09 -0.28 gbp0.0215 +invoice-metered_long 0:7c6be041f9c2 -0.02 0.11 gbp10.32 +invoice-metered_long 0:7c6be041f9c2#1 -0.09 0.11 gbp10.32 +invoice-metered_long 0:8152fd217e12 -0.09 -0.42 manageddatabase +invoice-metered_long 0:8152fd217e12#1 -0.16 -0.42 manageddatabase +invoice-metered_long 0:3c8556c4aa26 -0.07 -0.42 primaryandreplica +invoice-metered_long 0:3c8556c4aa26#1 -0.14 -0.42 primaryandreplica +invoice-metered_long 0:76afc71f5b3e -0.03 -0.28 gbp0.1650 +invoice-metered_long 0:76afc71f5b3e#1 -0.10 -0.28 gbp0.1650 +invoice-metered_long 0:baad0db43ed6 -0.03 -0.26 gbp122.76 +invoice-metered_long 0:baad0db43ed6#1 -0.10 -0.26 gbp122.76 +invoice-metered_long 0:444858f5bf18 -0.10 -0.42 egresstraffic +invoice-metered_long 0:444858f5bf18#1 -0.17 -0.42 egresstraffic +invoice-metered_long 0:8b72bb875a83 -0.08 -0.42 datatransferout +invoice-metered_long 0:8b72bb875a83#1 -0.15 -0.42 datatransferout +invoice-metered_long 0:8001c2743965 -0.05 -0.08 global +invoice-metered_long 0:8001c2743965#1 -0.06 -0.08 global +invoice-metered_long 0:8001c2743965#2 -0.12 -0.08 global +invoice-metered_long 0:847eb4cbbb42 -0.05 -0.02 310gb +invoice-metered_long 0:847eb4cbbb42#1 -0.12 -0.02 310gb +invoice-metered_long 0:d651e46704f7 -0.05 -0.28 gbp0.0900 +invoice-metered_long 0:d651e46704f7#1 -0.12 -0.28 gbp0.0900 +invoice-metered_long 0:4ecaa7313375 -0.05 0.11 gbp27.90 +invoice-metered_long 0:4ecaa7313375#1 -0.12 0.11 gbp27.90 +invoice-metered_long 0:efa8771baad9 -0.11 -0.42 supportplan +invoice-metered_long 0:9e81cd6e653a -0.10 -0.42 standardresponse +invoice-metered_long 0:a0443240c5ed -0.06 0.06 gbp0.91 +invoice-metered_long 0:a0443240c5ed#1 -0.06 0.08 gbp0.91 +invoice-metered_long 0:e28672d64882 -0.04 0.12 northwindcloudservicesltd.isasub +invoice-metered_long 0:985e43c2de34 -0.04 0.12 120riversideway,bristol,bs16qt,u +invoice-metered_long 0:64ad186eded6 -0.04 0.16 page1of4 +invoice-metered_long 1:c9046f7a37ad 0.04 -0.42 description +invoice-metered_long 1:9df6b026a8c6 0.04 -0.39 service +invoice-metered_long 1:32e8369a9c4f 0.04 -0.39 qty +invoice-metered_long 1:d1062d072acd 0.04 -0.36 unitprice +invoice-metered_long 1:cf38d95c9c6b 0.04 -0.38 amount +invoice-metered_long 1:efa8771baad9 -0.10 -0.42 supportplan +invoice-metered_long 1:efa8771baad9#1 -0.12 -0.42 supportplan +invoice-metered_long 1:efa8771baad9#2 -0.19 -0.42 supportplan +invoice-metered_long 1:efa8771baad9#3 -0.26 -0.42 supportplan +invoice-metered_long 1:9e81cd6e653a -0.08 -0.42 standardresponse +invoice-metered_long 1:9e81cd6e653a#1 -0.10 -0.42 standardresponse +invoice-metered_long 1:9e81cd6e653a#2 -0.17 -0.42 standardresponse +invoice-metered_long 1:9e81cd6e653a#3 -0.24 -0.42 standardresponse +invoice-metered_long 1:8001c2743965 -0.04 -0.08 global +invoice-metered_long 1:8001c2743965#1 -0.05 -0.08 global +invoice-metered_long 1:8001c2743965#2 -0.06 -0.08 global +invoice-metered_long 1:8001c2743965#3 -0.12 -0.08 global +invoice-metered_long 1:8001c2743965#4 -0.13 -0.08 global +invoice-metered_long 1:8001c2743965#5 -0.19 -0.08 global +invoice-metered_long 1:8001c2743965#6 -0.20 -0.08 global +invoice-metered_long 1:a0443240c5ed -0.04 0.06 gbp0.91 +invoice-metered_long 1:a0443240c5ed#1 -0.04 0.08 gbp0.91 +invoice-metered_long 1:a0443240c5ed#2 -0.06 0.06 gbp0.91 +invoice-metered_long 1:a0443240c5ed#3 -0.06 0.08 gbp0.91 +invoice-metered_long 1:a0443240c5ed#4 -0.13 0.06 gbp0.91 +invoice-metered_long 1:a0443240c5ed#5 -0.13 0.08 gbp0.91 +invoice-metered_long 1:a0443240c5ed#6 -0.20 0.06 gbp0.91 +invoice-metered_long 1:a0443240c5ed#7 -0.20 0.08 gbp0.91 +invoice-metered_long 1:f13d9c7c6f89 -0.06 -0.42 computeinstances +invoice-metered_long 1:f13d9c7c6f89#1 -0.13 -0.42 computeinstances +invoice-metered_long 1:f13d9c7c6f89#2 -0.20 -0.42 computeinstances +invoice-metered_long 1:f13d9c7c6f89#3 -0.27 -0.42 computeinstances +invoice-metered_long 1:d08426b31521 -0.05 -0.42 on-demandusage +invoice-metered_long 1:d08426b31521#1 -0.12 -0.42 on-demandusage +invoice-metered_long 1:d08426b31521#2 -0.19 -0.42 on-demandusage +invoice-metered_long 1:d08426b31521#3 -0.26 -0.42 on-demandusage +invoice-metered_long 1:05313a23f706 -0.01 -0.34 london(eu-west) +invoice-metered_long 1:05313a23f706#1 -0.02 -0.34 london(eu-west) +invoice-metered_long 1:05313a23f706#2 -0.04 -0.34 london(eu-west) +invoice-metered_long 1:05313a23f706#3 -0.08 -0.34 london(eu-west) +invoice-metered_long 1:05313a23f706#4 -0.09 -0.34 london(eu-west) +invoice-metered_long 1:05313a23f706#5 -0.11 -0.34 london(eu-west) +invoice-metered_long 1:05313a23f706#6 -0.15 -0.34 london(eu-west) +invoice-metered_long 1:05313a23f706#7 -0.16 -0.34 london(eu-west) +invoice-metered_long 1:05313a23f706#8 -0.18 -0.34 london(eu-west) +invoice-metered_long 1:05313a23f706#9 -0.22 -0.34 london(eu-west) +invoice-metered_long 1:05313a23f706#10 -0.23 -0.34 london(eu-west) +invoice-metered_long 1:6e477a22f840 -0.01 -0.02 744hrs +invoice-metered_long 1:6e477a22f840#1 -0.04 -0.02 744hrs +invoice-metered_long 1:6e477a22f840#2 -0.08 -0.02 744hrs +invoice-metered_long 1:6e477a22f840#3 -0.11 -0.02 744hrs +invoice-metered_long 1:6e477a22f840#4 -0.15 -0.02 744hrs +invoice-metered_long 1:6e477a22f840#5 -0.18 -0.02 744hrs +invoice-metered_long 1:6e477a22f840#6 -0.22 -0.02 744hrs +invoice-metered_long 1:352967434b63 -0.01 -0.28 gbp0.0710 +invoice-metered_long 1:352967434b63#1 -0.08 -0.28 gbp0.0710 +invoice-metered_long 1:352967434b63#2 -0.15 -0.28 gbp0.0710 +invoice-metered_long 1:352967434b63#3 -0.22 -0.28 gbp0.0710 +invoice-metered_long 1:eec5f520909e -0.01 0.11 gbp52.82 +invoice-metered_long 1:eec5f520909e#1 -0.08 0.11 gbp52.82 +invoice-metered_long 1:eec5f520909e#2 -0.15 0.11 gbp52.82 +invoice-metered_long 1:eec5f520909e#3 -0.22 0.11 gbp52.82 +invoice-metered_long 1:721ffa554e56 -0.08 -0.42 objectstorage +invoice-metered_long 1:721ffa554e56#1 -0.15 -0.42 objectstorage +invoice-metered_long 1:721ffa554e56#2 -0.22 -0.42 objectstorage +invoice-metered_long 1:721ffa554e56#3 -0.29 -0.42 objectstorage +invoice-metered_long 1:df2f05798b9e -0.06 -0.42 storedvolume +invoice-metered_long 1:df2f05798b9e#1 -0.13 -0.42 storedvolume +invoice-metered_long 1:df2f05798b9e#2 -0.20 -0.42 storedvolume +invoice-metered_long 1:df2f05798b9e#3 -0.27 -0.42 storedvolume +invoice-metered_long 1:41542149a8a5 -0.02 -0.02 480gb +invoice-metered_long 1:41542149a8a5#1 -0.09 -0.02 480gb +invoice-metered_long 1:41542149a8a5#2 -0.16 -0.02 480gb +invoice-metered_long 1:41542149a8a5#3 -0.23 -0.02 480gb +invoice-metered_long 1:2242bd7aa8ce -0.02 -0.28 gbp0.0215 +invoice-metered_long 1:2242bd7aa8ce#1 -0.09 -0.28 gbp0.0215 +invoice-metered_long 1:2242bd7aa8ce#2 -0.16 -0.28 gbp0.0215 +invoice-metered_long 1:2242bd7aa8ce#3 -0.23 -0.28 gbp0.0215 +invoice-metered_long 1:7c6be041f9c2 -0.02 0.11 gbp10.32 +invoice-metered_long 1:7c6be041f9c2#1 -0.09 0.11 gbp10.32 +invoice-metered_long 1:7c6be041f9c2#2 -0.16 0.11 gbp10.32 +invoice-metered_long 1:7c6be041f9c2#3 -0.23 0.11 gbp10.32 +invoice-metered_long 1:8152fd217e12 -0.09 -0.42 manageddatabase +invoice-metered_long 1:8152fd217e12#1 -0.16 -0.42 manageddatabase +invoice-metered_long 1:8152fd217e12#2 -0.23 -0.42 manageddatabase +invoice-metered_long 1:3c8556c4aa26 -0.07 -0.42 primaryandreplica +invoice-metered_long 1:3c8556c4aa26#1 -0.14 -0.42 primaryandreplica +invoice-metered_long 1:3c8556c4aa26#2 -0.21 -0.42 primaryandreplica +invoice-metered_long 1:76afc71f5b3e -0.04 -0.28 gbp0.1650 +invoice-metered_long 1:76afc71f5b3e#1 -0.11 -0.28 gbp0.1650 +invoice-metered_long 1:76afc71f5b3e#2 -0.18 -0.28 gbp0.1650 +invoice-metered_long 1:baad0db43ed6 -0.04 -0.26 gbp122.76 +invoice-metered_long 1:baad0db43ed6#1 -0.11 -0.26 gbp122.76 +invoice-metered_long 1:baad0db43ed6#2 -0.18 -0.26 gbp122.76 +invoice-metered_long 1:444858f5bf18 -0.10 -0.42 egresstraffic +invoice-metered_long 1:444858f5bf18#1 -0.17 -0.42 egresstraffic +invoice-metered_long 1:444858f5bf18#2 -0.24 -0.42 egresstraffic +invoice-metered_long 1:8b72bb875a83 -0.09 -0.42 datatransferout +invoice-metered_long 1:8b72bb875a83#1 -0.16 -0.42 datatransferout +invoice-metered_long 1:8b72bb875a83#2 -0.23 -0.42 datatransferout +invoice-metered_long 1:847eb4cbbb42 -0.05 -0.02 310gb +invoice-metered_long 1:847eb4cbbb42#1 -0.12 -0.02 310gb +invoice-metered_long 1:847eb4cbbb42#2 -0.19 -0.02 310gb +invoice-metered_long 1:d651e46704f7 -0.05 -0.28 gbp0.0900 +invoice-metered_long 1:d651e46704f7#1 -0.12 -0.28 gbp0.0900 +invoice-metered_long 1:d651e46704f7#2 -0.19 -0.28 gbp0.0900 +invoice-metered_long 1:4ecaa7313375 -0.05 0.11 gbp27.90 +invoice-metered_long 1:4ecaa7313375#1 -0.12 0.11 gbp27.90 +invoice-metered_long 1:4ecaa7313375#2 -0.19 0.11 gbp27.90 +invoice-metered_long 1:e28672d64882 -0.04 0.12 northwindcloudservicesltd.isasub +invoice-metered_long 1:985e43c2de34 -0.04 0.12 120riversideway,bristol,bs16qt,u +invoice-metered_long 1:247aeef709c5 -0.04 0.16 page2of4 +invoice-metered_long 2:c9046f7a37ad 0.04 -0.42 description +invoice-metered_long 2:9df6b026a8c6 0.04 -0.39 service +invoice-metered_long 2:32e8369a9c4f 0.04 -0.39 qty +invoice-metered_long 2:d1062d072acd 0.04 -0.36 unitprice +invoice-metered_long 2:cf38d95c9c6b 0.04 -0.38 amount +invoice-metered_long 2:8152fd217e12 -0.10 -0.42 manageddatabase +invoice-metered_long 2:8152fd217e12#1 -0.12 -0.42 manageddatabase +invoice-metered_long 2:8152fd217e12#2 -0.19 -0.42 manageddatabase +invoice-metered_long 2:8152fd217e12#3 -0.26 -0.42 manageddatabase +invoice-metered_long 2:3c8556c4aa26 -0.08 -0.42 primaryandreplica +invoice-metered_long 2:3c8556c4aa26#1 -0.10 -0.42 primaryandreplica +invoice-metered_long 2:3c8556c4aa26#2 -0.17 -0.42 primaryandreplica +invoice-metered_long 2:3c8556c4aa26#3 -0.24 -0.42 primaryandreplica +invoice-metered_long 2:05313a23f706 -0.04 -0.34 london(eu-west) +invoice-metered_long 2:05313a23f706#1 -0.04 -0.34 london(eu-west) +invoice-metered_long 2:05313a23f706#2 -0.05 -0.34 london(eu-west) +invoice-metered_long 2:05313a23f706#3 -0.06 -0.34 london(eu-west) +invoice-metered_long 2:05313a23f706#4 -0.11 -0.34 london(eu-west) +invoice-metered_long 2:05313a23f706#5 -0.12 -0.34 london(eu-west) +invoice-metered_long 2:05313a23f706#6 -0.13 -0.34 london(eu-west) +invoice-metered_long 2:05313a23f706#7 -0.18 -0.34 london(eu-west) +invoice-metered_long 2:05313a23f706#8 -0.19 -0.34 london(eu-west) +invoice-metered_long 2:05313a23f706#9 -0.20 -0.34 london(eu-west) +invoice-metered_long 2:6e477a22f840 -0.04 -0.02 744hrs +invoice-metered_long 2:6e477a22f840#1 -0.04 -0.02 744hrs +invoice-metered_long 2:6e477a22f840#2 -0.06 -0.02 744hrs +invoice-metered_long 2:6e477a22f840#3 -0.11 -0.02 744hrs +invoice-metered_long 2:6e477a22f840#4 -0.13 -0.02 744hrs +invoice-metered_long 2:6e477a22f840#5 -0.18 -0.02 744hrs +invoice-metered_long 2:6e477a22f840#6 -0.20 -0.02 744hrs +invoice-metered_long 2:76afc71f5b3e -0.04 -0.28 gbp0.1650 +invoice-metered_long 2:76afc71f5b3e#1 -0.06 -0.28 gbp0.1650 +invoice-metered_long 2:76afc71f5b3e#2 -0.13 -0.28 gbp0.1650 +invoice-metered_long 2:76afc71f5b3e#3 -0.20 -0.28 gbp0.1650 +invoice-metered_long 2:baad0db43ed6 -0.04 -0.26 gbp122.76 +invoice-metered_long 2:baad0db43ed6#1 -0.06 -0.26 gbp122.76 +invoice-metered_long 2:baad0db43ed6#2 -0.13 -0.26 gbp122.76 +invoice-metered_long 2:baad0db43ed6#3 -0.20 -0.26 gbp122.76 +invoice-metered_long 2:444858f5bf18 -0.06 -0.42 egresstraffic +invoice-metered_long 2:444858f5bf18#1 -0.13 -0.42 egresstraffic +invoice-metered_long 2:444858f5bf18#2 -0.20 -0.42 egresstraffic +invoice-metered_long 2:444858f5bf18#3 -0.27 -0.42 egresstraffic +invoice-metered_long 2:8b72bb875a83 -0.05 -0.42 datatransferout +invoice-metered_long 2:8b72bb875a83#1 -0.12 -0.42 datatransferout +invoice-metered_long 2:8b72bb875a83#2 -0.19 -0.42 datatransferout +invoice-metered_long 2:8b72bb875a83#3 -0.26 -0.42 datatransferout +invoice-metered_long 2:8001c2743965 -0.01 -0.08 global +invoice-metered_long 2:8001c2743965#1 -0.02 -0.08 global +invoice-metered_long 2:8001c2743965#2 -0.08 -0.08 global +invoice-metered_long 2:8001c2743965#3 -0.09 -0.08 global +invoice-metered_long 2:8001c2743965#4 -0.15 -0.08 global +invoice-metered_long 2:8001c2743965#5 -0.16 -0.08 global +invoice-metered_long 2:8001c2743965#6 -0.22 -0.08 global +invoice-metered_long 2:8001c2743965#7 -0.23 -0.08 global +invoice-metered_long 2:847eb4cbbb42 -0.01 -0.02 310gb +invoice-metered_long 2:847eb4cbbb42#1 -0.08 -0.02 310gb +invoice-metered_long 2:847eb4cbbb42#2 -0.15 -0.02 310gb +invoice-metered_long 2:847eb4cbbb42#3 -0.22 -0.02 310gb +invoice-metered_long 2:d651e46704f7 -0.01 -0.28 gbp0.0900 +invoice-metered_long 2:d651e46704f7#1 -0.08 -0.28 gbp0.0900 +invoice-metered_long 2:d651e46704f7#2 -0.15 -0.28 gbp0.0900 +invoice-metered_long 2:d651e46704f7#3 -0.22 -0.28 gbp0.0900 +invoice-metered_long 2:4ecaa7313375 -0.01 0.11 gbp27.90 +invoice-metered_long 2:4ecaa7313375#1 -0.08 0.11 gbp27.90 +invoice-metered_long 2:4ecaa7313375#2 -0.15 0.11 gbp27.90 +invoice-metered_long 2:4ecaa7313375#3 -0.22 0.11 gbp27.90 +invoice-metered_long 2:efa8771baad9 -0.08 -0.42 supportplan +invoice-metered_long 2:efa8771baad9#1 -0.15 -0.42 supportplan +invoice-metered_long 2:efa8771baad9#2 -0.22 -0.42 supportplan +invoice-metered_long 2:efa8771baad9#3 -0.29 -0.42 supportplan +invoice-metered_long 2:9e81cd6e653a -0.06 -0.42 standardresponse +invoice-metered_long 2:9e81cd6e653a#1 -0.13 -0.42 standardresponse +invoice-metered_long 2:9e81cd6e653a#2 -0.20 -0.42 standardresponse +invoice-metered_long 2:9e81cd6e653a#3 -0.27 -0.42 standardresponse +invoice-metered_long 2:a0443240c5ed -0.02 0.06 gbp0.91 +invoice-metered_long 2:a0443240c5ed#1 -0.02 0.08 gbp0.91 +invoice-metered_long 2:a0443240c5ed#2 -0.09 0.06 gbp0.91 +invoice-metered_long 2:a0443240c5ed#3 -0.09 0.08 gbp0.91 +invoice-metered_long 2:a0443240c5ed#4 -0.16 0.06 gbp0.91 +invoice-metered_long 2:a0443240c5ed#5 -0.16 0.08 gbp0.91 +invoice-metered_long 2:a0443240c5ed#6 -0.23 0.06 gbp0.91 +invoice-metered_long 2:a0443240c5ed#7 -0.23 0.08 gbp0.91 +invoice-metered_long 2:f13d9c7c6f89 -0.09 -0.42 computeinstances +invoice-metered_long 2:f13d9c7c6f89#1 -0.16 -0.42 computeinstances +invoice-metered_long 2:f13d9c7c6f89#2 -0.23 -0.42 computeinstances +invoice-metered_long 2:d08426b31521 -0.07 -0.42 on-demandusage +invoice-metered_long 2:d08426b31521#1 -0.14 -0.42 on-demandusage +invoice-metered_long 2:d08426b31521#2 -0.21 -0.42 on-demandusage +invoice-metered_long 2:352967434b63 -0.04 -0.28 gbp0.0710 +invoice-metered_long 2:352967434b63#1 -0.11 -0.28 gbp0.0710 +invoice-metered_long 2:352967434b63#2 -0.18 -0.28 gbp0.0710 +invoice-metered_long 2:eec5f520909e -0.04 0.11 gbp52.82 +invoice-metered_long 2:eec5f520909e#1 -0.11 0.11 gbp52.82 +invoice-metered_long 2:eec5f520909e#2 -0.18 0.11 gbp52.82 +invoice-metered_long 2:721ffa554e56 -0.10 -0.42 objectstorage +invoice-metered_long 2:721ffa554e56#1 -0.17 -0.42 objectstorage +invoice-metered_long 2:721ffa554e56#2 -0.24 -0.42 objectstorage +invoice-metered_long 2:df2f05798b9e -0.09 -0.42 storedvolume +invoice-metered_long 2:df2f05798b9e#1 -0.16 -0.42 storedvolume +invoice-metered_long 2:df2f05798b9e#2 -0.23 -0.42 storedvolume +invoice-metered_long 2:41542149a8a5 -0.05 -0.02 480gb +invoice-metered_long 2:41542149a8a5#1 -0.12 -0.02 480gb +invoice-metered_long 2:41542149a8a5#2 -0.19 -0.02 480gb +invoice-metered_long 2:2242bd7aa8ce -0.05 -0.28 gbp0.0215 +invoice-metered_long 2:2242bd7aa8ce#1 -0.12 -0.28 gbp0.0215 +invoice-metered_long 2:2242bd7aa8ce#2 -0.19 -0.28 gbp0.0215 +invoice-metered_long 2:7c6be041f9c2 -0.05 0.11 gbp10.32 +invoice-metered_long 2:7c6be041f9c2#1 -0.12 0.11 gbp10.32 +invoice-metered_long 2:7c6be041f9c2#2 -0.19 0.11 gbp10.32 +invoice-metered_long 2:e28672d64882 -0.04 0.12 northwindcloudservicesltd.isasub +invoice-metered_long 2:985e43c2de34 -0.04 0.12 120riversideway,bristol,bs16qt,u +invoice-metered_long 2:0babc7720082 -0.04 0.16 page3of4 +invoice-metered_long 3:3c7ade679fdf -0.96 0.08 paymentdetails +invoice-metered_long 3:0ecb5847ffa7 -0.72 0.12 accountname: +invoice-metered_long 3:41305d2c2d3b -0.72 0.07 northwindcloudservicesltd. +invoice-metered_long 3:944d398aea60 -0.74 0.12 bankname: +invoice-metered_long 3:062433da3c2a -0.74 0.07 riverbankplc +invoice-metered_long 3:6b4894c28363 -0.76 0.12 accountnumber: +invoice-metered_long 3:7c068e1eded4 -0.76 0.07 60415523 +invoice-metered_long 3:4bf9e1b71d6b -0.78 0.12 sortcode: +invoice-metered_long 3:0309d81ea4af -0.78 0.07 20-41-08 +invoice-metered_long 3:1f619f9689b2 -0.80 0.12 iban: +invoice-metered_long 3:6c4b0e61038b -0.80 0.07 gb29rivb20410860415523 +invoice-metered_long 3:4f657c67e41a -0.82 0.12 accounttype: +invoice-metered_long 3:3af279547725 -0.82 0.07 businesscurrent +invoice-metered_long 3:fa0fbe194b51 -0.85 0.12 remittanceemail: +invoice-metered_long 3:228e0a39fe6e -0.85 0.07 billing@northwind.example +invoice-metered_long 3:d6577e95efba 0.02 0.14 subtotal +invoice-metered_long 3:79fabcfaa819 0.02 0.78 gbp214.71 +invoice-metered_long 3:a52611c9261b -0.01 0.14 vat(20%) +invoice-metered_long 3:e50d8a0ea599 -0.01 0.70 gbp42.94 +invoice-metered_long 3:57a66d21eb1b -0.14 0.14 totaldue +invoice-metered_long 3:f207312dff2f -0.51 -0.05 gbp257.65 +invoice-metered_long 3:b0553f008513 -0.10 0.11 paymentdueby +invoice-metered_long 3:6a077b4f161e -0.41 0.11 30august2026 +invoice-metered_long 3:e60e7ef06ccc -0.11 0.10 thankyouforrunningonnorthwindclo +invoice-metered_long 3:34ea2ec3fe72 -0.17 0.10 forbillingandaccountsupport,visi +invoice-metered_long 3:e28672d64882 -0.04 0.12 northwindcloudservicesltd.isasub +invoice-metered_long 3:985e43c2de34 -0.04 0.12 120riversideway,bristol,bs16qt,u +invoice-metered_long 3:59299b8b095e -0.04 0.16 page4of4 invoice-modern 0:52d6e3de4fa0 0.00 0.10 invoice invoice-modern 0:30d85a94548c 0.00 0.10 invoicegc-2026-041issued02apr202 invoice-modern 0:75857a458999 0.00 0.10 from @@ -3029,6 +3380,364 @@ invoice-obsidian 0:52367a6622b1 0.50 0.11 reference invoice-obsidian 0:7c6ab37d83ef 0.43 0.08 thankyouforyourbusiness. invoice-obsidian 0:a97667f07d1b 0.42 0.08 paymentisdueby10september2026. invoice-obsidian 0:7b14b8d2c5c4 -0.03 -0.41 page1of1 +invoice-obsidian_long 0:07f15cde5b18 0.14 0.09 kestrel +invoice-obsidian_long 0:52d6e3de4fa0 0.12 0.09 invoice +invoice-obsidian_long 0:5d1d1b79af09 0.02 0.09 invoicenumber +invoice-obsidian_long 0:3e62d1fbe5ec 0.06 0.09 inv-2026-1048 +invoice-obsidian_long 0:8feaf8016bab 0.02 0.09 issuedate +invoice-obsidian_long 0:4d49cb78b810 0.02 0.16 27august2026 +invoice-obsidian_long 0:ac10f8c16320 -0.05 0.09 duedate +invoice-obsidian_long 0:b55571aaabac -0.05 0.18 10september2026 +invoice-obsidian_long 0:fb854bac39c8 -0.12 0.09 paymentterms +invoice-obsidian_long 0:56a2e019b8aa -0.12 0.79 14days +invoice-obsidian_long 0:466e5b9cd57f -0.19 0.09 currency +invoice-obsidian_long 0:54f8e1b3fe44 -0.19 0.54 gbp +invoice-obsidian_long 0:75857a458999 -0.36 0.10 from +invoice-obsidian_long 0:7d7385ecfbd9 -0.39 0.07 kestrelbusiness +invoice-obsidian_long 0:5f51304df361 -0.37 0.07 7harboursidewalk +invoice-obsidian_long 0:895a6b59f677 -0.39 0.07 bristolbs15ty +invoice-obsidian_long 0:2474519f77a9 -0.39 0.07 unitedkingdom +invoice-obsidian_long 0:2474519f77a9#1 -0.39 0.08 unitedkingdom +invoice-obsidian_long 0:70ec69d2102f -0.41 0.07 ar@kestrel.example +invoice-obsidian_long 0:aeba3a7b3598 -0.36 0.11 billto +invoice-obsidian_long 0:7bfc2b791f41 -0.39 0.08 northlineconsultingltd +invoice-obsidian_long 0:13dd937d2fe6 -0.37 0.08 21jubileeway +invoice-obsidian_long 0:f9bab6a0b45b -0.39 0.08 londonse13ss +invoice-obsidian_long 0:c9046f7a37ad -1.65 0.40 description +invoice-obsidian_long 0:32e8369a9c4f -1.65 0.25 qty +invoice-obsidian_long 0:d1062d072acd -1.65 -0.25 unitprice +invoice-obsidian_long 0:a52611c9261b -1.65 -0.35 vat(20%) +invoice-obsidian_long 0:cf38d95c9c6b -1.65 -0.08 amount +invoice-obsidian_long 0:15345cbad705 -0.22 0.40 subscriptionsetup +invoice-obsidian_long 0:15345cbad705#1 -0.19 0.40 subscriptionsetup +invoice-obsidian_long 0:15345cbad705#2 -0.15 0.40 subscriptionsetup +invoice-obsidian_long 0:5100476d46bb -0.22 0.40 one-offaccountandworkspacesetup +invoice-obsidian_long 0:5100476d46bb#1 -0.19 0.40 one-offaccountandworkspacesetup +invoice-obsidian_long 0:5100476d46bb#2 -0.15 0.40 one-offaccountandworkspacesetup +invoice-obsidian_long 0:507f9f133059 -0.26 -0.12 £150.00 +invoice-obsidian_long 0:507f9f133059#1 -0.22 -0.12 £150.00 +invoice-obsidian_long 0:507f9f133059#2 -0.19 -0.12 £150.00 +invoice-obsidian_long 0:893d7480f763 -0.26 -0.07 £30.00 +invoice-obsidian_long 0:893d7480f763#1 -0.23 -0.06 £30.00 +invoice-obsidian_long 0:893d7480f763#2 -0.22 -0.07 £30.00 +invoice-obsidian_long 0:893d7480f763#3 -0.20 -0.06 £30.00 +invoice-obsidian_long 0:893d7480f763#4 -0.19 -0.07 £30.00 +invoice-obsidian_long 0:629184210581 -0.26 -0.11 £180.00 +invoice-obsidian_long 0:629184210581#1 -0.22 -0.11 £180.00 +invoice-obsidian_long 0:629184210581#2 -0.19 -0.11 £180.00 +invoice-obsidian_long 0:3e8060178bc4 -0.21 0.40 internationalpaymentsupport +invoice-obsidian_long 0:3e8060178bc4#1 -0.18 0.40 internationalpaymentsupport +invoice-obsidian_long 0:33e4ab51097e -0.21 0.40 monthlysupportforcross-borderpay +invoice-obsidian_long 0:33e4ab51097e#1 -0.18 0.40 monthlysupportforcross-borderpay +invoice-obsidian_long 0:96d6b62c061d -0.25 -0.12 £250.00 +invoice-obsidian_long 0:96d6b62c061d#1 -0.22 -0.12 £250.00 +invoice-obsidian_long 0:70d5b1312085 -0.25 -0.07 £50.00 +invoice-obsidian_long 0:70d5b1312085#1 -0.22 -0.07 £50.00 +invoice-obsidian_long 0:d86642b21e53 -0.25 -0.11 £300.00 +invoice-obsidian_long 0:d86642b21e53#1 -0.22 -0.11 £300.00 +invoice-obsidian_long 0:9399cf3b221a -0.21 0.40 expensemanagementintegration +invoice-obsidian_long 0:9399cf3b221a#1 -0.17 0.40 expensemanagementintegration +invoice-obsidian_long 0:da2890c99f7a -0.21 0.40 apiaccessandintegration +invoice-obsidian_long 0:da2890c99f7a#1 -0.17 0.40 apiaccessandintegration +invoice-obsidian_long 0:372ba7238228 -0.24 -0.12 £200.00 +invoice-obsidian_long 0:372ba7238228#1 -0.21 -0.12 £200.00 +invoice-obsidian_long 0:05c6a4f7132f -0.24 -0.07 £40.00 +invoice-obsidian_long 0:05c6a4f7132f#1 -0.21 -0.07 £40.00 +invoice-obsidian_long 0:853580239989 -0.24 -0.11 £240.00 +invoice-obsidian_long 0:853580239989#1 -0.21 -0.11 £240.00 +invoice-obsidian_long 0:ba80be228223 -0.20 0.40 virtualcards +invoice-obsidian_long 0:ba80be228223#1 -0.17 0.40 virtualcards +invoice-obsidian_long 0:eae2564ef311 -0.20 0.40 50virtualcards +invoice-obsidian_long 0:eae2564ef311#1 -0.17 0.40 50virtualcards +invoice-obsidian_long 0:cf02270203a4 -0.24 -0.12 £100.00 +invoice-obsidian_long 0:cf02270203a4#1 -0.20 -0.12 £100.00 +invoice-obsidian_long 0:33b5fc913817 -0.24 -0.07 £20.00 +invoice-obsidian_long 0:33b5fc913817#1 -0.20 -0.07 £20.00 +invoice-obsidian_long 0:8aec54fdb1a1 -0.24 -0.11 £120.00 +invoice-obsidian_long 0:8aec54fdb1a1#1 -0.20 -0.11 £120.00 +invoice-obsidian_long 0:cc29e90932c5 -0.19 0.40 businessaccountmaintenance +invoice-obsidian_long 0:cc29e90932c5#1 -0.16 0.40 businessaccountmaintenance +invoice-obsidian_long 0:f1254de1a1d4 -0.19 0.40 monthlyaccountmaintenancefee +invoice-obsidian_long 0:f1254de1a1d4#1 -0.16 0.40 monthlyaccountmaintenancefee +invoice-obsidian_long 0:8bf9ac7b27bd -0.23 0.03 £6.00 +invoice-obsidian_long 0:8bf9ac7b27bd#1 -0.20 0.03 £6.00 +invoice-obsidian_long 0:bff295cd3f97 -0.23 -0.06 £36.00 +invoice-obsidian_long 0:bff295cd3f97#1 -0.20 -0.06 £36.00 +invoice-obsidian_long 0:b12b0c900ffa -0.03 -0.41 page1of5 +invoice-obsidian_long 1:c9046f7a37ad -0.65 0.40 description +invoice-obsidian_long 1:32e8369a9c4f -0.65 0.25 qty +invoice-obsidian_long 1:d1062d072acd -0.65 -0.25 unitprice +invoice-obsidian_long 1:a52611c9261b -0.65 -0.35 vat(20%) +invoice-obsidian_long 1:cf38d95c9c6b -0.65 -0.08 amount +invoice-obsidian_long 1:3e8060178bc4 0.78 0.40 internationalpaymentsupport +invoice-obsidian_long 1:3e8060178bc4#1 0.81 0.40 internationalpaymentsupport +invoice-obsidian_long 1:3e8060178bc4#2 0.85 0.40 internationalpaymentsupport +invoice-obsidian_long 1:3e8060178bc4#3 0.88 0.40 internationalpaymentsupport +invoice-obsidian_long 1:33e4ab51097e 0.78 0.40 monthlysupportforcross-borderpay +invoice-obsidian_long 1:33e4ab51097e#1 0.81 0.40 monthlysupportforcross-borderpay +invoice-obsidian_long 1:33e4ab51097e#2 0.85 0.40 monthlysupportforcross-borderpay +invoice-obsidian_long 1:33e4ab51097e#3 0.88 0.40 monthlysupportforcross-borderpay +invoice-obsidian_long 1:96d6b62c061d 0.74 -0.12 £250.00 +invoice-obsidian_long 1:96d6b62c061d#1 0.78 -0.12 £250.00 +invoice-obsidian_long 1:96d6b62c061d#2 0.81 -0.12 £250.00 +invoice-obsidian_long 1:96d6b62c061d#3 0.84 -0.12 £250.00 +invoice-obsidian_long 1:70d5b1312085 0.74 -0.07 £50.00 +invoice-obsidian_long 1:70d5b1312085#1 0.78 -0.07 £50.00 +invoice-obsidian_long 1:70d5b1312085#2 0.81 -0.07 £50.00 +invoice-obsidian_long 1:70d5b1312085#3 0.84 -0.07 £50.00 +invoice-obsidian_long 1:d86642b21e53 0.74 -0.11 £300.00 +invoice-obsidian_long 1:d86642b21e53#1 0.78 -0.11 £300.00 +invoice-obsidian_long 1:d86642b21e53#2 0.81 -0.11 £300.00 +invoice-obsidian_long 1:d86642b21e53#3 0.84 -0.11 £300.00 +invoice-obsidian_long 1:9399cf3b221a 0.79 0.40 expensemanagementintegration +invoice-obsidian_long 1:9399cf3b221a#1 0.82 0.40 expensemanagementintegration +invoice-obsidian_long 1:9399cf3b221a#2 0.85 0.40 expensemanagementintegration +invoice-obsidian_long 1:9399cf3b221a#3 0.89 0.40 expensemanagementintegration +invoice-obsidian_long 1:da2890c99f7a 0.79 0.40 apiaccessandintegration +invoice-obsidian_long 1:da2890c99f7a#1 0.82 0.40 apiaccessandintegration +invoice-obsidian_long 1:da2890c99f7a#2 0.85 0.40 apiaccessandintegration +invoice-obsidian_long 1:da2890c99f7a#3 0.89 0.40 apiaccessandintegration +invoice-obsidian_long 1:372ba7238228 0.75 -0.12 £200.00 +invoice-obsidian_long 1:372ba7238228#1 0.78 -0.12 £200.00 +invoice-obsidian_long 1:372ba7238228#2 0.82 -0.12 £200.00 +invoice-obsidian_long 1:372ba7238228#3 0.85 -0.12 £200.00 +invoice-obsidian_long 1:05c6a4f7132f 0.75 -0.07 £40.00 +invoice-obsidian_long 1:05c6a4f7132f#1 0.78 -0.07 £40.00 +invoice-obsidian_long 1:05c6a4f7132f#2 0.82 -0.07 £40.00 +invoice-obsidian_long 1:05c6a4f7132f#3 0.85 -0.07 £40.00 +invoice-obsidian_long 1:853580239989 0.75 -0.11 £240.00 +invoice-obsidian_long 1:853580239989#1 0.78 -0.11 £240.00 +invoice-obsidian_long 1:853580239989#2 0.82 -0.11 £240.00 +invoice-obsidian_long 1:853580239989#3 0.85 -0.11 £240.00 +invoice-obsidian_long 1:ba80be228223 0.79 0.40 virtualcards +invoice-obsidian_long 1:ba80be228223#1 0.83 0.40 virtualcards +invoice-obsidian_long 1:ba80be228223#2 0.86 0.40 virtualcards +invoice-obsidian_long 1:ba80be228223#3 0.89 0.40 virtualcards +invoice-obsidian_long 1:eae2564ef311 0.79 0.40 50virtualcards +invoice-obsidian_long 1:eae2564ef311#1 0.83 0.40 50virtualcards +invoice-obsidian_long 1:eae2564ef311#2 0.86 0.40 50virtualcards +invoice-obsidian_long 1:eae2564ef311#3 0.89 0.40 50virtualcards +invoice-obsidian_long 1:cf02270203a4 0.76 -0.12 £100.00 +invoice-obsidian_long 1:cf02270203a4#1 0.79 -0.12 £100.00 +invoice-obsidian_long 1:cf02270203a4#2 0.82 -0.12 £100.00 +invoice-obsidian_long 1:cf02270203a4#3 0.86 -0.12 £100.00 +invoice-obsidian_long 1:33b5fc913817 0.76 -0.07 £20.00 +invoice-obsidian_long 1:33b5fc913817#1 0.79 -0.07 £20.00 +invoice-obsidian_long 1:33b5fc913817#2 0.82 -0.07 £20.00 +invoice-obsidian_long 1:33b5fc913817#3 0.86 -0.07 £20.00 +invoice-obsidian_long 1:8aec54fdb1a1 0.76 -0.11 £120.00 +invoice-obsidian_long 1:8aec54fdb1a1#1 0.79 -0.11 £120.00 +invoice-obsidian_long 1:8aec54fdb1a1#2 0.82 -0.11 £120.00 +invoice-obsidian_long 1:8aec54fdb1a1#3 0.86 -0.11 £120.00 +invoice-obsidian_long 1:cc29e90932c5 0.80 0.40 businessaccountmaintenance +invoice-obsidian_long 1:cc29e90932c5#1 0.83 0.40 businessaccountmaintenance +invoice-obsidian_long 1:cc29e90932c5#2 0.87 0.40 businessaccountmaintenance +invoice-obsidian_long 1:f1254de1a1d4 0.80 0.40 monthlyaccountmaintenancefee +invoice-obsidian_long 1:f1254de1a1d4#1 0.83 0.40 monthlyaccountmaintenancefee +invoice-obsidian_long 1:f1254de1a1d4#2 0.87 0.40 monthlyaccountmaintenancefee +invoice-obsidian_long 1:893d7480f763 0.76 -0.06 £30.00 +invoice-obsidian_long 1:893d7480f763#1 0.77 -0.07 £30.00 +invoice-obsidian_long 1:893d7480f763#2 0.80 -0.06 £30.00 +invoice-obsidian_long 1:893d7480f763#3 0.80 -0.07 £30.00 +invoice-obsidian_long 1:893d7480f763#4 0.83 -0.06 £30.00 +invoice-obsidian_long 1:893d7480f763#5 0.84 -0.07 £30.00 +invoice-obsidian_long 1:8bf9ac7b27bd 0.76 0.03 £6.00 +invoice-obsidian_long 1:8bf9ac7b27bd#1 0.80 0.03 £6.00 +invoice-obsidian_long 1:8bf9ac7b27bd#2 0.83 0.03 £6.00 +invoice-obsidian_long 1:bff295cd3f97 0.76 -0.06 £36.00 +invoice-obsidian_long 1:bff295cd3f97#1 0.80 -0.06 £36.00 +invoice-obsidian_long 1:bff295cd3f97#2 0.83 -0.06 £36.00 +invoice-obsidian_long 1:15345cbad705 0.81 0.40 subscriptionsetup +invoice-obsidian_long 1:15345cbad705#1 0.84 0.40 subscriptionsetup +invoice-obsidian_long 1:15345cbad705#2 0.87 0.40 subscriptionsetup +invoice-obsidian_long 1:5100476d46bb 0.81 0.40 one-offaccountandworkspacesetup +invoice-obsidian_long 1:5100476d46bb#1 0.84 0.40 one-offaccountandworkspacesetup +invoice-obsidian_long 1:5100476d46bb#2 0.87 0.40 one-offaccountandworkspacesetup +invoice-obsidian_long 1:507f9f133059 0.77 -0.12 £150.00 +invoice-obsidian_long 1:507f9f133059#1 0.80 -0.12 £150.00 +invoice-obsidian_long 1:507f9f133059#2 0.84 -0.12 £150.00 +invoice-obsidian_long 1:629184210581 0.77 -0.11 £180.00 +invoice-obsidian_long 1:629184210581#1 0.80 -0.11 £180.00 +invoice-obsidian_long 1:629184210581#2 0.84 -0.11 £180.00 +invoice-obsidian_long 1:b68afb3d911e -0.03 -0.41 page2of5 +invoice-obsidian_long 2:c9046f7a37ad -0.55 0.40 description +invoice-obsidian_long 2:32e8369a9c4f -0.55 0.25 qty +invoice-obsidian_long 2:d1062d072acd -0.55 -0.25 unitprice +invoice-obsidian_long 2:a52611c9261b -0.55 -0.35 vat(20%) +invoice-obsidian_long 2:cf38d95c9c6b -0.55 -0.08 amount +invoice-obsidian_long 2:cc29e90932c5 0.88 0.40 businessaccountmaintenance +invoice-obsidian_long 2:cc29e90932c5#1 0.91 0.40 businessaccountmaintenance +invoice-obsidian_long 2:cc29e90932c5#2 0.95 0.40 businessaccountmaintenance +invoice-obsidian_long 2:cc29e90932c5#3 0.98 0.40 businessaccountmaintenance +invoice-obsidian_long 2:f1254de1a1d4 0.88 0.40 monthlyaccountmaintenancefee +invoice-obsidian_long 2:f1254de1a1d4#1 0.91 0.40 monthlyaccountmaintenancefee +invoice-obsidian_long 2:f1254de1a1d4#2 0.95 0.40 monthlyaccountmaintenancefee +invoice-obsidian_long 2:f1254de1a1d4#3 0.98 0.40 monthlyaccountmaintenancefee +invoice-obsidian_long 2:893d7480f763 0.84 -0.06 £30.00 +invoice-obsidian_long 2:893d7480f763#1 0.85 -0.07 £30.00 +invoice-obsidian_long 2:893d7480f763#2 0.88 -0.06 £30.00 +invoice-obsidian_long 2:893d7480f763#3 0.88 -0.07 £30.00 +invoice-obsidian_long 2:893d7480f763#4 0.91 -0.06 £30.00 +invoice-obsidian_long 2:893d7480f763#5 0.92 -0.07 £30.00 +invoice-obsidian_long 2:893d7480f763#6 0.94 -0.06 £30.00 +invoice-obsidian_long 2:893d7480f763#7 0.95 -0.07 £30.00 +invoice-obsidian_long 2:8bf9ac7b27bd 0.84 0.03 £6.00 +invoice-obsidian_long 2:8bf9ac7b27bd#1 0.88 0.03 £6.00 +invoice-obsidian_long 2:8bf9ac7b27bd#2 0.91 0.03 £6.00 +invoice-obsidian_long 2:8bf9ac7b27bd#3 0.94 0.03 £6.00 +invoice-obsidian_long 2:bff295cd3f97 0.84 -0.06 £36.00 +invoice-obsidian_long 2:bff295cd3f97#1 0.88 -0.06 £36.00 +invoice-obsidian_long 2:bff295cd3f97#2 0.91 -0.06 £36.00 +invoice-obsidian_long 2:bff295cd3f97#3 0.94 -0.06 £36.00 +invoice-obsidian_long 2:15345cbad705 0.89 0.40 subscriptionsetup +invoice-obsidian_long 2:15345cbad705#1 0.92 0.40 subscriptionsetup +invoice-obsidian_long 2:15345cbad705#2 0.95 0.40 subscriptionsetup +invoice-obsidian_long 2:15345cbad705#3 0.99 0.40 subscriptionsetup +invoice-obsidian_long 2:5100476d46bb 0.89 0.40 one-offaccountandworkspacesetup +invoice-obsidian_long 2:5100476d46bb#1 0.92 0.40 one-offaccountandworkspacesetup +invoice-obsidian_long 2:5100476d46bb#2 0.95 0.40 one-offaccountandworkspacesetup +invoice-obsidian_long 2:5100476d46bb#3 0.99 0.40 one-offaccountandworkspacesetup +invoice-obsidian_long 2:507f9f133059 0.85 -0.12 £150.00 +invoice-obsidian_long 2:507f9f133059#1 0.88 -0.12 £150.00 +invoice-obsidian_long 2:507f9f133059#2 0.92 -0.12 £150.00 +invoice-obsidian_long 2:507f9f133059#3 0.95 -0.12 £150.00 +invoice-obsidian_long 2:629184210581 0.85 -0.11 £180.00 +invoice-obsidian_long 2:629184210581#1 0.88 -0.11 £180.00 +invoice-obsidian_long 2:629184210581#2 0.92 -0.11 £180.00 +invoice-obsidian_long 2:629184210581#3 0.95 -0.11 £180.00 +invoice-obsidian_long 2:3e8060178bc4 0.89 0.40 internationalpaymentsupport +invoice-obsidian_long 2:3e8060178bc4#1 0.93 0.40 internationalpaymentsupport +invoice-obsidian_long 2:3e8060178bc4#2 0.96 0.40 internationalpaymentsupport +invoice-obsidian_long 2:3e8060178bc4#3 0.99 0.40 internationalpaymentsupport +invoice-obsidian_long 2:33e4ab51097e 0.89 0.40 monthlysupportforcross-borderpay +invoice-obsidian_long 2:33e4ab51097e#1 0.93 0.40 monthlysupportforcross-borderpay +invoice-obsidian_long 2:33e4ab51097e#2 0.96 0.40 monthlysupportforcross-borderpay +invoice-obsidian_long 2:33e4ab51097e#3 0.99 0.40 monthlysupportforcross-borderpay +invoice-obsidian_long 2:96d6b62c061d 0.86 -0.12 £250.00 +invoice-obsidian_long 2:96d6b62c061d#1 0.89 -0.12 £250.00 +invoice-obsidian_long 2:96d6b62c061d#2 0.92 -0.12 £250.00 +invoice-obsidian_long 2:96d6b62c061d#3 0.96 -0.12 £250.00 +invoice-obsidian_long 2:70d5b1312085 0.86 -0.07 £50.00 +invoice-obsidian_long 2:70d5b1312085#1 0.89 -0.07 £50.00 +invoice-obsidian_long 2:70d5b1312085#2 0.92 -0.07 £50.00 +invoice-obsidian_long 2:70d5b1312085#3 0.96 -0.07 £50.00 +invoice-obsidian_long 2:d86642b21e53 0.86 -0.11 £300.00 +invoice-obsidian_long 2:d86642b21e53#1 0.89 -0.11 £300.00 +invoice-obsidian_long 2:d86642b21e53#2 0.92 -0.11 £300.00 +invoice-obsidian_long 2:d86642b21e53#3 0.96 -0.11 £300.00 +invoice-obsidian_long 2:9399cf3b221a 0.90 0.40 expensemanagementintegration +invoice-obsidian_long 2:9399cf3b221a#1 0.93 0.40 expensemanagementintegration +invoice-obsidian_long 2:9399cf3b221a#2 0.97 0.40 expensemanagementintegration +invoice-obsidian_long 2:da2890c99f7a 0.90 0.40 apiaccessandintegration +invoice-obsidian_long 2:da2890c99f7a#1 0.93 0.40 apiaccessandintegration +invoice-obsidian_long 2:da2890c99f7a#2 0.97 0.40 apiaccessandintegration +invoice-obsidian_long 2:372ba7238228 0.86 -0.12 £200.00 +invoice-obsidian_long 2:372ba7238228#1 0.90 -0.12 £200.00 +invoice-obsidian_long 2:372ba7238228#2 0.93 -0.12 £200.00 +invoice-obsidian_long 2:05c6a4f7132f 0.86 -0.07 £40.00 +invoice-obsidian_long 2:05c6a4f7132f#1 0.90 -0.07 £40.00 +invoice-obsidian_long 2:05c6a4f7132f#2 0.93 -0.07 £40.00 +invoice-obsidian_long 2:853580239989 0.86 -0.11 £240.00 +invoice-obsidian_long 2:853580239989#1 0.90 -0.11 £240.00 +invoice-obsidian_long 2:853580239989#2 0.93 -0.11 £240.00 +invoice-obsidian_long 2:ba80be228223 0.91 0.40 virtualcards +invoice-obsidian_long 2:ba80be228223#1 0.94 0.40 virtualcards +invoice-obsidian_long 2:ba80be228223#2 0.97 0.40 virtualcards +invoice-obsidian_long 2:eae2564ef311 0.91 0.40 50virtualcards +invoice-obsidian_long 2:eae2564ef311#1 0.94 0.40 50virtualcards +invoice-obsidian_long 2:eae2564ef311#2 0.97 0.40 50virtualcards +invoice-obsidian_long 2:cf02270203a4 0.87 -0.12 £100.00 +invoice-obsidian_long 2:cf02270203a4#1 0.90 -0.12 £100.00 +invoice-obsidian_long 2:cf02270203a4#2 0.94 -0.12 £100.00 +invoice-obsidian_long 2:33b5fc913817 0.87 -0.07 £20.00 +invoice-obsidian_long 2:33b5fc913817#1 0.90 -0.07 £20.00 +invoice-obsidian_long 2:33b5fc913817#2 0.94 -0.07 £20.00 +invoice-obsidian_long 2:8aec54fdb1a1 0.87 -0.11 £120.00 +invoice-obsidian_long 2:8aec54fdb1a1#1 0.90 -0.11 £120.00 +invoice-obsidian_long 2:8aec54fdb1a1#2 0.94 -0.11 £120.00 +invoice-obsidian_long 2:1d363fc1d0e8 -0.03 -0.41 page3of5 +invoice-obsidian_long 3:c9046f7a37ad -0.55 0.40 description +invoice-obsidian_long 3:32e8369a9c4f -0.55 0.25 qty +invoice-obsidian_long 3:d1062d072acd -0.55 -0.25 unitprice +invoice-obsidian_long 3:a52611c9261b -0.55 -0.35 vat(20%) +invoice-obsidian_long 3:a52611c9261b#1 1.58 0.11 vat(20%) +invoice-obsidian_long 3:cf38d95c9c6b -0.55 -0.08 amount +invoice-obsidian_long 3:9399cf3b221a 0.88 0.40 expensemanagementintegration +invoice-obsidian_long 3:9399cf3b221a#1 0.91 0.40 expensemanagementintegration +invoice-obsidian_long 3:9399cf3b221a#2 0.95 0.40 expensemanagementintegration +invoice-obsidian_long 3:da2890c99f7a 0.88 0.40 apiaccessandintegration +invoice-obsidian_long 3:da2890c99f7a#1 0.91 0.40 apiaccessandintegration +invoice-obsidian_long 3:da2890c99f7a#2 0.95 0.40 apiaccessandintegration +invoice-obsidian_long 3:372ba7238228 0.84 -0.12 £200.00 +invoice-obsidian_long 3:372ba7238228#1 0.88 -0.12 £200.00 +invoice-obsidian_long 3:372ba7238228#2 0.91 -0.12 £200.00 +invoice-obsidian_long 3:05c6a4f7132f 0.84 -0.07 £40.00 +invoice-obsidian_long 3:05c6a4f7132f#1 0.88 -0.07 £40.00 +invoice-obsidian_long 3:05c6a4f7132f#2 0.91 -0.07 £40.00 +invoice-obsidian_long 3:853580239989 0.84 -0.11 £240.00 +invoice-obsidian_long 3:853580239989#1 0.88 -0.11 £240.00 +invoice-obsidian_long 3:853580239989#2 0.91 -0.11 £240.00 +invoice-obsidian_long 3:ba80be228223 0.89 0.40 virtualcards +invoice-obsidian_long 3:ba80be228223#1 0.92 0.40 virtualcards +invoice-obsidian_long 3:ba80be228223#2 0.95 0.40 virtualcards +invoice-obsidian_long 3:eae2564ef311 0.89 0.40 50virtualcards +invoice-obsidian_long 3:eae2564ef311#1 0.92 0.40 50virtualcards +invoice-obsidian_long 3:eae2564ef311#2 0.95 0.40 50virtualcards +invoice-obsidian_long 3:cf02270203a4 0.85 -0.12 £100.00 +invoice-obsidian_long 3:cf02270203a4#1 0.88 -0.12 £100.00 +invoice-obsidian_long 3:cf02270203a4#2 0.92 -0.12 £100.00 +invoice-obsidian_long 3:33b5fc913817 0.85 -0.07 £20.00 +invoice-obsidian_long 3:33b5fc913817#1 0.88 -0.07 £20.00 +invoice-obsidian_long 3:33b5fc913817#2 0.92 -0.07 £20.00 +invoice-obsidian_long 3:8aec54fdb1a1 0.85 -0.11 £120.00 +invoice-obsidian_long 3:8aec54fdb1a1#1 0.88 -0.11 £120.00 +invoice-obsidian_long 3:8aec54fdb1a1#2 0.92 -0.11 £120.00 +invoice-obsidian_long 3:cc29e90932c5 0.89 0.40 businessaccountmaintenance +invoice-obsidian_long 3:cc29e90932c5#1 0.93 0.40 businessaccountmaintenance +invoice-obsidian_long 3:cc29e90932c5#2 0.86 0.40 businessaccountmaintenance +invoice-obsidian_long 3:f1254de1a1d4 0.89 0.40 monthlyaccountmaintenancefee +invoice-obsidian_long 3:f1254de1a1d4#1 0.93 0.40 monthlyaccountmaintenancefee +invoice-obsidian_long 3:f1254de1a1d4#2 0.86 0.40 monthlyaccountmaintenancefee +invoice-obsidian_long 3:893d7480f763 0.86 -0.06 £30.00 +invoice-obsidian_long 3:893d7480f763#1 0.86 -0.07 £30.00 +invoice-obsidian_long 3:893d7480f763#2 0.89 -0.06 £30.00 +invoice-obsidian_long 3:893d7480f763#3 0.90 -0.07 £30.00 +invoice-obsidian_long 3:893d7480f763#4 0.82 -0.06 £30.00 +invoice-obsidian_long 3:8bf9ac7b27bd 0.86 0.03 £6.00 +invoice-obsidian_long 3:8bf9ac7b27bd#1 0.89 0.03 £6.00 +invoice-obsidian_long 3:8bf9ac7b27bd#2 0.82 0.03 £6.00 +invoice-obsidian_long 3:bff295cd3f97 0.86 -0.06 £36.00 +invoice-obsidian_long 3:bff295cd3f97#1 0.89 -0.06 £36.00 +invoice-obsidian_long 3:bff295cd3f97#2 0.82 -0.06 £36.00 +invoice-obsidian_long 3:15345cbad705 0.90 0.40 subscriptionsetup +invoice-obsidian_long 3:15345cbad705#1 0.93 0.40 subscriptionsetup +invoice-obsidian_long 3:5100476d46bb 0.90 0.40 one-offaccountandworkspacesetup +invoice-obsidian_long 3:5100476d46bb#1 0.93 0.40 one-offaccountandworkspacesetup +invoice-obsidian_long 3:507f9f133059 0.86 -0.12 £150.00 +invoice-obsidian_long 3:507f9f133059#1 0.90 -0.12 £150.00 +invoice-obsidian_long 3:629184210581 0.86 -0.11 £180.00 +invoice-obsidian_long 3:629184210581#1 0.90 -0.11 £180.00 +invoice-obsidian_long 3:3e8060178bc4 0.91 0.40 internationalpaymentsupport +invoice-obsidian_long 3:3e8060178bc4#1 0.94 0.40 internationalpaymentsupport +invoice-obsidian_long 3:33e4ab51097e 0.91 0.40 monthlysupportforcross-borderpay +invoice-obsidian_long 3:33e4ab51097e#1 0.94 0.40 monthlysupportforcross-borderpay +invoice-obsidian_long 3:96d6b62c061d 0.87 -0.12 £250.00 +invoice-obsidian_long 3:96d6b62c061d#1 0.90 -0.12 £250.00 +invoice-obsidian_long 3:70d5b1312085 0.87 -0.07 £50.00 +invoice-obsidian_long 3:70d5b1312085#1 0.90 -0.07 £50.00 +invoice-obsidian_long 3:d86642b21e53 0.87 -0.11 £300.00 +invoice-obsidian_long 3:d86642b21e53#1 0.90 -0.11 £300.00 +invoice-obsidian_long 3:d6577e95efba 1.61 0.11 subtotal +invoice-obsidian_long 3:4595e1b34cb1 1.60 0.68 £730.00 +invoice-obsidian_long 3:eafa82a0eadf 1.57 0.68 £146.00 +invoice-obsidian_long 3:57a66d21eb1b 1.49 0.11 totaldue +invoice-obsidian_long 3:ad3ba615a506 1.46 -0.54 £876.00 +invoice-obsidian_long 3:5c55d9b20ce6 -0.03 -0.41 page4of5 +invoice-obsidian_long 4:7c6ab37d83ef 128.58 0.08 thankyouforyourbusiness. +invoice-obsidian_long 4:a97667f07d1b 128.57 0.08 paymentisdueby10september2026. +invoice-obsidian_long 4:7d7385ecfbd9 42.63 -91.80 kestrelbusiness +invoice-obsidian_long 4:70ec69d2102f 128.57 -0.74 ar@kestrel.example +invoice-obsidian_long 4:f7e1ed1a6f15 -0.03 -0.41 page5of5 invoice-payments 0:b6c4ac412ac8 -0.02 0.10 meridian invoice-payments 0:52d6e3de4fa0 0.41 0.05 invoice invoice-payments 0:c0cc75b9cfdc -0.22 0.12 meridianpaymentsltd. @@ -4178,3 +4887,132 @@ rota-cobalt 0:4941d6993ee9 0.08 -0.01 teodor rota-cobalt 0:1d3d3d6a07bd 0.09 -0.07 vesna rota-cobalt 0:59f2ff7c7c70 0.03 0.08 timesshownin24-hourformat.shiftc rota-cobalt 0:594c41ec0506 0.03 -3.55 quaysidebar|31aug-6sep2026 +synthetic-break_in_column 0:80f18b7de78a -0.02 0.10 arowandastack,eachwithabreakinit +synthetic-break_in_column 0:72bd29a25f26 -0.02 0.10 partaofthecolumn. +synthetic-break_in_column 0:4d9a04cf2b1a -0.02 0.10 partbofthecolumn. +synthetic-break_in_column 0:1c5b34bc492e -0.02 0.10 thecolumnbesideit. +synthetic-break_in_column 0:40a383da2139 -0.02 0.10 thelayerbeforeitsbreak. +synthetic-break_in_column 0:5efa092392c8 -0.02 0.10 thelayerafteritsbreak. +synthetic-break_in_column 0:98339282c335 -0.02 0.10 aftertherowandthestack,onthesame +synthetic-break_in_panel 0:57f79615e3d4 -0.02 0.10 beforethecard,onthefirstpage. +synthetic-break_in_panel 0:c9b88ae8c81e -0.02 0.10 thecardopensonthefirstpage. +synthetic-break_in_panel 0:e52a749b231e -0.02 0.10 itssecondlinestandsunderthefirst +synthetic-break_in_panel 1:ed14c3c197e0 -5.02 0.10 afterthecard'sownbreak,ontheseco +synthetic-break_in_panel 1:5d6d2c267d13 -5.02 0.10 theinnercardopensunderit. +synthetic-break_in_panel 2:eea50dafce63 -3.02 0.10 aftertheinnercard'sbreak,ontheth +synthetic-break_in_panel 2:ba843b07ef9d -3.02 0.10 thecardclosesonthethirdpage. +synthetic-break_in_panel 2:32d8fbd7fa4f -3.02 0.10 afterthecard,onthethirdpage. +synthetic-card_over_pages 0:7d387fd21933 -0.02 0.10 thecard'stablerunsoverthreepages +synthetic-card_over_pages 0:4a33eacd5fa6 -0.02 0.60 item +synthetic-card_over_pages 0:cf38d95c9c6b -0.02 0.60 amount +synthetic-card_over_pages 0:fece7008420e -0.02 0.60 lineitem1 +synthetic-card_over_pages 0:f95919b6c4bb -0.02 0.60 lineitem2 +synthetic-card_over_pages 0:dec9b8798826 -0.02 0.60 lineitem3 +synthetic-card_over_pages 0:91a78ff5618f -0.02 0.60 lineitem4 +synthetic-card_over_pages 0:a9aa941fb986 -0.02 0.60 lineitem5 +synthetic-card_over_pages 0:1ef4f7a255de -0.02 0.60 lineitem6 +synthetic-card_over_pages 0:a18ede8f9454 -0.02 0.60 lineitem7 +synthetic-card_over_pages 0:3cabf2ee0a7c -0.02 0.60 lineitem8 +synthetic-card_over_pages 0:a2532bdb02a2 -0.02 0.60 lineitem9 +synthetic-card_over_pages 0:891effd91e9f -0.02 0.60 lineitem10 +synthetic-card_over_pages 0:c406b22e27c1 -0.02 0.60 lineitem11 +synthetic-card_over_pages 0:4c06f8f2e644 -0.02 0.60 lineitem12 +synthetic-card_over_pages 0:d5f48f23c3f3 -0.02 0.60 lineitem13 +synthetic-card_over_pages 0:d43db684ea76 -0.02 0.60 lineitem14 +synthetic-card_over_pages 0:539f277a3fac -0.02 0.60 lineitem15 +synthetic-card_over_pages 0:1253e9373e78 -0.02 0.60 105 +synthetic-card_over_pages 0:35dc66416528 -0.02 0.60 lineitem16 +synthetic-card_over_pages 0:b1556dea32e9 -0.02 0.60 112 +synthetic-card_over_pages 0:af65ac2a6cfe -0.02 0.60 lineitem17 +synthetic-card_over_pages 0:3038bfb575be -0.02 0.60 119 +synthetic-card_over_pages 0:3283f12434ce -0.02 0.60 lineitem18 +synthetic-card_over_pages 0:65a699905c02 -0.02 0.60 126 +synthetic-card_over_pages 0:942520f63b77 -0.02 0.60 lineitem19 +synthetic-card_over_pages 0:d2f483672c02 -0.02 0.60 133 +synthetic-card_over_pages 0:56f88b371f7d -0.02 0.60 lineitem20 +synthetic-card_over_pages 0:dbae772db290 -0.02 0.60 140 +synthetic-card_over_pages 0:ee83955d1bc6 -0.02 0.60 lineitem21 +synthetic-card_over_pages 0:1d28c120568c -0.02 0.60 147 +synthetic-card_over_pages 0:3d1cce339ed6 -0.02 0.60 lineitem22 +synthetic-card_over_pages 0:1d0ebea552eb -0.02 0.60 154 +synthetic-card_over_pages 0:ad5d1ff8ac0f -0.02 0.60 lineitem23 +synthetic-card_over_pages 0:bb668ca95563 -0.02 0.60 161 +synthetic-card_over_pages 0:cf161caf24a4 -0.02 0.60 lineitem24 +synthetic-card_over_pages 0:80c3cd40fa35 -0.02 0.60 168 +synthetic-card_over_pages 1:4a33eacd5fa6 0.98 0.60 item +synthetic-card_over_pages 1:cf38d95c9c6b 0.98 0.60 amount +synthetic-card_over_pages 1:dda175661944 0.98 0.60 lineitem25 +synthetic-card_over_pages 1:dac53c17c250 0.98 0.60 175 +synthetic-card_over_pages 1:d95ea709c13f 0.98 0.60 lineitem26 +synthetic-card_over_pages 1:bfa7634640c5 0.98 0.60 182 +synthetic-card_over_pages 1:a8e8aab36df7 0.98 0.60 lineitem27 +synthetic-card_over_pages 1:7045d16ae7f0 0.98 0.60 189 +synthetic-card_over_pages 1:da8c98edde51 0.98 0.60 lineitem28 +synthetic-card_over_pages 1:b4bbe448fde3 0.98 0.60 196 +synthetic-card_over_pages 1:cf6a812b7e8f 0.98 0.60 lineitem29 +synthetic-card_over_pages 1:4621c1d55fa4 0.98 0.60 203 +synthetic-card_over_pages 1:582abc0a7d63 0.98 0.60 lineitem30 +synthetic-card_over_pages 1:d29d53701d3c 0.98 0.60 210 +synthetic-card_over_pages 1:7aad2ad177d1 0.98 0.60 lineitem31 +synthetic-card_over_pages 1:16badfc6202c 0.98 0.60 217 +synthetic-card_over_pages 1:b1af4907aa59 0.98 0.60 lineitem32 +synthetic-card_over_pages 1:84a5092e4a5b 0.98 0.60 224 +synthetic-card_over_pages 1:81d484b1eecd 0.98 0.60 lineitem33 +synthetic-card_over_pages 1:138d9e809e38 0.98 0.60 231 +synthetic-card_over_pages 1:c210b73151e8 0.98 0.60 lineitem34 +synthetic-card_over_pages 1:8ae4c23b80d1 0.98 0.60 238 +synthetic-card_over_pages 1:dd5bd0d27edc 0.98 0.60 lineitem35 +synthetic-card_over_pages 1:011af72a910a 0.98 0.60 245 +synthetic-card_over_pages 1:e1b2dfccc229 0.98 0.60 lineitem36 +synthetic-card_over_pages 1:d6e5a20b30f8 0.98 0.60 252 +synthetic-card_over_pages 1:2af7064bf52f 0.98 0.60 lineitem37 +synthetic-card_over_pages 1:7c252ab334fb 0.98 0.60 259 +synthetic-card_over_pages 1:669133dc43cb 0.98 0.60 lineitem38 +synthetic-card_over_pages 1:ea5b27556fbb 0.98 0.60 266 +synthetic-card_over_pages 1:bae2bf619be0 0.98 0.60 lineitem39 +synthetic-card_over_pages 1:303c8bd55875 0.98 0.60 273 +synthetic-card_over_pages 1:46a88810fe98 0.98 0.60 lineitem40 +synthetic-card_over_pages 1:7f0a22117f8f 0.98 0.60 280 +synthetic-card_over_pages 1:b95fc486ea14 0.98 0.60 lineitem41 +synthetic-card_over_pages 1:d7cdaa5ca058 0.98 0.60 287 +synthetic-card_over_pages 1:edfbcc6438f4 0.98 0.60 lineitem42 +synthetic-card_over_pages 1:2cfc8ccbd7c0 0.98 0.60 294 +synthetic-card_over_pages 1:e9532b1a9f55 0.98 0.60 lineitem43 +synthetic-card_over_pages 1:c3ea99f86b2f 0.98 0.60 301 +synthetic-card_over_pages 1:668b766dba55 0.98 0.60 lineitem44 +synthetic-card_over_pages 1:48a1706eca5e 0.98 0.60 308 +synthetic-card_over_pages 1:2083f677b8b7 0.98 0.60 lineitem45 +synthetic-card_over_pages 1:377adeb4cd40 0.98 0.60 315 +synthetic-card_over_pages 1:9eea351236b0 0.98 0.60 lineitem46 +synthetic-card_over_pages 1:f10d91a7596b 0.98 0.60 322 +synthetic-card_over_pages 2:4a33eacd5fa6 1.08 0.60 item +synthetic-card_over_pages 2:cf38d95c9c6b 1.08 0.60 amount +synthetic-card_over_pages 2:95f6ab66531a 1.08 0.60 lineitem47 +synthetic-card_over_pages 2:0791963ca266 1.08 0.60 329 +synthetic-card_over_pages 2:3e9edc9fa454 1.08 0.60 lineitem48 +synthetic-card_over_pages 2:eaa0689a095d 1.08 0.60 336 +synthetic-card_over_pages 2:493c1ed90d39 1.08 0.60 lineitem49 +synthetic-card_over_pages 2:3c15285c04ff 1.08 0.60 343 +synthetic-card_over_pages 2:7942261cccc6 1.08 0.60 lineitem50 +synthetic-card_over_pages 2:deeeb5df3f2c 1.08 0.60 350 +synthetic-card_over_pages 2:85a2fe861930 1.08 0.60 lineitem51 +synthetic-card_over_pages 2:2ab0ce7632a6 1.08 0.60 357 +synthetic-card_over_pages 2:eae8719c99de 1.08 0.60 lineitem52 +synthetic-card_over_pages 2:b3dfdc6efe32 1.08 0.60 364 +synthetic-card_over_pages 2:694b54aa19a4 1.08 0.60 lineitem53 +synthetic-card_over_pages 2:9b15fed64ef1 1.08 0.60 371 +synthetic-card_over_pages 2:aa2c865b1902 1.08 0.60 lineitem54 +synthetic-card_over_pages 2:21ef779311a4 1.08 0.60 378 +synthetic-card_over_pages 2:c22373c64c4b 1.08 0.60 lineitem55 +synthetic-card_over_pages 2:131b0c35e2d7 1.08 0.60 385 +synthetic-card_over_pages 2:53ede553f757 1.08 0.60 lineitem56 +synthetic-card_over_pages 2:6ea2fdb3399f 1.08 0.60 392 +synthetic-card_over_pages 2:8b1eaf67d755 1.08 0.60 lineitem57 +synthetic-card_over_pages 2:0f78540965a8 1.08 0.60 399 +synthetic-card_over_pages 2:f53f297eab04 1.08 0.60 lineitem58 +synthetic-card_over_pages 2:f64f410744d9 1.08 0.60 406 +synthetic-card_over_pages 2:08db7c1e9a02 1.08 0.60 lineitem59 +synthetic-card_over_pages 2:1c49f22f6de9 1.08 0.60 413 +synthetic-card_over_pages 2:f69c59b028ea 1.08 0.60 lineitem60 +synthetic-card_over_pages 2:db55da3fc309 1.08 0.60 420 +synthetic-card_over_pages 2:8c569b972e01 1.08 0.10 afterthecard,onitslastpage. diff --git a/qa/src/test/resources/docx-fidelity/libreoffice-windows.tsv b/qa/src/test/resources/docx-fidelity/libreoffice-windows.tsv index 8cdeff00e..61faf3cd6 100644 --- a/qa/src/test/resources/docx-fidelity/libreoffice-windows.tsv +++ b/qa/src/test/resources/docx-fidelity/libreoffice-windows.tsv @@ -1,5 +1,6 @@ # libreoffice build bf6ef2662401 on windows document engine_pages editor_pages lines matched median p90 over2 +# rows of invoice-metered_long, invoice-obsidian_long, synthetic-break_in_column, synthetic-break_in_panel, synthetic-card_over_pages: libreoffice build bf6ef2662401 on windows cv-blue_banner 2 2 54 52 0.16 0.25 0 cv-boxed_sections 2 2 58 58 0.06 0.11 0 cv-centered_headline 2 2 58 56 0.12 0.29 0 @@ -34,9 +35,11 @@ invoice-luma_studio 1 1 97 97 0.17 0.46 2 invoice-luma_studio_long 3 3 192 192 0.11 0.41 2 invoice-merchant 1 2 94 90 0.06 0.15 0 invoice-metered 1 1 99 99 0.33 1.08 0 +invoice-metered_long 4 4 350 350 0.10 0.23 0 invoice-modern 1 1 54 54 0.03 0.10 0 invoice-modern_long 2 2 162 162 0.03 0.08 0 invoice-obsidian 1 1 81 81 0.33 0.89 0 +invoice-obsidian_long 5 5 375 358 0.85 0.95 4 invoice-payments 1 1 104 104 0.06 0.26 0 invoice-platform 1 1 111 111 0.31 0.39 0 invoice-subscription 1 1 81 81 0.05 0.29 0 @@ -62,3 +65,6 @@ proposal-modern 1 1 44 44 0.03 0.12 0 proposal-northline 2 2 132 132 0.13 0.42 0 receipt-modern 1 1 57 57 0.04 0.09 0 rota-cobalt 1 1 154 151 0.03 0.19 0 +synthetic-break_in_column 1 1 7 7 0.02 0.02 0 +synthetic-break_in_panel 3 3 8 8 3.02 5.02 5 +synthetic-card_over_pages 3 3 114 114 0.98 1.08 0 diff --git a/qa/src/test/resources/docx-fidelity/word-windows-lines.tsv b/qa/src/test/resources/docx-fidelity/word-windows-lines.tsv index deea2d1de..b6aef8192 100644 --- a/qa/src/test/resources/docx-fidelity/word-windows-lines.tsv +++ b/qa/src/test/resources/docx-fidelity/word-windows-lines.tsv @@ -1,4 +1,5 @@ # word 16.0 (16.0.20430) on windows — document, line, drift below the page (pt), drift right of the page (pt), letters +# rows of invoice-metered_long, invoice-obsidian_long, synthetic-break_in_column, synthetic-break_in_panel, synthetic-card_over_pages: word 16.0 (16.0.20527) on windows cv-blue_banner 0:8f1010120ed6 -0.02 -0.08 jordanrivera cv-blue_banner 0:8d7a2cca3060 0.00 -0.07 +442055551000|jordan.rivera@exam cv-blue_banner 0:b944906ed84c -0.21 -1.21 professionalsummary @@ -2834,6 +2835,356 @@ invoice-metered 0:34ea2ec3fe72 -0.34 0.00 forbillingandaccountsupport,visi invoice-metered 0:e28672d64882 0.05 0.01 northwindcloudservicesltd.isasub invoice-metered 0:985e43c2de34 0.01 0.01 120riversideway,bristol,bs16qt,u invoice-metered 0:7b14b8d2c5c4 0.11 0.11 page1of1 +invoice-metered_long 0:8a80987c409a 0.15 0.01 northwindcloud +invoice-metered_long 0:52d6e3de4fa0 0.07 0.21 invoice +invoice-metered_long 0:41305d2c2d3b -0.06 0.01 northwindcloudservicesltd. +invoice-metered_long 0:c3f5f4cc9def 0.08 0.01 120riversideway +invoice-metered_long 0:5be08c6bee4c 0.06 0.01 bristol,bs16qt +invoice-metered_long 0:2474519f77a9 0.04 0.01 unitedkingdom +invoice-metered_long 0:2474519f77a9#1 -0.05 0.05 unitedkingdom +invoice-metered_long 0:2474519f77a9#2 -0.11 0.03 unitedkingdom +invoice-metered_long 0:ec6d474a1bfc -0.06 0.01 vatid: +invoice-metered_long 0:b03c22d79b17 -0.06 0.07 gb412883027 +invoice-metered_long 0:83e16ec72a3f -0.08 0.01 phone: +invoice-metered_long 0:bff9aeb5400b -0.08 0.07 +44(0)1174962280 +invoice-metered_long 0:439961205ae6 -0.10 0.01 email: +invoice-metered_long 0:228e0a39fe6e -0.10 0.07 billing@northwind.example +invoice-metered_long 0:294ed2cfe15e -0.12 0.01 website:https://northwind.exampl +invoice-metered_long 0:6282391a4cc1 0.20 0.09 invoicenumber: +invoice-metered_long 0:0edf022238f1 0.19 0.16 inv-2026-00041882 +invoice-metered_long 0:8d05f5d55191 0.17 0.09 invoicedate: +invoice-metered_long 0:52c8b7a9ee5f 0.15 0.16 31july2026 +invoice-metered_long 0:0e0fb0fc0939 0.14 0.09 duedate: +invoice-metered_long 0:6a077b4f161e 0.13 0.16 30august2026 +invoice-metered_long 0:aa1e9c8092ab 0.11 0.09 billperiod: +invoice-metered_long 0:3e380076ca84 0.10 0.16 01jul2026–31jul2026 +invoice-metered_long 0:18e2cca1098e 0.08 0.09 paymentterms: +invoice-metered_long 0:c6af9fc633ee 0.07 0.16 net30days +invoice-metered_long 0:967e0b6ca4b9 0.18 0.09 currency: +invoice-metered_long 0:54f8e1b3fe44 0.16 0.16 gbp +invoice-metered_long 0:aeba3a7b3598 -0.25 0.05 billto +invoice-metered_long 0:45fe04dbae24 0.07 0.05 brightfutureltd. +invoice-metered_long 0:45fe04dbae24#1 0.07 0.03 brightfutureltd. +invoice-metered_long 0:65405af34bf9 0.07 0.05 45kingstreet +invoice-metered_long 0:1f8da9c4e269 0.01 0.05 manchester,m24wu +invoice-metered_long 0:1f8da9c4e269#1 -0.05 0.03 manchester,m24wu +invoice-metered_long 0:c7a9cfdd1c55 -0.09 0.05 vatid:gb987654321 +invoice-metered_long 0:725a8f5062e7 -0.25 0.03 shipto +invoice-metered_long 0:5895c7cd8d5b 0.07 0.03 warehouse7 +invoice-metered_long 0:caf76743df2d 0.01 0.03 northindustrialestate +invoice-metered_long 0:c9046f7a37ad 0.16 0.51 description +invoice-metered_long 0:9df6b026a8c6 0.16 0.50 service +invoice-metered_long 0:32e8369a9c4f 0.16 0.54 qty +invoice-metered_long 0:d1062d072acd 0.16 0.53 unitprice +invoice-metered_long 0:cf38d95c9c6b 0.16 0.51 amount +invoice-metered_long 0:f13d9c7c6f89 0.03 0.51 computeinstances +invoice-metered_long 0:f13d9c7c6f89#1 -0.05 0.51 computeinstances +invoice-metered_long 0:d08426b31521 0.01 0.51 on-demandusage +invoice-metered_long 0:d08426b31521#1 -0.04 0.51 on-demandusage +invoice-metered_long 0:05313a23f706 0.09 0.56 london(eu-west) +invoice-metered_long 0:05313a23f706#1 0.06 0.56 london(eu-west) +invoice-metered_long 0:05313a23f706#2 0.02 0.56 london(eu-west) +invoice-metered_long 0:05313a23f706#3 0.01 0.56 london(eu-west) +invoice-metered_long 0:05313a23f706#4 -0.01 0.56 london(eu-west) +invoice-metered_long 0:05313a23f706#5 0.07 0.56 london(eu-west) +invoice-metered_long 0:6e477a22f840 0.09 0.93 744hrs +invoice-metered_long 0:6e477a22f840#1 0.02 0.93 744hrs +invoice-metered_long 0:6e477a22f840#2 0.01 0.93 744hrs +invoice-metered_long 0:6e477a22f840#3 0.07 0.93 744hrs +invoice-metered_long 0:352967434b63 0.09 0.55 gbp0.0710 +invoice-metered_long 0:352967434b63#1 0.01 0.55 gbp0.0710 +invoice-metered_long 0:eec5f520909e 0.09 1.01 gbp52.82 +invoice-metered_long 0:eec5f520909e#1 0.01 1.01 gbp52.82 +invoice-metered_long 0:721ffa554e56 0.01 0.51 objectstorage +invoice-metered_long 0:721ffa554e56#1 -0.06 0.51 objectstorage +invoice-metered_long 0:df2f05798b9e -0.02 0.51 storedvolume +invoice-metered_long 0:df2f05798b9e#1 -0.09 0.51 storedvolume +invoice-metered_long 0:41542149a8a5 0.06 0.90 480gb +invoice-metered_long 0:41542149a8a5#1 -0.01 0.90 480gb +invoice-metered_long 0:2242bd7aa8ce 0.06 0.55 gbp0.0215 +invoice-metered_long 0:2242bd7aa8ce#1 -0.01 0.55 gbp0.0215 +invoice-metered_long 0:7c6be041f9c2 0.06 1.01 gbp10.32 +invoice-metered_long 0:7c6be041f9c2#1 -0.01 1.01 gbp10.32 +invoice-metered_long 0:8152fd217e12 -0.04 0.51 manageddatabase +invoice-metered_long 0:8152fd217e12#1 0.01 0.51 manageddatabase +invoice-metered_long 0:3c8556c4aa26 -0.06 0.51 primaryandreplica +invoice-metered_long 0:3c8556c4aa26#1 -0.01 0.51 primaryandreplica +invoice-metered_long 0:76afc71f5b3e 0.02 0.55 gbp0.1650 +invoice-metered_long 0:76afc71f5b3e#1 0.07 0.55 gbp0.1650 +invoice-metered_long 0:baad0db43ed6 0.02 0.63 gbp122.76 +invoice-metered_long 0:baad0db43ed6#1 0.07 0.63 gbp122.76 +invoice-metered_long 0:444858f5bf18 0.04 0.51 egresstraffic +invoice-metered_long 0:444858f5bf18#1 -0.03 0.51 egresstraffic +invoice-metered_long 0:8b72bb875a83 0.02 0.51 datatransferout +invoice-metered_long 0:8b72bb875a83#1 -0.06 0.51 datatransferout +invoice-metered_long 0:8001c2743965 0.09 0.83 global +invoice-metered_long 0:8001c2743965#1 0.05 0.83 global +invoice-metered_long 0:8001c2743965#2 0.02 0.83 global +invoice-metered_long 0:847eb4cbbb42 0.09 0.90 310gb +invoice-metered_long 0:847eb4cbbb42#1 0.02 0.90 310gb +invoice-metered_long 0:d651e46704f7 0.09 0.55 gbp0.0900 +invoice-metered_long 0:d651e46704f7#1 0.02 0.55 gbp0.0900 +invoice-metered_long 0:4ecaa7313375 0.09 1.01 gbp27.90 +invoice-metered_long 0:4ecaa7313375#1 0.02 1.01 gbp27.90 +invoice-metered_long 0:efa8771baad9 0.00 0.51 supportplan +invoice-metered_long 0:9e81cd6e653a -0.03 0.51 standardresponse +invoice-metered_long 0:a0443240c5ed 0.05 0.95 gbp0.91 +invoice-metered_long 0:a0443240c5ed#1 0.05 0.91 gbp0.91 +invoice-metered_long 0:e28672d64882 0.05 0.01 northwindcloudservicesltd.isasub +invoice-metered_long 0:985e43c2de34 0.01 0.01 120riversideway,bristol,bs16qt,u +invoice-metered_long 0:64ad186eded6 0.11 0.11 page1of4 +invoice-metered_long 1:c9046f7a37ad 0.03 0.51 description +invoice-metered_long 1:9df6b026a8c6 0.03 0.50 service +invoice-metered_long 1:32e8369a9c4f 0.03 0.54 qty +invoice-metered_long 1:d1062d072acd 0.03 0.53 unitprice +invoice-metered_long 1:cf38d95c9c6b 0.03 0.51 amount +invoice-metered_long 1:efa8771baad9 -0.10 0.51 supportplan +invoice-metered_long 1:efa8771baad9#1 -0.03 0.51 supportplan +invoice-metered_long 1:efa8771baad9#2 -0.11 0.51 supportplan +invoice-metered_long 1:efa8771baad9#3 -0.18 0.51 supportplan +invoice-metered_long 1:9e81cd6e653a -0.12 0.51 standardresponse +invoice-metered_long 1:9e81cd6e653a#1 -0.05 0.51 standardresponse +invoice-metered_long 1:9e81cd6e653a#2 -0.13 0.51 standardresponse +invoice-metered_long 1:9e81cd6e653a#3 -0.20 0.51 standardresponse +invoice-metered_long 1:8001c2743965 -0.05 0.83 global +invoice-metered_long 1:8001c2743965#1 0.04 0.83 global +invoice-metered_long 1:8001c2743965#2 0.02 0.83 global +invoice-metered_long 1:8001c2743965#3 -0.01 0.83 global +invoice-metered_long 1:8001c2743965#4 -0.05 0.83 global +invoice-metered_long 1:8001c2743965#5 -0.08 0.83 global +invoice-metered_long 1:8001c2743965#6 -0.12 0.83 global +invoice-metered_long 1:a0443240c5ed -0.05 0.95 gbp0.91 +invoice-metered_long 1:a0443240c5ed#1 -0.05 0.91 gbp0.91 +invoice-metered_long 1:a0443240c5ed#2 0.02 0.95 gbp0.91 +invoice-metered_long 1:a0443240c5ed#3 0.02 0.91 gbp0.91 +invoice-metered_long 1:a0443240c5ed#4 -0.05 0.95 gbp0.91 +invoice-metered_long 1:a0443240c5ed#5 -0.05 0.91 gbp0.91 +invoice-metered_long 1:a0443240c5ed#6 -0.12 0.95 gbp0.91 +invoice-metered_long 1:a0443240c5ed#7 -0.12 0.91 gbp0.91 +invoice-metered_long 1:f13d9c7c6f89 0.00 0.51 computeinstances +invoice-metered_long 1:f13d9c7c6f89#1 -0.07 0.51 computeinstances +invoice-metered_long 1:f13d9c7c6f89#2 -0.15 0.51 computeinstances +invoice-metered_long 1:f13d9c7c6f89#3 -0.10 0.51 computeinstances +invoice-metered_long 1:d08426b31521 -0.03 0.51 on-demandusage +invoice-metered_long 1:d08426b31521#1 -0.10 0.51 on-demandusage +invoice-metered_long 1:d08426b31521#2 -0.18 0.51 on-demandusage +invoice-metered_long 1:d08426b31521#3 -0.13 0.51 on-demandusage +invoice-metered_long 1:05313a23f706 0.05 0.56 london(eu-west) +invoice-metered_long 1:05313a23f706#1 0.01 0.56 london(eu-west) +invoice-metered_long 1:05313a23f706#2 -0.04 0.56 london(eu-west) +invoice-metered_long 1:05313a23f706#3 -0.02 0.56 london(eu-west) +invoice-metered_long 1:05313a23f706#4 -0.06 0.56 london(eu-west) +invoice-metered_long 1:05313a23f706#5 0.01 0.56 london(eu-west) +invoice-metered_long 1:05313a23f706#6 -0.10 0.56 london(eu-west) +invoice-metered_long 1:05313a23f706#7 -0.02 0.56 london(eu-west) +invoice-metered_long 1:05313a23f706#8 -0.07 0.56 london(eu-west) +invoice-metered_long 1:05313a23f706#9 -0.05 0.56 london(eu-west) +invoice-metered_long 1:05313a23f706#10 -0.10 0.56 london(eu-west) +invoice-metered_long 1:6e477a22f840 0.05 0.93 744hrs +invoice-metered_long 1:6e477a22f840#1 -0.04 0.93 744hrs +invoice-metered_long 1:6e477a22f840#2 -0.02 0.93 744hrs +invoice-metered_long 1:6e477a22f840#3 0.01 0.93 744hrs +invoice-metered_long 1:6e477a22f840#4 -0.10 0.93 744hrs +invoice-metered_long 1:6e477a22f840#5 -0.07 0.93 744hrs +invoice-metered_long 1:6e477a22f840#6 -0.05 0.93 744hrs +invoice-metered_long 1:352967434b63 0.05 0.55 gbp0.0710 +invoice-metered_long 1:352967434b63#1 -0.02 0.55 gbp0.0710 +invoice-metered_long 1:352967434b63#2 -0.10 0.55 gbp0.0710 +invoice-metered_long 1:352967434b63#3 -0.05 0.55 gbp0.0710 +invoice-metered_long 1:eec5f520909e 0.05 1.01 gbp52.82 +invoice-metered_long 1:eec5f520909e#1 -0.02 1.01 gbp52.82 +invoice-metered_long 1:eec5f520909e#2 -0.10 1.01 gbp52.82 +invoice-metered_long 1:eec5f520909e#3 -0.05 1.01 gbp52.82 +invoice-metered_long 1:721ffa554e56 -0.05 0.51 objectstorage +invoice-metered_long 1:721ffa554e56#1 -0.12 0.51 objectstorage +invoice-metered_long 1:721ffa554e56#2 -0.08 0.51 objectstorage +invoice-metered_long 1:721ffa554e56#3 -0.15 0.51 objectstorage +invoice-metered_long 1:df2f05798b9e -0.07 0.51 storedvolume +invoice-metered_long 1:df2f05798b9e#1 -0.14 0.51 storedvolume +invoice-metered_long 1:df2f05798b9e#2 -0.10 0.51 storedvolume +invoice-metered_long 1:df2f05798b9e#3 -0.17 0.51 storedvolume +invoice-metered_long 1:41542149a8a5 0.01 0.90 480gb +invoice-metered_long 1:41542149a8a5#1 -0.06 0.90 480gb +invoice-metered_long 1:41542149a8a5#2 -0.02 0.90 480gb +invoice-metered_long 1:41542149a8a5#3 -0.10 0.90 480gb +invoice-metered_long 1:2242bd7aa8ce 0.01 0.55 gbp0.0215 +invoice-metered_long 1:2242bd7aa8ce#1 -0.06 0.55 gbp0.0215 +invoice-metered_long 1:2242bd7aa8ce#2 -0.02 0.55 gbp0.0215 +invoice-metered_long 1:2242bd7aa8ce#3 -0.10 0.55 gbp0.0215 +invoice-metered_long 1:7c6be041f9c2 0.01 1.01 gbp10.32 +invoice-metered_long 1:7c6be041f9c2#1 -0.06 1.01 gbp10.32 +invoice-metered_long 1:7c6be041f9c2#2 -0.02 1.01 gbp10.32 +invoice-metered_long 1:7c6be041f9c2#3 -0.10 1.01 gbp10.32 +invoice-metered_long 1:8152fd217e12 -0.09 0.51 manageddatabase +invoice-metered_long 1:8152fd217e12#1 -0.04 0.51 manageddatabase +invoice-metered_long 1:8152fd217e12#2 -0.12 0.51 manageddatabase +invoice-metered_long 1:3c8556c4aa26 -0.11 0.51 primaryandreplica +invoice-metered_long 1:3c8556c4aa26#1 -0.06 0.51 primaryandreplica +invoice-metered_long 1:3c8556c4aa26#2 -0.14 0.51 primaryandreplica +invoice-metered_long 1:76afc71f5b3e -0.04 0.55 gbp0.1650 +invoice-metered_long 1:76afc71f5b3e#1 0.01 0.55 gbp0.1650 +invoice-metered_long 1:76afc71f5b3e#2 -0.07 0.55 gbp0.1650 +invoice-metered_long 1:baad0db43ed6 -0.04 0.63 gbp122.76 +invoice-metered_long 1:baad0db43ed6#1 0.01 0.63 gbp122.76 +invoice-metered_long 1:baad0db43ed6#2 -0.07 0.63 gbp122.76 +invoice-metered_long 1:444858f5bf18 -0.02 0.51 egresstraffic +invoice-metered_long 1:444858f5bf18#1 -0.09 0.51 egresstraffic +invoice-metered_long 1:444858f5bf18#2 -0.14 0.51 egresstraffic +invoice-metered_long 1:8b72bb875a83 -0.04 0.51 datatransferout +invoice-metered_long 1:8b72bb875a83#1 -0.09 0.51 datatransferout +invoice-metered_long 1:8b72bb875a83#2 -0.16 0.51 datatransferout +invoice-metered_long 1:847eb4cbbb42 0.04 0.90 310gb +invoice-metered_long 1:847eb4cbbb42#1 -0.01 0.90 310gb +invoice-metered_long 1:847eb4cbbb42#2 -0.08 0.90 310gb +invoice-metered_long 1:d651e46704f7 0.04 0.55 gbp0.0900 +invoice-metered_long 1:d651e46704f7#1 -0.01 0.55 gbp0.0900 +invoice-metered_long 1:d651e46704f7#2 -0.08 0.55 gbp0.0900 +invoice-metered_long 1:4ecaa7313375 0.04 1.01 gbp27.90 +invoice-metered_long 1:4ecaa7313375#1 -0.01 1.01 gbp27.90 +invoice-metered_long 1:4ecaa7313375#2 -0.08 1.01 gbp27.90 +invoice-metered_long 1:e28672d64882 0.05 0.01 northwindcloudservicesltd.isasub +invoice-metered_long 1:985e43c2de34 0.01 0.01 120riversideway,bristol,bs16qt,u +invoice-metered_long 1:247aeef709c5 0.11 0.11 page2of4 +invoice-metered_long 2:c9046f7a37ad 0.03 0.51 description +invoice-metered_long 2:9df6b026a8c6 0.03 0.50 service +invoice-metered_long 2:32e8369a9c4f 0.03 0.54 qty +invoice-metered_long 2:d1062d072acd 0.03 0.53 unitprice +invoice-metered_long 2:cf38d95c9c6b 0.03 0.51 amount +invoice-metered_long 2:8152fd217e12 -0.10 0.51 manageddatabase +invoice-metered_long 2:8152fd217e12#1 -0.03 0.51 manageddatabase +invoice-metered_long 2:8152fd217e12#2 -0.11 0.51 manageddatabase +invoice-metered_long 2:8152fd217e12#3 -0.18 0.51 manageddatabase +invoice-metered_long 2:3c8556c4aa26 -0.12 0.51 primaryandreplica +invoice-metered_long 2:3c8556c4aa26#1 -0.05 0.51 primaryandreplica +invoice-metered_long 2:3c8556c4aa26#2 -0.13 0.51 primaryandreplica +invoice-metered_long 2:3c8556c4aa26#3 -0.20 0.51 primaryandreplica +invoice-metered_long 2:05313a23f706 -0.05 0.56 london(eu-west) +invoice-metered_long 2:05313a23f706#1 -0.04 0.56 london(eu-west) +invoice-metered_long 2:05313a23f706#2 0.04 0.56 london(eu-west) +invoice-metered_long 2:05313a23f706#3 0.02 0.56 london(eu-west) +invoice-metered_long 2:05313a23f706#4 0.01 0.56 london(eu-west) +invoice-metered_long 2:05313a23f706#5 -0.01 0.56 london(eu-west) +invoice-metered_long 2:05313a23f706#6 -0.05 0.56 london(eu-west) +invoice-metered_long 2:05313a23f706#7 -0.07 0.56 london(eu-west) +invoice-metered_long 2:05313a23f706#8 -0.08 0.56 london(eu-west) +invoice-metered_long 2:05313a23f706#9 -0.12 0.56 london(eu-west) +invoice-metered_long 2:6e477a22f840 -0.05 0.93 744hrs +invoice-metered_long 2:6e477a22f840#1 -0.04 0.93 744hrs +invoice-metered_long 2:6e477a22f840#2 0.02 0.93 744hrs +invoice-metered_long 2:6e477a22f840#3 0.01 0.93 744hrs +invoice-metered_long 2:6e477a22f840#4 -0.05 0.93 744hrs +invoice-metered_long 2:6e477a22f840#5 -0.07 0.93 744hrs +invoice-metered_long 2:6e477a22f840#6 -0.12 0.93 744hrs +invoice-metered_long 2:76afc71f5b3e -0.05 0.55 gbp0.1650 +invoice-metered_long 2:76afc71f5b3e#1 0.02 0.55 gbp0.1650 +invoice-metered_long 2:76afc71f5b3e#2 -0.05 0.55 gbp0.1650 +invoice-metered_long 2:76afc71f5b3e#3 -0.12 0.55 gbp0.1650 +invoice-metered_long 2:baad0db43ed6 -0.05 0.63 gbp122.76 +invoice-metered_long 2:baad0db43ed6#1 0.02 0.63 gbp122.76 +invoice-metered_long 2:baad0db43ed6#2 -0.05 0.63 gbp122.76 +invoice-metered_long 2:baad0db43ed6#3 -0.12 0.63 gbp122.76 +invoice-metered_long 2:444858f5bf18 0.00 0.51 egresstraffic +invoice-metered_long 2:444858f5bf18#1 -0.07 0.51 egresstraffic +invoice-metered_long 2:444858f5bf18#2 -0.15 0.51 egresstraffic +invoice-metered_long 2:444858f5bf18#3 -0.10 0.51 egresstraffic +invoice-metered_long 2:8b72bb875a83 -0.03 0.51 datatransferout +invoice-metered_long 2:8b72bb875a83#1 -0.10 0.51 datatransferout +invoice-metered_long 2:8b72bb875a83#2 -0.18 0.51 datatransferout +invoice-metered_long 2:8b72bb875a83#3 -0.13 0.51 datatransferout +invoice-metered_long 2:8001c2743965 0.05 0.83 global +invoice-metered_long 2:8001c2743965#1 0.01 0.83 global +invoice-metered_long 2:8001c2743965#2 -0.02 0.83 global +invoice-metered_long 2:8001c2743965#3 -0.06 0.83 global +invoice-metered_long 2:8001c2743965#4 -0.10 0.83 global +invoice-metered_long 2:8001c2743965#5 -0.02 0.83 global +invoice-metered_long 2:8001c2743965#6 -0.05 0.83 global +invoice-metered_long 2:8001c2743965#7 -0.10 0.83 global +invoice-metered_long 2:847eb4cbbb42 0.05 0.90 310gb +invoice-metered_long 2:847eb4cbbb42#1 -0.02 0.90 310gb +invoice-metered_long 2:847eb4cbbb42#2 -0.10 0.90 310gb +invoice-metered_long 2:847eb4cbbb42#3 -0.05 0.90 310gb +invoice-metered_long 2:d651e46704f7 0.05 0.55 gbp0.0900 +invoice-metered_long 2:d651e46704f7#1 -0.02 0.55 gbp0.0900 +invoice-metered_long 2:d651e46704f7#2 -0.10 0.55 gbp0.0900 +invoice-metered_long 2:d651e46704f7#3 -0.05 0.55 gbp0.0900 +invoice-metered_long 2:4ecaa7313375 0.05 1.01 gbp27.90 +invoice-metered_long 2:4ecaa7313375#1 -0.02 1.01 gbp27.90 +invoice-metered_long 2:4ecaa7313375#2 -0.10 1.01 gbp27.90 +invoice-metered_long 2:4ecaa7313375#3 -0.05 1.01 gbp27.90 +invoice-metered_long 2:efa8771baad9 -0.05 0.51 supportplan +invoice-metered_long 2:efa8771baad9#1 -0.12 0.51 supportplan +invoice-metered_long 2:efa8771baad9#2 -0.08 0.51 supportplan +invoice-metered_long 2:efa8771baad9#3 -0.15 0.51 supportplan +invoice-metered_long 2:9e81cd6e653a -0.07 0.51 standardresponse +invoice-metered_long 2:9e81cd6e653a#1 -0.14 0.51 standardresponse +invoice-metered_long 2:9e81cd6e653a#2 -0.10 0.51 standardresponse +invoice-metered_long 2:9e81cd6e653a#3 -0.17 0.51 standardresponse +invoice-metered_long 2:a0443240c5ed 0.01 0.95 gbp0.91 +invoice-metered_long 2:a0443240c5ed#1 0.01 0.91 gbp0.91 +invoice-metered_long 2:a0443240c5ed#2 -0.06 0.95 gbp0.91 +invoice-metered_long 2:a0443240c5ed#3 -0.06 0.91 gbp0.91 +invoice-metered_long 2:a0443240c5ed#4 -0.02 0.95 gbp0.91 +invoice-metered_long 2:a0443240c5ed#5 -0.02 0.91 gbp0.91 +invoice-metered_long 2:a0443240c5ed#6 -0.10 0.95 gbp0.91 +invoice-metered_long 2:a0443240c5ed#7 -0.10 0.91 gbp0.91 +invoice-metered_long 2:f13d9c7c6f89 -0.09 0.51 computeinstances +invoice-metered_long 2:f13d9c7c6f89#1 -0.04 0.51 computeinstances +invoice-metered_long 2:f13d9c7c6f89#2 -0.12 0.51 computeinstances +invoice-metered_long 2:d08426b31521 -0.11 0.51 on-demandusage +invoice-metered_long 2:d08426b31521#1 -0.06 0.51 on-demandusage +invoice-metered_long 2:d08426b31521#2 -0.14 0.51 on-demandusage +invoice-metered_long 2:352967434b63 -0.04 0.55 gbp0.0710 +invoice-metered_long 2:352967434b63#1 0.01 0.55 gbp0.0710 +invoice-metered_long 2:352967434b63#2 -0.07 0.55 gbp0.0710 +invoice-metered_long 2:eec5f520909e -0.04 1.01 gbp52.82 +invoice-metered_long 2:eec5f520909e#1 0.01 1.01 gbp52.82 +invoice-metered_long 2:eec5f520909e#2 -0.07 1.01 gbp52.82 +invoice-metered_long 2:721ffa554e56 -0.02 0.51 objectstorage +invoice-metered_long 2:721ffa554e56#1 -0.09 0.51 objectstorage +invoice-metered_long 2:721ffa554e56#2 -0.14 0.51 objectstorage +invoice-metered_long 2:df2f05798b9e -0.04 0.51 storedvolume +invoice-metered_long 2:df2f05798b9e#1 -0.09 0.51 storedvolume +invoice-metered_long 2:df2f05798b9e#2 -0.16 0.51 storedvolume +invoice-metered_long 2:41542149a8a5 0.04 0.90 480gb +invoice-metered_long 2:41542149a8a5#1 -0.01 0.90 480gb +invoice-metered_long 2:41542149a8a5#2 -0.08 0.90 480gb +invoice-metered_long 2:2242bd7aa8ce 0.04 0.55 gbp0.0215 +invoice-metered_long 2:2242bd7aa8ce#1 -0.01 0.55 gbp0.0215 +invoice-metered_long 2:2242bd7aa8ce#2 -0.08 0.55 gbp0.0215 +invoice-metered_long 2:7c6be041f9c2 0.04 1.01 gbp10.32 +invoice-metered_long 2:7c6be041f9c2#1 -0.01 1.01 gbp10.32 +invoice-metered_long 2:7c6be041f9c2#2 -0.08 1.01 gbp10.32 +invoice-metered_long 2:e28672d64882 0.05 0.01 northwindcloudservicesltd.isasub +invoice-metered_long 2:985e43c2de34 0.01 0.01 120riversideway,bristol,bs16qt,u +invoice-metered_long 2:0babc7720082 0.11 0.11 page3of4 +invoice-metered_long 3:3c7ade679fdf -0.90 0.07 paymentdetails +invoice-metered_long 3:0ecb5847ffa7 -0.72 0.04 accountname: +invoice-metered_long 3:41305d2c2d3b -0.72 0.09 northwindcloudservicesltd. +invoice-metered_long 3:944d398aea60 -0.71 0.04 bankname: +invoice-metered_long 3:062433da3c2a -0.71 0.09 riverbankplc +invoice-metered_long 3:6b4894c28363 -0.72 0.04 accountnumber: +invoice-metered_long 3:7c068e1eded4 -0.72 0.09 60415523 +invoice-metered_long 3:4bf9e1b71d6b -0.73 0.04 sortcode: +invoice-metered_long 3:0309d81ea4af -0.73 0.09 20-41-08 +invoice-metered_long 3:1f619f9689b2 -0.74 0.04 iban: +invoice-metered_long 3:6c4b0e61038b -0.74 0.09 gb29rivb20410860415523 +invoice-metered_long 3:4f657c67e41a -0.76 0.04 accounttype: +invoice-metered_long 3:3af279547725 -0.76 0.09 businesscurrent +invoice-metered_long 3:fa0fbe194b51 -0.77 0.04 remittanceemail: +invoice-metered_long 3:228e0a39fe6e -0.77 0.09 billing@northwind.example +invoice-metered_long 3:d6577e95efba -0.01 0.07 subtotal +invoice-metered_long 3:79fabcfaa819 -0.01 0.71 gbp214.71 +invoice-metered_long 3:a52611c9261b 0.05 0.07 vat(20%) +invoice-metered_long 3:e50d8a0ea599 0.05 0.65 gbp42.94 +invoice-metered_long 3:57a66d21eb1b -0.13 0.07 totaldue +invoice-metered_long 3:f207312dff2f -0.56 0.09 gbp257.65 +invoice-metered_long 3:b0553f008513 -0.03 0.12 paymentdueby +invoice-metered_long 3:6a077b4f161e -0.39 0.12 30august2026 +invoice-metered_long 3:e60e7ef06ccc -0.08 0.00 thankyouforrunningonnorthwindclo +invoice-metered_long 3:34ea2ec3fe72 -0.12 0.00 forbillingandaccountsupport,visi +invoice-metered_long 3:e28672d64882 0.05 0.01 northwindcloudservicesltd.isasub +invoice-metered_long 3:985e43c2de34 0.01 0.01 120riversideway,bristol,bs16qt,u +invoice-metered_long 3:59299b8b095e 0.11 0.11 page4of4 invoice-modern 0:52d6e3de4fa0 0.18 0.00 invoice invoice-modern 0:30d85a94548c -0.05 0.00 invoicegc-2026-041issued02apr202 invoice-modern 0:75857a458999 0.03 -0.04 from @@ -3131,6 +3482,381 @@ invoice-obsidian 0:52367a6622b1 0.67 0.09 reference invoice-obsidian 0:7c6ab37d83ef 0.53 0.02 thankyouforyourbusiness. invoice-obsidian 0:a97667f07d1b 0.46 0.02 paymentisdueby10september2026. invoice-obsidian 0:7b14b8d2c5c4 0.10 -0.55 page1of1 +invoice-obsidian_long 0:07f15cde5b18 0.11 -0.04 kestrel +invoice-obsidian_long 0:52d6e3de4fa0 0.15 -0.04 invoice +invoice-obsidian_long 0:5d1d1b79af09 -0.01 0.11 invoicenumber +invoice-obsidian_long 0:3e62d1fbe5ec 0.06 0.11 inv-2026-1048 +invoice-obsidian_long 0:8feaf8016bab 0.08 0.11 issuedate +invoice-obsidian_long 0:4d49cb78b810 0.08 -0.06 27august2026 +invoice-obsidian_long 0:ac10f8c16320 -0.03 0.11 duedate +invoice-obsidian_long 0:b55571aaabac -0.03 -0.07 10september2026 +invoice-obsidian_long 0:fb854bac39c8 -0.04 0.11 paymentterms +invoice-obsidian_long 0:56a2e019b8aa -0.04 0.74 14days +invoice-obsidian_long 0:466e5b9cd57f -0.17 0.11 currency +invoice-obsidian_long 0:54f8e1b3fe44 -0.17 0.52 gbp +invoice-obsidian_long 0:75857a458999 -0.37 -0.02 from +invoice-obsidian_long 0:7d7385ecfbd9 -0.33 0.01 kestrelbusiness +invoice-obsidian_long 0:5f51304df361 -0.41 0.01 7harboursidewalk +invoice-obsidian_long 0:895a6b59f677 -0.44 0.01 bristolbs15ty +invoice-obsidian_long 0:2474519f77a9 -0.35 0.01 unitedkingdom +invoice-obsidian_long 0:2474519f77a9#1 -0.35 0.10 unitedkingdom +invoice-obsidian_long 0:70ec69d2102f -0.37 0.01 ar@kestrel.example +invoice-obsidian_long 0:aeba3a7b3598 -0.37 0.09 billto +invoice-obsidian_long 0:7bfc2b791f41 -0.33 0.10 northlineconsultingltd +invoice-obsidian_long 0:13dd937d2fe6 -0.41 0.10 21jubileeway +invoice-obsidian_long 0:f9bab6a0b45b -0.44 0.10 londonse13ss +invoice-obsidian_long 0:c9046f7a37ad -1.57 0.70 description +invoice-obsidian_long 0:32e8369a9c4f -1.57 0.52 qty +invoice-obsidian_long 0:d1062d072acd -1.57 0.00 unitprice +invoice-obsidian_long 0:a52611c9261b -1.57 -0.18 vat(20%) +invoice-obsidian_long 0:cf38d95c9c6b -1.57 0.16 amount +invoice-obsidian_long 0:15345cbad705 -0.14 0.70 subscriptionsetup +invoice-obsidian_long 0:15345cbad705#1 0.00 0.70 subscriptionsetup +invoice-obsidian_long 0:15345cbad705#2 0.03 0.70 subscriptionsetup +invoice-obsidian_long 0:5100476d46bb -0.04 0.70 one-offaccountandworkspacesetup +invoice-obsidian_long 0:5100476d46bb#1 -0.02 0.70 one-offaccountandworkspacesetup +invoice-obsidian_long 0:5100476d46bb#2 0.01 0.70 one-offaccountandworkspacesetup +invoice-obsidian_long 0:507f9f133059 -0.23 0.09 £150.00 +invoice-obsidian_long 0:507f9f133059#1 -0.09 0.09 £150.00 +invoice-obsidian_long 0:507f9f133059#2 -0.06 0.09 £150.00 +invoice-obsidian_long 0:893d7480f763 -0.23 0.16 £30.00 +invoice-obsidian_long 0:893d7480f763#1 -0.18 0.18 £30.00 +invoice-obsidian_long 0:893d7480f763#2 -0.09 0.16 £30.00 +invoice-obsidian_long 0:893d7480f763#3 -0.03 0.18 £30.00 +invoice-obsidian_long 0:893d7480f763#4 -0.06 0.16 £30.00 +invoice-obsidian_long 0:629184210581 -0.23 0.11 £180.00 +invoice-obsidian_long 0:629184210581#1 -0.09 0.11 £180.00 +invoice-obsidian_long 0:629184210581#2 -0.06 0.11 £180.00 +invoice-obsidian_long 0:3e8060178bc4 -0.04 0.70 internationalpaymentsupport +invoice-obsidian_long 0:3e8060178bc4#1 -0.02 0.70 internationalpaymentsupport +invoice-obsidian_long 0:33e4ab51097e -0.07 0.70 monthlysupportforcross-borderpay +invoice-obsidian_long 0:33e4ab51097e#1 -0.01 0.70 monthlysupportforcross-borderpay +invoice-obsidian_long 0:96d6b62c061d -0.13 0.09 £250.00 +invoice-obsidian_long 0:96d6b62c061d#1 -0.11 0.09 £250.00 +invoice-obsidian_long 0:70d5b1312085 -0.13 0.16 £50.00 +invoice-obsidian_long 0:70d5b1312085#1 -0.11 0.16 £50.00 +invoice-obsidian_long 0:d86642b21e53 -0.13 0.11 £300.00 +invoice-obsidian_long 0:d86642b21e53#1 -0.11 0.11 £300.00 +invoice-obsidian_long 0:9399cf3b221a -0.05 0.70 expensemanagementintegration +invoice-obsidian_long 0:9399cf3b221a#1 -0.01 0.70 expensemanagementintegration +invoice-obsidian_long 0:da2890c99f7a -0.07 0.70 apiaccessandintegration +invoice-obsidian_long 0:da2890c99f7a#1 -0.04 0.70 apiaccessandintegration +invoice-obsidian_long 0:372ba7238228 -0.14 0.09 £200.00 +invoice-obsidian_long 0:372ba7238228#1 -0.10 0.09 £200.00 +invoice-obsidian_long 0:05c6a4f7132f -0.14 0.16 £40.00 +invoice-obsidian_long 0:05c6a4f7132f#1 -0.10 0.16 £40.00 +invoice-obsidian_long 0:853580239989 -0.14 0.11 £240.00 +invoice-obsidian_long 0:853580239989#1 -0.10 0.11 £240.00 +invoice-obsidian_long 0:ba80be228223 -0.07 0.70 virtualcards +invoice-obsidian_long 0:ba80be228223#1 0.08 0.70 virtualcards +invoice-obsidian_long 0:eae2564ef311 -0.09 0.70 50virtualcards +invoice-obsidian_long 0:eae2564ef311#1 0.06 0.70 50virtualcards +invoice-obsidian_long 0:cf02270203a4 -0.16 0.09 £100.00 +invoice-obsidian_long 0:cf02270203a4#1 -0.13 0.09 £100.00 +invoice-obsidian_long 0:33b5fc913817 -0.16 0.16 £20.00 +invoice-obsidian_long 0:33b5fc913817#1 -0.13 0.16 £20.00 +invoice-obsidian_long 0:8aec54fdb1a1 -0.16 0.11 £120.00 +invoice-obsidian_long 0:8aec54fdb1a1#1 -0.13 0.11 £120.00 +invoice-obsidian_long 0:cc29e90932c5 0.03 0.70 businessaccountmaintenance +invoice-obsidian_long 0:cc29e90932c5#1 0.06 0.70 businessaccountmaintenance +invoice-obsidian_long 0:f1254de1a1d4 0.00 0.70 monthlyaccountmaintenancefee +invoice-obsidian_long 0:f1254de1a1d4#1 0.03 0.70 monthlyaccountmaintenancefee +invoice-obsidian_long 0:8bf9ac7b27bd -0.18 0.24 £6.00 +invoice-obsidian_long 0:8bf9ac7b27bd#1 -0.03 0.24 £6.00 +invoice-obsidian_long 0:bff295cd3f97 -0.18 0.19 £36.00 +invoice-obsidian_long 0:bff295cd3f97#1 -0.03 0.19 £36.00 +invoice-obsidian_long 0:b12b0c900ffa 0.10 -0.55 page1of5 +invoice-obsidian_long 1:c9046f7a37ad -0.64 0.70 description +invoice-obsidian_long 1:32e8369a9c4f -0.64 0.52 qty +invoice-obsidian_long 1:d1062d072acd -0.64 0.00 unitprice +invoice-obsidian_long 1:a52611c9261b -0.64 -0.18 vat(20%) +invoice-obsidian_long 1:cf38d95c9c6b -0.64 0.16 amount +invoice-obsidian_long 1:3e8060178bc4 0.91 0.70 internationalpaymentsupport +invoice-obsidian_long 1:3e8060178bc4#1 0.96 0.70 internationalpaymentsupport +invoice-obsidian_long 1:3e8060178bc4#2 0.99 0.70 internationalpaymentsupport +invoice-obsidian_long 1:3e8060178bc4#3 1.02 0.70 internationalpaymentsupport +invoice-obsidian_long 1:33e4ab51097e 0.91 0.70 monthlysupportforcross-borderpay +invoice-obsidian_long 1:33e4ab51097e#1 0.94 0.70 monthlysupportforcross-borderpay +invoice-obsidian_long 1:33e4ab51097e#2 0.97 0.70 monthlysupportforcross-borderpay +invoice-obsidian_long 1:33e4ab51097e#3 1.12 0.70 monthlysupportforcross-borderpay +invoice-obsidian_long 1:96d6b62c061d 0.82 0.09 £250.00 +invoice-obsidian_long 1:96d6b62c061d#1 0.88 0.09 £250.00 +invoice-obsidian_long 1:96d6b62c061d#2 0.90 0.09 £250.00 +invoice-obsidian_long 1:96d6b62c061d#3 0.93 0.09 £250.00 +invoice-obsidian_long 1:70d5b1312085 0.82 0.16 £50.00 +invoice-obsidian_long 1:70d5b1312085#1 0.88 0.16 £50.00 +invoice-obsidian_long 1:70d5b1312085#2 0.90 0.16 £50.00 +invoice-obsidian_long 1:70d5b1312085#3 0.93 0.16 £50.00 +invoice-obsidian_long 1:d86642b21e53 0.82 0.11 £300.00 +invoice-obsidian_long 1:d86642b21e53#1 0.88 0.11 £300.00 +invoice-obsidian_long 1:d86642b21e53#2 0.90 0.11 £300.00 +invoice-obsidian_long 1:d86642b21e53#3 0.93 0.11 £300.00 +invoice-obsidian_long 1:9399cf3b221a 0.91 0.70 expensemanagementintegration +invoice-obsidian_long 1:9399cf3b221a#1 0.94 0.70 expensemanagementintegration +invoice-obsidian_long 1:9399cf3b221a#2 0.96 0.70 expensemanagementintegration +invoice-obsidian_long 1:9399cf3b221a#3 1.12 0.70 expensemanagementintegration +invoice-obsidian_long 1:da2890c99f7a 0.89 0.70 apiaccessandintegration +invoice-obsidian_long 1:da2890c99f7a#1 0.92 0.70 apiaccessandintegration +invoice-obsidian_long 1:da2890c99f7a#2 1.06 0.70 apiaccessandintegration +invoice-obsidian_long 1:da2890c99f7a#3 1.10 0.70 apiaccessandintegration +invoice-obsidian_long 1:372ba7238228 0.82 0.09 £200.00 +invoice-obsidian_long 1:372ba7238228#1 0.85 0.09 £200.00 +invoice-obsidian_long 1:372ba7238228#2 0.88 0.09 £200.00 +invoice-obsidian_long 1:372ba7238228#3 1.03 0.09 £200.00 +invoice-obsidian_long 1:05c6a4f7132f 0.82 0.16 £40.00 +invoice-obsidian_long 1:05c6a4f7132f#1 0.85 0.16 £40.00 +invoice-obsidian_long 1:05c6a4f7132f#2 0.88 0.16 £40.00 +invoice-obsidian_long 1:05c6a4f7132f#3 1.03 0.16 £40.00 +invoice-obsidian_long 1:853580239989 0.82 0.11 £240.00 +invoice-obsidian_long 1:853580239989#1 0.85 0.11 £240.00 +invoice-obsidian_long 1:853580239989#2 0.88 0.11 £240.00 +invoice-obsidian_long 1:853580239989#3 1.03 0.11 £240.00 +invoice-obsidian_long 1:ba80be228223 0.88 0.70 virtualcards +invoice-obsidian_long 1:ba80be228223#1 0.92 0.70 virtualcards +invoice-obsidian_long 1:ba80be228223#2 1.06 0.70 virtualcards +invoice-obsidian_long 1:ba80be228223#3 1.09 0.70 virtualcards +invoice-obsidian_long 1:eae2564ef311 0.86 0.70 50virtualcards +invoice-obsidian_long 1:eae2564ef311#1 1.02 0.70 50virtualcards +invoice-obsidian_long 1:eae2564ef311#2 1.04 0.70 50virtualcards +invoice-obsidian_long 1:eae2564ef311#3 1.07 0.70 50virtualcards +invoice-obsidian_long 1:cf02270203a4 0.80 0.09 £100.00 +invoice-obsidian_long 1:cf02270203a4#1 0.83 0.09 £100.00 +invoice-obsidian_long 1:cf02270203a4#2 0.97 0.09 £100.00 +invoice-obsidian_long 1:cf02270203a4#3 1.00 0.09 £100.00 +invoice-obsidian_long 1:33b5fc913817 0.80 0.16 £20.00 +invoice-obsidian_long 1:33b5fc913817#1 0.83 0.16 £20.00 +invoice-obsidian_long 1:33b5fc913817#2 0.97 0.16 £20.00 +invoice-obsidian_long 1:33b5fc913817#3 1.00 0.16 £20.00 +invoice-obsidian_long 1:8aec54fdb1a1 0.80 0.11 £120.00 +invoice-obsidian_long 1:8aec54fdb1a1#1 0.83 0.11 £120.00 +invoice-obsidian_long 1:8aec54fdb1a1#2 0.97 0.11 £120.00 +invoice-obsidian_long 1:8aec54fdb1a1#3 1.00 0.11 £120.00 +invoice-obsidian_long 1:cc29e90932c5 0.86 0.70 businessaccountmaintenance +invoice-obsidian_long 1:cc29e90932c5#1 1.01 0.70 businessaccountmaintenance +invoice-obsidian_long 1:cc29e90932c5#2 1.04 0.70 businessaccountmaintenance +invoice-obsidian_long 1:f1254de1a1d4 0.96 0.70 monthlyaccountmaintenancefee +invoice-obsidian_long 1:f1254de1a1d4#1 0.99 0.70 monthlyaccountmaintenancefee +invoice-obsidian_long 1:f1254de1a1d4#2 1.02 0.70 monthlyaccountmaintenancefee +invoice-obsidian_long 1:893d7480f763 0.77 0.18 £30.00 +invoice-obsidian_long 1:893d7480f763#1 0.87 0.16 £30.00 +invoice-obsidian_long 1:893d7480f763#2 0.93 0.18 £30.00 +invoice-obsidian_long 1:893d7480f763#3 0.90 0.16 £30.00 +invoice-obsidian_long 1:893d7480f763#4 0.95 0.18 £30.00 +invoice-obsidian_long 1:893d7480f763#5 0.96 0.16 £30.00 +invoice-obsidian_long 1:8bf9ac7b27bd 0.77 0.24 £6.00 +invoice-obsidian_long 1:8bf9ac7b27bd#1 0.93 0.24 £6.00 +invoice-obsidian_long 1:8bf9ac7b27bd#2 0.95 0.24 £6.00 +invoice-obsidian_long 1:bff295cd3f97 0.77 0.19 £36.00 +invoice-obsidian_long 1:bff295cd3f97#1 0.93 0.19 £36.00 +invoice-obsidian_long 1:bff295cd3f97#2 0.95 0.19 £36.00 +invoice-obsidian_long 1:15345cbad705 0.96 0.70 subscriptionsetup +invoice-obsidian_long 1:15345cbad705#1 0.99 0.70 subscriptionsetup +invoice-obsidian_long 1:15345cbad705#2 1.04 0.70 subscriptionsetup +invoice-obsidian_long 1:5100476d46bb 0.94 0.70 one-offaccountandworkspacesetup +invoice-obsidian_long 1:5100476d46bb#1 0.99 0.70 one-offaccountandworkspacesetup +invoice-obsidian_long 1:5100476d46bb#2 1.02 0.70 one-offaccountandworkspacesetup +invoice-obsidian_long 1:507f9f133059 0.87 0.09 £150.00 +invoice-obsidian_long 1:507f9f133059#1 0.90 0.09 £150.00 +invoice-obsidian_long 1:507f9f133059#2 0.96 0.09 £150.00 +invoice-obsidian_long 1:629184210581 0.87 0.11 £180.00 +invoice-obsidian_long 1:629184210581#1 0.90 0.11 £180.00 +invoice-obsidian_long 1:629184210581#2 0.96 0.11 £180.00 +invoice-obsidian_long 1:b68afb3d911e 0.10 -0.55 page2of5 +invoice-obsidian_long 2:c9046f7a37ad -0.52 0.70 description +invoice-obsidian_long 2:32e8369a9c4f -0.52 0.52 qty +invoice-obsidian_long 2:d1062d072acd -0.52 0.00 unitprice +invoice-obsidian_long 2:a52611c9261b -0.52 -0.18 vat(20%) +invoice-obsidian_long 2:cf38d95c9c6b -0.52 0.16 amount +invoice-obsidian_long 2:cc29e90932c5 1.03 0.70 businessaccountmaintenance +invoice-obsidian_long 2:cc29e90932c5#1 1.08 0.70 businessaccountmaintenance +invoice-obsidian_long 2:cc29e90932c5#2 1.11 0.70 businessaccountmaintenance +invoice-obsidian_long 2:cc29e90932c5#3 1.14 0.70 businessaccountmaintenance +invoice-obsidian_long 2:f1254de1a1d4 1.03 0.70 monthlyaccountmaintenancefee +invoice-obsidian_long 2:f1254de1a1d4#1 1.06 0.70 monthlyaccountmaintenancefee +invoice-obsidian_long 2:f1254de1a1d4#2 1.09 0.70 monthlyaccountmaintenancefee +invoice-obsidian_long 2:f1254de1a1d4#3 1.12 0.70 monthlyaccountmaintenancefee +invoice-obsidian_long 2:893d7480f763 0.82 0.18 £30.00 +invoice-obsidian_long 2:893d7480f763#1 0.94 0.16 £30.00 +invoice-obsidian_long 2:893d7480f763#2 1.00 0.18 £30.00 +invoice-obsidian_long 2:893d7480f763#3 0.97 0.16 £30.00 +invoice-obsidian_long 2:893d7480f763#4 1.02 0.18 £30.00 +invoice-obsidian_long 2:893d7480f763#5 1.00 0.16 £30.00 +invoice-obsidian_long 2:893d7480f763#6 1.05 0.18 £30.00 +invoice-obsidian_long 2:893d7480f763#7 1.03 0.16 £30.00 +invoice-obsidian_long 2:8bf9ac7b27bd 0.82 0.24 £6.00 +invoice-obsidian_long 2:8bf9ac7b27bd#1 1.00 0.24 £6.00 +invoice-obsidian_long 2:8bf9ac7b27bd#2 1.02 0.24 £6.00 +invoice-obsidian_long 2:8bf9ac7b27bd#3 1.05 0.24 £6.00 +invoice-obsidian_long 2:bff295cd3f97 0.82 0.19 £36.00 +invoice-obsidian_long 2:bff295cd3f97#1 1.00 0.19 £36.00 +invoice-obsidian_long 2:bff295cd3f97#2 1.02 0.19 £36.00 +invoice-obsidian_long 2:bff295cd3f97#3 1.05 0.19 £36.00 +invoice-obsidian_long 2:15345cbad705 1.03 0.70 subscriptionsetup +invoice-obsidian_long 2:15345cbad705#1 1.06 0.70 subscriptionsetup +invoice-obsidian_long 2:15345cbad705#2 1.08 0.70 subscriptionsetup +invoice-obsidian_long 2:15345cbad705#3 1.24 0.70 subscriptionsetup +invoice-obsidian_long 2:5100476d46bb 1.01 0.70 one-offaccountandworkspacesetup +invoice-obsidian_long 2:5100476d46bb#1 1.04 0.70 one-offaccountandworkspacesetup +invoice-obsidian_long 2:5100476d46bb#2 1.06 0.70 one-offaccountandworkspacesetup +invoice-obsidian_long 2:5100476d46bb#3 1.22 0.70 one-offaccountandworkspacesetup +invoice-obsidian_long 2:507f9f133059 0.94 0.09 £150.00 +invoice-obsidian_long 2:507f9f133059#1 0.97 0.09 £150.00 +invoice-obsidian_long 2:507f9f133059#2 1.00 0.09 £150.00 +invoice-obsidian_long 2:507f9f133059#3 1.03 0.09 £150.00 +invoice-obsidian_long 2:629184210581 0.94 0.11 £180.00 +invoice-obsidian_long 2:629184210581#1 0.97 0.11 £180.00 +invoice-obsidian_long 2:629184210581#2 1.00 0.11 £180.00 +invoice-obsidian_long 2:629184210581#3 1.03 0.11 £180.00 +invoice-obsidian_long 2:3e8060178bc4 1.00 0.70 internationalpaymentsupport +invoice-obsidian_long 2:3e8060178bc4#1 1.04 0.70 internationalpaymentsupport +invoice-obsidian_long 2:3e8060178bc4#2 1.18 0.70 internationalpaymentsupport +invoice-obsidian_long 2:3e8060178bc4#3 1.21 0.70 internationalpaymentsupport +invoice-obsidian_long 2:33e4ab51097e 0.98 0.70 monthlysupportforcross-borderpay +invoice-obsidian_long 2:33e4ab51097e#1 1.02 0.70 monthlysupportforcross-borderpay +invoice-obsidian_long 2:33e4ab51097e#2 1.16 0.70 monthlysupportforcross-borderpay +invoice-obsidian_long 2:33e4ab51097e#3 1.19 0.70 monthlysupportforcross-borderpay +invoice-obsidian_long 2:96d6b62c061d 0.92 0.09 £250.00 +invoice-obsidian_long 2:96d6b62c061d#1 0.95 0.09 £250.00 +invoice-obsidian_long 2:96d6b62c061d#2 0.97 0.09 £250.00 +invoice-obsidian_long 2:96d6b62c061d#3 1.12 0.09 £250.00 +invoice-obsidian_long 2:70d5b1312085 0.92 0.16 £50.00 +invoice-obsidian_long 2:70d5b1312085#1 0.95 0.16 £50.00 +invoice-obsidian_long 2:70d5b1312085#2 0.97 0.16 £50.00 +invoice-obsidian_long 2:70d5b1312085#3 1.12 0.16 £50.00 +invoice-obsidian_long 2:d86642b21e53 0.92 0.11 £300.00 +invoice-obsidian_long 2:d86642b21e53#1 0.95 0.11 £300.00 +invoice-obsidian_long 2:d86642b21e53#2 0.97 0.11 £300.00 +invoice-obsidian_long 2:d86642b21e53#3 1.12 0.11 £300.00 +invoice-obsidian_long 2:9399cf3b221a 0.98 0.70 expensemanagementintegration +invoice-obsidian_long 2:9399cf3b221a#1 1.13 0.70 expensemanagementintegration +invoice-obsidian_long 2:9399cf3b221a#2 1.16 0.70 expensemanagementintegration +invoice-obsidian_long 2:da2890c99f7a 0.96 0.70 apiaccessandintegration +invoice-obsidian_long 2:da2890c99f7a#1 1.11 0.70 apiaccessandintegration +invoice-obsidian_long 2:da2890c99f7a#2 1.14 0.70 apiaccessandintegration +invoice-obsidian_long 2:372ba7238228 0.89 0.09 £200.00 +invoice-obsidian_long 2:372ba7238228#1 0.93 0.09 £200.00 +invoice-obsidian_long 2:372ba7238228#2 1.07 0.09 £200.00 +invoice-obsidian_long 2:05c6a4f7132f 0.89 0.16 £40.00 +invoice-obsidian_long 2:05c6a4f7132f#1 0.93 0.16 £40.00 +invoice-obsidian_long 2:05c6a4f7132f#2 1.07 0.16 £40.00 +invoice-obsidian_long 2:853580239989 0.89 0.11 £240.00 +invoice-obsidian_long 2:853580239989#1 0.93 0.11 £240.00 +invoice-obsidian_long 2:853580239989#2 1.07 0.11 £240.00 +invoice-obsidian_long 2:ba80be228223 1.08 0.70 virtualcards +invoice-obsidian_long 2:ba80be228223#1 1.11 0.70 virtualcards +invoice-obsidian_long 2:ba80be228223#2 1.16 0.70 virtualcards +invoice-obsidian_long 2:eae2564ef311 1.06 0.70 50virtualcards +invoice-obsidian_long 2:eae2564ef311#1 1.11 0.70 50virtualcards +invoice-obsidian_long 2:eae2564ef311#2 1.14 0.70 50virtualcards +invoice-obsidian_long 2:cf02270203a4 0.87 0.09 £100.00 +invoice-obsidian_long 2:cf02270203a4#1 1.02 0.09 £100.00 +invoice-obsidian_long 2:cf02270203a4#2 1.08 0.09 £100.00 +invoice-obsidian_long 2:33b5fc913817 0.87 0.16 £20.00 +invoice-obsidian_long 2:33b5fc913817#1 1.02 0.16 £20.00 +invoice-obsidian_long 2:33b5fc913817#2 1.08 0.16 £20.00 +invoice-obsidian_long 2:8aec54fdb1a1 0.87 0.11 £120.00 +invoice-obsidian_long 2:8aec54fdb1a1#1 1.02 0.11 £120.00 +invoice-obsidian_long 2:8aec54fdb1a1#2 1.08 0.11 £120.00 +invoice-obsidian_long 2:1d363fc1d0e8 0.10 -0.55 page3of5 +invoice-obsidian_long 3:c9046f7a37ad -0.52 0.70 description +invoice-obsidian_long 3:32e8369a9c4f -0.52 0.52 qty +invoice-obsidian_long 3:d1062d072acd -0.52 0.00 unitprice +invoice-obsidian_long 3:a52611c9261b -0.52 -0.18 vat(20%) +invoice-obsidian_long 3:a52611c9261b#1 1.74 0.09 vat(20%) +invoice-obsidian_long 3:cf38d95c9c6b -0.52 0.16 amount +invoice-obsidian_long 3:9399cf3b221a 1.03 0.70 expensemanagementintegration +invoice-obsidian_long 3:9399cf3b221a#1 1.08 0.70 expensemanagementintegration +invoice-obsidian_long 3:9399cf3b221a#2 1.11 0.70 expensemanagementintegration +invoice-obsidian_long 3:da2890c99f7a 1.03 0.70 apiaccessandintegration +invoice-obsidian_long 3:da2890c99f7a#1 1.06 0.70 apiaccessandintegration +invoice-obsidian_long 3:da2890c99f7a#2 1.09 0.70 apiaccessandintegration +invoice-obsidian_long 3:372ba7238228 0.82 0.09 £200.00 +invoice-obsidian_long 3:372ba7238228#1 1.00 0.09 £200.00 +invoice-obsidian_long 3:372ba7238228#2 1.02 0.09 £200.00 +invoice-obsidian_long 3:05c6a4f7132f 0.82 0.16 £40.00 +invoice-obsidian_long 3:05c6a4f7132f#1 1.00 0.16 £40.00 +invoice-obsidian_long 3:05c6a4f7132f#2 1.02 0.16 £40.00 +invoice-obsidian_long 3:853580239989 0.82 0.11 £240.00 +invoice-obsidian_long 3:853580239989#1 1.00 0.11 £240.00 +invoice-obsidian_long 3:853580239989#2 1.02 0.11 £240.00 +invoice-obsidian_long 3:ba80be228223 1.03 0.70 virtualcards +invoice-obsidian_long 3:ba80be228223#1 1.06 0.70 virtualcards +invoice-obsidian_long 3:ba80be228223#2 1.08 0.70 virtualcards +invoice-obsidian_long 3:eae2564ef311 1.01 0.70 50virtualcards +invoice-obsidian_long 3:eae2564ef311#1 1.04 0.70 50virtualcards +invoice-obsidian_long 3:eae2564ef311#2 1.06 0.70 50virtualcards +invoice-obsidian_long 3:cf02270203a4 0.94 0.09 £100.00 +invoice-obsidian_long 3:cf02270203a4#1 0.97 0.09 £100.00 +invoice-obsidian_long 3:cf02270203a4#2 1.00 0.09 £100.00 +invoice-obsidian_long 3:33b5fc913817 0.94 0.16 £20.00 +invoice-obsidian_long 3:33b5fc913817#1 0.97 0.16 £20.00 +invoice-obsidian_long 3:33b5fc913817#2 1.00 0.16 £20.00 +invoice-obsidian_long 3:8aec54fdb1a1 0.94 0.11 £120.00 +invoice-obsidian_long 3:8aec54fdb1a1#1 0.97 0.11 £120.00 +invoice-obsidian_long 3:8aec54fdb1a1#2 1.00 0.11 £120.00 +invoice-obsidian_long 3:cc29e90932c5 1.00 0.70 businessaccountmaintenance +invoice-obsidian_long 3:cc29e90932c5#1 1.04 0.70 businessaccountmaintenance +invoice-obsidian_long 3:cc29e90932c5#2 0.94 0.70 businessaccountmaintenance +invoice-obsidian_long 3:f1254de1a1d4 0.98 0.70 monthlyaccountmaintenancefee +invoice-obsidian_long 3:f1254de1a1d4#1 1.02 0.70 monthlyaccountmaintenancefee +invoice-obsidian_long 3:f1254de1a1d4#2 1.04 0.70 monthlyaccountmaintenancefee +invoice-obsidian_long 3:893d7480f763 0.92 0.18 £30.00 +invoice-obsidian_long 3:893d7480f763#1 0.89 0.16 £30.00 +invoice-obsidian_long 3:893d7480f763#2 0.95 0.18 £30.00 +invoice-obsidian_long 3:893d7480f763#3 0.93 0.16 £30.00 +invoice-obsidian_long 3:893d7480f763#4 0.85 0.18 £30.00 +invoice-obsidian_long 3:8bf9ac7b27bd 0.92 0.24 £6.00 +invoice-obsidian_long 3:8bf9ac7b27bd#1 0.95 0.24 £6.00 +invoice-obsidian_long 3:8bf9ac7b27bd#2 0.85 0.24 £6.00 +invoice-obsidian_long 3:bff295cd3f97 0.92 0.19 £36.00 +invoice-obsidian_long 3:bff295cd3f97#1 0.95 0.19 £36.00 +invoice-obsidian_long 3:bff295cd3f97#2 0.85 0.19 £36.00 +invoice-obsidian_long 3:15345cbad705 0.98 0.70 subscriptionsetup +invoice-obsidian_long 3:15345cbad705#1 1.13 0.70 subscriptionsetup +invoice-obsidian_long 3:5100476d46bb 0.96 0.70 one-offaccountandworkspacesetup +invoice-obsidian_long 3:5100476d46bb#1 1.11 0.70 one-offaccountandworkspacesetup +invoice-obsidian_long 3:507f9f133059 0.89 0.09 £150.00 +invoice-obsidian_long 3:507f9f133059#1 0.93 0.09 £150.00 +invoice-obsidian_long 3:629184210581 0.89 0.11 £180.00 +invoice-obsidian_long 3:629184210581#1 0.93 0.11 £180.00 +invoice-obsidian_long 3:3e8060178bc4 1.08 0.70 internationalpaymentsupport +invoice-obsidian_long 3:3e8060178bc4#1 1.11 0.70 internationalpaymentsupport +invoice-obsidian_long 3:33e4ab51097e 1.06 0.70 monthlysupportforcross-borderpay +invoice-obsidian_long 3:33e4ab51097e#1 1.11 0.70 monthlysupportforcross-borderpay +invoice-obsidian_long 3:96d6b62c061d 0.87 0.09 £250.00 +invoice-obsidian_long 3:96d6b62c061d#1 1.02 0.09 £250.00 +invoice-obsidian_long 3:70d5b1312085 0.87 0.16 £50.00 +invoice-obsidian_long 3:70d5b1312085#1 1.02 0.16 £50.00 +invoice-obsidian_long 3:d86642b21e53 0.87 0.11 £300.00 +invoice-obsidian_long 3:d86642b21e53#1 1.02 0.11 £300.00 +invoice-obsidian_long 3:d6577e95efba 1.69 0.09 subtotal +invoice-obsidian_long 3:4595e1b34cb1 1.64 0.53 £730.00 +invoice-obsidian_long 3:eafa82a0eadf 1.68 0.53 £146.00 +invoice-obsidian_long 3:57a66d21eb1b 1.66 0.09 totaldue +invoice-obsidian_long 3:ad3ba615a506 1.64 -0.66 £876.00 +invoice-obsidian_long 3:ab5aa97074c4 1.87 0.01 notes +invoice-obsidian_long 3:0956d8d0441d 1.72 0.01 thankyouforchoosingkestrelbusine +invoice-obsidian_long 3:0b4d6f0e8783 1.74 0.01 thisinvoicecoversservicesandfeat +invoice-obsidian_long 3:02e483554647 1.77 0.01 toyourbusinessasofthedateofissue +invoice-obsidian_long 3:b439106fc5a1 1.79 0.01 ifyouhaveanyquestionsaboutthisin +invoice-obsidian_long 3:877ac656a147 1.82 0.01 pleasecontactusatar@kestrel.exam +invoice-obsidian_long 3:3c7ade679fdf 1.87 0.09 paymentdetails +invoice-obsidian_long 3:473fbeedb47c 1.80 0.09 pleasepaybybanktransfer +invoice-obsidian_long 3:59f2b74175d7 1.78 0.09 totheaccountbelow. +invoice-obsidian_long 3:811f691f5582 1.84 0.09 payee +invoice-obsidian_long 3:7d7385ecfbd9 1.78 0.06 kestrelbusiness +invoice-obsidian_long 3:10aeacde20ff 1.88 0.09 sortcode +invoice-obsidian_long 3:a748c443f622 1.81 0.06 04-00-75 +invoice-obsidian_long 3:f92a9c925024 1.79 0.09 accountnumber +invoice-obsidian_long 3:ef797c8118f0 1.72 0.06 12345678 +invoice-obsidian_long 3:52367a6622b1 1.82 0.09 reference +invoice-obsidian_long 3:3e62d1fbe5ec 1.75 0.06 inv-2026-1048 +invoice-obsidian_long 3:5c55d9b20ce6 0.10 -0.55 page4of5 +invoice-obsidian_long 4:7c6ab37d83ef 0.00 0.02 thankyouforyourbusiness. +invoice-obsidian_long 4:a97667f07d1b -0.07 0.02 paymentisdueby10september2026. +invoice-obsidian_long 4:7d7385ecfbd9 -0.02 -0.59 kestrelbusiness +invoice-obsidian_long 4:70ec69d2102f -0.09 -0.77 ar@kestrel.example +invoice-obsidian_long 4:f7e1ed1a6f15 0.10 -0.55 page5of5 invoice-payments 0:b6c4ac412ac8 0.00 -0.03 meridian invoice-payments 0:52d6e3de4fa0 0.05 0.12 invoice invoice-payments 0:c0cc75b9cfdc -0.19 0.06 meridianpaymentsltd. @@ -4281,3 +5007,132 @@ rota-cobalt 0:4941d6993ee9 0.16 0.29 teodor rota-cobalt 0:1d3d3d6a07bd 0.18 0.32 vesna rota-cobalt 0:59f2ff7c7c70 0.08 -0.06 timesshownin24-hourformat.shiftc rota-cobalt 0:594c41ec0506 0.08 -3.62 quaysidebar|31aug-6sep2026 +synthetic-break_in_column 0:80f18b7de78a -0.01 0.02 arowandastack,eachwithabreakinit +synthetic-break_in_column 0:72bd29a25f26 0.03 0.02 partaofthecolumn. +synthetic-break_in_column 0:4d9a04cf2b1a -0.05 0.02 partbofthecolumn. +synthetic-break_in_column 0:1c5b34bc492e 0.03 0.11 thecolumnbesideit. +synthetic-break_in_column 0:40a383da2139 -0.01 0.02 thelayerbeforeitsbreak. +synthetic-break_in_column 0:5efa092392c8 0.03 0.02 thelayerafteritsbreak. +synthetic-break_in_column 0:98339282c335 -0.02 0.02 aftertherowandthestack,onthesame +synthetic-break_in_panel 0:57f79615e3d4 -0.01 0.02 beforethecard,onthefirstpage. +synthetic-break_in_panel 0:c9b88ae8c81e -0.05 0.06 thecardopensonthefirstpage. +synthetic-break_in_panel 0:e52a749b231e -0.05 0.06 itssecondlinestandsunderthefirst +synthetic-break_in_panel 1:ed14c3c197e0 0.95 0.06 afterthecard'sownbreak,ontheseco +synthetic-break_in_panel 1:5d6d2c267d13 0.95 0.06 theinnercardopensunderit. +synthetic-break_in_panel 2:eea50dafce63 0.91 0.06 aftertheinnercard'sbreak,ontheth +synthetic-break_in_panel 2:ba843b07ef9d 1.03 0.06 thecardclosesonthethirdpage. +synthetic-break_in_panel 2:32d8fbd7fa4f 0.99 0.02 afterthecard,onthethirdpage. +synthetic-card_over_pages 0:7d387fd21933 -0.03 0.00 thecard'stablerunsoverthreepages +synthetic-card_over_pages 0:4a33eacd5fa6 0.03 0.58 item +synthetic-card_over_pages 0:cf38d95c9c6b 0.03 -36.37 amount +synthetic-card_over_pages 0:fece7008420e -0.05 0.58 lineitem1 +synthetic-card_over_pages 0:f95919b6c4bb -0.01 0.58 lineitem2 +synthetic-card_over_pages 0:dec9b8798826 0.03 0.58 lineitem3 +synthetic-card_over_pages 0:91a78ff5618f -0.05 0.58 lineitem4 +synthetic-card_over_pages 0:a9aa941fb986 0.02 0.58 lineitem5 +synthetic-card_over_pages 0:1ef4f7a255de 0.06 0.58 lineitem6 +synthetic-card_over_pages 0:a18ede8f9454 -0.02 0.58 lineitem7 +synthetic-card_over_pages 0:3cabf2ee0a7c 0.02 0.58 lineitem8 +synthetic-card_over_pages 0:a2532bdb02a2 0.06 0.58 lineitem9 +synthetic-card_over_pages 0:891effd91e9f -0.02 0.58 lineitem10 +synthetic-card_over_pages 0:c406b22e27c1 0.04 0.58 lineitem11 +synthetic-card_over_pages 0:4c06f8f2e644 0.08 0.58 lineitem12 +synthetic-card_over_pages 0:d5f48f23c3f3 0.00 0.58 lineitem13 +synthetic-card_over_pages 0:d43db684ea76 0.04 0.58 lineitem14 +synthetic-card_over_pages 0:539f277a3fac 0.08 0.58 lineitem15 +synthetic-card_over_pages 0:1253e9373e78 0.08 -36.37 105 +synthetic-card_over_pages 0:35dc66416528 0.00 0.58 lineitem16 +synthetic-card_over_pages 0:b1556dea32e9 0.00 -36.37 112 +synthetic-card_over_pages 0:af65ac2a6cfe 0.07 0.58 lineitem17 +synthetic-card_over_pages 0:3038bfb575be 0.07 -36.37 119 +synthetic-card_over_pages 0:3283f12434ce 0.11 0.58 lineitem18 +synthetic-card_over_pages 0:65a699905c02 0.11 -36.37 126 +synthetic-card_over_pages 0:942520f63b77 0.03 0.58 lineitem19 +synthetic-card_over_pages 0:d2f483672c02 0.03 -36.37 133 +synthetic-card_over_pages 0:56f88b371f7d 0.07 0.58 lineitem20 +synthetic-card_over_pages 0:dbae772db290 0.07 -36.37 140 +synthetic-card_over_pages 0:ee83955d1bc6 0.11 0.58 lineitem21 +synthetic-card_over_pages 0:1d28c120568c 0.11 -36.37 147 +synthetic-card_over_pages 0:3d1cce339ed6 0.05 0.58 lineitem22 +synthetic-card_over_pages 0:1d0ebea552eb 0.05 -36.37 154 +synthetic-card_over_pages 0:ad5d1ff8ac0f 0.09 0.58 lineitem23 +synthetic-card_over_pages 0:bb668ca95563 0.09 -36.37 161 +synthetic-card_over_pages 0:cf161caf24a4 0.13 0.58 lineitem24 +synthetic-card_over_pages 0:80c3cd40fa35 0.13 -36.37 168 +synthetic-card_over_pages 1:4a33eacd5fa6 1.03 0.58 item +synthetic-card_over_pages 1:cf38d95c9c6b 1.03 -36.37 amount +synthetic-card_over_pages 1:dda175661944 0.95 0.58 lineitem25 +synthetic-card_over_pages 1:dac53c17c250 0.95 -36.37 175 +synthetic-card_over_pages 1:d95ea709c13f 0.99 0.58 lineitem26 +synthetic-card_over_pages 1:bfa7634640c5 0.99 -36.37 182 +synthetic-card_over_pages 1:a8e8aab36df7 1.03 0.58 lineitem27 +synthetic-card_over_pages 1:7045d16ae7f0 1.03 -36.37 189 +synthetic-card_over_pages 1:da8c98edde51 0.98 0.58 lineitem28 +synthetic-card_over_pages 1:b4bbe448fde3 0.98 -36.37 196 +synthetic-card_over_pages 1:cf6a812b7e8f 1.02 0.58 lineitem29 +synthetic-card_over_pages 1:4621c1d55fa4 1.02 -36.37 203 +synthetic-card_over_pages 1:582abc0a7d63 1.06 0.58 lineitem30 +synthetic-card_over_pages 1:d29d53701d3c 1.06 -36.37 210 +synthetic-card_over_pages 1:7aad2ad177d1 0.98 0.58 lineitem31 +synthetic-card_over_pages 1:16badfc6202c 0.98 -36.37 217 +synthetic-card_over_pages 1:b1af4907aa59 1.02 0.58 lineitem32 +synthetic-card_over_pages 1:84a5092e4a5b 1.02 -36.37 224 +synthetic-card_over_pages 1:81d484b1eecd 1.08 0.58 lineitem33 +synthetic-card_over_pages 1:138d9e809e38 1.08 -36.37 231 +synthetic-card_over_pages 1:c210b73151e8 1.00 0.58 lineitem34 +synthetic-card_over_pages 1:8ae4c23b80d1 1.00 -36.37 238 +synthetic-card_over_pages 1:dd5bd0d27edc 1.04 0.58 lineitem35 +synthetic-card_over_pages 1:011af72a910a 1.04 -36.37 245 +synthetic-card_over_pages 1:e1b2dfccc229 1.08 0.58 lineitem36 +synthetic-card_over_pages 1:d6e5a20b30f8 1.08 -36.37 252 +synthetic-card_over_pages 1:2af7064bf52f 1.00 0.58 lineitem37 +synthetic-card_over_pages 1:7c252ab334fb 1.00 -36.37 259 +synthetic-card_over_pages 1:669133dc43cb 1.04 0.58 lineitem38 +synthetic-card_over_pages 1:ea5b27556fbb 1.04 -36.37 266 +synthetic-card_over_pages 1:bae2bf619be0 1.11 0.58 lineitem39 +synthetic-card_over_pages 1:303c8bd55875 1.11 -36.37 273 +synthetic-card_over_pages 1:46a88810fe98 1.03 0.58 lineitem40 +synthetic-card_over_pages 1:7f0a22117f8f 1.03 -36.37 280 +synthetic-card_over_pages 1:b95fc486ea14 1.07 0.58 lineitem41 +synthetic-card_over_pages 1:d7cdaa5ca058 1.07 -36.37 287 +synthetic-card_over_pages 1:edfbcc6438f4 1.11 0.58 lineitem42 +synthetic-card_over_pages 1:2cfc8ccbd7c0 1.11 -36.37 294 +synthetic-card_over_pages 1:e9532b1a9f55 1.03 0.58 lineitem43 +synthetic-card_over_pages 1:c3ea99f86b2f 1.03 -36.37 301 +synthetic-card_over_pages 1:668b766dba55 1.07 0.58 lineitem44 +synthetic-card_over_pages 1:48a1706eca5e 1.07 -36.37 308 +synthetic-card_over_pages 1:2083f677b8b7 1.13 0.58 lineitem45 +synthetic-card_over_pages 1:377adeb4cd40 1.13 -36.37 315 +synthetic-card_over_pages 1:9eea351236b0 1.05 0.58 lineitem46 +synthetic-card_over_pages 1:f10d91a7596b 1.05 -36.37 322 +synthetic-card_over_pages 2:4a33eacd5fa6 1.15 0.58 item +synthetic-card_over_pages 2:cf38d95c9c6b 1.15 -36.37 amount +synthetic-card_over_pages 2:95f6ab66531a 1.07 0.58 lineitem47 +synthetic-card_over_pages 2:0791963ca266 1.07 -36.37 329 +synthetic-card_over_pages 2:3e9edc9fa454 1.11 0.58 lineitem48 +synthetic-card_over_pages 2:eaa0689a095d 1.11 -36.37 336 +synthetic-card_over_pages 2:493c1ed90d39 1.15 0.58 lineitem49 +synthetic-card_over_pages 2:3c15285c04ff 1.15 -36.37 343 +synthetic-card_over_pages 2:7942261cccc6 1.10 0.58 lineitem50 +synthetic-card_over_pages 2:deeeb5df3f2c 1.10 -36.37 350 +synthetic-card_over_pages 2:85a2fe861930 1.14 0.58 lineitem51 +synthetic-card_over_pages 2:2ab0ce7632a6 1.14 -36.37 357 +synthetic-card_over_pages 2:eae8719c99de 1.18 0.58 lineitem52 +synthetic-card_over_pages 2:b3dfdc6efe32 1.18 -36.37 364 +synthetic-card_over_pages 2:694b54aa19a4 1.10 0.58 lineitem53 +synthetic-card_over_pages 2:9b15fed64ef1 1.10 -36.37 371 +synthetic-card_over_pages 2:aa2c865b1902 1.14 0.58 lineitem54 +synthetic-card_over_pages 2:21ef779311a4 1.14 -36.37 378 +synthetic-card_over_pages 2:c22373c64c4b 1.20 0.58 lineitem55 +synthetic-card_over_pages 2:131b0c35e2d7 1.20 -36.37 385 +synthetic-card_over_pages 2:53ede553f757 1.12 0.58 lineitem56 +synthetic-card_over_pages 2:6ea2fdb3399f 1.12 -36.37 392 +synthetic-card_over_pages 2:8b1eaf67d755 1.16 0.58 lineitem57 +synthetic-card_over_pages 2:0f78540965a8 1.16 -36.37 399 +synthetic-card_over_pages 2:f53f297eab04 1.20 0.58 lineitem58 +synthetic-card_over_pages 2:f64f410744d9 1.20 -36.37 406 +synthetic-card_over_pages 2:08db7c1e9a02 1.12 0.58 lineitem59 +synthetic-card_over_pages 2:1c49f22f6de9 1.12 -36.37 413 +synthetic-card_over_pages 2:f69c59b028ea 1.16 0.58 lineitem60 +synthetic-card_over_pages 2:db55da3fc309 1.16 -36.37 420 +synthetic-card_over_pages 2:8c569b972e01 1.11 0.00 afterthecard,onitslastpage. diff --git a/qa/src/test/resources/docx-fidelity/word-windows.tsv b/qa/src/test/resources/docx-fidelity/word-windows.tsv index fb2f0990f..21232840a 100644 --- a/qa/src/test/resources/docx-fidelity/word-windows.tsv +++ b/qa/src/test/resources/docx-fidelity/word-windows.tsv @@ -1,5 +1,6 @@ # word 16.0 (16.0.20430) on windows document engine_pages editor_pages lines matched median p90 over2 +# rows of invoice-metered_long, invoice-obsidian_long, synthetic-break_in_column, synthetic-break_in_panel, synthetic-card_over_pages: word 16.0 (16.0.20527) on windows cv-blue_banner 2 2 54 52 0.10 0.23 0 cv-boxed_sections 2 2 58 58 0.12 0.21 0 cv-centered_headline 2 2 58 56 0.12 0.25 0 @@ -34,9 +35,11 @@ invoice-luma_studio 1 1 97 97 0.11 0.36 0 invoice-luma_studio_long 3 3 192 192 0.16 0.37 0 invoice-merchant 1 1 94 94 0.11 0.20 0 invoice-metered 1 1 99 99 0.22 0.93 0 +invoice-metered_long 4 4 350 350 0.06 0.16 0 invoice-modern 1 1 54 54 0.05 0.12 0 invoice-modern_long 2 2 162 162 0.04 0.10 0 invoice-obsidian 1 1 81 81 0.33 0.73 0 +invoice-obsidian_long 5 5 375 375 0.94 1.14 0 invoice-payments 1 1 104 104 0.09 0.36 0 invoice-platform 1 1 111 111 0.19 0.35 0 invoice-subscription 1 1 81 81 0.09 0.36 0 @@ -62,3 +65,6 @@ proposal-modern 1 1 44 44 0.07 0.16 0 proposal-northline 2 2 132 132 0.13 0.28 0 receipt-modern 1 1 57 57 0.11 0.21 0 rota-cobalt 1 1 154 154 0.14 0.26 0 +synthetic-break_in_column 1 1 7 7 0.03 0.03 0 +synthetic-break_in_panel 3 3 8 8 0.95 0.99 0 +synthetic-card_over_pages 3 3 114 114 1.03 1.15 0 From 1a0f593616aa88f7c0dcfda533c971075756bee7 Mon Sep 17 00:00:00 2001 From: DemchaAV Date: Sun, 25 Oct 2026 22:53:11 +0000 Subject: [PATCH 2/3] test(qa): take the new documents' rows into the Linux LibreOffice fidelity baseline The five documents' rows come from the pull request's first CI run, in which the DOCX Fidelity job failed on them alone, each not yet in the baseline. LibreOffice 24.2 sets each on the pages the PDF does; the two long invoices' line items stand high page after page, as the presets' long tables do, and their last pages, where the page break after the cards and the gap above the closing row are, within 0.8pt. The fixture's Javadoc says what the bordered card's spacing limit looks like when a change tips it there; CONTRIBUTING says a preset on a longer fixture stays in its family's corpus class; the Word fidelity script's synopsis names the synthetic documents. --- CHANGELOG.md | 24 +- CONTRIBUTING.md | 4 +- .../fidelity/SyntheticDocxCorpus.java | 4 +- .../docx-fidelity/libreoffice-linux-lines.tsv | 839 ++++++++++++++++++ .../docx-fidelity/libreoffice-linux.tsv | 6 + scripts/docx-visual/word-fidelity.ps1 | 7 +- 6 files changed, 869 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 726be6026..ffec7f2d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4244,15 +4244,21 @@ follow semantic versioning; release dates are ISO 8601. `MeteredInvoice` with them repeated 9 times, the gap above its closing row carried onto page 4. - Measured in Word 16, every line of all five stands on the page the PDF sets it on, nine in - ten within 1.2pt of it. Word sets the amounts of the bordered card's table 36.4pt left, the - table's first column narrower than its grid, which LibreOffice keeps. In LibreOffice 24.2 and - 26.8 the parts of the card after its explicit breaks stand 3 to 5pt high. LibreOffice 26.8 on - Windows carries `ObsidianInvoice`'s info cards to page 5, 17 lines, where Word and LibreOffice - 24.2, CI's, keep them on page 4, as it did before the page break after them was fixed; its - baseline holds that as it stands. - - The Word and Windows LibreOffice baselines take the five documents' rows alone; the presets' - rows stay as recorded. The tests holding `ObsidianInvoice` and `MeteredInvoice` with their line - items repeated take the corpus's helper for that. + ten within 1.2pt of it down. Across, Word sets the amounts of the bordered card's table 36.4pt + left, the table's first column narrower than its grid, which LibreOffice keeps. In + LibreOffice 24.2 and 26.8 the parts of the card after its explicit breaks stand 3 to 5pt high. + LibreOffice 24.2, CI's, sets each on the pages the PDF does; it sets the line items of the + two long invoices high, more so page after page (`ObsidianInvoice`'s up to 10pt, + `MeteredInvoice`'s by a median of 52 and 87pt on its second and third pages, 16 of its lines + on another page), as it does the presets' + long tables, and holds their last pages, which carry the page break after the cards and the + gap above the closing row, within 0.8pt. LibreOffice + 26.8 on Windows carries `ObsidianInvoice`'s info cards to page 5, 17 lines, where Word and + LibreOffice 24.2 keep them on page 4, as it did before the page break after them was fixed; + its baseline holds that as it stands. + - Each baseline takes the five documents' rows alone, from the run of its editor — Linux's from + CI's; the presets' rows stay as recorded. The tests holding `ObsidianInvoice` and + `MeteredInvoice` with their line items repeated take the corpus's helper for that. - **The DOCX field ledger names what a session hands an export beside the tree.** Every part of `SemanticExportContext` and of the `LayoutGraph` it carries has a fate, and a part with diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7192a2a06..f9d51616c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -356,8 +356,8 @@ Choose the smallest tests that match the change: A change that moves documents nearer the page rewrites the baseline with `-Dgraphcompose.docxFidelity.update=true`, and commits it with the change: its diff shows which documents moved. A new preset joins the corpus in its family's `*DocxCorpus` class, - and a shape no preset has — a page break inside a panel, a card run over pages — in - `SyntheticDocxCorpus`. + and so does a preset on a longer fixture; a shape no preset has — a page break inside a + panel, a card run over pages — goes in `SyntheticDocxCorpus`. CI runs it on Linux (the `DOCX Fidelity` job) against `libreoffice-linux.tsv`, and uploads what it measured: LibreOffice sets text a little differently per platform, so a change that moves documents nearer the page takes that artifact's files as the Linux baseline, and its own diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/SyntheticDocxCorpus.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/SyntheticDocxCorpus.java index 272bcc867..e37ad7b57 100644 --- a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/SyntheticDocxCorpus.java +++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/SyntheticDocxCorpus.java @@ -95,7 +95,9 @@ private static void breakInAColumn(DocumentSession session) { * *

Spaced so that page 1's rows leave room under them for the paragraph that ends a Word * section at the cut, as gaps of 2 to 6pt and 12 to 16pt do: at 8 or 10pt the export names - * page 2's margins instead, and both editors set page 2 with page 1's.

+ * page 2's margins instead, and both editors set page 2 with page 1's. A change to a table's + * metrics can move page 1's last row into that case: the gate then fails this document with + * every line of page 2 about 53pt high, which a re-spaced fixture answers, not the change.

*/ private static void cardOverPages(DocumentSession session) { session.pageSize(400, 600).margin(MARGIN); diff --git a/qa/src/test/resources/docx-fidelity/libreoffice-linux-lines.tsv b/qa/src/test/resources/docx-fidelity/libreoffice-linux-lines.tsv index 0a4076c43..5d236505f 100644 --- a/qa/src/test/resources/docx-fidelity/libreoffice-linux-lines.tsv +++ b/qa/src/test/resources/docx-fidelity/libreoffice-linux-lines.tsv @@ -1,4 +1,5 @@ # libreoffice build 420(Build:2) on linux — document, line, drift below the page (pt), drift right of the page (pt), letters +# rows of invoice-metered_long, invoice-obsidian_long, synthetic-break_in_column, synthetic-break_in_panel, synthetic-card_over_pages: libreoffice build 420(Build:2) on linux cv-blue_banner 0:8f1010120ed6 0.02 1.90 jordanrivera cv-blue_banner 0:8d7a2cca3060 0.00 0.14 +442055551000|jordan.rivera@exam cv-blue_banner 0:b944906ed84c -0.20 -0.38 professionalsummary @@ -2837,6 +2838,340 @@ invoice-metered 0:34ea2ec3fe72 -10.26 0.10 forbillingandaccountsupport,visi invoice-metered 0:e28672d64882 -0.04 0.12 northwindcloudservicesltd.isasub invoice-metered 0:985e43c2de34 -0.04 0.12 120riversideway,bristol,bs16qt,u invoice-metered 0:7b14b8d2c5c4 -0.04 0.16 page1of1 +invoice-metered_long 0:8a80987c409a 0.08 0.12 northwindcloud +invoice-metered_long 0:52d6e3de4fa0 0.05 0.26 invoice +invoice-metered_long 0:41305d2c2d3b 0.01 0.12 northwindcloudservicesltd. +invoice-metered_long 0:c3f5f4cc9def 0.02 0.12 120riversideway +invoice-metered_long 0:5be08c6bee4c 0.01 0.12 bristol,bs16qt +invoice-metered_long 0:2474519f77a9 0.00 0.12 unitedkingdom +invoice-metered_long 0:2474519f77a9#1 -0.07 0.13 unitedkingdom +invoice-metered_long 0:2474519f77a9#2 -0.11 0.06 unitedkingdom +invoice-metered_long 0:ec6d474a1bfc -0.01 0.12 vatid: +invoice-metered_long 0:b03c22d79b17 -0.01 0.06 gb412883027 +invoice-metered_long 0:83e16ec72a3f -0.03 0.12 phone: +invoice-metered_long 0:bff9aeb5400b -0.03 0.06 +44(0)1174962280 +invoice-metered_long 0:439961205ae6 -0.05 0.12 email: +invoice-metered_long 0:228e0a39fe6e -0.05 0.06 billing@northwind.example +invoice-metered_long 0:294ed2cfe15e -0.06 0.12 website:https://northwind.exampl +invoice-metered_long 0:6282391a4cc1 0.12 0.11 invoicenumber: +invoice-metered_long 0:0edf022238f1 0.18 0.08 inv-2026-00041882 +invoice-metered_long 0:8d05f5d55191 0.10 0.11 invoicedate: +invoice-metered_long 0:52c8b7a9ee5f 0.11 0.08 31july2026 +invoice-metered_long 0:0e0fb0fc0939 0.10 0.11 duedate: +invoice-metered_long 0:6a077b4f161e 0.11 0.08 30august2026 +invoice-metered_long 0:aa1e9c8092ab 0.10 0.11 billperiod: +invoice-metered_long 0:3e380076ca84 0.11 0.08 01jul2026–31jul2026 +invoice-metered_long 0:18e2cca1098e 0.11 0.11 paymentterms: +invoice-metered_long 0:c6af9fc633ee 0.11 0.08 net30days +invoice-metered_long 0:967e0b6ca4b9 0.11 0.11 currency: +invoice-metered_long 0:54f8e1b3fe44 0.11 0.08 gbp +invoice-metered_long 0:aeba3a7b3598 -0.24 0.13 billto +invoice-metered_long 0:45fe04dbae24 0.00 0.13 brightfutureltd. +invoice-metered_long 0:45fe04dbae24#1 0.00 0.06 brightfutureltd. +invoice-metered_long 0:65405af34bf9 0.01 0.13 45kingstreet +invoice-metered_long 0:1f8da9c4e269 -0.03 0.13 manchester,m24wu +invoice-metered_long 0:1f8da9c4e269#1 -0.07 0.06 manchester,m24wu +invoice-metered_long 0:c7a9cfdd1c55 -0.11 0.13 vatid:gb987654321 +invoice-metered_long 0:725a8f5062e7 -0.24 0.06 shipto +invoice-metered_long 0:5895c7cd8d5b 0.01 0.06 warehouse7 +invoice-metered_long 0:caf76743df2d -0.03 0.06 northindustrialestate +invoice-metered_long 0:c9046f7a37ad 0.03 0.58 description +invoice-metered_long 0:9df6b026a8c6 0.03 0.61 service +invoice-metered_long 0:32e8369a9c4f 0.03 0.61 qty +invoice-metered_long 0:d1062d072acd 0.03 0.64 unitprice +invoice-metered_long 0:cf38d95c9c6b 0.03 0.62 amount +invoice-metered_long 0:f13d9c7c6f89 -1.01 0.58 computeinstances +invoice-metered_long 0:f13d9c7c6f89#1 -10.83 0.58 computeinstances +invoice-metered_long 0:d08426b31521 -0.99 0.58 on-demandusage +invoice-metered_long 0:d08426b31521#1 -10.81 0.58 on-demandusage +invoice-metered_long 0:05313a23f706 -0.95 0.66 london(eu-west) +invoice-metered_long 0:05313a23f706#1 -2.92 0.66 london(eu-west) +invoice-metered_long 0:05313a23f706#2 -4.88 0.66 london(eu-west) +invoice-metered_long 0:05313a23f706#3 -10.77 0.66 london(eu-west) +invoice-metered_long 0:05313a23f706#4 -12.74 0.66 london(eu-west) +invoice-metered_long 0:05313a23f706#5 -14.70 0.66 london(eu-west) +invoice-metered_long 0:6e477a22f840 -0.95 0.98 744hrs +invoice-metered_long 0:6e477a22f840#1 -4.88 0.98 744hrs +invoice-metered_long 0:6e477a22f840#2 -10.77 0.98 744hrs +invoice-metered_long 0:6e477a22f840#3 -14.70 0.98 744hrs +invoice-metered_long 0:352967434b63 -0.95 0.72 gbp0.0710 +invoice-metered_long 0:352967434b63#1 -10.77 0.72 gbp0.0710 +invoice-metered_long 0:eec5f520909e -0.95 1.11 gbp52.82 +invoice-metered_long 0:eec5f520909e#1 -10.77 1.11 gbp52.82 +invoice-metered_long 0:721ffa554e56 -2.97 0.58 objectstorage +invoice-metered_long 0:721ffa554e56#1 -12.79 0.58 objectstorage +invoice-metered_long 0:df2f05798b9e -2.95 0.58 storedvolume +invoice-metered_long 0:df2f05798b9e#1 -12.77 0.58 storedvolume +invoice-metered_long 0:41542149a8a5 -2.92 0.93 480gb +invoice-metered_long 0:41542149a8a5#1 -12.74 0.93 480gb +invoice-metered_long 0:2242bd7aa8ce -2.92 0.72 gbp0.0215 +invoice-metered_long 0:2242bd7aa8ce#1 -12.74 0.72 gbp0.0215 +invoice-metered_long 0:7c6be041f9c2 -2.92 1.11 gbp10.32 +invoice-metered_long 0:7c6be041f9c2#1 -12.74 1.11 gbp10.32 +invoice-metered_long 0:8152fd217e12 -4.94 0.58 manageddatabase +invoice-metered_long 0:8152fd217e12#1 -14.76 0.58 manageddatabase +invoice-metered_long 0:3c8556c4aa26 -4.92 0.58 primaryandreplica +invoice-metered_long 0:3c8556c4aa26#1 -14.74 0.58 primaryandreplica +invoice-metered_long 0:76afc71f5b3e -4.88 0.72 gbp0.1650 +invoice-metered_long 0:76afc71f5b3e#1 -14.70 0.72 gbp0.1650 +invoice-metered_long 0:baad0db43ed6 -4.88 0.74 gbp122.76 +invoice-metered_long 0:baad0db43ed6#1 -14.70 0.74 gbp122.76 +invoice-metered_long 0:444858f5bf18 -6.90 0.58 egresstraffic +invoice-metered_long 0:444858f5bf18#1 -16.72 0.58 egresstraffic +invoice-metered_long 0:8b72bb875a83 -6.88 0.58 datatransferout +invoice-metered_long 0:8b72bb875a83#1 -16.70 0.58 datatransferout +invoice-metered_long 0:8001c2743965 -6.85 0.92 global +invoice-metered_long 0:8001c2743965#1 -8.81 0.92 global +invoice-metered_long 0:8001c2743965#2 -16.67 0.92 global +invoice-metered_long 0:847eb4cbbb42 -6.85 0.93 310gb +invoice-metered_long 0:847eb4cbbb42#1 -16.67 0.93 310gb +invoice-metered_long 0:d651e46704f7 -6.85 0.72 gbp0.0900 +invoice-metered_long 0:d651e46704f7#1 -16.67 0.72 gbp0.0900 +invoice-metered_long 0:4ecaa7313375 -6.85 1.11 gbp27.90 +invoice-metered_long 0:4ecaa7313375#1 -16.67 1.11 gbp27.90 +invoice-metered_long 0:efa8771baad9 -8.86 0.58 supportplan +invoice-metered_long 0:9e81cd6e653a -8.85 0.58 standardresponse +invoice-metered_long 0:a0443240c5ed -8.81 1.01 gbp0.91 +invoice-metered_long 0:a0443240c5ed#1 -8.81 1.03 gbp0.91 +invoice-metered_long 0:e28672d64882 -0.04 0.12 northwindcloudservicesltd.isasub +invoice-metered_long 0:985e43c2de34 -0.04 0.12 120riversideway,bristol,bs16qt,u +invoice-metered_long 0:64ad186eded6 -0.04 0.16 page1of4 +invoice-metered_long 1:c9046f7a37ad 0.04 0.58 description +invoice-metered_long 1:9df6b026a8c6 0.04 0.61 service +invoice-metered_long 1:32e8369a9c4f 0.04 0.61 qty +invoice-metered_long 1:d1062d072acd 0.04 0.64 unitprice +invoice-metered_long 1:cf38d95c9c6b 0.04 0.62 amount +invoice-metered_long 1:efa8771baad9#1 -49.82 0.58 supportplan +invoice-metered_long 1:efa8771baad9#2 -59.64 0.58 supportplan +invoice-metered_long 1:efa8771baad9#3 -69.46 0.58 supportplan +invoice-metered_long 1:9e81cd6e653a#1 -49.80 0.58 standardresponse +invoice-metered_long 1:9e81cd6e653a#2 -59.62 0.58 standardresponse +invoice-metered_long 1:9e81cd6e653a#3 -69.44 0.58 standardresponse +invoice-metered_long 1:8001c2743965 311.06 0.92 global +invoice-metered_long 1:8001c2743965#1 -8.80 0.92 global +invoice-metered_long 1:8001c2743965#2 -88.76 0.92 global +invoice-metered_long 1:8001c2743965#3 -18.62 0.92 global +invoice-metered_long 1:8001c2743965#4 96.42 0.92 global +invoice-metered_long 1:8001c2743965#5 -28.44 0.92 global +invoice-metered_long 1:8001c2743965#6 86.70 0.92 global +invoice-metered_long 1:a0443240c5ed#2 -49.76 1.01 gbp0.91 +invoice-metered_long 1:a0443240c5ed#3 -49.76 1.03 gbp0.91 +invoice-metered_long 1:a0443240c5ed#4 -59.58 1.01 gbp0.91 +invoice-metered_long 1:a0443240c5ed#5 -59.58 1.03 gbp0.91 +invoice-metered_long 1:a0443240c5ed#6 -69.40 1.01 gbp0.91 +invoice-metered_long 1:a0443240c5ed#7 -69.40 1.03 gbp0.91 +invoice-metered_long 1:f13d9c7c6f89 -41.96 0.58 computeinstances +invoice-metered_long 1:f13d9c7c6f89#1 -51.78 0.58 computeinstances +invoice-metered_long 1:f13d9c7c6f89#2 -61.60 0.58 computeinstances +invoice-metered_long 1:f13d9c7c6f89#3 -71.42 0.58 computeinstances +invoice-metered_long 1:d08426b31521 -41.95 0.58 on-demandusage +invoice-metered_long 1:d08426b31521#1 -51.77 0.58 on-demandusage +invoice-metered_long 1:d08426b31521#2 -61.59 0.58 on-demandusage +invoice-metered_long 1:d08426b31521#3 -71.41 0.58 on-demandusage +invoice-metered_long 1:05313a23f706 -2.91 0.66 london(eu-west) +invoice-metered_long 1:05313a23f706#1 -4.87 0.66 london(eu-west) +invoice-metered_long 1:05313a23f706#2 71.16 0.66 london(eu-west) +invoice-metered_long 1:05313a23f706#3 -12.73 0.66 london(eu-west) +invoice-metered_long 1:05313a23f706#4 -14.69 0.66 london(eu-west) +invoice-metered_long 1:05313a23f706#5 61.34 0.66 london(eu-west) +invoice-metered_long 1:05313a23f706#6 16.45 0.66 london(eu-west) +invoice-metered_long 1:05313a23f706#7 -63.51 0.66 london(eu-west) +invoice-metered_long 1:05313a23f706#8 51.52 0.66 london(eu-west) +invoice-metered_long 1:05313a23f706#9 6.63 0.66 london(eu-west) +invoice-metered_long 1:05313a23f706#10 -73.33 0.66 london(eu-west) +invoice-metered_long 1:6e477a22f840 36.09 0.98 744hrs +invoice-metered_long 1:6e477a22f840#1 71.16 0.98 744hrs +invoice-metered_long 1:6e477a22f840#2 26.27 0.98 744hrs +invoice-metered_long 1:6e477a22f840#3 61.34 0.98 744hrs +invoice-metered_long 1:6e477a22f840#4 16.45 0.98 744hrs +invoice-metered_long 1:6e477a22f840#5 51.52 0.98 744hrs +invoice-metered_long 1:6e477a22f840#6 6.63 0.98 744hrs +invoice-metered_long 1:352967434b63 -41.91 0.72 gbp0.0710 +invoice-metered_long 1:352967434b63#1 -51.73 0.72 gbp0.0710 +invoice-metered_long 1:352967434b63#2 -61.55 0.72 gbp0.0710 +invoice-metered_long 1:352967434b63#3 -71.37 0.72 gbp0.0710 +invoice-metered_long 1:eec5f520909e -41.91 1.11 gbp52.82 +invoice-metered_long 1:eec5f520909e#1 -51.73 1.11 gbp52.82 +invoice-metered_long 1:eec5f520909e#2 -61.55 1.11 gbp52.82 +invoice-metered_long 1:eec5f520909e#3 -71.37 1.11 gbp52.82 +invoice-metered_long 1:721ffa554e56 -43.93 0.58 objectstorage +invoice-metered_long 1:721ffa554e56#1 -53.75 0.58 objectstorage +invoice-metered_long 1:721ffa554e56#2 -63.57 0.58 objectstorage +invoice-metered_long 1:721ffa554e56#3 -73.39 0.58 objectstorage +invoice-metered_long 1:df2f05798b9e -43.91 0.58 storedvolume +invoice-metered_long 1:df2f05798b9e#1 -53.73 0.58 storedvolume +invoice-metered_long 1:df2f05798b9e#2 -63.55 0.58 storedvolume +invoice-metered_long 1:df2f05798b9e#3 -73.37 0.58 storedvolume +invoice-metered_long 1:41542149a8a5 -43.87 0.93 480gb +invoice-metered_long 1:41542149a8a5#1 -53.69 0.93 480gb +invoice-metered_long 1:41542149a8a5#2 -63.51 0.93 480gb +invoice-metered_long 1:41542149a8a5#3 -73.33 0.93 480gb +invoice-metered_long 1:2242bd7aa8ce -43.87 0.72 gbp0.0215 +invoice-metered_long 1:2242bd7aa8ce#1 -53.69 0.72 gbp0.0215 +invoice-metered_long 1:2242bd7aa8ce#2 -63.51 0.72 gbp0.0215 +invoice-metered_long 1:2242bd7aa8ce#3 -73.33 0.72 gbp0.0215 +invoice-metered_long 1:7c6be041f9c2 -43.87 1.11 gbp10.32 +invoice-metered_long 1:7c6be041f9c2#1 -53.69 1.11 gbp10.32 +invoice-metered_long 1:7c6be041f9c2#2 -63.51 1.11 gbp10.32 +invoice-metered_long 1:7c6be041f9c2#3 -73.33 1.11 gbp10.32 +invoice-metered_long 1:8152fd217e12 -45.89 0.58 manageddatabase +invoice-metered_long 1:8152fd217e12#1 -55.71 0.58 manageddatabase +invoice-metered_long 1:8152fd217e12#2 -65.53 0.58 manageddatabase +invoice-metered_long 1:3c8556c4aa26 -45.87 0.58 primaryandreplica +invoice-metered_long 1:3c8556c4aa26#1 -55.69 0.58 primaryandreplica +invoice-metered_long 1:3c8556c4aa26#2 -65.51 0.58 primaryandreplica +invoice-metered_long 1:76afc71f5b3e -45.84 0.72 gbp0.1650 +invoice-metered_long 1:76afc71f5b3e#1 -55.66 0.72 gbp0.1650 +invoice-metered_long 1:76afc71f5b3e#2 -65.48 0.72 gbp0.1650 +invoice-metered_long 1:baad0db43ed6 -45.84 0.74 gbp122.76 +invoice-metered_long 1:baad0db43ed6#1 -55.66 0.74 gbp122.76 +invoice-metered_long 1:baad0db43ed6#2 -65.48 0.74 gbp122.76 +invoice-metered_long 1:444858f5bf18 -47.85 0.58 egresstraffic +invoice-metered_long 1:444858f5bf18#1 -57.67 0.58 egresstraffic +invoice-metered_long 1:444858f5bf18#2 -67.49 0.58 egresstraffic +invoice-metered_long 1:8b72bb875a83 -47.84 0.58 datatransferout +invoice-metered_long 1:8b72bb875a83#1 -57.66 0.58 datatransferout +invoice-metered_long 1:8b72bb875a83#2 -67.48 0.58 datatransferout +invoice-metered_long 1:847eb4cbbb42 -47.80 0.93 310gb +invoice-metered_long 1:847eb4cbbb42#1 -57.62 0.93 310gb +invoice-metered_long 1:847eb4cbbb42#2 -67.44 0.93 310gb +invoice-metered_long 1:d651e46704f7 -47.80 0.72 gbp0.0900 +invoice-metered_long 1:d651e46704f7#1 -57.62 0.72 gbp0.0900 +invoice-metered_long 1:d651e46704f7#2 -67.44 0.72 gbp0.0900 +invoice-metered_long 1:4ecaa7313375 -47.80 1.11 gbp27.90 +invoice-metered_long 1:4ecaa7313375#1 -57.62 1.11 gbp27.90 +invoice-metered_long 1:4ecaa7313375#2 -67.44 1.11 gbp27.90 +invoice-metered_long 1:e28672d64882 -0.04 0.12 northwindcloudservicesltd.isasub +invoice-metered_long 1:985e43c2de34 -0.04 0.12 120riversideway,bristol,bs16qt,u +invoice-metered_long 1:247aeef709c5 -0.04 0.16 page2of4 +invoice-metered_long 2:c9046f7a37ad 0.04 0.58 description +invoice-metered_long 2:9df6b026a8c6 0.04 0.61 service +invoice-metered_long 2:32e8369a9c4f 0.04 0.61 qty +invoice-metered_long 2:d1062d072acd 0.04 0.64 unitprice +invoice-metered_long 2:cf38d95c9c6b 0.04 0.62 amount +invoice-metered_long 2:8152fd217e12#1 -88.82 0.58 manageddatabase +invoice-metered_long 2:8152fd217e12#2 96.36 0.58 manageddatabase +invoice-metered_long 2:8152fd217e12#3 -303.46 0.58 manageddatabase +invoice-metered_long 2:3c8556c4aa26#1 -88.80 0.58 primaryandreplica +invoice-metered_long 2:3c8556c4aa26#2 96.38 0.58 primaryandreplica +invoice-metered_long 2:3c8556c4aa26#3 -303.44 0.58 primaryandreplica +invoice-metered_long 2:05313a23f706 38.06 0.66 london(eu-west) +invoice-metered_long 2:05313a23f706#1 -6.84 0.66 london(eu-west) +invoice-metered_long 2:05313a23f706#2 -86.80 0.66 london(eu-west) +invoice-metered_long 2:05313a23f706#3 28.24 0.66 london(eu-west) +invoice-metered_long 2:05313a23f706#4 -16.66 0.66 london(eu-west) +invoice-metered_long 2:05313a23f706#5 -96.62 0.66 london(eu-west) +invoice-metered_long 2:05313a23f706#6 18.42 0.66 london(eu-west) +invoice-metered_long 2:05313a23f706#7 -26.48 0.66 london(eu-west) +invoice-metered_long 2:05313a23f706#8 -106.44 0.66 london(eu-west) +invoice-metered_long 2:6e477a22f840 38.06 0.98 744hrs +invoice-metered_long 2:6e477a22f840#1 -6.84 0.98 744hrs +invoice-metered_long 2:6e477a22f840#2 28.24 0.98 744hrs +invoice-metered_long 2:6e477a22f840#3 -16.66 0.98 744hrs +invoice-metered_long 2:6e477a22f840#4 18.42 0.98 744hrs +invoice-metered_long 2:6e477a22f840#5 -26.48 0.98 744hrs +invoice-metered_long 2:76afc71f5b3e#1 -88.76 0.72 gbp0.1650 +invoice-metered_long 2:76afc71f5b3e#2 96.42 0.72 gbp0.1650 +invoice-metered_long 2:76afc71f5b3e#3 -303.40 0.72 gbp0.1650 +invoice-metered_long 2:baad0db43ed6#1 -88.76 0.74 gbp122.76 +invoice-metered_long 2:baad0db43ed6#2 96.42 0.74 gbp122.76 +invoice-metered_long 2:baad0db43ed6#3 -303.40 0.74 gbp122.76 +invoice-metered_long 2:444858f5bf18#1 -90.78 0.58 egresstraffic +invoice-metered_long 2:444858f5bf18#2 94.40 0.58 egresstraffic +invoice-metered_long 2:444858f5bf18#3 -305.42 0.58 egresstraffic +invoice-metered_long 2:8b72bb875a83#1 -90.77 0.58 datatransferout +invoice-metered_long 2:8b72bb875a83#2 94.41 0.58 datatransferout +invoice-metered_long 2:8b72bb875a83#3 -305.41 0.58 datatransferout +invoice-metered_long 2:8001c2743965 -41.91 0.92 global +invoice-metered_long 2:8001c2743965#1 73.13 0.92 global +invoice-metered_long 2:8001c2743965#2 -51.73 0.92 global +invoice-metered_long 2:8001c2743965#3 63.31 0.92 global +invoice-metered_long 2:8001c2743965#4 -61.55 0.92 global +invoice-metered_long 2:8001c2743965#5 53.49 0.92 global +invoice-metered_long 2:8001c2743965#6 -71.37 0.92 global +invoice-metered_long 2:847eb4cbbb42#1 -90.73 0.93 310gb +invoice-metered_long 2:847eb4cbbb42#2 94.45 0.93 310gb +invoice-metered_long 2:847eb4cbbb42#3 -305.37 0.93 310gb +invoice-metered_long 2:d651e46704f7#1 -90.73 0.72 gbp0.0900 +invoice-metered_long 2:d651e46704f7#2 94.45 0.72 gbp0.0900 +invoice-metered_long 2:d651e46704f7#3 -305.37 0.72 gbp0.0900 +invoice-metered_long 2:4ecaa7313375#1 -90.73 1.11 gbp27.90 +invoice-metered_long 2:4ecaa7313375#2 94.45 1.11 gbp27.90 +invoice-metered_long 2:4ecaa7313375#3 -305.37 1.11 gbp27.90 +invoice-metered_long 2:efa8771baad9 -82.93 0.58 supportplan +invoice-metered_long 2:efa8771baad9#1 -92.75 0.58 supportplan +invoice-metered_long 2:efa8771baad9#2 92.43 0.58 supportplan +invoice-metered_long 2:efa8771baad9#3 -307.39 0.58 supportplan +invoice-metered_long 2:9e81cd6e653a -82.91 0.58 standardresponse +invoice-metered_long 2:9e81cd6e653a#1 -92.73 0.58 standardresponse +invoice-metered_long 2:9e81cd6e653a#2 92.45 0.58 standardresponse +invoice-metered_long 2:9e81cd6e653a#3 -307.37 0.58 standardresponse +invoice-metered_long 2:a0443240c5ed -82.87 1.01 gbp0.91 +invoice-metered_long 2:a0443240c5ed#1 -82.87 1.03 gbp0.91 +invoice-metered_long 2:a0443240c5ed#2 -92.69 1.01 gbp0.91 +invoice-metered_long 2:a0443240c5ed#3 -92.69 1.03 gbp0.91 +invoice-metered_long 2:a0443240c5ed#4 92.49 1.01 gbp0.91 +invoice-metered_long 2:a0443240c5ed#5 92.49 1.03 gbp0.91 +invoice-metered_long 2:a0443240c5ed#6 -307.33 1.01 gbp0.91 +invoice-metered_long 2:a0443240c5ed#7 -307.33 1.03 gbp0.91 +invoice-metered_long 2:f13d9c7c6f89 -84.89 0.58 computeinstances +invoice-metered_long 2:f13d9c7c6f89#1 -94.71 0.58 computeinstances +invoice-metered_long 2:f13d9c7c6f89#2 -104.53 0.58 computeinstances +invoice-metered_long 2:d08426b31521 -84.87 0.58 on-demandusage +invoice-metered_long 2:d08426b31521#1 -94.69 0.58 on-demandusage +invoice-metered_long 2:d08426b31521#2 -104.51 0.58 on-demandusage +invoice-metered_long 2:352967434b63 -84.84 0.72 gbp0.0710 +invoice-metered_long 2:352967434b63#1 -94.66 0.72 gbp0.0710 +invoice-metered_long 2:352967434b63#2 -104.48 0.72 gbp0.0710 +invoice-metered_long 2:eec5f520909e -84.84 1.11 gbp52.82 +invoice-metered_long 2:eec5f520909e#1 -94.66 1.11 gbp52.82 +invoice-metered_long 2:eec5f520909e#2 -104.48 1.11 gbp52.82 +invoice-metered_long 2:721ffa554e56 -86.85 0.58 objectstorage +invoice-metered_long 2:721ffa554e56#1 -96.67 0.58 objectstorage +invoice-metered_long 2:721ffa554e56#2 -106.49 0.58 objectstorage +invoice-metered_long 2:df2f05798b9e -86.84 0.58 storedvolume +invoice-metered_long 2:df2f05798b9e#1 -96.66 0.58 storedvolume +invoice-metered_long 2:df2f05798b9e#2 -106.48 0.58 storedvolume +invoice-metered_long 2:41542149a8a5 -86.80 0.93 480gb +invoice-metered_long 2:41542149a8a5#1 -96.62 0.93 480gb +invoice-metered_long 2:41542149a8a5#2 -106.44 0.93 480gb +invoice-metered_long 2:2242bd7aa8ce -86.80 0.72 gbp0.0215 +invoice-metered_long 2:2242bd7aa8ce#1 -96.62 0.72 gbp0.0215 +invoice-metered_long 2:2242bd7aa8ce#2 -106.44 0.72 gbp0.0215 +invoice-metered_long 2:7c6be041f9c2 -86.80 1.11 gbp10.32 +invoice-metered_long 2:7c6be041f9c2#1 -96.62 1.11 gbp10.32 +invoice-metered_long 2:7c6be041f9c2#2 -106.44 1.11 gbp10.32 +invoice-metered_long 2:e28672d64882 -0.04 0.12 northwindcloudservicesltd.isasub +invoice-metered_long 2:985e43c2de34 -0.04 0.12 120riversideway,bristol,bs16qt,u +invoice-metered_long 2:0babc7720082 -0.04 0.16 page3of4 +invoice-metered_long 3:3c7ade679fdf -0.76 0.08 paymentdetails +invoice-metered_long 3:0ecb5847ffa7 -0.52 0.12 accountname: +invoice-metered_long 3:41305d2c2d3b -0.52 0.07 northwindcloudservicesltd. +invoice-metered_long 3:944d398aea60 -0.54 0.12 bankname: +invoice-metered_long 3:062433da3c2a -0.54 0.07 riverbankplc +invoice-metered_long 3:6b4894c28363 -0.56 0.12 accountnumber: +invoice-metered_long 3:7c068e1eded4 -0.56 0.07 60415523 +invoice-metered_long 3:4bf9e1b71d6b -0.58 0.12 sortcode: +invoice-metered_long 3:0309d81ea4af -0.58 0.07 20-41-08 +invoice-metered_long 3:1f619f9689b2 -0.60 0.12 iban: +invoice-metered_long 3:6c4b0e61038b -0.60 0.07 gb29rivb20410860415523 +invoice-metered_long 3:4f657c67e41a -0.62 0.12 accounttype: +invoice-metered_long 3:3af279547725 -0.62 0.07 businesscurrent +invoice-metered_long 3:fa0fbe194b51 -0.65 0.12 remittanceemail: +invoice-metered_long 3:228e0a39fe6e -0.65 0.07 billing@northwind.example +invoice-metered_long 3:d6577e95efba 0.02 0.14 subtotal +invoice-metered_long 3:79fabcfaa819 0.02 0.73 gbp214.71 +invoice-metered_long 3:a52611c9261b -0.01 0.14 vat(20%) +invoice-metered_long 3:e50d8a0ea599 -0.01 0.70 gbp42.94 +invoice-metered_long 3:57a66d21eb1b -0.14 0.14 totaldue +invoice-metered_long 3:f207312dff2f -0.51 -0.05 gbp257.65 +invoice-metered_long 3:b0553f008513 -0.10 0.11 paymentdueby +invoice-metered_long 3:6a077b4f161e -0.41 0.11 30august2026 +invoice-metered_long 3:e60e7ef06ccc -0.11 0.10 thankyouforrunningonnorthwindclo +invoice-metered_long 3:34ea2ec3fe72 -0.17 0.10 forbillingandaccountsupport,visi +invoice-metered_long 3:e28672d64882 -0.04 0.12 northwindcloudservicesltd.isasub +invoice-metered_long 3:985e43c2de34 -0.04 0.12 120riversideway,bristol,bs16qt,u +invoice-metered_long 3:59299b8b095e -0.04 0.16 page4of4 invoice-modern 0:52d6e3de4fa0 0.00 16.10 invoice invoice-modern 0:30d85a94548c 0.00 16.10 invoicegc-2026-041issued02apr202 invoice-modern 0:75857a458999 0.00 0.10 from @@ -3134,6 +3469,381 @@ invoice-obsidian 0:52367a6622b1 -0.25 0.11 reference invoice-obsidian 0:7c6ab37d83ef -0.32 0.08 thankyouforyourbusiness. invoice-obsidian 0:a97667f07d1b -0.33 0.08 paymentisdueby10september2026. invoice-obsidian 0:7b14b8d2c5c4 -0.03 -0.51 page1of1 +invoice-obsidian_long 0:07f15cde5b18 0.14 0.09 kestrel +invoice-obsidian_long 0:52d6e3de4fa0 0.12 0.09 invoice +invoice-obsidian_long 0:5d1d1b79af09 0.02 0.09 invoicenumber +invoice-obsidian_long 0:3e62d1fbe5ec 0.06 0.09 inv-2026-1048 +invoice-obsidian_long 0:8feaf8016bab 0.02 0.09 issuedate +invoice-obsidian_long 0:4d49cb78b810 0.02 0.11 27august2026 +invoice-obsidian_long 0:ac10f8c16320 -0.05 0.09 duedate +invoice-obsidian_long 0:b55571aaabac -0.05 0.13 10september2026 +invoice-obsidian_long 0:fb854bac39c8 -0.12 0.09 paymentterms +invoice-obsidian_long 0:56a2e019b8aa -0.12 0.79 14days +invoice-obsidian_long 0:466e5b9cd57f -0.19 0.09 currency +invoice-obsidian_long 0:54f8e1b3fe44 -0.19 0.49 gbp +invoice-obsidian_long 0:75857a458999 -0.36 0.10 from +invoice-obsidian_long 0:7d7385ecfbd9 -0.39 0.07 kestrelbusiness +invoice-obsidian_long 0:5f51304df361 -0.37 0.07 7harboursidewalk +invoice-obsidian_long 0:895a6b59f677 -0.39 0.07 bristolbs15ty +invoice-obsidian_long 0:2474519f77a9 -0.39 0.07 unitedkingdom +invoice-obsidian_long 0:2474519f77a9#1 -0.39 0.08 unitedkingdom +invoice-obsidian_long 0:70ec69d2102f -0.41 0.07 ar@kestrel.example +invoice-obsidian_long 0:aeba3a7b3598 -0.36 0.11 billto +invoice-obsidian_long 0:7bfc2b791f41 -0.39 0.08 northlineconsultingltd +invoice-obsidian_long 0:13dd937d2fe6 -0.37 0.08 21jubileeway +invoice-obsidian_long 0:f9bab6a0b45b -0.39 0.08 londonse13ss +invoice-obsidian_long 0:c9046f7a37ad -1.95 13.05 description +invoice-obsidian_long 0:32e8369a9c4f -1.95 12.90 qty +invoice-obsidian_long 0:d1062d072acd -1.95 12.40 unitprice +invoice-obsidian_long 0:a52611c9261b -1.95 12.30 vat(20%) +invoice-obsidian_long 0:cf38d95c9c6b -1.95 12.52 amount +invoice-obsidian_long 0:15345cbad705 -1.12 13.05 subscriptionsetup +invoice-obsidian_long 0:15345cbad705#1 -4.09 13.05 subscriptionsetup +invoice-obsidian_long 0:15345cbad705#2 -7.05 13.05 subscriptionsetup +invoice-obsidian_long 0:5100476d46bb -1.12 13.05 one-offaccountandworkspacesetup +invoice-obsidian_long 0:5100476d46bb#1 -4.09 13.05 one-offaccountandworkspacesetup +invoice-obsidian_long 0:5100476d46bb#2 -7.05 13.05 one-offaccountandworkspacesetup +invoice-obsidian_long 0:507f9f133059 -1.16 12.48 £150.00 +invoice-obsidian_long 0:507f9f133059#1 -4.12 12.48 £150.00 +invoice-obsidian_long 0:507f9f133059#2 -7.09 12.48 £150.00 +invoice-obsidian_long 0:893d7480f763 -1.16 12.58 £30.00 +invoice-obsidian_long 0:893d7480f763#1 -3.53 12.59 £30.00 +invoice-obsidian_long 0:893d7480f763#2 -4.12 12.58 £30.00 +invoice-obsidian_long 0:893d7480f763#3 -6.50 12.59 £30.00 +invoice-obsidian_long 0:893d7480f763#4 -7.09 12.58 £30.00 +invoice-obsidian_long 0:629184210581 -1.16 12.49 £180.00 +invoice-obsidian_long 0:629184210581#1 -4.12 12.49 £180.00 +invoice-obsidian_long 0:629184210581#2 -7.09 12.49 £180.00 +invoice-obsidian_long 0:3e8060178bc4 -1.71 13.05 internationalpaymentsupport +invoice-obsidian_long 0:3e8060178bc4#1 -4.68 13.05 internationalpaymentsupport +invoice-obsidian_long 0:33e4ab51097e -1.71 13.05 monthlysupportforcross-borderpay +invoice-obsidian_long 0:33e4ab51097e#1 -4.68 13.05 monthlysupportforcross-borderpay +invoice-obsidian_long 0:96d6b62c061d -1.75 12.48 £250.00 +invoice-obsidian_long 0:96d6b62c061d#1 -4.72 12.48 £250.00 +invoice-obsidian_long 0:70d5b1312085 -1.75 12.58 £50.00 +invoice-obsidian_long 0:70d5b1312085#1 -4.72 12.58 £50.00 +invoice-obsidian_long 0:d86642b21e53 -1.75 12.49 £300.00 +invoice-obsidian_long 0:d86642b21e53#1 -4.72 12.49 £300.00 +invoice-obsidian_long 0:9399cf3b221a -2.31 13.05 expensemanagementintegration +invoice-obsidian_long 0:9399cf3b221a#1 -5.27 13.05 expensemanagementintegration +invoice-obsidian_long 0:da2890c99f7a -2.31 13.05 apiaccessandintegration +invoice-obsidian_long 0:da2890c99f7a#1 -5.27 13.05 apiaccessandintegration +invoice-obsidian_long 0:372ba7238228 -2.34 12.48 £200.00 +invoice-obsidian_long 0:372ba7238228#1 -5.31 12.48 £200.00 +invoice-obsidian_long 0:05c6a4f7132f -2.34 12.58 £40.00 +invoice-obsidian_long 0:05c6a4f7132f#1 -5.31 12.58 £40.00 +invoice-obsidian_long 0:853580239989 -2.34 12.49 £240.00 +invoice-obsidian_long 0:853580239989#1 -5.31 12.49 £240.00 +invoice-obsidian_long 0:ba80be228223 -2.90 13.05 virtualcards +invoice-obsidian_long 0:ba80be228223#1 -5.87 13.05 virtualcards +invoice-obsidian_long 0:eae2564ef311 -2.90 13.05 50virtualcards +invoice-obsidian_long 0:eae2564ef311#1 -5.87 13.05 50virtualcards +invoice-obsidian_long 0:cf02270203a4 -2.94 12.48 £100.00 +invoice-obsidian_long 0:cf02270203a4#1 -5.90 12.48 £100.00 +invoice-obsidian_long 0:33b5fc913817 -2.94 12.58 £20.00 +invoice-obsidian_long 0:33b5fc913817#1 -5.90 12.58 £20.00 +invoice-obsidian_long 0:8aec54fdb1a1 -2.94 12.49 £120.00 +invoice-obsidian_long 0:8aec54fdb1a1#1 -5.90 12.49 £120.00 +invoice-obsidian_long 0:cc29e90932c5 -3.49 13.05 businessaccountmaintenance +invoice-obsidian_long 0:cc29e90932c5#1 -6.46 13.05 businessaccountmaintenance +invoice-obsidian_long 0:f1254de1a1d4 -3.49 13.05 monthlyaccountmaintenancefee +invoice-obsidian_long 0:f1254de1a1d4#1 -6.46 13.05 monthlyaccountmaintenancefee +invoice-obsidian_long 0:8bf9ac7b27bd -3.53 12.68 £6.00 +invoice-obsidian_long 0:8bf9ac7b27bd#1 -6.50 12.68 £6.00 +invoice-obsidian_long 0:bff295cd3f97 -3.53 12.59 £36.00 +invoice-obsidian_long 0:bff295cd3f97#1 -6.50 12.59 £36.00 +invoice-obsidian_long 0:b12b0c900ffa -0.03 -0.51 page1of5 +invoice-obsidian_long 1:c9046f7a37ad -0.95 13.05 description +invoice-obsidian_long 1:32e8369a9c4f -0.95 12.90 qty +invoice-obsidian_long 1:d1062d072acd -0.95 12.40 unitprice +invoice-obsidian_long 1:a52611c9261b -0.95 12.30 vat(20%) +invoice-obsidian_long 1:cf38d95c9c6b -0.95 12.52 amount +invoice-obsidian_long 1:3e8060178bc4 -0.12 13.05 internationalpaymentsupport +invoice-obsidian_long 1:3e8060178bc4#1 -3.09 13.05 internationalpaymentsupport +invoice-obsidian_long 1:3e8060178bc4#2 -6.05 13.05 internationalpaymentsupport +invoice-obsidian_long 1:3e8060178bc4#3 -9.02 13.05 internationalpaymentsupport +invoice-obsidian_long 1:33e4ab51097e -0.12 13.05 monthlysupportforcross-borderpay +invoice-obsidian_long 1:33e4ab51097e#1 -3.09 13.05 monthlysupportforcross-borderpay +invoice-obsidian_long 1:33e4ab51097e#2 -6.05 13.05 monthlysupportforcross-borderpay +invoice-obsidian_long 1:33e4ab51097e#3 -9.02 13.05 monthlysupportforcross-borderpay +invoice-obsidian_long 1:96d6b62c061d -0.16 12.48 £250.00 +invoice-obsidian_long 1:96d6b62c061d#1 -3.12 12.48 £250.00 +invoice-obsidian_long 1:96d6b62c061d#2 -6.09 12.48 £250.00 +invoice-obsidian_long 1:96d6b62c061d#3 -9.06 12.48 £250.00 +invoice-obsidian_long 1:70d5b1312085 -0.16 12.58 £50.00 +invoice-obsidian_long 1:70d5b1312085#1 -3.12 12.58 £50.00 +invoice-obsidian_long 1:70d5b1312085#2 -6.09 12.58 £50.00 +invoice-obsidian_long 1:70d5b1312085#3 -9.06 12.58 £50.00 +invoice-obsidian_long 1:d86642b21e53 -0.16 12.49 £300.00 +invoice-obsidian_long 1:d86642b21e53#1 -3.12 12.49 £300.00 +invoice-obsidian_long 1:d86642b21e53#2 -6.09 12.49 £300.00 +invoice-obsidian_long 1:d86642b21e53#3 -9.06 12.49 £300.00 +invoice-obsidian_long 1:9399cf3b221a -0.71 13.05 expensemanagementintegration +invoice-obsidian_long 1:9399cf3b221a#1 -3.68 13.05 expensemanagementintegration +invoice-obsidian_long 1:9399cf3b221a#2 -6.65 13.05 expensemanagementintegration +invoice-obsidian_long 1:9399cf3b221a#3 -9.61 13.05 expensemanagementintegration +invoice-obsidian_long 1:da2890c99f7a -0.71 13.05 apiaccessandintegration +invoice-obsidian_long 1:da2890c99f7a#1 -3.68 13.05 apiaccessandintegration +invoice-obsidian_long 1:da2890c99f7a#2 -6.65 13.05 apiaccessandintegration +invoice-obsidian_long 1:da2890c99f7a#3 -9.61 13.05 apiaccessandintegration +invoice-obsidian_long 1:372ba7238228 -0.75 12.48 £200.00 +invoice-obsidian_long 1:372ba7238228#1 -3.72 12.48 £200.00 +invoice-obsidian_long 1:372ba7238228#2 -6.68 12.48 £200.00 +invoice-obsidian_long 1:372ba7238228#3 -9.65 12.48 £200.00 +invoice-obsidian_long 1:05c6a4f7132f -0.75 12.58 £40.00 +invoice-obsidian_long 1:05c6a4f7132f#1 -3.72 12.58 £40.00 +invoice-obsidian_long 1:05c6a4f7132f#2 -6.68 12.58 £40.00 +invoice-obsidian_long 1:05c6a4f7132f#3 -9.65 12.58 £40.00 +invoice-obsidian_long 1:853580239989 -0.75 12.49 £240.00 +invoice-obsidian_long 1:853580239989#1 -3.72 12.49 £240.00 +invoice-obsidian_long 1:853580239989#2 -6.68 12.49 £240.00 +invoice-obsidian_long 1:853580239989#3 -9.65 12.49 £240.00 +invoice-obsidian_long 1:ba80be228223 -1.31 13.05 virtualcards +invoice-obsidian_long 1:ba80be228223#1 -4.27 13.05 virtualcards +invoice-obsidian_long 1:ba80be228223#2 -7.24 13.05 virtualcards +invoice-obsidian_long 1:ba80be228223#3 -10.21 13.05 virtualcards +invoice-obsidian_long 1:eae2564ef311 -1.31 13.05 50virtualcards +invoice-obsidian_long 1:eae2564ef311#1 -4.27 13.05 50virtualcards +invoice-obsidian_long 1:eae2564ef311#2 -7.24 13.05 50virtualcards +invoice-obsidian_long 1:eae2564ef311#3 -10.21 13.05 50virtualcards +invoice-obsidian_long 1:cf02270203a4 -1.34 12.48 £100.00 +invoice-obsidian_long 1:cf02270203a4#1 -4.31 12.48 £100.00 +invoice-obsidian_long 1:cf02270203a4#2 -7.28 12.48 £100.00 +invoice-obsidian_long 1:cf02270203a4#3 -10.24 12.48 £100.00 +invoice-obsidian_long 1:33b5fc913817 -1.34 12.58 £20.00 +invoice-obsidian_long 1:33b5fc913817#1 -4.31 12.58 £20.00 +invoice-obsidian_long 1:33b5fc913817#2 -7.28 12.58 £20.00 +invoice-obsidian_long 1:33b5fc913817#3 -10.24 12.58 £20.00 +invoice-obsidian_long 1:8aec54fdb1a1 -1.34 12.49 £120.00 +invoice-obsidian_long 1:8aec54fdb1a1#1 -4.31 12.49 £120.00 +invoice-obsidian_long 1:8aec54fdb1a1#2 -7.28 12.49 £120.00 +invoice-obsidian_long 1:8aec54fdb1a1#3 -10.24 12.49 £120.00 +invoice-obsidian_long 1:cc29e90932c5 -1.90 13.05 businessaccountmaintenance +invoice-obsidian_long 1:cc29e90932c5#1 -4.87 13.05 businessaccountmaintenance +invoice-obsidian_long 1:cc29e90932c5#2 -7.83 13.05 businessaccountmaintenance +invoice-obsidian_long 1:f1254de1a1d4 -1.90 13.05 monthlyaccountmaintenancefee +invoice-obsidian_long 1:f1254de1a1d4#1 -4.87 13.05 monthlyaccountmaintenancefee +invoice-obsidian_long 1:f1254de1a1d4#2 -7.83 13.05 monthlyaccountmaintenancefee +invoice-obsidian_long 1:893d7480f763 -1.94 12.59 £30.00 +invoice-obsidian_long 1:893d7480f763#1 -2.53 12.58 £30.00 +invoice-obsidian_long 1:893d7480f763#2 -4.90 12.59 £30.00 +invoice-obsidian_long 1:893d7480f763#3 -5.50 12.58 £30.00 +invoice-obsidian_long 1:893d7480f763#4 -7.87 12.59 £30.00 +invoice-obsidian_long 1:893d7480f763#5 -8.46 12.58 £30.00 +invoice-obsidian_long 1:8bf9ac7b27bd -1.94 12.68 £6.00 +invoice-obsidian_long 1:8bf9ac7b27bd#1 -4.90 12.68 £6.00 +invoice-obsidian_long 1:8bf9ac7b27bd#2 -7.87 12.68 £6.00 +invoice-obsidian_long 1:bff295cd3f97 -1.94 12.59 £36.00 +invoice-obsidian_long 1:bff295cd3f97#1 -4.90 12.59 £36.00 +invoice-obsidian_long 1:bff295cd3f97#2 -7.87 12.59 £36.00 +invoice-obsidian_long 1:15345cbad705 -2.49 13.05 subscriptionsetup +invoice-obsidian_long 1:15345cbad705#1 -5.46 13.05 subscriptionsetup +invoice-obsidian_long 1:15345cbad705#2 -8.43 13.05 subscriptionsetup +invoice-obsidian_long 1:5100476d46bb -2.49 13.05 one-offaccountandworkspacesetup +invoice-obsidian_long 1:5100476d46bb#1 -5.46 13.05 one-offaccountandworkspacesetup +invoice-obsidian_long 1:5100476d46bb#2 -8.43 13.05 one-offaccountandworkspacesetup +invoice-obsidian_long 1:507f9f133059 -2.53 12.48 £150.00 +invoice-obsidian_long 1:507f9f133059#1 -5.50 12.48 £150.00 +invoice-obsidian_long 1:507f9f133059#2 -8.46 12.48 £150.00 +invoice-obsidian_long 1:629184210581 -2.53 12.49 £180.00 +invoice-obsidian_long 1:629184210581#1 -5.50 12.49 £180.00 +invoice-obsidian_long 1:629184210581#2 -8.46 12.49 £180.00 +invoice-obsidian_long 1:b68afb3d911e -0.03 -0.51 page2of5 +invoice-obsidian_long 2:c9046f7a37ad -0.85 13.05 description +invoice-obsidian_long 2:32e8369a9c4f -0.85 12.90 qty +invoice-obsidian_long 2:d1062d072acd -0.85 12.40 unitprice +invoice-obsidian_long 2:a52611c9261b -0.85 12.30 vat(20%) +invoice-obsidian_long 2:cf38d95c9c6b -0.85 12.52 amount +invoice-obsidian_long 2:cc29e90932c5 -0.02 13.05 businessaccountmaintenance +invoice-obsidian_long 2:cc29e90932c5#1 -2.99 13.05 businessaccountmaintenance +invoice-obsidian_long 2:cc29e90932c5#2 -5.95 13.05 businessaccountmaintenance +invoice-obsidian_long 2:cc29e90932c5#3 -8.92 13.05 businessaccountmaintenance +invoice-obsidian_long 2:f1254de1a1d4 -0.02 13.05 monthlyaccountmaintenancefee +invoice-obsidian_long 2:f1254de1a1d4#1 -2.99 13.05 monthlyaccountmaintenancefee +invoice-obsidian_long 2:f1254de1a1d4#2 -5.95 13.05 monthlyaccountmaintenancefee +invoice-obsidian_long 2:f1254de1a1d4#3 -8.92 13.05 monthlyaccountmaintenancefee +invoice-obsidian_long 2:893d7480f763 -0.06 12.59 £30.00 +invoice-obsidian_long 2:893d7480f763#1 -0.65 12.58 £30.00 +invoice-obsidian_long 2:893d7480f763#2 -3.02 12.59 £30.00 +invoice-obsidian_long 2:893d7480f763#3 -3.62 12.58 £30.00 +invoice-obsidian_long 2:893d7480f763#4 -5.99 12.59 £30.00 +invoice-obsidian_long 2:893d7480f763#5 -6.58 12.58 £30.00 +invoice-obsidian_long 2:893d7480f763#6 -8.96 12.59 £30.00 +invoice-obsidian_long 2:893d7480f763#7 -9.55 12.58 £30.00 +invoice-obsidian_long 2:8bf9ac7b27bd -0.06 12.68 £6.00 +invoice-obsidian_long 2:8bf9ac7b27bd#1 -3.02 12.68 £6.00 +invoice-obsidian_long 2:8bf9ac7b27bd#2 -5.99 12.68 £6.00 +invoice-obsidian_long 2:8bf9ac7b27bd#3 -8.96 12.68 £6.00 +invoice-obsidian_long 2:bff295cd3f97 -0.06 12.59 £36.00 +invoice-obsidian_long 2:bff295cd3f97#1 -3.02 12.59 £36.00 +invoice-obsidian_long 2:bff295cd3f97#2 -5.99 12.59 £36.00 +invoice-obsidian_long 2:bff295cd3f97#3 -8.96 12.59 £36.00 +invoice-obsidian_long 2:15345cbad705 -0.61 13.05 subscriptionsetup +invoice-obsidian_long 2:15345cbad705#1 -3.58 13.05 subscriptionsetup +invoice-obsidian_long 2:15345cbad705#2 -6.55 13.05 subscriptionsetup +invoice-obsidian_long 2:15345cbad705#3 -9.51 13.05 subscriptionsetup +invoice-obsidian_long 2:5100476d46bb -0.61 13.05 one-offaccountandworkspacesetup +invoice-obsidian_long 2:5100476d46bb#1 -3.58 13.05 one-offaccountandworkspacesetup +invoice-obsidian_long 2:5100476d46bb#2 -6.55 13.05 one-offaccountandworkspacesetup +invoice-obsidian_long 2:5100476d46bb#3 -9.51 13.05 one-offaccountandworkspacesetup +invoice-obsidian_long 2:507f9f133059 -0.65 12.48 £150.00 +invoice-obsidian_long 2:507f9f133059#1 -3.62 12.48 £150.00 +invoice-obsidian_long 2:507f9f133059#2 -6.58 12.48 £150.00 +invoice-obsidian_long 2:507f9f133059#3 -9.55 12.48 £150.00 +invoice-obsidian_long 2:629184210581 -0.65 12.49 £180.00 +invoice-obsidian_long 2:629184210581#1 -3.62 12.49 £180.00 +invoice-obsidian_long 2:629184210581#2 -6.58 12.49 £180.00 +invoice-obsidian_long 2:629184210581#3 -9.55 12.49 £180.00 +invoice-obsidian_long 2:3e8060178bc4 -1.21 13.05 internationalpaymentsupport +invoice-obsidian_long 2:3e8060178bc4#1 -4.17 13.05 internationalpaymentsupport +invoice-obsidian_long 2:3e8060178bc4#2 -7.14 13.05 internationalpaymentsupport +invoice-obsidian_long 2:3e8060178bc4#3 -10.11 13.05 internationalpaymentsupport +invoice-obsidian_long 2:33e4ab51097e -1.21 13.05 monthlysupportforcross-borderpay +invoice-obsidian_long 2:33e4ab51097e#1 -4.17 13.05 monthlysupportforcross-borderpay +invoice-obsidian_long 2:33e4ab51097e#2 -7.14 13.05 monthlysupportforcross-borderpay +invoice-obsidian_long 2:33e4ab51097e#3 -10.11 13.05 monthlysupportforcross-borderpay +invoice-obsidian_long 2:96d6b62c061d -1.24 12.48 £250.00 +invoice-obsidian_long 2:96d6b62c061d#1 -4.21 12.48 £250.00 +invoice-obsidian_long 2:96d6b62c061d#2 -7.18 12.48 £250.00 +invoice-obsidian_long 2:96d6b62c061d#3 -10.14 12.48 £250.00 +invoice-obsidian_long 2:70d5b1312085 -1.24 12.58 £50.00 +invoice-obsidian_long 2:70d5b1312085#1 -4.21 12.58 £50.00 +invoice-obsidian_long 2:70d5b1312085#2 -7.18 12.58 £50.00 +invoice-obsidian_long 2:70d5b1312085#3 -10.14 12.58 £50.00 +invoice-obsidian_long 2:d86642b21e53 -1.24 12.49 £300.00 +invoice-obsidian_long 2:d86642b21e53#1 -4.21 12.49 £300.00 +invoice-obsidian_long 2:d86642b21e53#2 -7.18 12.49 £300.00 +invoice-obsidian_long 2:d86642b21e53#3 -10.14 12.49 £300.00 +invoice-obsidian_long 2:9399cf3b221a -1.80 13.05 expensemanagementintegration +invoice-obsidian_long 2:9399cf3b221a#1 -4.77 13.05 expensemanagementintegration +invoice-obsidian_long 2:9399cf3b221a#2 -7.73 13.05 expensemanagementintegration +invoice-obsidian_long 2:da2890c99f7a -1.80 13.05 apiaccessandintegration +invoice-obsidian_long 2:da2890c99f7a#1 -4.77 13.05 apiaccessandintegration +invoice-obsidian_long 2:da2890c99f7a#2 -7.73 13.05 apiaccessandintegration +invoice-obsidian_long 2:372ba7238228 -1.84 12.48 £200.00 +invoice-obsidian_long 2:372ba7238228#1 -4.80 12.48 £200.00 +invoice-obsidian_long 2:372ba7238228#2 -7.77 12.48 £200.00 +invoice-obsidian_long 2:05c6a4f7132f -1.84 12.58 £40.00 +invoice-obsidian_long 2:05c6a4f7132f#1 -4.80 12.58 £40.00 +invoice-obsidian_long 2:05c6a4f7132f#2 -7.77 12.58 £40.00 +invoice-obsidian_long 2:853580239989 -1.84 12.49 £240.00 +invoice-obsidian_long 2:853580239989#1 -4.80 12.49 £240.00 +invoice-obsidian_long 2:853580239989#2 -7.77 12.49 £240.00 +invoice-obsidian_long 2:ba80be228223 -2.39 13.05 virtualcards +invoice-obsidian_long 2:ba80be228223#1 -5.36 13.05 virtualcards +invoice-obsidian_long 2:ba80be228223#2 -8.33 13.05 virtualcards +invoice-obsidian_long 2:eae2564ef311 -2.39 13.05 50virtualcards +invoice-obsidian_long 2:eae2564ef311#1 -5.36 13.05 50virtualcards +invoice-obsidian_long 2:eae2564ef311#2 -8.33 13.05 50virtualcards +invoice-obsidian_long 2:cf02270203a4 -2.43 12.48 £100.00 +invoice-obsidian_long 2:cf02270203a4#1 -5.40 12.48 £100.00 +invoice-obsidian_long 2:cf02270203a4#2 -8.36 12.48 £100.00 +invoice-obsidian_long 2:33b5fc913817 -2.43 12.58 £20.00 +invoice-obsidian_long 2:33b5fc913817#1 -5.40 12.58 £20.00 +invoice-obsidian_long 2:33b5fc913817#2 -8.36 12.58 £20.00 +invoice-obsidian_long 2:8aec54fdb1a1 -2.43 12.49 £120.00 +invoice-obsidian_long 2:8aec54fdb1a1#1 -5.40 12.49 £120.00 +invoice-obsidian_long 2:8aec54fdb1a1#2 -8.36 12.49 £120.00 +invoice-obsidian_long 2:1d363fc1d0e8 -0.03 -0.51 page3of5 +invoice-obsidian_long 3:c9046f7a37ad -0.85 13.05 description +invoice-obsidian_long 3:32e8369a9c4f -0.85 12.90 qty +invoice-obsidian_long 3:d1062d072acd -0.85 12.40 unitprice +invoice-obsidian_long 3:a52611c9261b -0.85 12.30 vat(20%) +invoice-obsidian_long 3:a52611c9261b#1 -6.82 0.11 vat(20%) +invoice-obsidian_long 3:cf38d95c9c6b -0.85 12.52 amount +invoice-obsidian_long 3:9399cf3b221a -0.02 13.05 expensemanagementintegration +invoice-obsidian_long 3:9399cf3b221a#1 -2.99 13.05 expensemanagementintegration +invoice-obsidian_long 3:9399cf3b221a#2 -5.95 13.05 expensemanagementintegration +invoice-obsidian_long 3:da2890c99f7a -0.02 13.05 apiaccessandintegration +invoice-obsidian_long 3:da2890c99f7a#1 -2.99 13.05 apiaccessandintegration +invoice-obsidian_long 3:da2890c99f7a#2 -5.95 13.05 apiaccessandintegration +invoice-obsidian_long 3:372ba7238228 -0.06 12.48 £200.00 +invoice-obsidian_long 3:372ba7238228#1 -3.02 12.48 £200.00 +invoice-obsidian_long 3:372ba7238228#2 -5.99 12.48 £200.00 +invoice-obsidian_long 3:05c6a4f7132f -0.06 12.58 £40.00 +invoice-obsidian_long 3:05c6a4f7132f#1 -3.02 12.58 £40.00 +invoice-obsidian_long 3:05c6a4f7132f#2 -5.99 12.58 £40.00 +invoice-obsidian_long 3:853580239989 -0.06 12.49 £240.00 +invoice-obsidian_long 3:853580239989#1 -3.02 12.49 £240.00 +invoice-obsidian_long 3:853580239989#2 -5.99 12.49 £240.00 +invoice-obsidian_long 3:ba80be228223 -0.61 13.05 virtualcards +invoice-obsidian_long 3:ba80be228223#1 -3.58 13.05 virtualcards +invoice-obsidian_long 3:ba80be228223#2 -6.55 13.05 virtualcards +invoice-obsidian_long 3:eae2564ef311 -0.61 13.05 50virtualcards +invoice-obsidian_long 3:eae2564ef311#1 -3.58 13.05 50virtualcards +invoice-obsidian_long 3:eae2564ef311#2 -6.55 13.05 50virtualcards +invoice-obsidian_long 3:cf02270203a4 -0.65 12.48 £100.00 +invoice-obsidian_long 3:cf02270203a4#1 -3.62 12.48 £100.00 +invoice-obsidian_long 3:cf02270203a4#2 -6.58 12.48 £100.00 +invoice-obsidian_long 3:33b5fc913817 -0.65 12.58 £20.00 +invoice-obsidian_long 3:33b5fc913817#1 -3.62 12.58 £20.00 +invoice-obsidian_long 3:33b5fc913817#2 -6.58 12.58 £20.00 +invoice-obsidian_long 3:8aec54fdb1a1 -0.65 12.49 £120.00 +invoice-obsidian_long 3:8aec54fdb1a1#1 -3.62 12.49 £120.00 +invoice-obsidian_long 3:8aec54fdb1a1#2 -6.58 12.49 £120.00 +invoice-obsidian_long 3:cc29e90932c5 -1.21 13.05 businessaccountmaintenance +invoice-obsidian_long 3:cc29e90932c5#1 -4.17 13.05 businessaccountmaintenance +invoice-obsidian_long 3:cc29e90932c5#2 -7.24 13.05 businessaccountmaintenance +invoice-obsidian_long 3:f1254de1a1d4 -1.21 13.05 monthlyaccountmaintenancefee +invoice-obsidian_long 3:f1254de1a1d4#1 -4.17 13.05 monthlyaccountmaintenancefee +invoice-obsidian_long 3:f1254de1a1d4#2 -7.24 13.05 monthlyaccountmaintenancefee +invoice-obsidian_long 3:893d7480f763 -1.24 12.59 £30.00 +invoice-obsidian_long 3:893d7480f763#1 -1.84 12.58 £30.00 +invoice-obsidian_long 3:893d7480f763#2 -4.21 12.59 £30.00 +invoice-obsidian_long 3:893d7480f763#3 -4.80 12.58 £30.00 +invoice-obsidian_long 3:893d7480f763#4 -7.28 12.59 £30.00 +invoice-obsidian_long 3:8bf9ac7b27bd -1.24 12.68 £6.00 +invoice-obsidian_long 3:8bf9ac7b27bd#1 -4.21 12.68 £6.00 +invoice-obsidian_long 3:8bf9ac7b27bd#2 -7.28 12.68 £6.00 +invoice-obsidian_long 3:bff295cd3f97 -1.24 12.59 £36.00 +invoice-obsidian_long 3:bff295cd3f97#1 -4.21 12.59 £36.00 +invoice-obsidian_long 3:bff295cd3f97#2 -7.28 12.59 £36.00 +invoice-obsidian_long 3:15345cbad705 -1.80 13.05 subscriptionsetup +invoice-obsidian_long 3:15345cbad705#1 -4.77 13.05 subscriptionsetup +invoice-obsidian_long 3:5100476d46bb -1.80 13.05 one-offaccountandworkspacesetup +invoice-obsidian_long 3:5100476d46bb#1 -4.77 13.05 one-offaccountandworkspacesetup +invoice-obsidian_long 3:507f9f133059 -1.84 12.48 £150.00 +invoice-obsidian_long 3:507f9f133059#1 -4.80 12.48 £150.00 +invoice-obsidian_long 3:629184210581 -1.84 12.49 £180.00 +invoice-obsidian_long 3:629184210581#1 -4.80 12.49 £180.00 +invoice-obsidian_long 3:3e8060178bc4 -2.39 13.05 internationalpaymentsupport +invoice-obsidian_long 3:3e8060178bc4#1 -5.36 13.05 internationalpaymentsupport +invoice-obsidian_long 3:33e4ab51097e -2.39 13.05 monthlysupportforcross-borderpay +invoice-obsidian_long 3:33e4ab51097e#1 -5.36 13.05 monthlysupportforcross-borderpay +invoice-obsidian_long 3:96d6b62c061d -2.43 12.48 £250.00 +invoice-obsidian_long 3:96d6b62c061d#1 -5.40 12.48 £250.00 +invoice-obsidian_long 3:70d5b1312085 -2.43 12.58 £50.00 +invoice-obsidian_long 3:70d5b1312085#1 -5.40 12.58 £50.00 +invoice-obsidian_long 3:d86642b21e53 -2.43 12.49 £300.00 +invoice-obsidian_long 3:d86642b21e53#1 -5.40 12.49 £300.00 +invoice-obsidian_long 3:d6577e95efba -6.79 0.11 subtotal +invoice-obsidian_long 3:4595e1b34cb1 -6.80 0.63 £730.00 +invoice-obsidian_long 3:eafa82a0eadf -6.83 0.63 £146.00 +invoice-obsidian_long 3:57a66d21eb1b -6.91 0.11 totaldue +invoice-obsidian_long 3:ad3ba615a506 -6.94 -0.59 £876.00 +invoice-obsidian_long 3:ab5aa97074c4 -6.83 0.08 notes +invoice-obsidian_long 3:0956d8d0441d -6.86 0.08 thankyouforchoosingkestrelbusine +invoice-obsidian_long 3:0b4d6f0e8783 -6.85 0.08 thisinvoicecoversservicesandfeat +invoice-obsidian_long 3:02e483554647 -6.85 0.08 toyourbusinessasofthedateofissue +invoice-obsidian_long 3:b439106fc5a1 -6.83 0.08 ifyouhaveanyquestionsaboutthisin +invoice-obsidian_long 3:877ac656a147 -6.83 0.08 pleasecontactusatar@kestrel.exam +invoice-obsidian_long 3:3c7ade679fdf -6.83 0.09 paymentdetails +invoice-obsidian_long 3:473fbeedb47c -6.84 0.11 pleasepaybybanktransfer +invoice-obsidian_long 3:59f2b74175d7 -6.84 0.11 totheaccountbelow. +invoice-obsidian_long 3:811f691f5582 -6.82 0.11 payee +invoice-obsidian_long 3:7d7385ecfbd9 -6.88 0.08 kestrelbusiness +invoice-obsidian_long 3:10aeacde20ff -6.83 0.11 sortcode +invoice-obsidian_long 3:a748c443f622 -6.89 0.08 04-00-75 +invoice-obsidian_long 3:f92a9c925024 -6.84 0.11 accountnumber +invoice-obsidian_long 3:ef797c8118f0 -6.90 0.08 12345678 +invoice-obsidian_long 3:52367a6622b1 -6.85 0.11 reference +invoice-obsidian_long 3:3e62d1fbe5ec -6.90 0.08 inv-2026-1048 +invoice-obsidian_long 3:5c55d9b20ce6 -0.03 -0.51 page4of5 +invoice-obsidian_long 4:7c6ab37d83ef 0.03 0.08 thankyouforyourbusiness. +invoice-obsidian_long 4:a97667f07d1b 0.02 0.08 paymentisdueby10september2026. +invoice-obsidian_long 4:7d7385ecfbd9 0.03 -0.60 kestrelbusiness +invoice-obsidian_long 4:70ec69d2102f 0.02 -0.74 ar@kestrel.example +invoice-obsidian_long 4:f7e1ed1a6f15 -0.03 -0.51 page5of5 invoice-payments 0:b6c4ac412ac8 -0.02 0.10 meridian invoice-payments 0:52d6e3de4fa0 0.41 0.05 invoice invoice-payments 0:c0cc75b9cfdc -0.22 0.12 meridianpaymentsltd. @@ -4283,3 +4993,132 @@ rota-cobalt 0:4941d6993ee9 -0.52 0.89 teodor rota-cobalt 0:1d3d3d6a07bd -0.56 0.83 vesna rota-cobalt 0:59f2ff7c7c70 0.03 0.08 timesshownin24-hourformat.shiftc rota-cobalt 0:594c41ec0506 0.03 -3.60 quaysidebar|31aug-6sep2026 +synthetic-break_in_column 0:80f18b7de78a -0.02 0.10 arowandastack,eachwithabreakinit +synthetic-break_in_column 0:72bd29a25f26 -0.02 0.10 partaofthecolumn. +synthetic-break_in_column 0:4d9a04cf2b1a -0.02 0.10 partbofthecolumn. +synthetic-break_in_column 0:1c5b34bc492e -0.02 0.10 thecolumnbesideit. +synthetic-break_in_column 0:40a383da2139 -0.02 0.10 thelayerbeforeitsbreak. +synthetic-break_in_column 0:5efa092392c8 -0.02 0.10 thelayerafteritsbreak. +synthetic-break_in_column 0:98339282c335 -0.02 0.10 aftertherowandthestack,onthesame +synthetic-break_in_panel 0:57f79615e3d4 -0.02 0.10 beforethecard,onthefirstpage. +synthetic-break_in_panel 0:c9b88ae8c81e -0.02 8.60 thecardopensonthefirstpage. +synthetic-break_in_panel 0:e52a749b231e -0.02 8.60 itssecondlinestandsunderthefirst +synthetic-break_in_panel 1:ed14c3c197e0 -5.02 8.60 afterthecard'sownbreak,ontheseco +synthetic-break_in_panel 1:5d6d2c267d13 -5.02 8.60 theinnercardopensunderit. +synthetic-break_in_panel 2:eea50dafce63 -3.02 8.60 aftertheinnercard'sbreak,ontheth +synthetic-break_in_panel 2:ba843b07ef9d -3.02 8.60 thecardclosesonthethirdpage. +synthetic-break_in_panel 2:32d8fbd7fa4f -3.02 0.10 afterthecard,onthethirdpage. +synthetic-card_over_pages 0:7d387fd21933 -0.02 0.10 thecard'stablerunsoverthreepages +synthetic-card_over_pages 0:4a33eacd5fa6 -0.02 7.10 item +synthetic-card_over_pages 0:cf38d95c9c6b -0.02 7.10 amount +synthetic-card_over_pages 0:fece7008420e -0.02 7.10 lineitem1 +synthetic-card_over_pages 0:f95919b6c4bb -0.02 7.10 lineitem2 +synthetic-card_over_pages 0:dec9b8798826 -0.02 7.10 lineitem3 +synthetic-card_over_pages 0:91a78ff5618f -0.02 7.10 lineitem4 +synthetic-card_over_pages 0:a9aa941fb986 -0.02 7.10 lineitem5 +synthetic-card_over_pages 0:1ef4f7a255de -0.02 7.10 lineitem6 +synthetic-card_over_pages 0:a18ede8f9454 -0.02 7.10 lineitem7 +synthetic-card_over_pages 0:3cabf2ee0a7c -0.02 7.10 lineitem8 +synthetic-card_over_pages 0:a2532bdb02a2 -0.02 7.10 lineitem9 +synthetic-card_over_pages 0:891effd91e9f -0.02 7.10 lineitem10 +synthetic-card_over_pages 0:c406b22e27c1 -0.02 7.10 lineitem11 +synthetic-card_over_pages 0:4c06f8f2e644 -0.02 7.10 lineitem12 +synthetic-card_over_pages 0:d5f48f23c3f3 -0.02 7.10 lineitem13 +synthetic-card_over_pages 0:d43db684ea76 -0.02 7.10 lineitem14 +synthetic-card_over_pages 0:539f277a3fac -0.02 7.10 lineitem15 +synthetic-card_over_pages 0:1253e9373e78 -0.02 7.10 105 +synthetic-card_over_pages 0:35dc66416528 -0.02 7.10 lineitem16 +synthetic-card_over_pages 0:b1556dea32e9 -0.02 7.10 112 +synthetic-card_over_pages 0:af65ac2a6cfe -0.02 7.10 lineitem17 +synthetic-card_over_pages 0:3038bfb575be -0.02 7.10 119 +synthetic-card_over_pages 0:3283f12434ce -0.02 7.10 lineitem18 +synthetic-card_over_pages 0:65a699905c02 -0.02 7.10 126 +synthetic-card_over_pages 0:942520f63b77 -0.02 7.10 lineitem19 +synthetic-card_over_pages 0:d2f483672c02 -0.02 7.10 133 +synthetic-card_over_pages 0:56f88b371f7d -0.02 7.10 lineitem20 +synthetic-card_over_pages 0:dbae772db290 -0.02 7.10 140 +synthetic-card_over_pages 0:ee83955d1bc6 -0.02 7.10 lineitem21 +synthetic-card_over_pages 0:1d28c120568c -0.02 7.10 147 +synthetic-card_over_pages 0:3d1cce339ed6 -0.02 7.10 lineitem22 +synthetic-card_over_pages 0:1d0ebea552eb -0.02 7.10 154 +synthetic-card_over_pages 0:ad5d1ff8ac0f -0.02 7.10 lineitem23 +synthetic-card_over_pages 0:bb668ca95563 -0.02 7.10 161 +synthetic-card_over_pages 0:cf161caf24a4 -0.02 7.10 lineitem24 +synthetic-card_over_pages 0:80c3cd40fa35 -0.02 7.10 168 +synthetic-card_over_pages 1:4a33eacd5fa6 0.98 7.10 item +synthetic-card_over_pages 1:cf38d95c9c6b 0.98 7.10 amount +synthetic-card_over_pages 1:dda175661944 0.98 7.10 lineitem25 +synthetic-card_over_pages 1:dac53c17c250 0.98 7.10 175 +synthetic-card_over_pages 1:d95ea709c13f 0.98 7.10 lineitem26 +synthetic-card_over_pages 1:bfa7634640c5 0.98 7.10 182 +synthetic-card_over_pages 1:a8e8aab36df7 0.98 7.10 lineitem27 +synthetic-card_over_pages 1:7045d16ae7f0 0.98 7.10 189 +synthetic-card_over_pages 1:da8c98edde51 0.98 7.10 lineitem28 +synthetic-card_over_pages 1:b4bbe448fde3 0.98 7.10 196 +synthetic-card_over_pages 1:cf6a812b7e8f 0.98 7.10 lineitem29 +synthetic-card_over_pages 1:4621c1d55fa4 0.98 7.10 203 +synthetic-card_over_pages 1:582abc0a7d63 0.98 7.10 lineitem30 +synthetic-card_over_pages 1:d29d53701d3c 0.98 7.10 210 +synthetic-card_over_pages 1:7aad2ad177d1 0.98 7.10 lineitem31 +synthetic-card_over_pages 1:16badfc6202c 0.98 7.10 217 +synthetic-card_over_pages 1:b1af4907aa59 0.98 7.10 lineitem32 +synthetic-card_over_pages 1:84a5092e4a5b 0.98 7.10 224 +synthetic-card_over_pages 1:81d484b1eecd 0.98 7.10 lineitem33 +synthetic-card_over_pages 1:138d9e809e38 0.98 7.10 231 +synthetic-card_over_pages 1:c210b73151e8 0.98 7.10 lineitem34 +synthetic-card_over_pages 1:8ae4c23b80d1 0.98 7.10 238 +synthetic-card_over_pages 1:dd5bd0d27edc 0.98 7.10 lineitem35 +synthetic-card_over_pages 1:011af72a910a 0.98 7.10 245 +synthetic-card_over_pages 1:e1b2dfccc229 0.98 7.10 lineitem36 +synthetic-card_over_pages 1:d6e5a20b30f8 0.98 7.10 252 +synthetic-card_over_pages 1:2af7064bf52f 0.98 7.10 lineitem37 +synthetic-card_over_pages 1:7c252ab334fb 0.98 7.10 259 +synthetic-card_over_pages 1:669133dc43cb 0.98 7.10 lineitem38 +synthetic-card_over_pages 1:ea5b27556fbb 0.98 7.10 266 +synthetic-card_over_pages 1:bae2bf619be0 0.98 7.10 lineitem39 +synthetic-card_over_pages 1:303c8bd55875 0.98 7.10 273 +synthetic-card_over_pages 1:46a88810fe98 0.98 7.10 lineitem40 +synthetic-card_over_pages 1:7f0a22117f8f 0.98 7.10 280 +synthetic-card_over_pages 1:b95fc486ea14 0.98 7.10 lineitem41 +synthetic-card_over_pages 1:d7cdaa5ca058 0.98 7.10 287 +synthetic-card_over_pages 1:edfbcc6438f4 0.98 7.10 lineitem42 +synthetic-card_over_pages 1:2cfc8ccbd7c0 0.98 7.10 294 +synthetic-card_over_pages 1:e9532b1a9f55 0.98 7.10 lineitem43 +synthetic-card_over_pages 1:c3ea99f86b2f 0.98 7.10 301 +synthetic-card_over_pages 1:668b766dba55 0.98 7.10 lineitem44 +synthetic-card_over_pages 1:48a1706eca5e 0.98 7.10 308 +synthetic-card_over_pages 1:2083f677b8b7 0.98 7.10 lineitem45 +synthetic-card_over_pages 1:377adeb4cd40 0.98 7.10 315 +synthetic-card_over_pages 1:9eea351236b0 0.98 7.10 lineitem46 +synthetic-card_over_pages 1:f10d91a7596b 0.98 7.10 322 +synthetic-card_over_pages 2:4a33eacd5fa6 1.08 7.10 item +synthetic-card_over_pages 2:cf38d95c9c6b 1.08 7.10 amount +synthetic-card_over_pages 2:95f6ab66531a 1.08 7.10 lineitem47 +synthetic-card_over_pages 2:0791963ca266 1.08 7.10 329 +synthetic-card_over_pages 2:3e9edc9fa454 1.08 7.10 lineitem48 +synthetic-card_over_pages 2:eaa0689a095d 1.08 7.10 336 +synthetic-card_over_pages 2:493c1ed90d39 1.08 7.10 lineitem49 +synthetic-card_over_pages 2:3c15285c04ff 1.08 7.10 343 +synthetic-card_over_pages 2:7942261cccc6 1.08 7.10 lineitem50 +synthetic-card_over_pages 2:deeeb5df3f2c 1.08 7.10 350 +synthetic-card_over_pages 2:85a2fe861930 1.08 7.10 lineitem51 +synthetic-card_over_pages 2:2ab0ce7632a6 1.08 7.10 357 +synthetic-card_over_pages 2:eae8719c99de 1.08 7.10 lineitem52 +synthetic-card_over_pages 2:b3dfdc6efe32 1.08 7.10 364 +synthetic-card_over_pages 2:694b54aa19a4 1.08 7.10 lineitem53 +synthetic-card_over_pages 2:9b15fed64ef1 1.08 7.10 371 +synthetic-card_over_pages 2:aa2c865b1902 1.08 7.10 lineitem54 +synthetic-card_over_pages 2:21ef779311a4 1.08 7.10 378 +synthetic-card_over_pages 2:c22373c64c4b 1.08 7.10 lineitem55 +synthetic-card_over_pages 2:131b0c35e2d7 1.08 7.10 385 +synthetic-card_over_pages 2:53ede553f757 1.08 7.10 lineitem56 +synthetic-card_over_pages 2:6ea2fdb3399f 1.08 7.10 392 +synthetic-card_over_pages 2:8b1eaf67d755 1.08 7.10 lineitem57 +synthetic-card_over_pages 2:0f78540965a8 1.08 7.10 399 +synthetic-card_over_pages 2:f53f297eab04 1.08 7.10 lineitem58 +synthetic-card_over_pages 2:f64f410744d9 1.08 7.10 406 +synthetic-card_over_pages 2:08db7c1e9a02 1.08 7.10 lineitem59 +synthetic-card_over_pages 2:1c49f22f6de9 1.08 7.10 413 +synthetic-card_over_pages 2:f69c59b028ea 1.08 7.10 lineitem60 +synthetic-card_over_pages 2:db55da3fc309 1.08 7.10 420 +synthetic-card_over_pages 2:8c569b972e01 1.08 0.10 afterthecard,onitslastpage. diff --git a/qa/src/test/resources/docx-fidelity/libreoffice-linux.tsv b/qa/src/test/resources/docx-fidelity/libreoffice-linux.tsv index 2b79fe220..5e7dc704d 100644 --- a/qa/src/test/resources/docx-fidelity/libreoffice-linux.tsv +++ b/qa/src/test/resources/docx-fidelity/libreoffice-linux.tsv @@ -1,5 +1,6 @@ # libreoffice build 420(Build:2) on linux document engine_pages editor_pages lines matched median p90 over2 +# rows of invoice-metered_long, invoice-obsidian_long, synthetic-break_in_column, synthetic-break_in_panel, synthetic-card_over_pages: libreoffice build 420(Build:2) on linux cv-blue_banner 2 2 54 52 0.16 0.25 0 cv-boxed_sections 2 2 58 58 0.06 0.11 0 cv-centered_headline 2 2 58 56 0.12 0.29 0 @@ -34,9 +35,11 @@ invoice-luma_studio 1 1 97 97 0.17 0.46 2 invoice-luma_studio_long 3 3 192 192 0.11 0.41 2 invoice-merchant 1 1 94 94 0.78 1.96 5 invoice-metered 1 1 99 99 1.26 10.63 48 +invoice-metered_long 4 4 350 334 41.91 96.38 239 invoice-modern 1 1 54 54 0.03 0.10 0 invoice-modern_long 2 2 162 162 0.03 0.08 0 invoice-obsidian 1 1 81 81 0.37 2.90 15 +invoice-obsidian_long 5 5 375 375 4.17 8.36 253 invoice-payments 1 1 104 104 0.30 5.14 40 invoice-platform 1 1 111 111 0.31 0.41 0 invoice-subscription 1 1 81 81 0.11 0.29 0 @@ -62,3 +65,6 @@ proposal-modern 1 1 44 44 0.03 0.12 0 proposal-northline 2 2 132 132 0.13 0.42 0 receipt-modern 1 1 57 57 0.04 0.09 0 rota-cobalt 1 1 154 151 0.22 0.47 0 +synthetic-break_in_column 1 1 7 7 0.02 0.02 0 +synthetic-break_in_panel 3 3 8 8 3.02 5.02 5 +synthetic-card_over_pages 3 3 114 114 0.98 1.08 0 diff --git a/scripts/docx-visual/word-fidelity.ps1 b/scripts/docx-visual/word-fidelity.ps1 index f847791cb..b6a1e13b4 100644 --- a/scripts/docx-visual/word-fidelity.ps1 +++ b/scripts/docx-visual/word-fidelity.ps1 @@ -1,14 +1,15 @@ <# .SYNOPSIS - Holds every template preset's DOCX export, as Microsoft Word sets it, to the - Word baseline of the DOCX fidelity corpus. + Holds the DOCX export of every document of the DOCX fidelity corpus — each + template preset, and each document built for a shape no preset has — as + Microsoft Word sets it, to the corpus's Word baseline. .DESCRIPTION Word is the editor the DOCX export answers to, and CI cannot run it. This is the same gate DocxFidelityCorpusTest runs with LibreOffice in CI, run locally with Word: - 1. the corpus test in `export` mode writes each preset's PDF and DOCX to + 1. the corpus test in `export` mode writes each document's PDF and DOCX to qa/target/docx-fidelity/engine; 2. convert-with-word.ps1 converts the DOCX through a private, hidden Word instance into qa/target/docx-fidelity/word, recording Word's version; From c73685be9bb16886bf746c475959ca82017bb777 Mon Sep 17 00:00:00 2001 From: DemchaAV Date: Sun, 25 Oct 2026 23:03:10 +0000 Subject: [PATCH 3/3] docs(qa): say what the fidelity gate holds of the new documents The gate holds the lines it finds; ObsidianInvoice's line items stand high in LibreOffice 24.2 without growing page after page, as MeteredInvoice's do. The bordered card's Javadoc says to check the export's report before re-spacing it, as a lost section at the cut looks the same in the gate. --- CHANGELOG.md | 10 +++++----- CONTRIBUTING.md | 4 ++-- .../templates/fidelity/SyntheticDocxCorpus.java | 4 +++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ffec7f2d6..a97571422 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4231,8 +4231,8 @@ follow semantic versioning; release dates are ISO 8601. ### Tests - **The DOCX fidelity corpus holds the ways a page breaks inside a panel.** - - Five documents join it, so the gate holds every line of each where the editor set it, in - LibreOffice in CI and in Word on Windows, as it holds the presets: + - Five documents join it, so the gate holds every line it finds of each where the editor set + it, in LibreOffice in CI and in Word on Windows, as it holds the presets: - `SyntheticDocxCorpus`, a family of documents built for shapes no preset has on its own fixture: a page break among a card's children and inside a card nested in it; page breaks in a row's column and in a stack's layer, where the page breaks none; and a bordered card @@ -4248,9 +4248,9 @@ follow semantic versioning; release dates are ISO 8601. left, the table's first column narrower than its grid, which LibreOffice keeps. In LibreOffice 24.2 and 26.8 the parts of the card after its explicit breaks stand 3 to 5pt high. LibreOffice 24.2, CI's, sets each on the pages the PDF does; it sets the line items of the - two long invoices high, more so page after page (`ObsidianInvoice`'s up to 10pt, - `MeteredInvoice`'s by a median of 52 and 87pt on its second and third pages, 16 of its lines - on another page), as it does the presets' + two long invoices high (`ObsidianInvoice`'s up to 10pt; `MeteredInvoice`'s more so page after + page, by a median of 52 and 87pt on its second and third pages, 16 of its lines on another + page), as it does the presets' long tables, and holds their last pages, which carry the page break after the cards and the gap above the closing row, within 0.8pt. LibreOffice 26.8 on Windows carries `ObsidianInvoice`'s info cards to page 5, 17 lines, where Word and diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f9d51616c..20a926b57 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -357,7 +357,7 @@ Choose the smallest tests that match the change: `-Dgraphcompose.docxFidelity.update=true`, and commits it with the change: its diff shows which documents moved. A new preset joins the corpus in its family's `*DocxCorpus` class, and so does a preset on a longer fixture; a shape no preset has — a page break inside a - panel, a card run over pages — goes in `SyntheticDocxCorpus`. + panel, a break in a row's column — goes in `SyntheticDocxCorpus`. CI runs it on Linux (the `DOCX Fidelity` job) against `libreoffice-linux.tsv`, and uploads what it measured: LibreOffice sets text a little differently per platform, so a change that moves documents nearer the page takes that artifact's files as the Linux baseline, and its own @@ -365,7 +365,7 @@ Choose the smallest tests that match the change: Windows with Word, `scripts/docx-visual/word-fidelity.ps1` (`-Update` to rewrite) exports the corpus, has a private Word instance convert it, and holds it to `word-windows.tsv` — run it from PowerShell (pwsh), after the install above, before a DOCX export change is opened. - Each run also writes `measured--acceptance.md`: which presets the editor sets as the + Each run also writes `measured--acceptance.md`: which documents the editor sets as the page does — the same pages, 95% of the lines found, a median of 1pt or less, no more than 10% past 2pt — and what keeps the rest short of it. CI shows LibreOffice's in the job summary. The corpus also answers for how a document edits in Word. diff --git a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/SyntheticDocxCorpus.java b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/SyntheticDocxCorpus.java index e37ad7b57..312790222 100644 --- a/qa/src/test/java/com/demcha/compose/document/templates/fidelity/SyntheticDocxCorpus.java +++ b/qa/src/test/java/com/demcha/compose/document/templates/fidelity/SyntheticDocxCorpus.java @@ -97,7 +97,9 @@ private static void breakInAColumn(DocumentSession session) { * section at the cut, as gaps of 2 to 6pt and 12 to 16pt do: at 8 or 10pt the export names * page 2's margins instead, and both editors set page 2 with page 1's. A change to a table's * metrics can move page 1's last row into that case: the gate then fails this document with - * every line of page 2 about 53pt high, which a re-spaced fixture answers, not the change.

+ * every line of page 2 about 53pt high. Where the export's report names page 2's margins as + * leaving page 1's rows too near its foot, the fixture is to be re-spaced; where it does not, + * the section at the cut was lost, and the change is at fault.

*/ private static void cardOverPages(DocumentSession session) { session.pageSize(400, 600).margin(MARGIN);