diff --git a/EnvelopeGenerator.Application/Model/EnvelopeReceiverQuery.cs b/EnvelopeGenerator.Application/Model/EnvelopeReceiverQuery.cs
new file mode 100644
index 00000000..11cc38da
--- /dev/null
+++ b/EnvelopeGenerator.Application/Model/EnvelopeReceiverQuery.cs
@@ -0,0 +1,58 @@
+using DigitalData.Core.Exceptions;
+using EnvelopeGenerator.Extensions;
+
+namespace EnvelopeGenerator.Application.Model;
+
+///
+///
+///
+public record EnvelopeReceiverQuery : EnvelopeReceiverQuery;
+
+///
+///
+///
+///
+///
+public record EnvelopeReceiverQuery
+ where TEnvelopeQuery : EnvelopeQuery, new()
+ where TReceiverQuery : ReceiverQuery, new()
+{
+ ///
+ ///
+ ///
+ public virtual string? Key
+ {
+ get => Envelope?.Uuid is string uuid && Receiver?.Signature is string signature
+ ? (uuid, signature).EncodeEnvelopeReceiverId()
+ : null;
+ init
+ {
+ if (value is null)
+ return;
+
+ (string? EnvelopeUuid, string? ReceiverSignature) = value.DecodeEnvelopeReceiverId();
+ if (string.IsNullOrEmpty(EnvelopeUuid) || string.IsNullOrEmpty(ReceiverSignature))
+ {
+ throw new BadRequestException("Der EnvelopeReceiverKey muss ein gültiger Base64-kodierter String sein, der die EnvelopeUuid und die ReceiverSignature enthält.");
+ }
+ Envelope = new TEnvelopeQuery()
+ {
+ Uuid = EnvelopeUuid
+ };
+ Receiver = new TReceiverQuery()
+ {
+ Signature = ReceiverSignature
+ };
+ }
+ }
+
+ ///
+ ///
+ ///
+ public virtual TEnvelopeQuery? Envelope { get; init; }
+
+ ///
+ ///
+ ///
+ public virtual TReceiverQuery? Receiver { get; init; }
+}
\ No newline at end of file