# Licensing for apps that depend on D2K Companies House Lookup

This page is for developers whose Business Central extension depends on D2K Companies House Lookup. It says what your users need to be licensed for, which permission sets they need, and how to develop and test against the app. It is part of the developer guide, [Building on D2K Companies House Lookup](https://docs.d2k.uk/companies-house-lookup/developers).

D2K Companies House Lookup is sold through Microsoft on one plan, **per user per month, with a minimum of three users and a one-month free trial**. There are no tiers: everything in this guide is in the plan. The [End User Licence Agreement](https://d2k.uk/companies-house-lookup/eula/) expressly permits building and distributing extensions that depend on the app through the supported surface (clause 4, *Dependent Extensions*); what follows is the practical consequence of its per-user licensing.

- **Every user who runs code that calls the app needs a licence** for the app, assigned in the Microsoft 365 admin centre. That includes users who never open one of our pages: a call from your code to `ResolveByCRN` is a use of the app. Business Central enforces this as an entitlement, which outranks permissions - a user without a licence gets the platform's licensing error even as SUPER.
- **Permissions on top of the licence.** Lookups through the interface need `D2KL Read`; the cache tables are written with inherent permissions, so a read-only user can still run a lookup. Registering, pausing or removing a filing watch needs `D2KL Edit`, and the first registration in a company also needs permission to create a Job Queue Entry. Setup and the API call log need `D2KL Admin`. Include the set you need in your own permission set with `IncludedPermissionSets`, or tell your customers which one to assign.
- **Developing and testing.** Entitlements are enforced in online sandboxes as well as production, so in your own development tenant start the free trial from AppSource (or buy one seat) and assign it to the accounts your tests run under. Docker-based builds (AL-Go, BcContainerHelper) run the on-premises runtime, which does not enforce entitlements; your app compiles and its tests run there without a licence.
- **The background poller runs as a user.** The Job Queue Entry that polls filing watches runs as the user who set it to Ready - normally whoever first called `RegisterWatch` in that company. If that user's licence is removed or reassigned, polling stops silently. Tell your customers to register the first watch as an account whose licence will stay, and to keep an eye on *Last Polled At* on the Filing Watch List.

---
Source: https://docs.d2k.uk/companies-house-lookup/developers-licensing
Last updated: 2026-10-19
