diff --git a/src/main/java/io/mifos/core/lang/security/RsaKeyPairFactory.java b/src/main/java/io/mifos/core/lang/security/RsaKeyPairFactory.java
index effa243..3e9b173 100644
--- a/src/main/java/io/mifos/core/lang/security/RsaKeyPairFactory.java
+++ b/src/main/java/io/mifos/core/lang/security/RsaKeyPairFactory.java
@@ -15,6 +15,8 @@
  */
 package io.mifos.core.lang.security;
 
+import io.mifos.core.lang.DateConverter;
+
 import java.math.BigInteger;
 import java.security.KeyFactory;
 import java.security.KeyPair;
@@ -25,6 +27,8 @@
 import java.security.spec.InvalidKeySpecException;
 import java.security.spec.RSAPrivateKeySpec;
 import java.security.spec.RSAPublicKeySpec;
+import java.time.Clock;
+import java.time.LocalDateTime;
 
 @SuppressWarnings({"WeakerAccess", "unused"})
 public final class RsaKeyPairFactory {
@@ -45,26 +49,31 @@
       final RSAPrivateKeySpec rsaPrivateKeySpec =
           keyFactory.getKeySpec(keyPair.getPrivate(), RSAPrivateKeySpec.class);
 
+      final String timestamp = DateConverter.toIsoString(LocalDateTime.now(Clock.systemUTC()));
+      final String timestampWithoutNanos = timestamp.substring(0, timestamp.indexOf("."));
+      final String urlSafeTimeStamp = timestampWithoutNanos.replace(':', '_');
       final RSAPublicKey publicKey = (RSAPublicKey) keyFactory.generatePublic(rsaPublicKeySpec);
       final RSAPrivateKey privateKey = (RSAPrivateKey) keyFactory.generatePrivate(rsaPrivateKeySpec);
 
-      return new KeyPairHolder(publicKey, privateKey);
+      return new KeyPairHolder(urlSafeTimeStamp, publicKey, privateKey);
     } catch (final NoSuchAlgorithmException | InvalidKeySpecException e) {
       throw new IllegalStateException("RSA problem.");
     }
   }
 
   public static class KeyPairHolder {
-
+    private final String timestamp;
     private final RSAPublicKey publicKey;
     private final RSAPrivateKey privateKey;
 
-    public KeyPairHolder(final RSAPublicKey publicKey, final RSAPrivateKey privateKey) {
+    public KeyPairHolder(final String timestamp, final RSAPublicKey publicKey, final RSAPrivateKey privateKey) {
       super();
+      this.timestamp = timestamp;
       this.publicKey = publicKey;
       this.privateKey = privateKey;
     }
 
+
     public RSAPublicKey publicKey() {
       return publicKey;
     }
@@ -73,6 +82,10 @@
       return privateKey;
     }
 
+    public String getTimestamp() {
+      return timestamp;
+    }
+
     public BigInteger getPublicKeyMod() {
       return publicKey.getModulus();
     }
@@ -89,4 +102,4 @@
       return privateKey.getPrivateExponent();
     }
   }
-}
+}
\ No newline at end of file
diff --git a/src/test/java/io/mifos/core/lang/security/RsaKeyPairFactoryTest.java b/src/test/java/io/mifos/core/lang/security/RsaKeyPairFactoryTest.java
index 9626f08..f8aedb1 100644
--- a/src/test/java/io/mifos/core/lang/security/RsaKeyPairFactoryTest.java
+++ b/src/test/java/io/mifos/core/lang/security/RsaKeyPairFactoryTest.java
@@ -28,6 +28,7 @@
   public void shouldCreateRsaKeys() throws Exception {
     final RsaKeyPairFactory.KeyPairHolder keyPairHolder = RsaKeyPairFactory.createKeyPair();
     Assert.assertNotNull(keyPairHolder);
+    Assert.assertNotNull(keyPairHolder.getTimestamp());
     Assert.assertNotNull(keyPairHolder.publicKey());
     Assert.assertNotNull(keyPairHolder.privateKey());
   }
