Synthetic Invoice Data
Synthetic training data — no real PII, fully coherent identities
Generate synthetic freelance invoice training data with a warm, minimal layout of the kind independent contractors send through Wave, Square, and Bonsai. Sparse labels, a Rate column instead of Unit Price, and no PO number — the hardest invoice variant for extractors trained on dense enterprise templates.
49
Fields per document
1
Page
Commercial
Category
What this document is
The freelance invoice is the minimal end of the commercial-invoice spectrum: a single page with a short header, a Bill To block, a compact line-item table using a Rate column, and a Total Due. Independent contractors and small creative studios send it through consumer-grade billing tools, and it deliberately omits the purchase-order, remit-to, and terms-and-conditions scaffolding that enterprise invoices carry.
Why generate synthetically
Accounts-payable models are usually trained on enterprise invoices and then fail on the freelance tail, where the same semantic fields appear under different labels or do not appear at all. Synthetic freelance invoices give you that tail in volume — with ground-truth field values — so an extractor can learn that a missing PO number is a legitimate document, not a failed parse.
What makes synthetic data useful
Every generated freelance invoice is anchored to a coherent contractor identity: the sender name, address, and TIN reconcile to the same identity's W-9, line item quantities multiply against rates to produce the extended amounts, the subtotal sums the line items, and the tax and total balance. Line items are drawn from realistic service catalogs (design, consulting, gig work) rather than random product strings, so descriptions carry the vocabulary a real freelance extractor will see.
Training challenges
The freelance layout carries the fewest printed labels of any invoice variant we ship, so models lose the anchor text they normally use to locate values: there is no Unit Price header (the column is labeled Rate), no PO number, and no separate remit-to block. Quantity is stored as a numeric-typed field here while the other invoice designs store it as text, which exposes any pipeline that infers type from the column header rather than the value. Line-item rows past the third are optional and vary per document, so the table has a ragged bottom edge and the totals block floats vertically — a model that memorizes absolute Y positions for Subtotal and Total Due will drift on short invoices.
Who uses this data
AP-automation vendors that need the small-supplier tail, freelancer-payment and 1099 contractor platforms, expense and spend-management SaaS, small-business accounting tools, and gig-economy fintechs that underwrite income from invoices rather than pay stubs. If your extractor was tuned on enterprise invoices, the freelance variant is where its recall drops — which is exactly why it belongs in the training mix.
Document complexity profile
49 fields on a single rendered page: 23 text, 17 currency, 7 numeric, and 2 date. 44 annotation relations link printed labels to their values. There are no conditional or arithmetic bindings in the definition — the arithmetic is applied upstream by the invoice computed-field module, so the rendered document is internally consistent without the form itself carrying expression trees. Only 16 static printed labels appear on the page, the sparsest label set of any invoice design we ship.
Key stats from our synthetic corpus
Quantitative characteristics of the Invoice documents our generator produces.
| Metric | Value | Detail |
|---|---|---|
| Population coverage | 64% | 64% of identities in our 1,000-identity corpus are eligible to send a freelance invoice (they have an employer or business relationship). The remaining 36% — retirees, students, the unemployed — are the negative class that keeps a vendor classifier honest. |
| Fourth line item present | 79% | 79% of synthetic freelance invoices carry a fourth line item and 57% carry a fifth. The variable table depth is the main reason absolute-position heuristics fail on this layout. |
| Printed labels on the page | 16 | Only 16 static printed labels appear on the freelance design, against 31 on the Classic layout. Fewer anchors means an extractor has to rely on geometry and value semantics rather than nearby label text. |
| Numeric-typed quantity cells | 7 | 7 fields are numeric-typed on the freelance design (the line-item quantities), where the Modern and Professional Services layouts store the same cells as text. That type split is a useful adversarial case for schema-inference pipelines. |
| Annotation relations | 44 | 44 label-to-value relations are exported per document, enough to train relation-extraction heads (FUNSD-style linking) without any manual annotation pass. |
How this document co-occurs with others
Rates at which identities in our corpus that produce a Invoice also produce other documents.
| Correlation | Rate | Detail |
|---|---|---|
| Same transaction, Classic layout | 100% | Every freelance-invoice identity can also render the Classic layout from the same underlying transaction. Generating both is the cleanest way to test whether a model has learned invoice semantics or just one template's pixel geometry. |
| Sender's W-9 on file | 100% | Every freelance-invoice sender produces a matching W-9 under the same identity. The name, address, and TIN on the invoice header reconcile to Part I of the W-9 — the canonical vendor-onboarding match for AP systems. |
| Sender files a 1040 | 100% | Every sender also produces a Form 1040 for the same tax year, so invoice revenue can be traced to a personal return — the reconciliation gig-economy lenders reconstruct from invoice corpora. |
| Sender is also a W-2 earner | 100% | Freelance-invoice eligibility requires an employer relationship in our simulation, so every sender also has a W-2. This is the side-gig archetype: one identity, wage income and invoice income at once. |
| Married senders | 47% | 47% of synthetic freelance-invoice senders are married and 31% are in dual-income households — the two-earner, two-TIN case that de-duplication logic in AP systems has to survive. |
| Six-figure household income | 17% | 17% of freelance-invoice senders report household income at or above $100K. These identities produce the larger invoice amounts that exercise currency parsing above the five-figure boundary. |
All stats above are corpus-derived: they were computed on a local synthetic corpus of 1,000 generated identities produced by SymageDocs' World Simulation Engine. No real vendor, customer, or business transaction data was used. `make corpus-stats` regenerates the shipped corpus_stats.json for the site's analytics form set, which does not include this edition; reproduce these figures with `python -m symagedocs.corpus_analysis --corpus-size 1000 --form-id invoice_freelance`.
Frequently asked questions
- What data format do synthetic freelance invoice documents include?
- Each generated identity produces a rendered PDF plus a structured JSON annotation file with bounding boxes, field types, and ground-truth values for all 49 fields — header, Bill To block, every line-item cell, and the totals stack. The same job can also emit COCO, YOLO, FUNSD, and BIO/NER exports for detection and token-classification training.
- How is labeling done — do I have to annotate anything myself?
- Nothing is hand-annotated. Bounding boxes and labels are emitted by the generator from the form definition at render time, so every box is exact rather than approximate, and static printed labels (INVOICE, BILL TO, Rate) are exported alongside the value fields for label-to-value relation training.
- How does this differ from the Classic and Modern invoice layouts?
- Same underlying transaction data, different visual design and label vocabulary. Freelance is the sparsest: a Rate column, no PO number, and roughly half the printed labels of the Classic layout. Training across all four designs is what teaches a model that the concept of unit price survives a change of column header.
- How many line items do generated freelance invoices contain?
- The table holds up to five rows. In a 1,000-identity corpus, every invoice fills at least three rows, 79% carry a fourth, and 57% carry a fifth — so a training set gets both the short-table and full-table cases without you having to stratify by hand.
- Can I use this data commercially?
- Yes. All synthetic data is generated from statistical models, contains no real vendor, customer, or transaction data, and is licensed for commercial use including ML model training and benchmarking.