diff --git a/internal/pkg/commands/devices.go b/internal/pkg/commands/devices.go
index 91b1d59..340889b 100644
--- a/internal/pkg/commands/devices.go
+++ b/internal/pkg/commands/devices.go
@@ -20,6 +20,7 @@
 	"encoding/json"
 	"fmt"
 	"os"
+	"sort"
 	"strconv"
 	"strings"
 	"time"
@@ -202,6 +203,39 @@
  ReceivedPayloadBytes:   {{.ReceivedPayloadBytes}}
  TransmittedPayloadBytes:{{.TransmittedPayloadBytes}}
  EncryptionKeyErrors:    {{.EncryptionKeyErrors}}{{end}}`
+	DEFAULT_OFFLOAD_APP_STATS_DHCPv4_FORMAT = `AdditionalStats:
+{{index . "additional_stats"}}
+InBadPacketsFromClient: {{index . "in_bad_packets_from_client"}}
+InBadPacketsFromServer: {{index . "in_bad_packets_from_server"}}
+InPacketsFromClient: {{index . "in_packets_from_client"}}
+InPacketsFromServer: {{index . "in_packets_from_server"}}
+OutPacketsToServer: {{index . "out_packets_to_server"}}
+OutPacketsToClient: {{index . "out_packets_to_client"}}
+Option_82InsertedPacketsToServer: {{index . "option_82_inserted_packets_to_server"}}
+Option_82RemovedPacketsToClient: {{index . "option_82_removed_packets_to_client"}}
+Option_82NotInsertedToServer: {{index . "option_82_not_inserted_to_server"}}`
+	DEFAULT_OFFLOAD_APP_STATS_DHCPv6_FORMAT = `AdditionalStats:
+{{index . "additional_stats"}}
+InBadPacketsFromClient: {{index . "in_bad_packets_from_client"}}
+InBadPacketsFromServer: {{index . "in_bad_packets_from_server"}}
+Option_17InsertedPacketsToServer: {{index . "option_17_inserted_packets_to_server"}}
+Option_17RemovedPacketsToClient: {{index . "option_17_removed_packets_to_client"}}
+Option_18InsertedPacketsToServer: {{index . "option_18_inserted_packets_to_server"}}
+Option_18RemovedPacketsToClient: {{index . "option_18_removed_packets_to_client"}}
+Option_37InsertedPacketsToServer: {{index . "option_37_inserted_packets_to_server"}}
+Option_37RemovedPacketsToClient: {{index . "option_37_removed_packets_to_client"}}
+OutgoingMtuExceededPacketsFromClient: {{index . "outgoing_mtu_exceeded_packets_from_client"}}`
+	DEFAULT_OFFLOAD_APP_STATS_PPPOE_IA_FORMAT = `AdditionalStats:
+{{index . "additional_stats"}}
+InErrorPacketsFromClient: {{index . "in_error_packets_from_client"}}
+InErrorPacketsFromServer: {{index . "in_error_packets_from_server"}}
+InPacketsFromClient: {{index . "in_packets_from_client"}}
+InPacketsFromServer: {{index . "in_packets_from_server"}}
+OutPacketsToServer: {{index . "out_packets_to_server"}}
+OutPacketsToClient: {{index . "out_packets_to_client"}}
+VendorSpecificTagInsertedPacketsToServer: {{index . "vendor_specific_tag_inserted_packets_to_server"}}
+VendorSpecificTagRemovedPacketsToClient: {{index . "vendor_specific_tag_removed_packets_to_client"}}
+OutgoingMtuExceededPacketsFromClient: {{index . "outgoing_mtu_exceeded_packets_from_client"}}`
 )
 
 type DeviceList struct {
@@ -2380,6 +2414,8 @@
 
 	// Process the response data
 	stats, formatStr := buildOffloadAppStatsOutputFormat(rv.GetResponse().GetOffloadedAppsStats())
+
+	formatAdditionalStats(stats)
 	outputFormat := CharReplacer.Replace(options.Format)
 	if outputFormat == "" {
 		outputFormat = GetCommandOptionWithDefault("device-get-offload-app-stats", "format", formatStr)
@@ -2397,6 +2433,32 @@
 	return nil
 }
 
+func formatAdditionalStats(stats map[string]interface{}) {
+	if v, ok := stats["additional_stats"]; ok {
+		if m, ok := v.(map[string]interface{}); ok {
+
+			keys := make([]string, 0, len(m))
+			for k := range m {
+				keys = append(keys, k)
+			}
+
+			sort.Strings(keys)
+
+			var b strings.Builder
+
+			for _, k := range keys {
+				b.WriteString(fmt.Sprintf(
+					"  %-65s : %v\n",
+					k,
+					m[k],
+				))
+			}
+
+			stats["additional_stats"] = b.String()
+		}
+	}
+}
+
 func (options *SetOffloadApp) Execute(args []string) error {
 	conn, err := NewConnection()
 	if err != nil {
diff --git a/internal/pkg/commands/stats.go b/internal/pkg/commands/stats.go
index 26697ac..2cdfe57 100644
--- a/internal/pkg/commands/stats.go
+++ b/internal/pkg/commands/stats.go
@@ -196,7 +196,6 @@
 
 func buildOffloadAppStatsOutputFormat(stats *extension.GetOffloadedAppsStatisticsResponse) (map[string]interface{}, string) {
 	formatStr := "table" // Default format
-
 	if stats == nil {
 		return map[string]interface{}{
 			"error": "No stats available in response",
@@ -216,7 +215,7 @@
 			"option_82_removed_packets_to_client":  data.Dhcpv4RaStats.Option_82RemovedPacketsToClient,
 			"option_82_not_inserted_to_server":     data.Dhcpv4RaStats.Option_82NotInsertedToServer,
 			"additional_stats":                     convertMapStringToInterface(data.Dhcpv4RaStats.AdditionalStats),
-		}, formatStr
+		}, DEFAULT_OFFLOAD_APP_STATS_DHCPv4_FORMAT
 
 	case *extension.GetOffloadedAppsStatisticsResponse_Dhcpv6RaStats:
 		return map[string]interface{}{
@@ -226,11 +225,11 @@
 			"option_17_removed_packets_to_client":       data.Dhcpv6RaStats.Option_17RemovedPacketsToClient,
 			"option_18_inserted_packets_to_server":      data.Dhcpv6RaStats.Option_18InsertedPacketsToServer,
 			"option_18_removed_packets_to_client":       data.Dhcpv6RaStats.Option_18RemovedPacketsToClient,
-			"option_37_inserted_packets_to_server":      data.Dhcpv6RaStats.Option_18InsertedPacketsToServer,
-			"option_37_removed_packets_to_client":       data.Dhcpv6RaStats.Option_18RemovedPacketsToClient,
+			"option_37_inserted_packets_to_server":      data.Dhcpv6RaStats.Option_37InsertedPacketsToServer,
+			"option_37_removed_packets_to_client":       data.Dhcpv6RaStats.Option_37RemovedPacketsToClient,
 			"outgoing_mtu_exceeded_packets_from_client": data.Dhcpv6RaStats.OutgoingMtuExceededPacketsFromClient,
 			"additional_stats":                          convertMapStringToInterface(data.Dhcpv6RaStats.AdditionalStats),
-		}, formatStr
+		}, DEFAULT_OFFLOAD_APP_STATS_DHCPv6_FORMAT
 
 	case *extension.GetOffloadedAppsStatisticsResponse_PppoeIaStats:
 		return map[string]interface{}{
@@ -244,7 +243,7 @@
 			"vendor_specific_tag_removed_packets_to_client":  data.PppoeIaStats.VendorSpecificTagRemovedPacketsToClient,
 			"outgoing_mtu_exceeded_packets_from_client":      data.PppoeIaStats.OutgoingMtuExceededPacketsFromClient,
 			"additional_stats":                               convertMapStringToInterface(data.PppoeIaStats.AdditionalStats),
-		}, formatStr
+		}, DEFAULT_OFFLOAD_APP_STATS_PPPOE_IA_FORMAT
 
 	default:
 		return map[string]interface{}{
