From 77a810a0b76f08d1febecc0381389242ef32ad67 Mon Sep 17 00:00:00 2001 From: Zach Mathew Date: Thu, 10 Sep 2026 00:26:55 -0400 Subject: [PATCH 1/3] Add fiscalDeviceIdentifier to the POS Device API Assisted-By: devx/1708ff34-a106-41ca-9351-71084c02cdf4 --- .changeset/pos-device-fiscal-device-identifier.md | 5 +++++ .../point-of-sale/api/device-api/device-api.ts | 10 ++++++++++ 2 files changed, 15 insertions(+) create mode 100644 .changeset/pos-device-fiscal-device-identifier.md diff --git a/.changeset/pos-device-fiscal-device-identifier.md b/.changeset/pos-device-fiscal-device-identifier.md new file mode 100644 index 0000000000..1c0bf5727b --- /dev/null +++ b/.changeset/pos-device-fiscal-device-identifier.md @@ -0,0 +1,5 @@ +--- +'@shopify/ui-extensions': minor +--- + +Add `fiscalDeviceIdentifier` to the POS Device API. `shopify.device.fiscalDeviceIdentifier` exposes the Shopify-assigned fiscal register identifier for the device (such as Sweden's manufacturing number), so fiscal compliance extensions can stamp receipts and journals without querying the GraphQL Admin API. It's `undefined` when the device's location doesn't require fiscal device registration, and only available on API version `2026-10` and later. diff --git a/packages/ui-extensions/src/surfaces/point-of-sale/api/device-api/device-api.ts b/packages/ui-extensions/src/surfaces/point-of-sale/api/device-api/device-api.ts index 7219339e3a..48984fef4c 100644 --- a/packages/ui-extensions/src/surfaces/point-of-sale/api/device-api/device-api.ts +++ b/packages/ui-extensions/src/surfaces/point-of-sale/api/device-api/device-api.ts @@ -11,6 +11,16 @@ export interface DeviceApiContent { * A short, unique identifier for the device, assigned by Shopify. */ registerName: string; + /** + * The Shopify-assigned fiscal register identifier for the device, such as Sweden's manufacturing number (tillverkningsnummer). Use it to identify the register on fiscal receipts, journals, and reports required by tax authorities. It's `undefined` when the device's location is in a country that doesn't require registering the device with the tax authority. + * + * This is the same value as the `fiscalDeviceIdentifier` field on the [PointOfSaleDevice](https://shopify.dev/docs/api/admin-graphql/latest/objects/PointOfSaleDevice) object in the GraphQL Admin API, and it's available while the device is offline. + * + * Only available on API version `2026-10` and later. + * + * @example "SH-9IX-7" + */ + fiscalDeviceIdentifier?: string; /** * Retrieves the unique string identifier for the device. Returns a promise that resolves to the device ID. Use for device-specific data storage, analytics tracking, or implementing device-based permissions and configurations. * Note: While Shopify POS attempts to maintain a stable identifier, it is not guaranteed to be permanent and may change. From 6f76990b68257d2d0e53efc63bfc7653b8a8c19c Mon Sep 17 00:00:00 2001 From: Zach Mathew Date: Thu, 10 Sep 2026 10:44:05 -0400 Subject: [PATCH 2/3] Describe fiscalDeviceIdentifier factually Assisted-By: devx/1708ff34-a106-41ca-9351-71084c02cdf4 --- .changeset/pos-device-fiscal-device-identifier.md | 2 +- .../src/surfaces/point-of-sale/api/device-api/device-api.ts | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.changeset/pos-device-fiscal-device-identifier.md b/.changeset/pos-device-fiscal-device-identifier.md index 1c0bf5727b..df143c51ae 100644 --- a/.changeset/pos-device-fiscal-device-identifier.md +++ b/.changeset/pos-device-fiscal-device-identifier.md @@ -2,4 +2,4 @@ '@shopify/ui-extensions': minor --- -Add `fiscalDeviceIdentifier` to the POS Device API. `shopify.device.fiscalDeviceIdentifier` exposes the Shopify-assigned fiscal register identifier for the device (such as Sweden's manufacturing number), so fiscal compliance extensions can stamp receipts and journals without querying the GraphQL Admin API. It's `undefined` when the device's location doesn't require fiscal device registration, and only available on API version `2026-10` and later. +Add `fiscalDeviceIdentifier` to the POS Device API. `shopify.device.fiscalDeviceIdentifier` is the Shopify-assigned fiscal register identifier for the device (such as Sweden's manufacturing number), matching the `fiscalDeviceIdentifier` field on the `PointOfSaleDevice` object in the GraphQL Admin API. It's `undefined` when the device's location doesn't require fiscal device registration. diff --git a/packages/ui-extensions/src/surfaces/point-of-sale/api/device-api/device-api.ts b/packages/ui-extensions/src/surfaces/point-of-sale/api/device-api/device-api.ts index 48984fef4c..de8f238e07 100644 --- a/packages/ui-extensions/src/surfaces/point-of-sale/api/device-api/device-api.ts +++ b/packages/ui-extensions/src/surfaces/point-of-sale/api/device-api/device-api.ts @@ -12,11 +12,9 @@ export interface DeviceApiContent { */ registerName: string; /** - * The Shopify-assigned fiscal register identifier for the device, such as Sweden's manufacturing number (tillverkningsnummer). Use it to identify the register on fiscal receipts, journals, and reports required by tax authorities. It's `undefined` when the device's location is in a country that doesn't require registering the device with the tax authority. + * The Shopify-assigned fiscal register identifier for the device, such as Sweden's manufacturing number (tillverkningsnummer). It's the same value as the `fiscalDeviceIdentifier` field on the [PointOfSaleDevice](https://shopify.dev/docs/api/admin-graphql/latest/objects/PointOfSaleDevice) object in the GraphQL Admin API, and it's available while the device is offline. * - * This is the same value as the `fiscalDeviceIdentifier` field on the [PointOfSaleDevice](https://shopify.dev/docs/api/admin-graphql/latest/objects/PointOfSaleDevice) object in the GraphQL Admin API, and it's available while the device is offline. - * - * Only available on API version `2026-10` and later. + * It's `undefined` when the device's location is in a country that doesn't require registering the device with the tax authority. * * @example "SH-9IX-7" */ From 5d97f23c222bcbcdf4f7a2dd2dd91f40ce1f06a9 Mon Sep 17 00:00:00 2001 From: Zach Mathew Date: Tue, 15 Sep 2026 21:38:28 -0400 Subject: [PATCH 3/3] Simplify fiscal device identifier comment Co-authored-by: AI (Pi/GPT-6 Astra) Assisted-By: devx/4c040100-519b-421c-8096-091fd5d3252a --- .../src/surfaces/point-of-sale/api/device-api/device-api.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/ui-extensions/src/surfaces/point-of-sale/api/device-api/device-api.ts b/packages/ui-extensions/src/surfaces/point-of-sale/api/device-api/device-api.ts index de8f238e07..2dc3b7de7a 100644 --- a/packages/ui-extensions/src/surfaces/point-of-sale/api/device-api/device-api.ts +++ b/packages/ui-extensions/src/surfaces/point-of-sale/api/device-api/device-api.ts @@ -12,11 +12,7 @@ export interface DeviceApiContent { */ registerName: string; /** - * The Shopify-assigned fiscal register identifier for the device, such as Sweden's manufacturing number (tillverkningsnummer). It's the same value as the `fiscalDeviceIdentifier` field on the [PointOfSaleDevice](https://shopify.dev/docs/api/admin-graphql/latest/objects/PointOfSaleDevice) object in the GraphQL Admin API, and it's available while the device is offline. - * - * It's `undefined` when the device's location is in a country that doesn't require registering the device with the tax authority. - * - * @example "SH-9IX-7" + * The Shopify-assigned fiscal register identifier for the device, such as Sweden's manufacturing number (tillverkningsnummer). It's the same value as the `fiscalDeviceIdentifier` field on `PointOfSaleDevice`. */ fiscalDeviceIdentifier?: string; /**