diff --git a/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt b/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt
index 34088743ebf42d06a2a3dcd0815421bae4aedc49..7f670a82790ed7c9c60fc78a609ab879d0c282a2 100644
--- a/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt
+++ b/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt
@@ -4,9 +4,11 @@ import android.content.Intent
 import android.os.Bundle
 import android.widget.Button
 import android.widget.EditText
+import android.widget.RadioGroup
 import androidx.appcompat.app.AppCompatActivity
 import androidx.lifecycle.ViewModelProvider
 import com.onionsquad.bondoman.repository.TransactionRepository
+import com.onionsquad.bondoman.room.TransactionCategory
 import com.onionsquad.bondoman.room.TransactionDatabase
 import com.onionsquad.bondoman.room.TransactionEntity
 import com.onionsquad.bondoman.ui.transaction.TransactionViewModel
@@ -24,7 +26,7 @@ class AddTransactionActivity : AppCompatActivity() {
 
         val titleEditText: EditText = findViewById(R.id.titleEditText)
         val amountEditText: EditText = findViewById(R.id.amountEditText)
-        val categoryEditText: EditText = findViewById(R.id.categoryEditText)
+        val categoryRadioGroup: RadioGroup = findViewById(R.id.categoryRadioGroup)
         val locationEditText: EditText = findViewById(R.id.locationEditText)
 
         val factory = TransactionViewModelFactory(repository)
@@ -34,10 +36,14 @@ class AddTransactionActivity : AppCompatActivity() {
         saveButton.setOnClickListener {
             val title = titleEditText.text.toString()
             val amount = amountEditText.text.toString().toDoubleOrNull() ?: 0.0
-            val category = categoryEditText.text.toString()
+            val selectedCategoryId = categoryRadioGroup.checkedRadioButtonId
+            val category = when (selectedCategoryId) {
+                R.id.incomeRadioButton -> TransactionCategory.INCOME
+                R.id.outcomeRadioButton -> TransactionCategory.OUTCOME
+                else -> TransactionCategory.OUTCOME
+            }
             val location = locationEditText.text.toString()
 
-            // Dapatkan tanggal saat ini
             val currentDate = Date()
 
             val transaction = TransactionEntity(
@@ -51,7 +57,6 @@ class AddTransactionActivity : AppCompatActivity() {
             viewModel.insertTransaction(transaction)
 
 
-            // Navigasi kembali ke halaman daftar transaksi
             Intent(this@AddTransactionActivity, MainActivity::class.java).also {
                 startActivity(it)
             }
diff --git a/app/src/main/java/com/onionsquad/bondoman/room/TransactionCategory.kt b/app/src/main/java/com/onionsquad/bondoman/room/TransactionCategory.kt
new file mode 100644
index 0000000000000000000000000000000000000000..a49c47934f831c523c9dea980de5a3570f1b1dd0
--- /dev/null
+++ b/app/src/main/java/com/onionsquad/bondoman/room/TransactionCategory.kt
@@ -0,0 +1,6 @@
+package com.onionsquad.bondoman.room
+
+enum class TransactionCategory {
+    INCOME,
+    OUTCOME
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt b/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt
index 66c176602c7f51214ba4ddd47de96c2ae911e837..64898cbf7c8ebf97163227d9ddd15a23450d0bc8 100644
--- a/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt
+++ b/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt
@@ -4,11 +4,11 @@ import androidx.room.Entity
 import androidx.room.PrimaryKey
 import androidx.room.ColumnInfo
 import androidx.room.TypeConverters
-import com.onionsquad.bondoman.util.DateConverter
+import com.onionsquad.bondoman.util.Converters
 import java.util.Date
 
 @Entity(tableName = "transactions")
-@TypeConverters(DateConverter::class)
+@TypeConverters(Converters::class)
 data class TransactionEntity(
     @PrimaryKey(autoGenerate = true)
     val id: Int = 0,
@@ -20,7 +20,7 @@ data class TransactionEntity(
     val amount: Double,
 
     @ColumnInfo(name = "category")
-    val category: String,
+    val category: TransactionCategory,
 
     @ColumnInfo(name = "date", defaultValue = "CURRENT_TIMESTAMP")
     val date: Date,
diff --git a/app/src/main/java/com/onionsquad/bondoman/util/Converters.kt b/app/src/main/java/com/onionsquad/bondoman/util/Converters.kt
new file mode 100644
index 0000000000000000000000000000000000000000..eb9f90aed7e011b1929c61ffa87bda7f5b612595
--- /dev/null
+++ b/app/src/main/java/com/onionsquad/bondoman/util/Converters.kt
@@ -0,0 +1,30 @@
+package com.onionsquad.bondoman.util
+
+import androidx.room.TypeConverter
+import com.onionsquad.bondoman.room.TransactionCategory
+import java.util.Date
+
+object Converters {
+
+    @TypeConverter
+    @JvmStatic
+    fun fromTimestamp(value: Long?): Date? {
+        return value?.let { Date(it) }
+    }
+
+    @TypeConverter
+    @JvmStatic
+    fun dateToTimestamp(value: Date?): Long? {
+        return value?.time
+    }
+
+    @TypeConverter
+    fun fromTransactionCategory(category: TransactionCategory): String {
+        return category.name
+    }
+
+    @TypeConverter
+    fun toTransactionCategory(categoryString: String): TransactionCategory {
+        return TransactionCategory.valueOf(categoryString)
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/onionsquad/bondoman/util/DateConverter.kt b/app/src/main/java/com/onionsquad/bondoman/util/DateConverter.kt
deleted file mode 100644
index 408d43f29d0fef1feb655b043a8080594af926e5..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/onionsquad/bondoman/util/DateConverter.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.onionsquad.bondoman.util
-
-import androidx.room.TypeConverter
-import java.util.Date
-
-object DateConverter {
-
-    @TypeConverter
-    @JvmStatic
-    fun fromTimestamp(value: Long?): Date? {
-        return value?.let { Date(it) }
-    }
-
-    @TypeConverter
-    @JvmStatic
-    fun dateToTimestamp(value: Date?): Long? {
-        return value?.time
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_add_transaction.xml b/app/src/main/res/layout/activity_add_transaction.xml
index 1858a85b38c01dfd8eda38a6101a69ec026fd3a5..95fa2b3af87c278d7b251600cecf1c1b0d0ddacb 100644
--- a/app/src/main/res/layout/activity_add_transaction.xml
+++ b/app/src/main/res/layout/activity_add_transaction.xml
@@ -28,13 +28,26 @@
         android:hint="Nominal"
         android:inputType="numberDecimal" />
 
-    <EditText
-        android:id="@+id/categoryEditText"
+    <RadioGroup
+        android:id="@+id/categoryRadioGroup"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginTop="8dp"
-        android:hint="Kategori"
-        android:inputType="text" />
+        android:orientation="horizontal">
+
+        <RadioButton
+            android:id="@+id/incomeRadioButton"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Pemasukan" />
+
+        <RadioButton
+            android:id="@+id/outcomeRadioButton"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Pengeluaran" />
+
+    </RadioGroup>
 
     <EditText
         android:id="@+id/locationEditText"