diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 8a1418fef3c0d1f4a88559e27ff88b9eada4c47d..6de6eadec6f69618daad92f1a499196e1c6cad9f 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -37,6 +37,7 @@ android {
 }
 
 dependencies {
+    implementation("com.google.android.gms:play-services-location:21.2.0")
     val roomVersion = "2.6.1"
 
     implementation("androidx.core:core-ktx:1.8.0")
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 19a7945c0328370bb1578a3f67d095c2558f6997..cc68fa5c04a4be34bc896f7002634906606dca37 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,8 +2,9 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools">
 
-    <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.INTERNET" />
 
     <application
         android:name=".ui.transactions.TransactionsApplication"
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt
index 00f3673be3940831dc3fd5c94bd51fbbe70ceca1..3bd484ddb198fcd7c934173ec83caf05cb990ee5 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt
@@ -1,15 +1,20 @@
 package com.example.bondoyap.ui.transactions
 
 import android.R
+import android.content.pm.PackageManager
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.ArrayAdapter
+import android.widget.TextView
 import android.widget.Toast
+import androidx.core.app.ActivityCompat
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
 import com.example.bondoyap.databinding.FragmentAddTransactionsBinding
+import com.google.android.gms.location.FusedLocationProviderClient
+import com.google.android.gms.location.LocationServices
 import java.text.SimpleDateFormat
 import java.util.Date
 import java.util.Locale
@@ -26,6 +31,10 @@ class AddTransactionsFragment : Fragment() {
         TransactionsViewModelFactory((requireContext().applicationContext as TransactionsApplication).repository)
     }
 
+    private lateinit var fusedLocationProviderClient: FusedLocationProviderClient
+    private lateinit var latitude: String
+    private lateinit var longitude: String
+
     override fun onCreateView(
             inflater: LayoutInflater,
             container: ViewGroup?,
@@ -42,7 +51,18 @@ class AddTransactionsFragment : Fragment() {
         adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item)
         binding.spinnerKategori.adapter = adapter
 
+        fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(requireContext())
 
+        if (
+            ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_FINE_LOCATION)
+            != PackageManager.PERMISSION_GRANTED
+            && ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION)
+            != PackageManager.PERMISSION_GRANTED
+        ) {
+            ActivityCompat.requestPermissions(requireActivity(),
+                arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), 100
+            )
+        }
 
         binding.buttonSimpan.setOnClickListener {
             val isPemasukan: Boolean = when (binding.spinnerKategori.selectedItem.toString()) {
@@ -65,14 +85,40 @@ class AddTransactionsFragment : Fragment() {
                 0.0
             }
 
-            val transaction: Transactions = Transactions(
-                judul = judul,
-                nominal = nominal,
-                isPemasukan = isPemasukan,
-                tanggal = currentDate
-            )
+            val location = fusedLocationProviderClient.lastLocation
+            location.addOnSuccessListener {
+                if(it != null) {
+                    latitude = it.latitude.toString()
+                    longitude = it.longitude.toString()
+
+                    val transaction: Transactions = Transactions(
+                        judul = judul,
+                        nominal = nominal,
+                        isPemasukan = isPemasukan,
+                        tanggal = currentDate,
+                        longitude = longitude,
+                        latitude = latitude
+                    )
+                    transactionsViewModel.upsert(transaction)
+                }
+            }
 
-            transactionsViewModel.upsert(transaction)
+            if(
+                ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_FINE_LOCATION)
+                != PackageManager.PERMISSION_GRANTED
+                && ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION)
+                != PackageManager.PERMISSION_GRANTED
+            ) {
+                val transaction: Transactions = Transactions(
+                    judul = judul,
+                    nominal = nominal,
+                    isPemasukan = isPemasukan,
+                    tanggal = currentDate,
+                    longitude = "",
+                    latitude = ""
+                )
+                transactionsViewModel.upsert(transaction)
+            }
 
             Toast.makeText(requireContext(), "Transaksi berhasil disimpan", Toast.LENGTH_SHORT).show()
 
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt
index a10402e363f98fbf0301093d1481508e1a96aec7..025e2796bb9065f35490a6fa76392895cc5ebc36 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt
@@ -2,7 +2,14 @@ package com.example.bondoyap.ui.transactions
 
 import android.R
 import android.app.AlertDialog
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.location.Address
+import android.location.Geocoder
+import android.net.Uri
 import android.os.Bundle
