diff --git a/component-test/src/main/java/io/mifos/deposit/AbstractDepositAccountManagementTest.java b/component-test/src/main/java/io/mifos/deposit/AbstractDepositAccountManagementTest.java
index 3dad546..6899007 100644
--- a/component-test/src/main/java/io/mifos/deposit/AbstractDepositAccountManagementTest.java
+++ b/component-test/src/main/java/io/mifos/deposit/AbstractDepositAccountManagementTest.java
@@ -27,6 +27,7 @@
 import io.mifos.deposit.api.v1.EventConstants;
 import io.mifos.deposit.api.v1.client.DepositAccountManager;
 import io.mifos.deposit.service.DepositAccountManagementConfiguration;
+import io.mifos.deposit.service.internal.service.helper.AccountingService;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
@@ -39,6 +40,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.cloud.netflix.feign.EnableFeignClients;
 import org.springframework.cloud.netflix.ribbon.RibbonClient;
 import org.springframework.context.annotation.Bean;
@@ -87,6 +89,9 @@
   @Autowired
   EventRecorder eventRecorder;
 
+  @MockBean
+  AccountingService accountingServiceSpy;
+
   private AutoUserContext autoUserContext;
 
   AbstractDepositAccountManagementTest() {
diff --git a/component-test/src/main/java/io/mifos/deposit/TestProductInstance.java b/component-test/src/main/java/io/mifos/deposit/TestProductInstance.java
index 59454b3..34b4682 100644
--- a/component-test/src/main/java/io/mifos/deposit/TestProductInstance.java
+++ b/component-test/src/main/java/io/mifos/deposit/TestProductInstance.java
@@ -49,5 +49,9 @@
     final List<ProductInstance> productInstances = super.depositAccountManager.findProductInstances(productDefinition.getIdentifier());
     Assert.assertNotNull(productInstances);
     Assert.assertEquals(1, productInstances.size());
+    final ProductInstance foundProductInstance = productInstances.get(0);
+
+    Assert.assertEquals(productDefinition.getEquityLedgerIdentifier() + "." + customerIdentifier + ".00001",
+        foundProductInstance.getAccountIdentifier());
   }
 }
diff --git a/service/build.gradle b/service/build.gradle
index ea8af07..bee970e 100644
--- a/service/build.gradle
+++ b/service/build.gradle
@@ -38,6 +38,7 @@
             [group: 'io.mifos.core', name: 'cassandra', version: versions.frameworkcassandra],
             [group: 'io.mifos.core', name: 'mariadb', version: versions.frameworkmariadb],
             [group: 'io.mifos.core', name: 'command', version: versions.frameworkcommand],
+            [group: 'io.mifos.accounting', name: 'api', version: versions.frameworkledger],
             [group: 'org.hibernate', name: 'hibernate-validator', version: versions.validator]
     )
 }
diff --git a/service/src/main/java/io/mifos/deposit/service/DepositAccountManagementConfiguration.java b/service/src/main/java/io/mifos/deposit/service/DepositAccountManagementConfiguration.java
index ae070bf..0500302 100644
--- a/service/src/main/java/io/mifos/deposit/service/DepositAccountManagementConfiguration.java
+++ b/service/src/main/java/io/mifos/deposit/service/DepositAccountManagementConfiguration.java
@@ -15,6 +15,7 @@
  */
 package io.mifos.deposit.service;
 
+import io.mifos.accounting.api.v1.client.LedgerManager;
 import io.mifos.anubis.config.EnableAnubis;
 import io.mifos.core.async.config.EnableAsync;
 import io.mifos.core.cassandra.config.EnableCassandra;
@@ -26,6 +27,7 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.netflix.feign.EnableFeignClients;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
@@ -44,6 +46,9 @@
 @EnableCommandProcessing
 @EnableAnubis
 @EnableServiceException
