# SmartVisuals Receipt for Power BI

> Print a P&L, order or expense claim as a till receipt in Power BI: sections, subtotals, Gross profit, discount, tax and a total from your data.

- Page: https://www.smartvisuals.io/visuals/receipt
- Fields and settings: https://www.smartvisuals.io/visuals/receipt/settings
- Microsoft Marketplace: https://marketplace.microsoft.com/en-us/product/smartvisuals.smartvisuals-receipt?tab=overview
- Package: https://www.smartvisuals.io/downloads/smartvisuals-receipt-1.0.0.0.pbiviz
- Sample report (zipped .pbip): https://www.smartvisuals.io/samples/smartvisuals-receipt-sample-1.0.0.0.zip
- Price: Free tier for every viewer; premium $1.99 per user per month or $19 per user per year on Microsoft Marketplace, with a 30-day free trial. Premium works in edit mode without a licence; unlicensed viewers see the free tier, never a blocked visual.
- Certified by Microsoft: no
- Version: 1.0.0.0
- GUID (visualType and publicCustomVisuals): `smartVisualsReceiptC3E1A7F05B2D4E8F9A61D2B7E4C80F13`

## What is free

- **A complete receipt, up to 10 item lines**: Item and Amount, plus Section for headers and subtotals. Longer data keeps each section's largest items and folds the rest into "+ n more items"; subtotals and the total always come from all of your data.
- **P&L ready**: Subtract the cost sections you name, print running totals such as Gross profit, and fix the statement with Section Order so a running total stays right whatever a reader does.
- **Discount and tax**: Discount from a measure or a percentage; tax from a measure, or a rate added to the total or included in the prices.
- **Quantities, icons and item count**: Quantity lines (4 @ 186.00) or a quantity column, an icon per line, the item count and Lines Per Section.
- **Your number formats**: The measure's own format string is respected, dynamic format strings included; negatives as -1,234, (1,234), 1,234- or 1,234 CR.
- **Paper-feed animation**: Lines print top to bottom out of a printer slot and settle to a complete final frame; reduced motion prints the receipt at once.
- **Paper, themes and Boardroom mode**: Thermal paper, torn edge, printer slot, dot leaders, share bars, conditional formatting (fx) of ink and accent colours, four themes, Boardroom mode (a calm statement table) and templates for a till receipt, a P&L, an order or an expense claim.
- **Accessible and interactive**: Keyboard with a visible focus outline, a screen-reader table behind every receipt, Windows high contrast, a minimum text size, On-object formatting, cross-filtering, highlighting, tooltips with your field names and 20 languages.

## What premium adds

- **Statement: unlimited lines**: Every item line prints, with no "+ n more items" fold beyond the ones you ask for.
- **Statement: Comparison**: A budget or prior-period measure adds a difference and difference % column on every line, subtotal and total, with a sign and an arrow, never colour alone, plus a "vs Budget" footer. A second comparison, such as prior year next to budget, prints as a % column or a footer line.
- **Statement: Ratios**: A margin line under every running total and an optional % of revenue column.
- **Statement: Receipt By**: One receipt per plant, month or store, side by side.
- **Statement: "of which" lines and CSV export**: A part of a line printed under it and never added twice, and a CSV file of the receipt when your admin allows downloads from custom visuals.
- **Print pack: barcode and QR code**: Generated inside the visual. Bind a field or measure to Code Content and every receipt carries its own link or text, such as the order in your ERP or an approval form, for a phone to scan.
- **Print pack: stamp and papers**: A rubber stamp from your data (APPROVED, OVERDUE, PRELIMINARY), from the comparison (ON BUDGET, OVER BUDGET, with your words and tolerance) or from the sign of the total, plus the Guest check, Tractor feed and Carbon copy papers.

## Fields

