diff --git a/src/CaosDB.jl b/src/CaosDB.jl
index e08fbbfaba36b7e39f83e67690912a295bbe6769..726f01c9955a2f850e6d6b457f4fe61a3ef014bb 100644
--- a/src/CaosDB.jl
+++ b/src/CaosDB.jl
@@ -85,6 +85,7 @@ export create_transaction,
     add_retrieve_by_id,
     add_insert_entity,
     add_update_entity,
+    add_delete_by_id,
     add_query,
     execute,
     get_result_set,
diff --git a/src/Transaction.jl b/src/Transaction.jl
index 24e223fb6872c38438b5f653373ffb0945b43b5b..80bf3df0d43b031c62a039b738c0a8345a5bf050 100644
--- a/src/Transaction.jl
+++ b/src/Transaction.jl
@@ -28,6 +28,7 @@ export create_transaction,
     add_query,
     add_insert_entity,
     add_update_entity,
+    add_delete_by_id,
     execute,
     get_result_set,
     get_count_result,
@@ -181,6 +182,27 @@ function add_update_entity(transaction::Ref{_Transaction}, entity::Ref{CaosDB.En
 
     CaosDB.Exceptions.evaluate_return_code(err_code)
 end
+"""
+    function add_delete_by_id(transaction::Ref{_Transaction}, id::AbstractString)
+
+Add a sub-request to delete a single entity to the given `transaction`.
+
+!!! info
+
+    This does not execute the transaction.
+"""
+function add_delete_by_id(transaction::Ref{_Transaction}, id::AbstractString)
+
+    err_code = ccall(
+        (:caosdb_transaction_transaction_delete_by_id, CaosDB.library_name),
+        Cint,
+        (Ref{_Transaction}, Cstring),
+        transaction,
+        id,
+    )
+
+    CaosDB.Exceptions.evaluate_return_code(err_code)
+end
 
 """
     function add_retrieve_by_id(