+@EnableFeignClients(clients = {
+    LedgerManager.class
+})
 @ComponentScan({
     "io.mifos.deposit.service.rest",
     "io.mifos.deposit.service.internal.service",
diff --git a/service/src/main/java/io/mifos/deposit/service/internal/command/handler/ProductInstanceAggregate.java b/service/src/main/java/io/mifos/deposit/service/internal/command/handler/ProductInstanceAggregate.java
index 33743d1..4612e0e 100644
--- a/service/src/main/java/io/mifos/deposit/service/internal/command/handler/ProductInstanceAggregate.java
+++ b/service/src/main/java/io/mifos/deposit/service/internal/command/handler/ProductInstanceAggregate.java
@@ -24,9 +24,11 @@
 import io.mifos.deposit.service.ServiceConstants;
 import io.mifos.deposit.service.internal.command.CreateProductInstanceCommand;
 import io.mifos.deposit.service.internal.mapper.ProductInstanceMapper;
+import io.mifos.deposit.service.internal.repository.ProductDefinitionEntity;
 import io.mifos.deposit.service.internal.repository.ProductDefinitionRepository;
 import io.mifos.deposit.service.internal.repository.ProductInstanceEntity;
 import io.mifos.deposit.service.internal.repository.ProductInstanceRepository;
+import io.mifos.deposit.service.internal.service.helper.AccountingService;
 import org.apache.commons.lang.RandomStringUtils;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,6 +37,8 @@
 
 import java.time.Clock;
 import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Optional;
 
 @Aggregate
 public class ProductInstanceAggregate {
@@ -42,14 +46,17 @@
   private final Logger logger;
   private final ProductInstanceRepository productInstanceRepository;
   private final ProductDefinitionRepository productDefinitionRepository;
+  private final AccountingService accountingService;
 
   @Autowired
   public ProductInstanceAggregate(@Qualifier(ServiceConstants.LOGGER_NAME) final Logger logger,
                                   final ProductInstanceRepository productInstanceRepository,
-                                  final ProductDefinitionRepository productDefinitionRepository) {
+                                  final ProductDefinitionRepository productDefinitionRepository,
+                                  final AccountingService accountingService) {
     this.logger = logger;
     this.productInstanceRepository = productInstanceRepository;
     this.productDefinitionRepository = productDefinitionRepository;
+    this.accountingService = accountingService;
   }
 
   @CommandHandler
@@ -62,7 +69,31 @@
         ProductInstanceMapper.map(productInstance, this.productDefinitionRepository);
 
     if (productInstance.getAccountIdentifier() == null) {
-      productInstanceEntity.setAccountIdentifier(RandomStringUtils.randomNumeric(32));
+      final Optional<ProductDefinitionEntity> optionalProductDefinition =
+          productDefinitionRepository.findByIdentifier(productInstance.getProductIdentifier());
+
+      optionalProductDefinition.ifPresent(productDefinitionEntity -> {
+
+        final List<ProductInstanceEntity> currentProductInstances =
+            this.productInstanceRepository.findByProductDefinitionAndCustomerIdentifier(productDefinitionEntity,
+                productInstance.getCustomerIdentifier());
+
+        final int accountSuffix = currentProductInstances.size() + 1;
+
+        final StringBuilder stringBuilder = new StringBuilder();
+        final String accountNumber = stringBuilder
+            .append(productDefinitionEntity.getEquityLedgerIdentifier())
+            .append(".")
+            .append(productInstance.getCustomerIdentifier())
+            .append(".")
+            .append(String.format("%05d", accountSuffix))
+            .toString();
+
+        productInstanceEntity.setAccountIdentifier(accountNumber);
+
+        this.accountingService.createAccount(productDefinitionEntity.getEquityLedgerIdentifier(), accountNumber,
+            productDefinitionEntity.getName());
+      });
     }
 
     productInstanceEntity.setCreatedBy(UserContextHolder.checkedGetUser());
diff --git a/service/src/main/java/io/mifos/deposit/service/internal/repository/ProductInstanceRepository.java b/service/src/main/java/io/mifos/deposit/service/internal/repository/ProductInstanceRepository.java
index ff29575..930986d 100644
--- a/service/src/main/java/io/mifos/deposit/service/internal/repository/ProductInstanceRepository.java
+++ b/service/src/main/java/io/mifos/deposit/service/internal/repository/ProductInstanceRepository.java
@@ -24,4 +24,7 @@
   List<ProductInstanceEntity> findByCustomerIdentifier(final String customerIdentifier);
 
   List<ProductInstanceEntity> findByProductDefinition(final ProductDefinitionEntity productDefinitionEntity);
+
+  List<ProductInstanceEntity> findByProductDefinitionAndCustomerIdentifier(
+      final ProductDefinitionEntity productDefinitionEntity, final String customerIdentifier);
 }
diff --git a/service/src/main/java/io/mifos/deposit/service/internal/service/helper/AccountingService.java b/service/src/main/java/io/mifos/deposit/service/internal/service/helper/AccountingService.java
new file mode 100644
index 0000000..1d1f1dd
--- /dev/null
+++ b/service/src/main/java/io/mifos/deposit/service/internal/service/helper/AccountingService.java
@@ -0,0 +1,33 @@
+package io.mifos.deposit.service.internal.service.helper;
+
+import io.mifos.accounting.api.v1.client.LedgerManager;
+import io.mifos.accounting.api.v1.domain.Account;
+import io.mifos.deposit.service.ServiceConstants;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AccountingService {
+
+  private final Logger logger;
+  private final LedgerManager ledgerManager;
+
+  @Autowired
+  public AccountingService(@Qualifier(ServiceConstants.LOGGER_NAME) final Logger logger,
+                           final LedgerManager ledgerManager) {
+    super();
+    this.logger = logger;
+    this.ledgerManager = ledgerManager;
+  }
+
+  public void createAccount(final String ledgerIdentifier, final String accountIdentifier, final String productName) {
+    final Account account = new Account();
+    account.setIdentifier(accountIdentifier);
+    account.setLedger(ledgerIdentifier);
+    account.setName(productName);
+    account.setBalance(0.00D);
+    this.ledgerManager.createAccount(account);
+  }
+}
diff --git a/shared.gradle b/shared.gradle
index 11f514a..76062ad 100644
--- a/shared.gradle
+++ b/shared.gradle
@@ -10,6 +10,7 @@
         frameworkcommand  : '0.1.0-BUILD-SNAPSHOT',
         frameworktest     : '0.1.0-BUILD-SNAPSHOT',
         frameworkanubis   : '0.1.0-BUILD-SNAPSHOT',
+        frameworkledger   : '0.1.0-BUILD-SNAPSHOT',
         validator         : '5.3.0.Final'
 ]
 