| Field | Internal name | Takes | Needed | What it is for |
| --- | --- | --- | --- | --- |
| Item | `item` | Column | Optional | Line items: account, product, cost element. |
| Section | `section` | Column | Optional | Optional grouping with a header and a subtotal: Revenue, Cost of sales, Operating costs. |
| Amount | `amount` | Measure | Optional | The value of each line. Costs can be negative, or positive with Lines > Signs set to subtract them. |
| Quantity | `quantity` | Measure | Optional | Optional. Printed as 3 @ 12.00 under the item, or as a column. |
| Comparison | `compare` | Measure | Optional | Optional budget or prior-period measure: a difference column and a footer line (premium). |
| Second Comparison | `compare2` | Measure | Optional | Optional second comparison, such as prior year next to budget: a difference % column or a footer line (premium). |
| Tax | `tax` | Measure | Optional | Optional tax amount per line; the receipt prints the sum as the tax line. |
| Discount | `discount` | Measure | Optional | Optional discount per line; printed as one line taken off the subtotal. |
| Period | `period` | Measure | Optional | Optional text or date for the header and the barcode, for example SELECTEDVALUE or MAX of a date. |
| Receipt By | `receiptBy` | Column | Optional | Optional: one receipt per value, side by side (premium). |
| Code Content | `codeContent` | Measure | Optional | Optional text or link the QR or barcode carries, one per receipt: an order in your ERP, an approval form (premium). |
| Stamp | `stamp` | Measure | Optional | Optional status printed as the rubber stamp, one per receipt: Approved, Pending, Overdue (premium). |
| Icon | `icon` | Column | Optional | Optional emoji or symbol printed before each item. |
| Tooltips | `tooltips` | Measure | Optional, up to 5 | Extra measures shown in the tooltip. |

## Format pane

Each card is a key under `visual.objects` in a PBIR visual.json; each setting is a property of it. Toggles take `true`/`false`, choices and text a value in single quotes (`'auto'`), numbers a `D` suffix (`12D`).

### Theme (`theme`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Theme | `selectedTheme` | `smartvisuals` (SmartVisuals), `dark` (Dark), `clean` (Clean), `slate` (Slate) |
| Transparent Background | `transparentBg` | On / off |

### Paper (`paper`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Style | `style` | `receipt` (Receipt), `boardroom` (Plain statement (boardroom mode)) |
| Template: Sets the default labels, stamp words and footer for the kind of receipt. Anything you type in the cards wins. | `template` | `receipt` (Till receipt), `pnl` (P&L statement), `order` (Order), `expenses` (Expense claim) |
| Paper | `paperStyle` | `thermal` (Thermal till roll), `guestcheck` (Guest check (premium)), `tractor` (Tractor feed, dot matrix (premium)), `carbon` (Carbon copy (premium)) |
| Paper Width (Characters, 0 = Auto) | `width` | Number |
| Long Receipts | `fit` | `page` (Shrink to fit, then scroll), `width` (Fit the width and scroll) |
| Text Size (px, 0 = Auto) | `fontSize` | Number |
| Font | `font` | `builtin` (Receipt mono (built in)), `consolas` (Consolas), `courier` (Courier New), `sans` (System sans) |
| Show Printer Slot | `showPrinter` | On / off |
| Torn Edge | `tornEdge` | On / off |
| Letter Case | `letterCase` | `upper` (UPPER CASE (till)), `asis` (As in the data) |
| Paper Color | `paperColor` | Colour |
| Ink Color | `inkColor` | Colour |
| Accent Color | `accentColor` | Colour |
| Background Color | `counterColor` | Colour |

### Header (`header`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Header | `show` | On / off |
| Store Name | `title` | Text |
| Address Lines | `address` | Text |
| Show Period | `showPeriod` | On / off |
| Period Prefix | `periodPrefix` | Text |
| Show Receipt Number | `showNumber` | On / off |
| Show Rules | `showRules` | On / off |

### Lines (`lines`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Section Headers | `sectionHeaders` | On / off |
| Section Subtotals | `sectionSubtotals` | On / off |
| Sort Lines | `sort` | `data` (As in the data), `desc` (Largest first), `absdesc` (Largest first (by size)), `name` (A to Z) |
| Lines Per Section (0 = All) | `topN` | Number |
| Hide Zero Lines | `hideZero` | On / off |
| Quantity | `quantity` | `below` (Under the item (3 @ 12.00)), `column` (Column), `off` (Off) |
| Long Names | `longNames` | `auto` (Auto (wrap on a guest check)), `truncate` (Cut with …), `wrap` (Wrap) |
| Dot Leaders | `dotLeaders` | On / off |
| Share Bars | `shareBars` | On / off |
| Negative Numbers | `negative` | `minus` (-1,234), `parens` ((1,234)), `trailing` (1,234- (till)), `cr` (1,234 CR) |
| Numbers | `numbers` | `full` (Full (1,234,567)), `compact` (Compact (1.2M)) |
| Currency Symbol | `currency` | `auto` (From the measure format), `none` (None), `custom` (Custom) |
| Custom Symbol | `currencyText` | Text |
| Signs | `signs` | `data` (As in the data), `subtract` (Subtract the sections below) |
| Sections To Subtract: Section names, comma separated, whose amounts are subtracted: for a P&L model that stores costs as positive numbers. | `subtractSections` | Text |
| Section Order: The statement order, one section per line or ; separated. Sections you leave out follow in the data order. Running totals add up in this order. | `sectionOrder` | Text |
| Running Totals: A line after a section with the running total so far, one per line or ; separated: Cost of sales = Gross profit. | `runningTotals` | Text |
| Of Which Lines (premium): Parts of a line, printed under it and never added: one per line or ; separated, Item = Parent item, or just Item for the line before it. Premium: readers without a licence do not see them; the totals are the same. | `ofWhich` | Text |

