iOS Device Not Registered: Register the UDID in Your Profile
Device not registered means your profile lacks the iPhone's UDID: register it, re-download the profile and rebuild. Each device type allows 100 a year.
When an iOS app install fails with device not registered, meaning the device isn’t in the provisioning profile, the Development or Ad Hoc profile doesn’t list this phone’s UDID. Fix it in four steps. Find the phone’s UDID, register the device on the Apple Developer website, edit the provisioning profile to include the new device and download it again, then replace the old file in the keychain folder and build and install again. Registering the device without downloading a new profile doesn’t fix anything.
What errors does an unregistered device show?
The same problem shows different text depending on where it happens. Use the table to confirm that what you’re seeing is an unregistered device.
| Where it appears | Error text |
|---|---|
| Building in Xcode | Provisioning profile "…" doesn't include the currently selected device |
| Installing on the phone | ApplicationVerificationFailed (Failed to verify code signature of … : 0xe8008015 (A valid provisioning profile for this executable was not found.)) |
| Installing with KXBuild in VS Code | This device is not in the provisioning profile — add its UDID and re-provision. |
| Installing from a web link or distribution platform | The phone only shows “Unable to Install”, or the icon stays gray |
0xe8008015 doesn’t always mean an unregistered device. You get the same error when you install a build signed with an App Store profile directly on a phone, when the profile has expired, or when the certificate was revoked. Check the device list in the profile as described below, and only go through registration once you’ve confirmed the device is missing.
Only Development and Ad Hoc profiles restrict devices. Builds signed for App Store Connect can only be installed through TestFlight or the App Store, never directly on a phone.
Step 1. How do you find the phone’s UDID?
The UDID is a unique identifier for each device, and you need it to register the device. Pick a method based on what you have.
| Method | Platform | How |
|---|---|---|
| kxdevice | Windows, Linux, macOS | Run kxdevice device list. The first column is the UDID |
| iTunes | Windows | On the device Summary page, click Serial Number to switch it to the UDID |
| Finder | macOS | Select the device and click the info line under its name until the UDID shows, then Control-click and choose Copy UDID |
| Xcode | macOS | Select the device in the devices window and copy the value in the UDID field of the info panel |
Find the UDID with KXBuild
Connect the iPhone to your computer with a cable, unlock it and tap Trust This Computer, then run the command below. The UDID in the first column is the value the provisioning profile has to include.
1kxdevice device list
With several phones connected, pass --udid to see details for one.
1kxdevice --udid 00008030-000A1B2C3D4E5F6G device info
If the list is empty, install the device drivers by following Set up your device, use a data cable, and unlock the phone to check for an alert.
Copy the whole UDID rather than typing it by hand.
Step 2. How do you register the device on the Apple Developer website?
These steps follow Apple’s documentation Register a single device, as of October 2026. You need the Account Holder or Admin role.
- Sign in to Certificates, Identifiers & Profiles and click Devices in the sidebar.
- Click the add button at the top left.
- Choose iOS as the platform, enter a name you’ll recognize, such as “Alex-iPhone15”, and enter the UDID.
- Click Continue, check the details and click Register.
To add many devices at once, prepare a device list file in Apple’s format and upload it on the same page. See Register multiple devices.
Step 3. Edit the provisioning profile and download it again
A provisioning profile fixes its device list at the moment it’s generated. Newly registered devices aren’t added to existing files. Follow Apple’s Edit, download, or delete provisioning profiles.
- In Certificates, Identifiers & Profiles, click Profiles in the sidebar.
- Select the profile to update. Debugging uses the iOS App Development type, and builds for testers use the Ad Hoc type.
- Click Edit and select the newly registered device in the device list.
- Click Save, then Download to get the new .mobileprovision file.
If the project has extension targets such as a widget or a notification extension, select the new device in each extension’s profile as well. Otherwise the extension fails verification when you install the main app.
If you don’t have a provisioning profile yet, create one by following Get an iOS certificate, p12 and provisioning profile on Windows.
Step 4. Replace the file in the keychain folder and build again
When you build with KXBuild on Windows or Linux, put the newly downloaded .mobileprovision in the keychain folder, replacing or deleting the old file. The folder can be in two places.
<project>/keychain/, for that project only.KXBUILD_HOME/keychain/, shared by all projects. On Windows it defaults to%USERPROFILE%\kxbuild\keychain\.
Then build and install again. An .ipa you already built embeds the old profile, so you have to build again rather than reinstall the old package.
1kxbuild build .\MyApp.xcodeproj --install
In VS Code, pressing F5 or running KXBuild: Build & Run also rebuilds and installs on the selected device. For how the keychain folder works, see sign iOS apps on Windows.
Confirm the new profile includes the device
To check before you build, decode the profile on Windows with the OpenSSL that ships with Git for Windows, and look for the phone’s UDID in the ProvisionedDevices list.
1& "C:\Program Files\Git\mingw64\bin\openssl.exe" smime -inform DER -verify -noverify -in .\keychain\MyApp_Dev.mobileprovision -out profile.plist
Open profile.plist in an editor and search for the UDID. If it isn’t there, you downloaded the old file again, or the device wasn’t selected when you edited the profile.
What if you run out of device slots?
As of October 2026, Apple’s devices overview sets these rules.
| Account type | Device limit | Rules |
|---|---|---|
| Apple Developer Program (paid) | 100 per device type per membership year | iPhone, iPad, Apple Watch, Apple TV, Mac and so on are counted separately |
| Apple Developer Enterprise Program | 100 per device type per membership year | Same as above |
| Free Apple ID (Personal Team) | 3 | Device registrations and profiles expire after 7 days |
A few rules catch people out.
- Disabling a device doesn’t free a slot. Devices you disable during the membership year still count, so register only the devices you actually test on.
- You can reset at the start of a new membership year. When the Account Holder, an Admin or an App Manager first signs in to Certificates, Identifiers & Profiles in the new year, they can remove some or all devices to restore the 100 slots for each device type. Remove the devices you no longer use first, then add new ones.
- Devices are cleared after membership expires. If you don’t renew, the device list is cleared automatically 180 days after expiration.
When slots run short, use TestFlight for external testing. It needs no UDIDs and doesn’t use device slots. See TestFlight beta testing: upload a build and add internal and external testers.
What should you check if it still won’t install?
- Get the UDID with
kxdevice device listand compare it character by character with the one on the Devices page. - Check that the device is enabled on the Devices page.
- Check that you saved the edited profile, downloaded it again, and that the
keychainfolder has the new file. - Check that the profiles for the main app and every extension include the device.
- Build again instead of reinstalling the old .ipa.
- If it still fails, check the other causes of 0xe8008015 in 16 common iOS code signing and .ipa install errors, and how to fix them.
Once the device not registered error is gone and the app installs, if it says Developer Mode is required when you open it, see Where to find Developer Mode on iPhone.
FAQ
Why does it still say the device isn’t in the provisioning profile after I registered it?
A provisioning profile fixes its device list when it’s generated. After registering the device, edit the profile on the Profiles page, select the device, save and download it again, replace the old file and build again. Registering the device alone isn’t enough.
How do I find an iPhone’s UDID on Windows?
Connect the phone with a cable, tap Trust, then run kxdevice device list. The first column is the UDID. If you have iTunes, you can also click Serial Number on the device Summary page to switch it to the UDID.
How many devices can an Apple Developer account register per year?
As of October 2026, a paid account can register up to 100 devices of each type per membership year, with iPhone, iPad and other types counted separately. Disabling a device mid-year doesn’t free a slot, but you can remove old devices to restore slots when you renew.
How do I get an app to testers without collecting UDIDs?
Use TestFlight. Upload a build to App Store Connect and add testers. They install through the TestFlight app, with no device registration and no use of your 100 device slots.
Does 0xe8008015 always mean the device isn’t registered?
No. Installing a build signed with an App Store profile directly on a phone, an expired profile and a revoked certificate all produce the same error code. Decode the profile and check ProvisionedDevices and ExpirationDate to find the actual cause.