diff --git a/.changeset/lemon-chefs-walk.md b/.changeset/lemon-chefs-walk.md
new file mode 100644
index 0000000000000000000000000000000000000000..e6d32b6c9cc6af8ed50118c224f697f9413f35c7
--- /dev/null
+++ b/.changeset/lemon-chefs-walk.md
@@ -0,0 +1,5 @@
+---
+'@eth-optimism/sdk': patch
+---
+
+Have SDK wait for transactions in getMessagesByTransaction
diff --git a/packages/sdk/src/cross-chain-messenger.ts b/packages/sdk/src/cross-chain-messenger.ts
index 40212bd14d23f3a674cfd03975337b138f467298..a0263966b018c832b5b6934fc93fc0496eb0b171 100644
--- a/packages/sdk/src/cross-chain-messenger.ts
+++ b/packages/sdk/src/cross-chain-messenger.ts
@@ -143,6 +143,13 @@ export class CrossChainMessenger implements ICrossChainMessenger {
       direction?: MessageDirection
     } = {}
   ): Promise<CrossChainMessage[]> {
+    // Wait for the transaction receipt if the input is waitable.
+    // TODO: Maybe worth doing this with more explicit typing but whatever for now.
+    if (typeof (transaction as any).wait === 'function') {
+      await (transaction as any).wait()
+    }
+
+    // Convert the input to a transaction hash.
     const txHash = toTransactionHash(transaction)
 
     let receipt: TransactionReceipt