diff --git a/satellite_client/src/android/telephony/satellite/wrapper/ProvisionSubscriberIdWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/ProvisionSubscriberIdWrapper.java
index 760fc34..c547ee0 100644
--- a/satellite_client/src/android/telephony/satellite/wrapper/ProvisionSubscriberIdWrapper.java
+++ b/satellite_client/src/android/telephony/satellite/wrapper/ProvisionSubscriberIdWrapper.java
@@ -21,13 +21,14 @@
 import java.util.Objects;
 
 public class ProvisionSubscriberIdWrapper {
-    @NonNull
-    private final String subscriberId;
+    @NonNull private final String subscriberId;
     private int carrierId;
+    @NonNull private final String niddApn;
 
-    public ProvisionSubscriberIdWrapper(String subscriberId, int carrierId) {
+    public ProvisionSubscriberIdWrapper(String subscriberId, int carrierId, String niddApn) {
         this.subscriberId = subscriberId;
         this.carrierId = carrierId;
+        this.niddApn = niddApn;
     }
 
     @NonNull
@@ -39,6 +40,11 @@
         return carrierId;
     }
 
+    @NonNull
+    public String getNiddApn() {
+        return niddApn;
+    }
+
     @Override
     @NonNull
     public String toString() {
@@ -49,6 +55,10 @@
 
         sb.append("carrierId:");
         sb.append(carrierId);
+        sb.append(",");
+
+        sb.append("niddApn:");
+        sb.append(niddApn);
         return sb.toString();
     }
 
@@ -58,11 +68,11 @@
         if (o == null || getClass() != o.getClass()) return false;
         ProvisionSubscriberIdWrapper that = (ProvisionSubscriberIdWrapper) o;
         return Objects.equals(subscriberId, that.subscriberId)
-                && carrierId == that.carrierId;
+                && carrierId == that.carrierId && Objects.equals(niddApn, that.niddApn);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(subscriberId, carrierId);
+        return Objects.hash(subscriberId, carrierId, niddApn);
     }
 }
diff --git a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
index 4dadac6..29f3761 100644
--- a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
+++ b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
@@ -1429,7 +1429,8 @@
               @Override
               public void onResult(List<ProvisionSubscriberId> result) {
                 callback.onResult(result.stream().map(ids -> new ProvisionSubscriberIdWrapper(
-                        ids.getSubscriberId(), ids.getCarrierId())).collect(Collectors.toList()));
+                        ids.getSubscriberId(), ids.getCarrierId(), ids.getNiddApn())).collect(
+                        Collectors.toList()));
               }
 
               @Override
@@ -1491,7 +1492,7 @@
             };
     mSatelliteManager.provisionSatellite(list.stream()
             .map(wrapper -> new ProvisionSubscriberId(wrapper.getSubscriberId(),
-                    wrapper.getCarrierId()))
+                    wrapper.getCarrierId(), wrapper.getNiddApn()))
             .collect(Collectors.toList()), executor, internalCallback);
   }
 