+import android.os.Handler
+import android.os.Looper
 import android.text.Editable
 import android.text.Spannable
 import android.text.SpannableStringBuilder
@@ -11,14 +18,19 @@ import android.view.View
 import android.view.ViewGroup
 import android.widget.ArrayAdapter
 import android.widget.Toast
+import androidx.core.app.ActivityCompat
+import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
 import androidx.navigation.fragment.findNavController
 import com.example.bondoyap.databinding.FragmentAddTransactionsBinding
 import com.example.bondoyap.databinding.FragmentEditTransactionsBinding
+import com.google.android.gms.location.FusedLocationProviderClient
+import com.google.android.gms.location.LocationServices
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers.Main
 import kotlinx.coroutines.launch
+import java.util.Locale
 
 class EditTransactionsFragment : Fragment() {
 
@@ -32,6 +44,8 @@ class EditTransactionsFragment : Fragment() {
         TransactionsViewModelFactory((requireContext().applicationContext as TransactionsApplication).repository)
     }
 
+    private lateinit var fusedLocationProviderClient: FusedLocationProviderClient
+
     override fun onCreateView(
         inflater: LayoutInflater,
         container: ViewGroup?,
@@ -40,6 +54,8 @@ class EditTransactionsFragment : Fragment() {
         _binding = FragmentEditTransactionsBinding.inflate(inflater, container, false)
 
         var tanggal: String = ""
+        var latitude = ""
+        var longitude = ""
 
         val pemasukan = "Pemasukan"
         val pengeluaran = "Pengeluaran"
@@ -51,6 +67,7 @@ class EditTransactionsFragment : Fragment() {
         binding.spinnerKategori.adapter = adapter
 
         binding.spinnerKategori.isEnabled = false
+        binding.editTextLokasi.isEnabled = false
 
         val transactionId: Int = arguments?.getInt("transaction_id") ?: -1
 
@@ -68,7 +85,54 @@ class EditTransactionsFragment : Fragment() {
             }
 
             tanggal = originalTransaction.tanggal
+            longitude = originalTransaction.longitude
+            latitude = originalTransaction.latitude
+
+            if (originalTransaction.longitude.isEmpty() || originalTransaction.latitude.isEmpty()) {
+                binding.editTextLokasi.text = SpannableStringBuilder("Unavailable")
+            } else {
+                val addresses: List<Address> =
+                    Geocoder(requireContext(), Locale.getDefault()).getFromLocation(
+                        originalTransaction.latitude.toDouble(),
+                        originalTransaction.longitude.toDouble(),
+                        1
+                    ) ?: emptyList()
+                if (addresses.isNotEmpty()) {
+                    val locationName = addresses[0].getAddressLine(0)
+                    Handler(Looper.getMainLooper()).post {
+                        binding.editTextLokasi.text = SpannableStringBuilder(locationName)
+                    }
+                }
+            }
+        }
+
+        fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(requireContext())
+
+        if (
+            ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_FINE_LOCATION)
+            != PackageManager.PERMISSION_GRANTED
+            && ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION)
+            != PackageManager.PERMISSION_GRANTED
+        ) {
+            ActivityCompat.requestPermissions(requireActivity(),
+                arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), 100
+            )
+        }
 
