diff --git a/src/libmsc/transaction_cc.c b/src/libmsc/transaction_cc.c
index cb1424b..35ec5dc 100644
--- a/src/libmsc/transaction_cc.c
+++ b/src/libmsc/transaction_cc.c
@@ -24,32 +24,52 @@
 
 #include <osmocom/msc/transaction_cc.h>
 #include <osmocom/msc/codec_filter.h>
+#include <osmocom/msc/csd_filter.h>
 
 void trans_cc_filter_init(struct gsm_trans *trans)
 {
 	trans->cc.codecs = (struct codec_filter){};
+	trans->cc.csd = (struct csd_filter){};
 }
 
 void trans_cc_filter_set_ran(struct gsm_trans *trans, enum osmo_rat_type ran_type)
 {
 	codec_filter_set_ran(&trans->cc.codecs, ran_type);
+	csd_filter_set_ran(&trans->cc.csd, ran_type);
 }
 
 void trans_cc_filter_set_bss(struct gsm_trans *trans, struct msc_a *msc_a)
 {
 	codec_filter_set_bss(&trans->cc.codecs, &msc_a->cc.compl_l3_codec_list_bss_supported);
+
+	/* For CSD, there is no list of supported bearer services passed in
+	 * Complete Layer 3. TODO: make it configurable? */
 }
 
 void trans_cc_filter_run(struct gsm_trans *trans)
 {
-	codec_filter_run(&trans->cc.codecs, &trans->cc.local, &trans->cc.remote);
-	LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n",
-		  codec_filter_to_str(&trans->cc.codecs, &trans->cc.local, &trans->cc.remote));
+	switch (trans->bearer_cap.transfer) {
+	case GSM48_BCAP_ITCAP_SPEECH:
+		codec_filter_run(&trans->cc.codecs, &trans->cc.local, &trans->cc.remote);
+		LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n",
+			  codec_filter_to_str(&trans->cc.codecs, &trans->cc.local, &trans->cc.remote));
+		break;
+	case GSM48_BCAP_ITCAP_UNR_DIG_INF:
+		csd_filter_run(&trans->cc.csd, &trans->cc.local, &trans->cc.remote);
+		LOG_TRANS(trans, LOGL_DEBUG, "codec/BS: %s\n",
+			  csd_filter_to_str(&trans->cc.csd, &trans->cc.local, &trans->cc.remote));
+		break;
+	default:
+		LOG_TRANS(trans, LOGL_ERROR, "Handling of information transfer capability %d not implemented\n",
+			  trans->bearer_cap.transfer);
+		break;
+	}
 }
 
 void trans_cc_filter_set_ms_from_bc(struct gsm_trans *trans, const struct gsm_mncc_bearer_cap *bcap)
 {
 	trans->cc.codecs.ms = (struct sdp_audio_codecs){0};
+	trans->cc.csd.ms = (struct csd_bs_list){0};
 
 	if (!bcap)
 		return;
@@ -58,6 +78,10 @@
 	case GSM48_BCAP_ITCAP_SPEECH:
 		sdp_audio_codecs_from_bearer_cap(&trans->cc.codecs.ms, bcap);
 		break;
+	case GSM48_BCAP_ITCAP_UNR_DIG_INF:
+		sdp_audio_codecs_set_csd(&trans->cc.codecs.ms);
+		csd_bs_list_from_bearer_cap(&trans->cc.csd.ms, bcap);
+		break;
 	default:
 		LOG_TRANS(trans, LOGL_ERROR, "Handling of information transfer capability %d not implemented\n",
 			  bcap->transfer);
@@ -68,6 +92,7 @@
 void trans_cc_set_remote_from_bc(struct gsm_trans *trans, const struct gsm_mncc_bearer_cap *bcap)
 {
 	trans->cc.remote.audio_codecs = (struct sdp_audio_codecs){0};
+	trans->cc.remote.bearer_services = (struct csd_bs_list){0};
 
 	if (!bcap)
 		return;
@@ -76,6 +101,10 @@
 	case GSM48_BCAP_ITCAP_SPEECH:
 		sdp_audio_codecs_from_bearer_cap(&trans->cc.remote.audio_codecs, bcap);
 		break;
+	case GSM48_BCAP_ITCAP_UNR_DIG_INF:
+		sdp_audio_codecs_set_csd(&trans->cc.remote.audio_codecs);
+		csd_bs_list_from_bearer_cap(&trans->cc.remote.bearer_services, bcap);
+		break;
 	default:
 		LOG_TRANS(trans, LOGL_ERROR, "Handling of information transfer capability %d not implemented\n",
 			  bcap->transfer);
