diff --git a/EnvelopeGenerator.API/Models/BlazorSignaturePayload.cs b/EnvelopeGenerator.API/Models/BlazorSignaturePayload.cs
new file mode 100644
index 00000000..3bc0b0c2
--- /dev/null
+++ b/EnvelopeGenerator.API/Models/BlazorSignaturePayload.cs
@@ -0,0 +1,42 @@
+namespace EnvelopeGenerator.API.Models;
+
+///
+/// Lightweight payload used by the Blazor receiver UI to submit signatures.
+/// Each entry corresponds to one signature placeholder rendered as an
+/// overlay on top of the DevExpress PDF viewer.
+///
+/// The legacy MVC flow ships a full PSPDFKit InstantJSON payload via
+/// .
+/// That format is browser-library specific. The Blazor client uses a
+/// transport-neutral DTO instead: only what the server actually needs
+/// to persist the signed document (image + metadata per placeholder).
+///
+/// Conversion to the internal PsPdfKitAnnotation happens inside
+/// .
+///
+public class BlazorSignaturePayload
+{
+ /// The receiver-specific signed placeholders for this envelope.
+ public List Signatures { get; set; } = new();
+}
+
+///
+/// A single signed placeholder.
+///
+public class BlazorSignatureEntry
+{
+ /// The receiver's DocumentReceiverElement.Id being signed.
+ public int ElementId { get; set; }
+
+ /// Signature image as a data URL (e.g. "data:image/png;base64,...").
+ public string SignatureDataUrl { get; set; } = string.Empty;
+
+ /// Optional position / job title entered by the receiver.
+ public string? Position { get; set; }
+
+ /// Optional city / location entered by the receiver.
+ public string? City { get; set; }
+
+ /// Capture timestamp (client local time).
+ public DateTime SignedAt { get; set; }
+}