diff --git a/component-test/src/main/java/io/mifos/portfolio/TestChargeDefinitions.java b/component-test/src/main/java/io/mifos/portfolio/TestChargeDefinitions.java
index f65e8a6..6673c26 100644
--- a/component-test/src/main/java/io/mifos/portfolio/TestChargeDefinitions.java
+++ b/component-test/src/main/java/io/mifos/portfolio/TestChargeDefinitions.java
@@ -128,12 +128,30 @@
 
     portfolioManager.createChargeDefinition(product.getIdentifier(), chargeDefinition);
     Assert.assertTrue(this.eventRecorder.wait(EventConstants.POST_CHARGE_DEFINITION,
-            new ChargeDefinitionEvent(product.getIdentifier(), chargeDefinition.getIdentifier())));
+        new ChargeDefinitionEvent(product.getIdentifier(), chargeDefinition.getIdentifier())));
 
     final ChargeDefinition chargeDefinitionAsCreated = portfolioManager.getChargeDefinition(product.getIdentifier(), chargeDefinition.getIdentifier());
     Assert.assertEquals(chargeDefinition, chargeDefinitionAsCreated);
   }
 
+  @Test(expected = IllegalArgumentException.class)
+  public void shouldNotCreateReadOnlyChargeDefinition() throws InterruptedException {
+    final Product product = createProduct();
+
+    final ChargeDefinition chargeDefinition = new ChargeDefinition();
+    chargeDefinition.setIdentifier("rando123456");
+    chargeDefinition.setName("ditto12356");
+    chargeDefinition.setFromAccountDesignator("1234-4321");
+    chargeDefinition.setToAccountDesignator("4321-1234");
+    chargeDefinition.setAmount(BigDecimal.ONE.setScale(4, BigDecimal.ROUND_UNNECESSARY));
+    chargeDefinition.setChargeMethod(ChargeDefinition.ChargeMethod.FIXED);
+    chargeDefinition.setChargeAction(Action.OPEN.name());
+    chargeDefinition.setDescription("who cares what the description is?");
+    chargeDefinition.setReadOnly(true);
+
+    portfolioManager.createChargeDefinition(product.getIdentifier(), chargeDefinition);
+  }
+
 
   @Test
   public void shouldChangeInterestChargeDefinition() throws InterruptedException {
diff --git a/service/src/main/java/io/mifos/portfolio/service/rest/ChargeDefinitionRestController.java b/service/src/main/java/io/mifos/portfolio/service/rest/ChargeDefinitionRestController.java
index 9e74ff2..df91bb3 100644
--- a/service/src/main/java/io/mifos/portfolio/service/rest/ChargeDefinitionRestController.java
+++ b/service/src/main/java/io/mifos/portfolio/service/rest/ChargeDefinitionRestController.java
@@ -125,6 +125,9 @@
   {
     checkChargeExistsInProductAndIsNotReadOnly(productIdentifier, chargeDefinitionIdentifier);
 
+    if (instance.isReadOnly())
+      throw ServiceException.badRequest("Created charges cannot be read only.");
+
     if (!chargeDefinitionIdentifier.equals(instance.getIdentifier()))
       throw ServiceException.badRequest("Instance identifiers may not be changed.");
 
@@ -159,7 +162,8 @@
         .isReadOnly();
 
     if (readOnly)
-      throw ServiceException.conflict("Charge definition is read only ''{0}''", chargeDefinitionIdentifier);
+      throw ServiceException.conflict("Charge definition is read only ''{0}.{1}''",
+          productIdentifier, chargeDefinitionIdentifier);
   }
 
   private void checkProductExists(final String productIdentifier) {