+        binding.checkboxUpdateLokasi.setOnCheckedChangeListener { _, isChecked ->
+            if (isChecked) {
+                if (
+                    ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_FINE_LOCATION)
+                    != PackageManager.PERMISSION_GRANTED
+                    && ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION)
+                    != PackageManager.PERMISSION_GRANTED
+                ) {
+                    ActivityCompat.requestPermissions(requireActivity(),
+                        arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), 100
+                    )
+                    binding.checkboxUpdateLokasi.isChecked = false
+                }
+            }
         }
 
         binding.buttonUpdate.setOnClickListener {
@@ -94,9 +158,24 @@ class EditTransactionsFragment : Fragment() {
                 nominal = nominal,
                 isPemasukan = isPemasukan,
                 tanggal = tanggal,
+                longitude = longitude,
+                latitude = latitude,
                 id = transactionId
             )
 
+            if (binding.checkboxUpdateLokasi.isChecked) {
+                val location = fusedLocationProviderClient.lastLocation
+                location.addOnSuccessListener {
+                    if (it != null) {
+                        latitude = it.latitude.toString()
+                        longitude = it.longitude.toString()
+
+                        transaction.latitude = latitude
+                        transaction.longitude = longitude
+                    }
+                }
+            }
+
             showConfirmationDialog("Update", "Apakah Anda yakin ingin memperbarui transaksi ini?") {
                 transactionsViewModel.upsert(transaction)
 
@@ -104,6 +183,19 @@ class EditTransactionsFragment : Fragment() {
                 binding.editTextNominal.text =
                     SpannableStringBuilder(transaction.nominal.toBigDecimal().toString())
 
+                val addresses: List<Address> =
+                    Geocoder(requireContext(), Locale.getDefault()).getFromLocation(
+                        transaction.latitude.toDouble(),
+                        transaction.longitude.toDouble(),
+                        1
+                    ) ?: emptyList()
+                if (addresses.isNotEmpty()) {
+                    val locationName = addresses[0].getAddressLine(0)
+                    Handler(Looper.getMainLooper()).post {
+                        binding.editTextLokasi.text = SpannableStringBuilder(locationName)
+                    }
+                }
+
                 if (transaction.isPemasukan) {
                     binding.spinnerKategori.setSelection(categories.indexOf(pemasukan))
                 } else {
@@ -111,6 +203,8 @@ class EditTransactionsFragment : Fragment() {
                 }
                 Toast.makeText(requireContext(), "Transaksi berhasil diperbarui", Toast.LENGTH_SHORT).show()
             }
+
+
         }
 
         binding.buttonHapus.setOnClickListener {
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/Transactions.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/Transactions.kt
index c5e55dd1edfcd9ce3f0b704610a1bdb256e2ffbd..33e0b82c9ffb70dfdbd28074a4c2e7ef886c5528 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/Transactions.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/Transactions.kt
@@ -18,8 +18,11 @@ data class Transactions(
     @ColumnInfo(name = "tanggal")
     val tanggal: String,
 
-    @ColumnInfo(name = "lokasi")
-    val lokasi: String = "",
+    @ColumnInfo(name = "longitude")
+    var longitude: String = "",
+
+    @ColumnInfo(name = "latitude")
+    var latitude: String = "",
 
     @PrimaryKey(autoGenerate = true)
     @ColumnInfo(name = "id")
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsFragment.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsFragment.kt
index 02ae440ad0e4bcd1319ac5d03558c8c7614e3435..036cd83e1724a379928591b30b629adc6a195603 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsFragment.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsFragment.kt
@@ -1,9 +1,11 @@
 package com.example.bondoyap.ui.transactions
 
+import android.content.pm.PackageManager
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.core.app.ActivityCompat
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
 import androidx.lifecycle.Observer
@@ -25,6 +27,8 @@ class TransactionsFragment: Fragment() {
         TransactionsViewModelFactory((requireContext().applicationContext as TransactionsApplication).repository)
     }
 
+    private val requestcode: Int = 1
+
     override fun onCreateView(
         inflater: LayoutInflater,
         container: ViewGroup?,
@@ -33,7 +37,7 @@ class TransactionsFragment: Fragment() {
         _binding = FragmentTransactionsBinding.inflate(inflater, container, false)
 
         val recyclerView = binding.root.findViewById<RecyclerView>(R.id.recyclerViewTransactions)
-        val adapter = TransactionsListAdapter()
+        val adapter = TransactionsListAdapter(context = requireContext())
         recyclerView.adapter = adapter
         recyclerView.layoutManager = LinearLayoutManager(requireContext())
 
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsListAdapter.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsListAdapter.kt
index c79ddd8aa82c0a4346cbba83b424f23f1822c9f6..7ce3edd1637d5247920f3c1a07b148fd3fbf648e 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsListAdapter.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsListAdapter.kt
@@ -1,23 +1,37 @@
 package com.example.bondoyap.ui.transactions
 
+import android.content.Context
+import android.content.Intent
+import android.location.Address
+import android.location.Geocoder
+import android.net.Uri
 import android.os.Bundle
+import android.os.Handler
+import android.os.Looper
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import android.widget.Toast
 import androidx.cardview.widget.CardView
+import androidx.core.content.ContextCompat.startActivity
 import androidx.navigation.Navigation
 import androidx.navigation.fragment.findNavController
 import androidx.recyclerview.widget.DiffUtil
 import androidx.recyclerview.widget.ListAdapter
 import androidx.recyclerview.widget.RecyclerView
 import com.example.bondoyap.R
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+import java.io.IOException
+import java.util.Locale
 
-class TransactionsListAdapter :
+class TransactionsListAdapter(private val context: Context) :
     ListAdapter<Transactions, TransactionsViewHolder>(TransactionsDiffCallback()) {
 
     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TransactionsViewHolder {
-        return TransactionsViewHolder.create(parent)
+        return TransactionsViewHolder.create(parent, context)
     }
 
     override fun onBindViewHolder(holder: TransactionsViewHolder, position: Int) {
@@ -27,18 +41,21 @@ class TransactionsListAdapter :
 
 }
 
-class TransactionsViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+class TransactionsViewHolder(itemView: View, private val context: Context) : RecyclerView.ViewHolder(itemView) {
     private val cardView: CardView = itemView.findViewById(R.id.cardViewTransaction)
     private val transactionTitle: TextView = itemView.findViewById(R.id.transactionTitle)
     private val transactionAmount: TextView = itemView.findViewById(R.id.transactionAmount)
     private val transactionCategory: TextView = itemView.findViewById(R.id.transactionCategory)
     private val transactionDate: TextView = itemView.findViewById(R.id.transactionDate)
+    private val transactionLocation: TextView = itemView.findViewById(R.id.transactionLocation)
+    private val geocoder: Geocoder = Geocoder(context, Locale.getDefault())
 
     fun bind(transaction: Transactions) {
         val maxAmountLength = 12
-        val maxTitleLength = 19
+        val maxTitleLength = 16
+        val maxLocationLength = 9
 
-        val amountText = if (transaction.nominal.toString().length > maxAmountLength) {
+        val amountText = if (transaction.nominal.toBigDecimal().toString().length > maxAmountLength) {
             "IDR " + transaction.nominal.toBigDecimal().toString().substring(0, maxAmountLength) + "..."
         } else {
             "IDR " + transaction.nominal.toBigDecimal().toString()
@@ -56,8 +73,53 @@ class TransactionsViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
             true -> "Pemasukan"
             else -> "Pengeluaran"
         }
+
         transactionDate.text = transaction.tanggal
 
+        if (transaction.latitude.isNotEmpty() && transaction.longitude.isNotEmpty()) {
+            CoroutineScope(Dispatchers.IO).launch {
+                try {
+                    val addresses: List<Address> = geocoder.getFromLocation(
+                        transaction.latitude.toDouble(),
+                        transaction.longitude.toDouble(),
+                        1
+                    ) ?: emptyList()
+                    if (addresses.isNotEmpty()) {
+                        val locationName = addresses[0].getAddressLine(0)
+                        Handler(Looper.getMainLooper()).post {
+                            transactionLocation.text = if (locationName.length > maxLocationLength) {
+                                locationName.substring(0, maxLocationLength) + "..."
+                            } else {
+                                locationName
+                            }
+                        }
+                    }
+                } catch (e: IOException) {
+                    e.printStackTrace()
+                }
+            }
+        } else {
+            transactionLocation.text = "Unavailable"
+        }
+
+        transactionLocation.setOnClickListener {
+            if (transactionLocation.text != "Unavailable") {
+                val mapUri = Uri.parse("https://maps.google.com/maps/search/?api=1&query=${transaction.latitude},${transaction.longitude}")
+                val intent = Intent(Intent.ACTION_VIEW, mapUri)
+                intent.setPackage("com.google.android.apps.maps")
+                if (intent.resolveActivity(context.packageManager) != null) {
+                    startActivity(context, intent, null)
+                } else {
+                    val webIntent = Intent(Intent.ACTION_VIEW, Uri.parse("https://www.google.com/maps/search/?api=1&query=${transaction.latitude},${transaction.longitude}"))
+                    if (webIntent.resolveActivity(context.packageManager) != null) {
+                        startActivity(context, webIntent, null)
+                    } else {
+                        Toast.makeText(context, "Tidak ada app yang dapat menghandle maps", Toast.LENGTH_SHORT).show()
+                    }
+                }
+            }
+        }
+
         cardView.setOnClickListener {
             val bundle: Bundle = Bundle()
             bundle.putInt("transaction_id", transaction.id)
@@ -66,10 +128,10 @@ class TransactionsViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
     }
 
     companion object {
-        fun create(parent: ViewGroup): TransactionsViewHolder {
+        fun create(parent: ViewGroup, context: Context): TransactionsViewHolder {
             val view: View = LayoutInflater.from(parent.context)
                 .inflate(R.layout.recyclerview_transactions, parent, false)
-            return TransactionsViewHolder(view)
+            return TransactionsViewHolder(view, context)
         }
     }
 }
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRoomDatabase.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRoomDatabase.kt
index b5e530fdd2363d8ca3ad5e4c0dcbea8db70df86b..6c46f75237fc62f154a52ee7bd29be85deb46e7d 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRoomDatabase.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRoomDatabase.kt
@@ -9,7 +9,7 @@ import androidx.sqlite.db.SupportSQLiteDatabase
 
 @Database(
     entities = [Transactions::class],
-    version = 2,
+    version = 3,
     exportSchema = false
 )
 public abstract class TransactionsRoomDatabase: RoomDatabase() {
@@ -26,7 +26,7 @@ public abstract class TransactionsRoomDatabase: RoomDatabase() {
                     context.applicationContext,
                     TransactionsRoomDatabase::class.java,
                     "transactions_database"
-                ).addMigrations(MIGRATION_1_2).
+                ).addMigrations(MIGRATION_2_3).
                 build()
                 INSTANCE = instance
                 instance
@@ -47,6 +47,22 @@ public abstract class TransactionsRoomDatabase: RoomDatabase() {
 
                 db.execSQL("DROP TABLE transactions")
 
+                db.execSQL("ALTER TABLE transactions_new RENAME TO transactions")
+            }
+        }
+        private val MIGRATION_2_3: Migration = object : Migration(2, 3) {
+            override fun migrate(db: SupportSQLiteDatabase) {
+                db.execSQL("CREATE TABLE IF NOT EXISTS `transactions_new` " +
+                        "(`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " +
+                        "`judul` TEXT NOT NULL, " +
+                        "`nominal` REAL NOT NULL, " +
+                        "`is_pemasukan` INTEGER NOT NULL, " +
+                        "`tanggal` TEXT NOT NULL, " +
+                        "`longitude` TEXT NOT NULL, " +
+                        "`latitude` TEXT NOT NULL)")
+
+                db.execSQL("DROP TABLE transactions")
+
                 db.execSQL("ALTER TABLE transactions_new RENAME TO transactions")
             }
         }
diff --git a/app/src/main/res/drawable/ic_pin.xml b/app/src/main/res/drawable/ic_pin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4304772446917f94787245ca25f0020e4a904ccd
--- /dev/null
+++ b/app/src/main/res/drawable/ic_pin.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24.0"
+    android:viewportHeight="24.0">
+
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M12,2C8.13,2 5,5.13 5,9c0,5.25 7,13 7,13s7,-7.75 7,-13c0,-3.87 -3.13,-7 -7,-7zM12,11.5c-1.38,0 -2.5,-1.12 -2.5,-2.5s1.12,-2.5 2.5,-2.5s2.5,1.12 2.5,2.5s-1.12,2.5 -2.5,2.5z"/>
+</vector>
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 06ea6cae22113f243efe317f984f7742418737e8..bad97d63dc8bac143e499f7ff3a349305c72700f 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -3,8 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/container"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingTop="?attr/actionBarSize">
+    android:layout_height="match_parent">
 
     <com.google.android.material.bottomnavigation.BottomNavigationView
         android:id="@+id/nav_view"
diff --git a/app/src/main/res/layout/fragment_edit_transactions.xml b/app/src/main/res/layout/fragment_edit_transactions.xml
index b1bf97d41befb893d99ccc4ca40255f2474c01bf..ea202d0be3584d842892ba196c00dd45967f3216 100644
--- a/app/src/main/res/layout/fragment_edit_transactions.xml
+++ b/app/src/main/res/layout/fragment_edit_transactions.xml
@@ -43,26 +43,42 @@
         android:layout_height="wrap_content"
         android:layout_marginBottom="16dp" />
 
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/textfield_label_lokasi" />
+    <EditText
+        android:id="@+id/editText_lokasi"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:inputType="text|textMultiLine"
+        android:gravity="top"/>
+
+    <CheckBox android:id="@+id/checkbox_update_lokasi"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="Perbarui lokasi" />
+
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal">
 
         <Button
-            android:id="@+id/button_update"
+            android:id="@+id/button_hapus"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_weight="1"
             android:layout_marginEnd="8dp"
-            android:text="@string/button_update" />
+            android:text="@string/button_hapus"
+            android:backgroundTint="@color/red"/>
 
         <Button
-            android:id="@+id/button_hapus"
+            android:id="@+id/button_update"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_weight="1"
-            android:text="@string/button_hapus"
-            android:backgroundTint="@color/red"/>
+            android:text="@string/button_update" />
 
     </LinearLayout>
 
diff --git a/app/src/main/res/layout/fragment_transactions.xml b/app/src/main/res/layout/fragment_transactions.xml
index 79600287495f8ba4d8189cd7ad96e48e21d423a7..ad4fddd01c2a89be080305241b2b70399ef56d7a 100644
--- a/app/src/main/res/layout/fragment_transactions.xml
+++ b/app/src/main/res/layout/fragment_transactions.xml
@@ -1,7 +1,8 @@
 <RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent" >
+    android:layout_height="match_parent"
+    android:layout_marginTop="16dp">
 
     <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/recyclerViewTransactions"
diff --git a/app/src/main/res/layout/recyclerview_transactions.xml b/app/src/main/res/layout/recyclerview_transactions.xml
index 42a94517c6cc35b0707bbce31700af874f66d4c3..03524715210c6a87729033adc340fe07537e8e47 100644
--- a/app/src/main/res/layout/recyclerview_transactions.xml
+++ b/app/src/main/res/layout/recyclerview_transactions.xml
@@ -67,7 +67,8 @@
                 android:layout_height="wrap_content"
                 android:textSize="16sp"
                 android:text="Lokasi"
-                android:layout_marginTop="36dp"/>
+                android:layout_marginTop="36dp"
+                app:drawableLeftCompat="@drawable/ic_pin" />
 
         </LinearLayout>