diff --git a/sflphone-common/src/sip/sipaccount.cpp b/sflphone-common/src/sip/sipaccount.cpp
index ff3a5e6ea6fe947c9e6333dbd365fcedf109a3da..e28fa96d4a2ee58bcb9f0c948378473b0a3c52ab 100644
--- a/sflphone-common/src/sip/sipaccount.cpp
+++ b/sflphone-common/src/sip/sipaccount.cpp
@@ -161,7 +161,7 @@ void SIPAccount::serialize(Conf::YamlEmitter *emitter) {
   Conf::ScalarNode publishPort(publicportstr.str());
   Conf::ScalarNode sameasLocal(_publishedSameasLocal ? "true" : "false");
   Conf::ScalarNode resolveOnce(_resolveOnce ? "true" : "false");      
-  Conf::ScalarNode codecs("");
+  Conf::ScalarNode codecs(_startupCodecStr);
   Conf::ScalarNode stunServer(std::string(_stunServerName.ptr, _stunServerName.slen));
   Conf::ScalarNode stunEnabled(_stunEnabled ? "true" : "false");
   Conf::ScalarNode displayName(_displayName);
@@ -210,6 +210,7 @@ void SIPAccount::serialize(Conf::YamlEmitter *emitter) {
   accountmap.setKeyValue(resolveOnceKey, &resolveOnce);
   accountmap.setKeyValue(dtmfTypeKey, &dtmfType);
   accountmap.setKeyValue(displayNameKey, &displayName);
+  accountmap.setKeyValue(codecsKey, &codecs);
 
   accountmap.setKeyValue(srtpKey, &srtpmap);
   srtpmap.setKeyValue(srtpEnableKey, &srtpenabled);
@@ -276,8 +277,7 @@ void SIPAccount::unserialize(Conf::MappingNode *map)
   //  val = (Conf::ScalarNode *)(map->getValue(mailboxKey));
 
   val = (Conf::ScalarNode *)(map->getValue(codecsKey));
-  if(val) { val = NULL; }
-  // _codecOrder = val->getValue();
+  if(val) { _startupCodecStr = val->getValue(); val = NULL; }
   
   val = (Conf::ScalarNode *)(map->getValue(expireKey));
   if(val) { _registrationExpire = val->getValue(); val = NULL; }