### Totals (`totals`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Subtotal | `showSubtotal` | On / off |
| Subtotal Label | `subtotalLabel` | Text |
| Section Subtotal Label | `sectionSubtotalLabel` | Text |
| Discount Label | `discountLabel` | Text |
| Discount (%) | `discountPct` | Number |
| Tax | `taxMode` | `none` (None), `added` (Added to the total), `included` (Included in the prices) |
| Tax Rate (%) | `taxRate` | Number |
| Tax Label | `taxLabel` | Text |
| Total Label | `totalLabel` | Text |
| Total Size (%) | `totalSize` | Number |
| Show Item Count | `showCount` | On / off |
| Item Count Label | `countLabel` | Text |

### Comparison (premium) (`comparison`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Comparison | `show` | On / off |
| Label | `label` | Text |
| Show As | `display` | `delta` (Difference), `percent` (Difference %), `both` (Both) |
| Better Is | `favourable` | `higher` (Higher), `lower` (Lower) |
| Better Color | `goodColor` | Colour |
| Worse Color | `badColor` | Colour |
| Show Second Comparison | `show2` | On / off |
| Second Label | `label2` | Text |
| Second Comparison Shows As | `display2` | `footer` (Footer line), `column` (Difference % column) |

### Ratios (premium) (`ratios`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Ratios | `show` | On / off |
| Base Section: Every ratio is a share of this section, usually Revenue. Empty: the first section. | `base` | Text |
| Margin Label | `marginLabel` | Text |
| % Of Base Column | `column` | On / off |

### Barcode (premium) (`code`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Code | `type` | `none` (None), `barcode` (Barcode), `qr` (QR code), `both` (Barcode and QR) |
| Content: Text or link the code carries when no Code Content field is bound. Empty: store name, period and total. The visual never opens a link; a phone scans it. | `content` | Text |
| Print The Text Under The Barcode | `showText` | On / off |

### Footer (`footer`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Footer | `show` | On / off |
| Footer Text | `text` | Text |
| Show Stamp (premium) | `showStamp` | On / off |
| Stamp From: Premium Print pack. Stamp field: the status bound to Stamp, one per receipt. Comparison: on or over the comparison, with your words and tolerance. | `stampMode` | `auto` (Stamp field, else the sign of the total), `sign` (Sign of the total), `comparison` (Comparison (on or over budget)) |
| Stamp When Total Is Zero Or More | `stampPositive` | Text |
| Stamp When Total Is Negative | `stampNegative` | Text |
| Stamp When On Budget | `stampGood` | Text |
| Stamp When Over Budget | `stampBad` | Text |
| Tolerance (%): How far the total may be on the wrong side of the comparison and still get the on-budget stamp. | `stampTolerance` | Number |
| Stamp Color | `stampColor` | Colour |

### Printing (`animation`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Print On Load | `printOnLoad` | On / off |
| Lines Per Second | `speed` | Number |
| Reprint When Data Changes | `reprint` | On / off |

### Receipts (premium) (`receipts`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Receipts Per Row (0 = Auto) | `perRow` | Number |
| Gap (px) | `gap` | Number |

### Export (premium) (`export`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show CSV Button: A CSV button in the top-right corner, shown on hover and keyboard focus. Needs the tenant setting Allow downloads from custom visuals. | `showButton` | On / off |

### Accessibility (`accessibility`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Reduce Motion: Print the receipt at once instead of feeding it out. Follow system setting honours the viewer's reduced-motion preference. | `reduceMotion` | `system` (Follow system setting), `always` (Always reduce), `off` (Off (always animate)) |
| Focus Outline Color: Colour of the keyboard focus outline. Empty follows the theme; high contrast always uses the system colour. | `focusColor` | Colour |
| Focus Outline Width (px, 0 = Auto): Width of the keyboard focus outline. 0 uses 2 px. | `focusWidth` | Number |
| Minimum Text Size (px, 0 = Off): No receipt text is drawn smaller than this; a long receipt scrolls instead of shrinking further. | `minFontSize` | Number |
