diff --git a/sdbusplus/exception.cpp b/sdbusplus/exception.cpp
index 3dea6f9..a0ecc8d 100644
--- a/sdbusplus/exception.cpp
+++ b/sdbusplus/exception.cpp
@@ -68,6 +68,11 @@
     return full_message.c_str();
 }
 
+int SdBusError::get_errno() const noexcept
+{
+    return intf->sd_bus_error_get_errno(&this->error);
+}
+
 void SdBusError::populateMessage(const char* prefix)
 {
     full_message = prefix;
diff --git a/sdbusplus/exception.hpp b/sdbusplus/exception.hpp
index 6fe8d70..2eca532 100644
--- a/sdbusplus/exception.hpp
+++ b/sdbusplus/exception.hpp
@@ -45,6 +45,7 @@
     const char* name() const noexcept override;
     const char* description() const noexcept override;
     const char* what() const noexcept override;
+    int get_errno() const noexcept;
 
   private:
     sd_bus_error error;
diff --git a/test/exception/sdbus_error.cpp b/test/exception/sdbus_error.cpp
index 40d88ee..fde0a85 100644
--- a/test/exception/sdbus_error.cpp
+++ b/test/exception/sdbus_error.cpp
@@ -34,6 +34,8 @@
 
     // Make sure inheritance is defined correctly
     sdbusplus::exception::exception& sdbusErr = err;
+    SdBusError& errNew = err;
+    EXPECT_EQ(errorVal, errNew.get_errno());
     EXPECT_EQ(std::string{error.name}, sdbusErr.name());
     EXPECT_EQ(std::string{error.message}, sdbusErr.description());
     std::exception& stdErr = sdbusErr;
@@ -80,6 +82,7 @@
         // Build our first SdBusError
         SdBusError err(errorVal, prefix.c_str());
 
+        EXPECT_EQ(errorVal, err.get_errno());
         EXPECT_EQ(name, err.name());
         EXPECT_EQ(message, err.description());
         EXPECT_EQ(what, err.what());
@@ -88,11 +91,13 @@
         SdBusError errNew(std::move(err));
 
         // Ensure the old object was cleaned up
+        EXPECT_EQ(0, err.get_errno());
         EXPECT_EQ(nullptr, err.name());
         EXPECT_EQ(nullptr, err.description());
         EXPECT_EQ(std::string{}, err.what());
 
         // Ensure our new object has the same data but moved
+        EXPECT_EQ(errorVal, errNew.get_errno());
         EXPECT_EQ(name, errNew.name());
         EXPECT_EQ(message, errNew.description());
         EXPECT_EQ(what, errNew.what());
@@ -101,12 +106,14 @@
         errFinal = std::move(errNew);
 
         // Ensure the old object was cleaned up
+        EXPECT_EQ(0, errNew.get_errno());
         EXPECT_EQ(nullptr, errNew.name());
         EXPECT_EQ(nullptr, errNew.description());
         EXPECT_EQ(std::string{}, errNew.what());
     }
 
     // Ensure our new object has the same data but moved
+    EXPECT_EQ(errorVal, errFinal.get_errno());
     EXPECT_EQ(name, errFinal.name());
     EXPECT_EQ(message, errFinal.description());
     EXPECT_EQ(what, errFinal.what());
@@ -124,6 +131,7 @@
     sd_bus_error_set(&error, name.c_str(), description.c_str());
     EXPECT_TRUE(sd_bus_error_is_set(&error));
     const char* nameBeforeMove = error.name;
+    const int errorVal = sd_bus_error_get_errno(&error);
     SdBusError err(&error, prefix.c_str());
 
     // We expect a move not copy
@@ -134,6 +142,7 @@
     sd_bus_error_free(&error);
     sd_bus_error_free(&error);
 
+    EXPECT_EQ(errorVal, err.get_errno());
     EXPECT_EQ(name, err.name());
     EXPECT_EQ(description, err.description());
     EXPECT_EQ(prefix + ": " + name + ": " + description, err.what());
