diff --git a/Sources/XXClient/Models/E2ESendReport.swift b/Sources/XXClient/Models/E2ESendReport.swift
index 87ab2e49371b96a3e96fa03d2bb9ee41860104a1..f334ab71c0c9c9c5dd1179b661c75e74407f4b10 100644
--- a/Sources/XXClient/Models/E2ESendReport.swift
+++ b/Sources/XXClient/Models/E2ESendReport.swift
@@ -4,16 +4,19 @@ public struct E2ESendReport: Equatable {
   public init(
     roundList: [Int]?,
     messageId: Data?,
-    timestamp: Int?
+    timestamp: Int?,
+    keyResidue: Data?
   ) {
     self.roundList = roundList
     self.messageId = messageId
     self.timestamp = timestamp
+    self.keyResidue = keyResidue
   }
 
   public var roundList: [Int]?
   public var messageId: Data?
   public var timestamp: Int?
+  public var keyResidue: Data?
 }
 
 extension E2ESendReport: Codable {
@@ -21,6 +24,7 @@ extension E2ESendReport: Codable {
     case roundList = "Rounds"
     case messageId = "MessageID"
     case timestamp = "Timestamp"
+    case keyResidue = "KeyResidue"
   }
 
   public static func decode(_ data: Data) throws -> Self {
diff --git a/Tests/XXClientTests/Models/E2ESendReportTests.swift b/Tests/XXClientTests/Models/E2ESendReportTests.swift
index cbde1a38314e4f6f20977efe7b09054906564ed6..d931009e3dddc4be16542db57f7c14866480daf7 100644
--- a/Tests/XXClientTests/Models/E2ESendReportTests.swift
+++ b/Tests/XXClientTests/Models/E2ESendReportTests.swift
@@ -5,13 +5,15 @@ import XCTest
 final class E2ESendReportTests: XCTestCase {
   func testCoding() throws {
     let rounds = [1, 5, 9]
-    let messageIdB64 = "51Yy47uZbP0o2Y9B/kkreDLTB6opUol3M3mYiY2dcdQ="
-    let timestamp: Int = 1_653_582_683_183_384_000
+    let messageIdB64 = "iM34yCIr4Je8ZIzL9iAAG1UWAeDiHybxMTioMAaezvs="
+    let timestamp: Int = 1_661_532_254_302_612_000
+    let keyResidueB64 = "9q2/A69EAuFM1hFAT7Bzy5uGOQ4T6bPFF72h5PlgCWE="
     let jsonString = """
     {
       "Rounds": [\(rounds.map { "\($0)" }.joined(separator: ", "))],
       "MessageID": "\(messageIdB64)",
-      "Timestamp": \(timestamp)
+      "Timestamp": \(timestamp),
+      "KeyResidue": "\(keyResidueB64)"
     }
     """
     let jsonData = jsonString.data(using: .utf8)!
@@ -20,7 +22,8 @@ final class E2ESendReportTests: XCTestCase {
     XCTAssertNoDifference(model, E2ESendReport(
       roundList: rounds,
       messageId: Data(base64Encoded: messageIdB64)!,
-      timestamp: timestamp
+      timestamp: timestamp,
+      keyResidue: Data(base64Encoded: keyResidueB64)
     ))
 
     let encodedModel = try model.encode()
@@ -37,7 +40,8 @@ final class E2ESendReportTests: XCTestCase {
     XCTAssertNoDifference(model, E2ESendReport(
       roundList: nil,
       messageId: nil,
-      timestamp: nil
+      timestamp: nil,
+      keyResidue: nil
     ))
   }
 }