---
title: Receipts
description: >-
  The receipt appears as the printed or digital output that customers receive
  after completing a transaction. This receipt displays transaction details,
  payment information, and store branding, providing the last touchpoint in the
  customer experience.
api_version: 2026-07
source_url:
  html: 'https://shopify.dev/docs/api/pos-ui-extensions/2026-07-rc/targets/receipts'
  md: >-
    https://shopify.dev/docs/api/pos-ui-extensions/2026-07-rc/targets/receipts.md
api_name: pos-ui-extensions
---

# Receipts

**Beta:**

Receipt targets are part of the POS UI extensions [feature preview](https://shopify.dev/docs/api/feature-previews). This feature preview is available on an invite-only basis and requires POS UI extensions version 2025-04 or higher and POS app version 9.31.0 or later.

The receipt appears as the printed or digital output that customers receive after completing a transaction. This receipt displays transaction details, payment information, and store branding, providing the last touchpoint in the customer experience.

### Use cases

* **Custom branding:** Add logos, promotional messages, and store-specific information.
* **Transaction details:** Display order details, loyalty program details, and return policies.
* **Compliance information:** Include terms of service, regulatory disclosures, and store policies.
* **Customer engagement:** Integrate survey links, social media, and marketing campaigns.

![Receipts targets overview](https://shopify.dev/assets/assets/images/api/pos-ui-extensions/targets-overview-images/receipts-targets-DjPidwVw.png)

***

## Receipts targets

Use these targets for receipt customization, branding, or integration with external systems for customer engagement and compliance.

### Receipt block (header) target

`pos.receipt-header.block.render`

Renders a custom section in the header of printed receipts. Use this target for adding custom branding, logos, promotional messages, or store-specific information at the top of receipts.

Extensions at this target appear in the receipt header area and support limited components optimized for print formatting, including text content for information display.

#### TransactionCompleteWithReprintData

The data object provided to receipt targets containing transaction details and reprint information.

* **connectivity**

  **ConnectivityApiContent**

  **required**

  The current Internet connectivity state of the POS device. Indicates whether the device is connected to or disconnected from the Internet. This state updates in real-time as connectivity changes, allowing extensions to adapt behavior for offline scenarios, show connectivity warnings, or queue operations for when connectivity is restored.

* **device**

  **Device**

  **required**

  Comprehensive information about the physical POS device where the extension is currently running. Includes the device name, unique device ID, and form factor information (tablet vs other). This data is static for the session and helps extensions adapt to different device types, log device-specific information, or implement device-based configurations.

* **locale**

  **string**

  **required**

  The [IETF BCP 47](https://en.wikipedia.org/wiki/IETF_language_tag) locale string for the current POS session (for example, `"en-US"`, `"fr-CA"`, `"de-DE"`). This indicates the merchant's language and regional preferences. Commonly used for internationalization (i18n), locale-specific date/time/number formatting, translating UI text, and providing localized content. The locale remains constant for the session and reflects the language selected in POS settings.

* **session**

  **Session**

  **required**

  Comprehensive information about the current POS session including shop ID and domain, authenticated user, pinned staff member, active location, currency settings, and POS version. This session data remains constant for the session duration and provides critical context for business logic, permissions, API authentication, and transaction processing. Session data updates when users switch locations or change pinned staff members.

* **storage**

  **Storage\<Record\<string, unknown>>**

  **required**

  Provides access to persistent local storage methods for your POS UI extension. Use this to store, retrieve, and manage data that persists across sessions.

* **transaction**

  **| SaleTransactionData | ReturnTransactionData | ExchangeTransactionData | ReprintReceiptData**

  **required**

  The transaction data, which can be one of the following types:

  * `SaleTransactionData`: Defines the data structure for completed sale transactions.
  * `ReturnTransactionData`: Defines the data structure for completed return transactions.
  * `ExchangeTransactionData`: Defines the data structure for completed exchange transactions.
  * `ReprintReceiptData`: Defines the data structure for receipt reprint requests.

### ConnectivityApiContent

Provides access to the current connectivity state for the POS device.

* current

  Provides read-only access to the current connectivity state and allows subscribing to connectivity changes. Use for implementing connectivity-aware functionality and reactive connectivity handling.

  ```ts
  ReadonlySignalLike<ConnectivityState>
  ```

### ReadonlySignalLike

Represents a reactive signal interface that provides both immediate value access and subscription-based updates. Enables real-time synchronization with changing data through the observer pattern.

* subscribe

  Subscribes to value changes and calls the provided function whenever the value updates. Returns an unsubscribe function to clean up the subscription. Use to automatically react to changes in the signal's value.

  ```ts
  (fn: (value: T) => void) => () => void
  ```

* value

  The current value of the signal. This property provides immediate access to the current value without requiring subscription setup. Use for one-time value checks or initial setup.

  ```ts
  T
  ```

### ConnectivityState

Represents the current Internet connectivity status of the device. Indicates whether the device is connected or disconnected from the Internet.

* internetConnected

  The Internet connection status of the POS device.

  ```ts
  ConnectivityStateSeverity
  ```

### ConnectivityStateSeverity

```ts
'Connected' | 'Disconnected'
```

### Device

Defines information about the POS device where the extension is running.

* deviceId

  The unique identifier for the POS device.

  ```ts
  number
  ```

* isTablet

  Whether the device is a tablet form factor.

  ```ts
  boolean
  ```

* name

  The name of the POS device.

  ```ts
  string
  ```

### Session

Defines information about the current POS session.

* currency

  The \[ISO 4217]\(https://en.wikipedia.org/wiki/ISO\_4217) currency code associated with the location currently active on POS.

  ```ts
  CurrencyCode
  ```

* locationId

  The location ID associated with the POS device's current location.

  ```ts
  number
  ```

* posVersion

  The version of \[the POS app]\(https://apps.shopify.com/shopify-pos) currently running.

  ```ts
  string
  ```

* shopDomain

  The shop domain associated with the shop currently logged into POS.

  ```ts
  string
  ```

* shopId

  The shop ID associated with the shop currently logged into POS.

  ```ts
  number
  ```

* staffMemberId

  The staff ID of the staff member pinned into POS when the extension started. This may differ from the user ID if the pinned staff member is different from the logged in user.

  ```ts
  number
  ```

* userId

  The user ID associated with the Shopify account currently authenticated on POS.

  ```ts
  number
  ```

### CurrencyCode

```ts
'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BOV' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BZD' | 'CAD' | 'CDF' | 'CHE' | 'CHF' | 'CHW' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'COU' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRU' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STN' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'USN' | 'UYI' | 'UYU' | 'UYW' | 'UZS' | 'VES' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XAG' | 'XAU' | 'XBA' | 'XBB' | 'XBC' | 'XBD' | 'XCD' | 'XDR' | 'XOF' | 'XPD' | 'XPF' | 'XPT' | 'XSU' | 'XTS' | 'XUA' | 'XXX' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL'
```

### Storage

Defines the storage interface for persisting extension data across sessions.

* clear

  Clears all data from storage, removing all key-value pairs.

  ```ts
  () => Promise<void>
  ```

* delete

  Deletes a specific key from storage and returns \`true\` if the key existed, \`false\` if it didn't exist. Returns \`false\` for non-existent keys rather than throwing an error. Commonly used for cleaning up temporary workflow data, removing expired cache entries, or handling user preference changes.

  ```ts
  <StorageTypes extends BaseStorageTypes = BaseStorageTypes, Keys extends keyof StorageTypes = keyof StorageTypes>(key: Keys) => Promise<boolean>
  ```

* entries

  Retrieves all stored key-value pairs as an array of tuples, preserving original data types. Returns all data at once which may impact memory usage with large datasets. Commonly used for debugging storage contents, implementing data export features, or performing bulk operations across stored data.

  ```ts
  <StorageTypes extends BaseStorageTypes = BaseStorageTypes, Keys extends keyof StorageTypes = keyof StorageTypes>() => Promise<[Keys, StorageTypes[Keys]][]>
  ```

* get

  Retrieves the value associated with a key, returning \`undefined\` if the key doesn't exist. Always handle the \`undefined\` case by providing fallback values or conditional logic. Commonly used for loading user preferences, retrieving cached data, or accessing contextual information passed between extension targets.

  ```ts
  <StorageTypes extends BaseStorageTypes = BaseStorageTypes, Keys extends keyof StorageTypes = keyof StorageTypes>(key: Keys) => Promise<StorageTypes[Keys]>
  ```

* set

  Stores a value under the specified key, overwriting any existing value. Values must be JSON-serializable and return \`StorageError\` when storage limits are exceeded. Commonly used for storing user preferences, caching API responses, or passing contextual data from tiles to modals.

  ```ts
  <StorageTypes extends BaseStorageTypes = BaseStorageTypes, Keys extends keyof StorageTypes = keyof StorageTypes>(key: Keys, value: StorageTypes[Keys]) => Promise<void>
  ```

### SaleTransactionData

Defines the data structure for completed sale transactions.

* balanceDue

  The remaining balance still owed on this transaction as a \`Money\` object. Typically \`{amount: 0, currency: "USD"}\` for fully paid transactions. A positive balance indicates partial payment or layaway scenarios. A negative balance indicates overpayment, where change should be returned to the customer. Calculated as: grandTotal minus sum of all payment amounts.

  ```ts
  Money
  ```

* cashRoundingAdjustment

  The cash rounding adjustment applied to this transaction as a \`Money\` object. Returns \`undefined\` when no cash rounding adjustment was applied.

  ```ts
  Money
  ```

* customer

  The customer information if this transaction is associated with a customer account. Contains the customer ID for linking to customer records. Returns \`undefined\` for guest transactions where no customer was selected or when the transaction doesn't support customer association.

  ```ts
  Customer
  ```

* discounts

  An array of all discounts applied to this transaction, including cart-level discounts, automatic discounts, and discount codes. Each discount entry contains the discount amount, type, and description. Returns \`undefined\` or empty array when no discounts were applied. The sum of discount amounts reduces the final transaction total.

  ```ts
  Discount[]
  ```

* draftCheckoutUuid

  The UUID of the draft checkout if the sale originated from a draft order.

  ```ts
  string
  ```

* executedAt

  The \[ISO 8601]\(https://en.wikipedia.org/wiki/ISO\_8601) timestamp when the transaction was executed and completed (for example, \`"2024-05-15T14:30:00Z"\`). This marks the exact moment the transaction was finalized, payment was processed, and the order was created. Commonly used for transaction history, chronological sorting, reporting, audit trails, and synchronization with external systems.

  ```ts
  string
  ```

* grandTotal

  The final total amount the customer pays for this transaction as a \`Money\` object. This includes all line items, shipping charges, taxes, and accounts for all discounts. This is the amount that must be tendered through payment methods. Calculated as: subtotal + taxTotal + shipping - discounts.

  ```ts
  Money
  ```

* lineItems

  An array of line items included in the sale transaction.

  ```ts
  LineItem[]
  ```

* orderId

  The unique numeric identifier for the Shopify order created by this transaction. This ID links the POS transaction to the order record in Shopify's system and can be used for order lookups, tracking, and API operations. Returns \`undefined\` for transactions that don't create orders (for example, reprints) or when order creation is pending.

  ```ts
  number
  ```

* paymentMethods

  An array of all payment methods used to complete this transaction. Each payment entry specifies the payment type (for example, cash, credit card), amount tendered, and currency. Multiple entries indicate split payments where the customer paid using multiple methods (for example, part cash, part credit card). The sum of all payment amounts should equal or exceed the \`grandTotal\`.

  ```ts
  Payment[]
  ```

* shippingLines

  An array of shipping charges applied to this transaction. Each shipping line represents a shipping method with its price and associated taxes. Multiple entries can exist when different shipping methods apply to different items or when combining shipping with pickup. Returns \`undefined\` or empty array for transactions with no shipping charges (for example, in-store purchases, digital products).

  ```ts
  ShippingLine[]
  ```

* subtotal

  The subtotal amount before taxes and after discounts are applied, as a \`Money\` object. This represents the sum of all line item prices (quantity × unit price) minus any discounts, but before tax is added. This is the taxable base amount for most tax calculations.

  ```ts
  Money
  ```

* taxLines

  An array of individual tax lines showing the detailed tax breakdown by jurisdiction and tax type. Each tax line represents a specific tax (for example, state tax, federal tax, VAT, GST) with its rate and calculated amount. Multiple tax lines can apply to a single transaction based on location, product taxability, and tax rules. Returns \`undefined\` or empty array for tax-exempt transactions or when detailed tax breakdown isn't available.

  ```ts
  TaxLine[]
  ```

* taxTotal

  The total tax amount charged on this transaction as a \`Money\` object. This is the sum of all tax lines and represents the combined tax from all applicable tax jurisdictions and rules. Tax calculations are based on the location, products, customer, and tax settings configured in Shopify.

  ```ts
  Money
  ```

* tipAmount

  The tip amount added to this transaction as a \`Money\` object. This represents the gratuity the customer chose to add on top of the grand total, typically for service-based businesses or hospitality transactions. Tipping can be enabled through POS settings and may be added as a percentage or fixed amount. Returns \`undefined\` when no tip was added or when tipping is not enabled for the transaction.

  ```ts
  Money
  ```

* transactionType

  The transaction type identifier, always 'Sale' for sale transactions.

  ```ts
  'Sale'
  ```

### Money

Represents a monetary amount with currency information.

* amount

  The monetary amount as a number.

  ```ts
  number
  ```

* currency

  The \[ISO 4217]\(https://en.wikipedia.org/wiki/ISO\_4217) currency code associated with the location currently active on POS.

  ```ts
  string
  ```

### Customer

Represents basic customer identification information. Contains the customer ID for linking to detailed customer data and enabling customer-specific features.

* id

  The unique numeric identifier for the customer in Shopify's system. This ID is consistent across all Shopify systems and APIs. Used to link this customer reference to the full customer record with complete profile information. Commonly used for customer lookups, applying customer-specific pricing or discounts, linking orders to customer accounts, or integrating with customer management systems.

  ```ts
  number
  ```

### Discount

Represents a discount applied to a cart or transaction, including amount and description.

* amount

  The discount value to apply. For \`'Percentage'\` type, this represents the percentage value (For example, "10" for 10% off). For \`'FixedAmount'\` type, this represents the fixed monetary amount to deduct from the line item price. Commonly used for discount calculations and displaying the discount value to merchants.

  ```ts
  number
  ```

* currency

  The \[ISO 4217]\(https://en.wikipedia.org/wiki/ISO\_4217) currency code associated with the location currently active on POS.

  ```ts
  string
  ```

* discountDescription

  A human-readable description of the discount shown to merchants and customers. This typically includes the discount name, promotion details, or discount code (for example, "SUMMER2024", "10% off entire order", "Buy 2 Get 1 Free"). Returns \`undefined\` when no description is provided.

  ```ts
  string
  ```

* type

  The \[discount type]\(https://help.shopify.com/en/manual/discounts/discount-types) applied to this line item. Can be either \`'Percentage'\` for percentage-based discounts or \`'FixedAmount'\` for fixed monetary amount discounts. This determines how the discount amount is calculated and displayed.

  ```ts
  string
  ```

### LineItem

Represents an individual item in the shopping cart. Contains product information, pricing, quantity, discounts, and customization details for a single cart entry.

* attributedUserId

  The staff member 'ID' attributed to this line item. Returns 'undefined' if no staff attribution is set. Use for commission tracking and performance analytics.

  ```ts
  number
  ```

* components

  Bundle components for this line item. Only present for \[product bundles]\(/docs/apps/build/product-merchandising/bundles). Each component represents an individual item within the bundle with its own tax information.

  ```ts
  LineItemComponent[]
  ```

* discountAllocations

  An array of discount allocations applied to this line item, providing detailed breakdown of how discounts are distributed. Returns 'undefined' if no allocations exist. Use for enhanced discount tracking and reporting.

  ```ts
  DiscountAllocation[]
  ```

* discounts

  An array of discounts applied to this line item. Empty array if no discounts are active. Use for displaying line item savings and discount details.

  ```ts
  Discount[]
  ```

* hasSellingPlanGroups

  Determines whether this line item has selling plan groups (subscription options) available. Returns 'undefined' if selling plan information is unavailable. Use for displaying subscription options.

  ```ts
  boolean
  ```

* isGiftCard

  Determines whether this line item is a gift card. Gift cards have special handling requirements and business logic. Use for implementing gift card-specific workflows.

  ```ts
  boolean
  ```

* price

  The unit price of the line item. Returns 'undefined' for custom sales without set prices. Use for pricing calculations and displays.

  ```ts
  number
  ```

* productId

  The product 'ID' this line item represents. Returns 'undefined' for custom sales or non-product items. Use for product-specific operations and linking to product details.

  ```ts
  number
  ```

* properties

  The custom key-value properties attached to this line item. Empty object if no properties are set. Use for metadata, customization options, or integration data.

  ```ts
  { [key: string]: string; }
  ```

* quantity

  The quantity of this item in the cart. Always a positive integer. Use for quantity displays, calculations, and inventory management.

  ```ts
  number
  ```

* requiresSellingPlan

  Determines whether this line item requires a selling plan (subscription) to be purchased. Returns 'undefined' if selling plan information is unavailable. Use for implementing subscription-based product handling.

  ```ts
  boolean
  ```

* sellingPlan

  The currently selected selling plan for this line item. Returns 'undefined' if no selling plan is applied. Contains selling plan details including 'ID', name, and delivery intervals. Use for subscription management and recurring purchase functionality.

  ```ts
  SellingPlan
  ```

* sku

  The Stock Keeping Unit (SKU) identifier for this line item. Returns 'undefined' if no SKU is configured. Use for inventory tracking and product identification.

  ```ts
  string
  ```

* taxable

  Determines whether this line item is subject to tax calculations. Use for tax computation, compliance, and pricing displays.

  ```ts
  boolean
  ```

* taxLines

  An array of tax lines applied to this line item, containing tax amounts and rates. Use for detailed tax reporting and compliance.

  ```ts
  TaxLine[]
  ```

* title

  The display title of the line item. Returns 'undefined' for items without titles. Use for customer-facing displays and cart item identification.

  ```ts
  string
  ```

* uuid

  The unique identifier for this line item within the cart. Use for line item-specific operations like updates, removals, or property modifications.

  ```ts
  string
  ```

* variantId

  The product variant 'ID' this line item represents. Returns 'undefined' for custom sales or non-variant items. Use for variant-specific operations and product details.

  ```ts
  number
  ```

* vendor

  The vendor or brand name for this line item. Returns 'undefined' if no vendor is set. Use for vendor-specific displays and organization.

  ```ts
  string
  ```

### LineItemComponent

Represents a component of a \[product bundle]\(/docs/apps/build/product-merchandising/bundles) line item. Bundle components contain the individual items that make up a bundle, each with their own pricing and tax information.

* price

  The price for the custom sale item as currency string. Must be a valid positive amount. Use for non-catalog items and custom pricing.

  ```ts
  number
  ```

* productId

  The unique numeric identifier for the product this component represents, if applicable.

  ```ts
  number
  ```

* quantity

  The quantity of the custom sale item. Must be a positive integer. Use for quantity-based pricing and inventory management.

  ```ts
  number
  ```

* taxable

  Determines whether the custom sale item is taxable. Set to \`true\` to apply tax calculations, \`false\` to exempt from taxes.

  ```ts
  boolean
  ```

* taxLines

  An array of tax lines applied to this component.

  ```ts
  TaxLine[]
  ```

* title

  The display name for the custom sale item. Appears on receipts and in cart displays. Should be descriptive and customer-friendly.

  ```ts
  string
  ```

* variantId

  The unique numeric identifier for the product variant this component represents, if applicable.

  ```ts
  number
  ```

### TaxLine

Represents a tax line applied to an item or transaction.

* enabled

  Whether this tax is currently enabled.

  ```ts
  boolean
  ```

* price

  The tax amount as a Money object.

  ```ts
  Money
  ```

* rate

  The tax rate as a decimal number.

  ```ts
  number
  ```

* rateRange

  The range of tax rates if applicable.

  ```ts
  { min: number; max: number; }
  ```

* title

  The title or name of the tax.

  ```ts
  string
  ```

* uuid

  The unique identifier for this tax line.

  ```ts
  string
  ```

### DiscountAllocation

Represents the allocation of a discount to a specific line item.

* allocatedAmount

  The amount of discount allocated.

  ```ts
  MoneyV2
  ```

### MoneyV2

Represents a monetary amount as a string with explicit currency code.

* amount

  The monetary amount as a string.

  ```ts
  string
  ```

* currencyCode

  The ISO currency code (for example, USD, CAD).

  ```ts
  string
  ```

### SellingPlan

Represents a selling plan (subscription) associated with a line item, containing delivery schedule and plan identification details.

* deliveryInterval

  The interval of the selling plan. (DAY, WEEK, MONTH, YEAR).

  ```ts
  string
  ```

* deliveryIntervalCount

  The number of intervals between deliveries.

  ```ts
  number
  ```

* digest

  The fingerprint of the applied selling plan within this cart session. Provided by POS. Not available during refund / exchanges.

  ```ts
  string
  ```

* id

  The unique identifier of the selling plan.

  ```ts
  number
  ```

* name

  The name of the POS device.

  ```ts
  string
  ```

### Payment

Represents a payment applied to a transaction, including the amount, currency, and payment method type.

* amount

  The payment amount.

  ```ts
  number
  ```

* currency

  The \[ISO 4217]\(https://en.wikipedia.org/wiki/ISO\_4217) currency code associated with the location currently active on POS.

  ```ts
  string
  ```

* type

  The payment method type.

  ```ts
  PaymentMethod
  ```

### PaymentMethod

The available payment method types for POS transactions.

```ts
'Cash' | 'Custom' | 'CreditCard' | 'CardPresentRefund' | 'StripeCardPresentRefund' | 'GiftCard' | 'StripeCreditCard' | 'ShopPay' | 'StoreCredit' | 'Unknown'
```

### ShippingLine

Represents a shipping charge applied to an order, including the price and applicable taxes.

* handle

  The handle identifier for the shipping method.

  ```ts
  string
  ```

* price

  The price of the shipping as a Money object.

  ```ts
  Money
  ```

* taxLines

  An array of individual tax lines showing tax breakdown.

  ```ts
  TaxLine[]
  ```

* title

  The display title of the shipping method.

  ```ts
  string
  ```

### ReturnTransactionData

Defines the data structure for completed return transactions.

* balanceDue

  The remaining balance still owed on this transaction as a \`Money\` object. Typically \`{amount: 0, currency: "USD"}\` for fully paid transactions. A positive balance indicates partial payment or layaway scenarios. A negative balance indicates overpayment, where change should be returned to the customer. Calculated as: grandTotal minus sum of all payment amounts.

  ```ts
  Money
  ```

* cashRoundingAdjustment

  The cash rounding adjustment applied to this transaction as a \`Money\` object. Returns \`undefined\` when no cash rounding adjustment was applied.

  ```ts
  Money
  ```

* customer

  The customer information if this transaction is associated with a customer account. Contains the customer ID for linking to customer records. Returns \`undefined\` for guest transactions where no customer was selected or when the transaction doesn't support customer association.

  ```ts
  Customer
  ```

* discounts

  An array of all discounts applied to this transaction, including cart-level discounts, automatic discounts, and discount codes. Each discount entry contains the discount amount, type, and description. Returns \`undefined\` or empty array when no discounts were applied. The sum of discount amounts reduces the final transaction total.

  ```ts
  Discount[]
  ```

* exchangeId

  The exchange ID if the return is part of an exchange transaction.

  ```ts
  number
  ```

* executedAt

  The \[ISO 8601]\(https://en.wikipedia.org/wiki/ISO\_8601) timestamp when the transaction was executed and completed (for example, \`"2024-05-15T14:30:00Z"\`). This marks the exact moment the transaction was finalized, payment was processed, and the order was created. Commonly used for transaction history, chronological sorting, reporting, audit trails, and synchronization with external systems.

  ```ts
  string
  ```

* grandTotal

  The final total amount the customer pays for this transaction as a \`Money\` object. This includes all line items, shipping charges, taxes, and accounts for all discounts. This is the amount that must be tendered through payment methods. Calculated as: subtotal + taxTotal + shipping - discounts.

  ```ts
  Money
  ```

* lineItems

  An array of line items included in the sale transaction.

  ```ts
  LineItem[]
  ```

* orderId

  The unique numeric identifier for the Shopify order created by this transaction. This ID links the POS transaction to the order record in Shopify's system and can be used for order lookups, tracking, and API operations. Returns \`undefined\` for transactions that don't create orders (for example, reprints) or when order creation is pending.

  ```ts
  number
  ```

* paymentMethods

  An array of all payment methods used to complete this transaction. Each payment entry specifies the payment type (for example, cash, credit card), amount tendered, and currency. Multiple entries indicate split payments where the customer paid using multiple methods (for example, part cash, part credit card). The sum of all payment amounts should equal or exceed the \`grandTotal\`.

  ```ts
  Payment[]
  ```

* refundId

  The refund ID if a refund was issued for the return.

  ```ts
  number
  ```

* returnId

  The return ID for the completed return transaction.

  ```ts
  number
  ```

* shippingLines

  An array of shipping charges applied to this transaction. Each shipping line represents a shipping method with its price and associated taxes. Multiple entries can exist when different shipping methods apply to different items or when combining shipping with pickup. Returns \`undefined\` or empty array for transactions with no shipping charges (for example, in-store purchases, digital products).

  ```ts
  ShippingLine[]
  ```

* subtotal

  The subtotal amount before taxes and after discounts are applied, as a \`Money\` object. This represents the sum of all line item prices (quantity × unit price) minus any discounts, but before tax is added. This is the taxable base amount for most tax calculations.

  ```ts
  Money
  ```

* taxLines

  An array of individual tax lines showing the detailed tax breakdown by jurisdiction and tax type. Each tax line represents a specific tax (for example, state tax, federal tax, VAT, GST) with its rate and calculated amount. Multiple tax lines can apply to a single transaction based on location, product taxability, and tax rules. Returns \`undefined\` or empty array for tax-exempt transactions or when detailed tax breakdown isn't available.

  ```ts
  TaxLine[]
  ```

* taxTotal

  The total tax amount charged on this transaction as a \`Money\` object. This is the sum of all tax lines and represents the combined tax from all applicable tax jurisdictions and rules. Tax calculations are based on the location, products, customer, and tax settings configured in Shopify.

  ```ts
  Money
  ```

* tipAmount

  The tip amount added to this transaction as a \`Money\` object. This represents the gratuity the customer chose to add on top of the grand total, typically for service-based businesses or hospitality transactions. Tipping can be enabled through POS settings and may be added as a percentage or fixed amount. Returns \`undefined\` when no tip was added or when tipping is not enabled for the transaction.

  ```ts
  Money
  ```

* transactionType

  The transaction type identifier, always 'Sale' for sale transactions.

  ```ts
  'Return'
  ```

### ExchangeTransactionData

Defines the data structure for completed exchange transactions.

* balanceDue

  The remaining balance still owed on this transaction as a \`Money\` object. Typically \`{amount: 0, currency: "USD"}\` for fully paid transactions. A positive balance indicates partial payment or layaway scenarios. A negative balance indicates overpayment, where change should be returned to the customer. Calculated as: grandTotal minus sum of all payment amounts.

  ```ts
  Money
  ```

* cashRoundingAdjustment

  The cash rounding adjustment applied to this transaction as a \`Money\` object. Returns \`undefined\` when no cash rounding adjustment was applied.

  ```ts
  Money
  ```

* customer

  The customer information if this transaction is associated with a customer account. Contains the customer ID for linking to customer records. Returns \`undefined\` for guest transactions where no customer was selected or when the transaction doesn't support customer association.

  ```ts
  Customer
  ```

* discounts

  An array of all discounts applied to this transaction, including cart-level discounts, automatic discounts, and discount codes. Each discount entry contains the discount amount, type, and description. Returns \`undefined\` or empty array when no discounts were applied. The sum of discount amounts reduces the final transaction total.

  ```ts
  Discount[]
  ```

* exchangeId

  The exchange ID if the return is part of an exchange transaction.

  ```ts
  number
  ```

* executedAt

  The \[ISO 8601]\(https://en.wikipedia.org/wiki/ISO\_8601) timestamp when the transaction was executed and completed (for example, \`"2024-05-15T14:30:00Z"\`). This marks the exact moment the transaction was finalized, payment was processed, and the order was created. Commonly used for transaction history, chronological sorting, reporting, audit trails, and synchronization with external systems.

  ```ts
  string
  ```

* grandTotal

  The final total amount the customer pays for this transaction as a \`Money\` object. This includes all line items, shipping charges, taxes, and accounts for all discounts. This is the amount that must be tendered through payment methods. Calculated as: subtotal + taxTotal + shipping - discounts.

  ```ts
  Money
  ```

* lineItemsAdded

  An array of line items added to the customer in the exchange.

  ```ts
  LineItem[]
  ```

* lineItemsRemoved

  An array of line items removed from the customer in the exchange.

  ```ts
  LineItem[]
  ```

* orderId

  The unique numeric identifier for the Shopify order created by this transaction. This ID links the POS transaction to the order record in Shopify's system and can be used for order lookups, tracking, and API operations. Returns \`undefined\` for transactions that don't create orders (for example, reprints) or when order creation is pending.

  ```ts
  number
  ```

* paymentMethods

  An array of all payment methods used to complete this transaction. Each payment entry specifies the payment type (for example, cash, credit card), amount tendered, and currency. Multiple entries indicate split payments where the customer paid using multiple methods (for example, part cash, part credit card). The sum of all payment amounts should equal or exceed the \`grandTotal\`.

  ```ts
  Payment[]
  ```

* returnId

  The return ID for the completed return transaction.

  ```ts
  number
  ```

* shippingLines

  An array of shipping charges applied to this transaction. Each shipping line represents a shipping method with its price and associated taxes. Multiple entries can exist when different shipping methods apply to different items or when combining shipping with pickup. Returns \`undefined\` or empty array for transactions with no shipping charges (for example, in-store purchases, digital products).

  ```ts
  ShippingLine[]
  ```

* subtotal

  The subtotal amount before taxes and after discounts are applied, as a \`Money\` object. This represents the sum of all line item prices (quantity × unit price) minus any discounts, but before tax is added. This is the taxable base amount for most tax calculations.

  ```ts
  Money
  ```

* taxLines

  An array of individual tax lines showing the detailed tax breakdown by jurisdiction and tax type. Each tax line represents a specific tax (for example, state tax, federal tax, VAT, GST) with its rate and calculated amount. Multiple tax lines can apply to a single transaction based on location, product taxability, and tax rules. Returns \`undefined\` or empty array for tax-exempt transactions or when detailed tax breakdown isn't available.

  ```ts
  TaxLine[]
  ```

* taxTotal

  The total tax amount charged on this transaction as a \`Money\` object. This is the sum of all tax lines and represents the combined tax from all applicable tax jurisdictions and rules. Tax calculations are based on the location, products, customer, and tax settings configured in Shopify.

  ```ts
  Money
  ```

* tipAmount

  The tip amount added to this transaction as a \`Money\` object. This represents the gratuity the customer chose to add on top of the grand total, typically for service-based businesses or hospitality transactions. Tipping can be enabled through POS settings and may be added as a percentage or fixed amount. Returns \`undefined\` when no tip was added or when tipping is not enabled for the transaction.

  ```ts
  Money
  ```

* transactionType

  The transaction type identifier, always 'Sale' for sale transactions.

  ```ts
  'Exchange'
  ```

### ReprintReceiptData

Defines the data structure for receipt reprint requests.

* balanceDue

  The remaining balance still owed on this transaction as a \`Money\` object. Typically \`{amount: 0, currency: "USD"}\` for fully paid transactions. A positive balance indicates partial payment or layaway scenarios. A negative balance indicates overpayment, where change should be returned to the customer. Calculated as: grandTotal minus sum of all payment amounts.

  ```ts
  Money
  ```

* cashRoundingAdjustment

  The cash rounding adjustment applied to this transaction as a \`Money\` object. Returns \`undefined\` when no cash rounding adjustment was applied.

  ```ts
  Money
  ```

* customer

  The customer information if this transaction is associated with a customer account. Contains the customer ID for linking to customer records. Returns \`undefined\` for guest transactions where no customer was selected or when the transaction doesn't support customer association.

  ```ts
  Customer
  ```

* discounts

  An array of all discounts applied to this transaction, including cart-level discounts, automatic discounts, and discount codes. Each discount entry contains the discount amount, type, and description. Returns \`undefined\` or empty array when no discounts were applied. The sum of discount amounts reduces the final transaction total.

  ```ts
  Discount[]
  ```

* exchangeId

  The exchange ID if the return is part of an exchange transaction.

  ```ts
  number
  ```

* executedAt

  The \[ISO 8601]\(https://en.wikipedia.org/wiki/ISO\_8601) timestamp when the transaction was executed and completed (for example, \`"2024-05-15T14:30:00Z"\`). This marks the exact moment the transaction was finalized, payment was processed, and the order was created. Commonly used for transaction history, chronological sorting, reporting, audit trails, and synchronization with external systems.

  ```ts
  string
  ```

* grandTotal

  The final total amount the customer pays for this transaction as a \`Money\` object. This includes all line items, shipping charges, taxes, and accounts for all discounts. This is the amount that must be tendered through payment methods. Calculated as: subtotal + taxTotal + shipping - discounts.

  ```ts
  Money
  ```

* lineItems

  An array of line items included in the transaction.

  ```ts
  OrderLineItem[]
  ```

* lineItemsAdded

  An array of line items added to the customer in the exchange.

  ```ts
  LineItem[]
  ```

* lineItemsRemoved

  An array of line items removed from the customer in the exchange.

  ```ts
  LineItem[]
  ```

* orderId

  The unique numeric identifier for the Shopify order created by this transaction. This ID links the POS transaction to the order record in Shopify's system and can be used for order lookups, tracking, and API operations. Returns \`undefined\` for transactions that don't create orders (for example, reprints) or when order creation is pending.

  ```ts
  number
  ```

* paymentMethods

  An array of all payment methods used to complete this transaction. Each payment entry specifies the payment type (for example, cash, credit card), amount tendered, and currency. Multiple entries indicate split payments where the customer paid using multiple methods (for example, part cash, part credit card). The sum of all payment amounts should equal or exceed the \`grandTotal\`.

  ```ts
  Payment[]
  ```

* refundId

  The refund ID if a refund was issued for the return.

  ```ts
  number
  ```

* returnId

  The return ID for the completed return transaction.

  ```ts
  number
  ```

* shippingLines

  An array of shipping charges applied to this transaction. Each shipping line represents a shipping method with its price and associated taxes. Multiple entries can exist when different shipping methods apply to different items or when combining shipping with pickup. Returns \`undefined\` or empty array for transactions with no shipping charges (for example, in-store purchases, digital products).

  ```ts
  ShippingLine[]
  ```

* subtotal

  The subtotal amount before taxes and after discounts are applied, as a \`Money\` object. This represents the sum of all line item prices (quantity × unit price) minus any discounts, but before tax is added. This is the taxable base amount for most tax calculations.

  ```ts
  Money
  ```

* taxLines

  An array of individual tax lines showing the detailed tax breakdown by jurisdiction and tax type. Each tax line represents a specific tax (for example, state tax, federal tax, VAT, GST) with its rate and calculated amount. Multiple tax lines can apply to a single transaction based on location, product taxability, and tax rules. Returns \`undefined\` or empty array for tax-exempt transactions or when detailed tax breakdown isn't available.

  ```ts
  TaxLine[]
  ```

* taxTotal

  The total tax amount charged on this transaction as a \`Money\` object. This is the sum of all tax lines and represents the combined tax from all applicable tax jurisdictions and rules. Tax calculations are based on the location, products, customer, and tax settings configured in Shopify.

  ```ts
  Money
  ```

* tipAmount

  The tip amount added to this transaction as a \`Money\` object. This represents the gratuity the customer chose to add on top of the grand total, typically for service-based businesses or hospitality transactions. Tipping can be enabled through POS settings and may be added as a percentage or fixed amount. Returns \`undefined\` when no tip was added or when tipping is not enabled for the transaction.

  ```ts
  Money
  ```

* transactionType

  The transaction type identifier, always 'Reprint' for reprint transactions.

  ```ts
  'Reprint'
  ```

### OrderLineItem

Represents a line item from an order, extending the base line item with current quantity and refund information.

* attributedUserId

  The staff member 'ID' attributed to this line item. Returns 'undefined' if no staff attribution is set. Use for commission tracking and performance analytics.

  ```ts
  number
  ```

* components

  Bundle components for this line item. Only present for \[product bundles]\(/docs/apps/build/product-merchandising/bundles). Each component represents an individual item within the bundle with its own tax information.

  ```ts
  LineItemComponent[]
  ```

* currentQuantity

  The current quantity of items that remain with the customer after accounting for refunds. This is calculated as the original \`quantity\` minus any refunded quantities. For example, if 5 items were ordered and 2 were refunded, \`currentQuantity\` would be \`3\`. This value reflects the net quantity the customer kept from this line item.

  ```ts
  number
  ```

* discountAllocations

  An array of discount allocations applied to this line item, providing detailed breakdown of how discounts are distributed. Returns 'undefined' if no allocations exist. Use for enhanced discount tracking and reporting.

  ```ts
  DiscountAllocation[]
  ```

* discounts

  An array of discounts applied to this line item. Empty array if no discounts are active. Use for displaying line item savings and discount details.

  ```ts
  Discount[]
  ```

* hasSellingPlanGroups

  Determines whether this line item has selling plan groups (subscription options) available. Returns 'undefined' if selling plan information is unavailable. Use for displaying subscription options.

  ```ts
  boolean
  ```

* isGiftCard

  Determines whether this line item is a gift card. Gift cards have special handling requirements and business logic. Use for implementing gift card-specific workflows.

  ```ts
  boolean
  ```

* price

  The unit price of the line item. Returns 'undefined' for custom sales without set prices. Use for pricing calculations and displays.

  ```ts
  number
  ```

* productId

  The product 'ID' this line item represents. Returns 'undefined' for custom sales or non-product items. Use for product-specific operations and linking to product details.

  ```ts
  number
  ```

* properties

  The custom key-value properties attached to this line item. Empty object if no properties are set. Use for metadata, customization options, or integration data.

  ```ts
  { [key: string]: string; }
  ```

* quantity

  The quantity of this item in the cart. Always a positive integer. Use for quantity displays, calculations, and inventory management.

  ```ts
  number
  ```

* refunds

  An array of all refund transactions applied to this line item, ordered chronologically. Each refund entry tracks when the refund occurred and how many units were refunded. Multiple entries indicate partial refunds processed over time. Returns \`undefined\` or empty array when no refunds have been applied to this line item.

  ```ts
  LineItemRefund[]
  ```

* requiresSellingPlan

  Determines whether this line item requires a selling plan (subscription) to be purchased. Returns 'undefined' if selling plan information is unavailable. Use for implementing subscription-based product handling.

  ```ts
  boolean
  ```

* sellingPlan

  The currently selected selling plan for this line item. Returns 'undefined' if no selling plan is applied. Contains selling plan details including 'ID', name, and delivery intervals. Use for subscription management and recurring purchase functionality.

  ```ts
  SellingPlan
  ```

* sku

  The Stock Keeping Unit (SKU) identifier for this line item. Returns 'undefined' if no SKU is configured. Use for inventory tracking and product identification.

  ```ts
  string
  ```

* taxable

  Determines whether this line item is subject to tax calculations. Use for tax computation, compliance, and pricing displays.

  ```ts
  boolean
  ```

* taxLines

  An array of tax lines applied to this line item, containing tax amounts and rates. Use for detailed tax reporting and compliance.

  ```ts
  TaxLine[]
  ```

* title

  The display title of the line item. Returns 'undefined' for items without titles. Use for customer-facing displays and cart item identification.

  ```ts
  string
  ```

* uuid

  The unique identifier for this line item within the cart. Use for line item-specific operations like updates, removals, or property modifications.

  ```ts
  string
  ```

* variantId

  The product variant 'ID' this line item represents. Returns 'undefined' for custom sales or non-variant items. Use for variant-specific operations and product details.

  ```ts
  number
  ```

* vendor

  The vendor or brand name for this line item. Returns 'undefined' if no vendor is set. Use for vendor-specific displays and organization.

  ```ts
  string
  ```

### LineItemRefund

Represents a refund applied to a line item, including when it was created and the quantity refunded.

* createdAt

  The \[ISO 8601]\(https://en.wikipedia.org/wiki/ISO\_8601) timestamp when the refund was created and processed (for example, \`"2024-05-15T14:30:00Z"\`). This indicates when the refund was initiated and can be used for chronological sorting, refund history displays, or audit trails.

  ```ts
  string
  ```

* quantity

  The number of units refunded in this refund transaction. This must be a positive integer representing how many items were returned to inventory or credited back to the customer. Multiple refunds can exist for the same line item if partial refunds were processed over time.

  ```ts
  number
  ```

### Support Components (2) APIs (1)

### Supported components

* [Pos block](https://shopify.dev/docs/api/pos-ui-extensions/2026-07-rc/web-components/layout-and-structure/pos-block)
* [Text](https://shopify.dev/docs/api/pos-ui-extensions/2026-07-rc/web-components/layout-and-structure/text)

### Available APIs

* [Storage API](https://shopify.dev/docs/api/pos-ui-extensions/2026-07-rc/target-apis/platform-apis/storage-api)

Examples

### Examples

* ####

  ##### Description

  Add a custom section to the header of printed receipts for branding or important information. This example shows how to create a header block that displays text content optimized for print formatting, useful for store branding, promotional messages, or important notices at the top of receipts.

  ##### jsx

  ```jsx
  import {render} from 'preact';

  export default async () => {
    render(<Extension />, document.body);
  };

  const Extension = () => {
    const {transaction} = shopify;
    const qrCodeValue =
      transaction.transactionType === 'Exchange'
        ? `exampleExchange=${encodeURIComponent(transaction.exchangeId ?? '')}`
        : `exampleOrder=${encodeURIComponent(transaction.orderId ?? '')}`;

    return (
      <s-pos-block>
        <s-text>Transaction type: {transaction.transactionType}</s-text>
        <s-text>Total tax ({transaction.taxTotal.currency}): {transaction.taxTotal.amount}</s-text>
        <s-qr-code content={`https://www.shopify.com?${qrCodeValue}`} />
      </s-pos-block>
    );
  };
  ```

### Receipt block (footer) target

`pos.receipt-footer.block.render`

Renders a custom section in the footer of printed receipts. Use this target for adding contact details, return policies, social media links, or customer engagement elements like survey links or marketing campaigns at the bottom of receipts.

Extensions at this target appear in the receipt footer area and support limited components optimized for print formatting, including text content for information display.

#### TransactionCompleteWithReprintData

The data object provided to receipt targets containing transaction details and reprint information.

* **connectivity**

  **ConnectivityApiContent**

  **required**

  The current Internet connectivity state of the POS device. Indicates whether the device is connected to or disconnected from the Internet. This state updates in real-time as connectivity changes, allowing extensions to adapt behavior for offline scenarios, show connectivity warnings, or queue operations for when connectivity is restored.

* **device**

  **Device**

  **required**

  Comprehensive information about the physical POS device where the extension is currently running. Includes the device name, unique device ID, and form factor information (tablet vs other). This data is static for the session and helps extensions adapt to different device types, log device-specific information, or implement device-based configurations.

* **locale**

  **string**

  **required**

  The [IETF BCP 47](https://en.wikipedia.org/wiki/IETF_language_tag) locale string for the current POS session (for example, `"en-US"`, `"fr-CA"`, `"de-DE"`). This indicates the merchant's language and regional preferences. Commonly used for internationalization (i18n), locale-specific date/time/number formatting, translating UI text, and providing localized content. The locale remains constant for the session and reflects the language selected in POS settings.

* **session**

  **Session**

  **required**

  Comprehensive information about the current POS session including shop ID and domain, authenticated user, pinned staff member, active location, currency settings, and POS version. This session data remains constant for the session duration and provides critical context for business logic, permissions, API authentication, and transaction processing. Session data updates when users switch locations or change pinned staff members.

* **storage**

  **Storage\<Record\<string, unknown>>**

  **required**

  Provides access to persistent local storage methods for your POS UI extension. Use this to store, retrieve, and manage data that persists across sessions.

* **transaction**

  **| SaleTransactionData | ReturnTransactionData | ExchangeTransactionData | ReprintReceiptData**

  **required**

  The transaction data, which can be one of the following types:

  * `SaleTransactionData`: Defines the data structure for completed sale transactions.
  * `ReturnTransactionData`: Defines the data structure for completed return transactions.
  * `ExchangeTransactionData`: Defines the data structure for completed exchange transactions.
  * `ReprintReceiptData`: Defines the data structure for receipt reprint requests.

### Support Components (2) APIs (1)

### Supported components

* [Pos block](https://shopify.dev/docs/api/pos-ui-extensions/2026-07-rc/web-components/layout-and-structure/pos-block)
* [Text](https://shopify.dev/docs/api/pos-ui-extensions/2026-07-rc/web-components/layout-and-structure/text)

### Available APIs

* [Storage API](https://shopify.dev/docs/api/pos-ui-extensions/2026-07-rc/target-apis/platform-apis/storage-api)

Examples

### Examples

* ####

  ##### Description

  Add a custom section to the footer of printed receipts for contact information, policies, or marketing. This example shows how to create a footer block that displays text content optimized for print formatting, useful for return policies, social media links, or customer engagement elements.

  ##### jsx

  ```jsx
  import {render} from 'preact';

  export default async () => {
    render(<Extension />, document.body);
  };

  const Extension = () => {
    const {transaction} = shopify;
    const qrCodeValue =
      transaction.transactionType === 'Exchange'
        ? `exampleExchange=${encodeURIComponent(transaction.exchangeId ?? '')}`
        : `exampleOrder=${encodeURIComponent(transaction.orderId ?? '')}`;

    return (
      <s-pos-block>
        <s-text>Transaction type: {transaction.transactionType}</s-text>
        <s-text>Total tax ({transaction.taxTotal.currency}): {transaction.taxTotal.amount}</s-text>
        <s-qr-code content={`https://www.shopify.com?${qrCodeValue}`} />
      </s-pos-block>
    );
  };
  ```

***

## Best practices

* **Include relevant content that adds value:** Include information that adds value to the customer's receipt and supports post-transaction engagement, like store contact information, return policy details, and loyalty program status.
* **Use clear and concise formatting:** Use concise, well-formatted text that prints clearly and is easy to read on receipt paper, like "Visit us: store.example.com," "Returns: 30-day policy," and "Follow us @storename."
* **Provide useful contact information:** Include useful contact and engagement information that helps customers connect with your store after their purchase, like store website and hours, customer service contact, and social media handles.
* **Optimize for print format:** Design receipt content that works well with printers and receipt paper limitations. Receipt extensions are specifically designed for print output and have different constraints than screen-based extensions. Ensure your content is concise, uses appropriate formatting, and provides value to customers who will interact with the printed receipt.
* **Keep messaging brief and focused:** Keep text brief and focused, as receipt space is limited and content should be easily scannable. Use "Returns within 30 days" or "Scan for rewards" instead of lengthy text like "Please visit our website to learn more about our comprehensive return policy" or "Download our mobile app for exclusive offers and rewards."
* **Use transaction data for context:** Use transaction data to provide relevant, personalized information when appropriate, like transaction type-specific messaging, "Exchange ID: #1001," and tax information display.

***

## Limitations

* Receipt extensions support only a limited set of components optimized for print formatting: [POS block](https://shopify.dev/docs/api/pos-ui-extensions/2026-07-rc/web-components/layout-and-structure/pos-block) and [text](https://shopify.dev/docs/api/pos-ui-extensions/2026-07-rc/web-components/layout-and-structure/text).

* Receipt extensions have access to transaction data through `TransactionCompleteWithReprintData` and the [Storage API](https://shopify.dev/docs/api/pos-ui-extensions/2026-07-rc/target-apis/platform-apis/storage-api), but can't access other POS UI extensions APIs or perform interactive operations.

***
