diff --git a/personal/arsenicum/invoicer/src/main/java/pl/hackerspace/domain/Client.java b/personal/arsenicum/invoicer/src/main/java/pl/hackerspace/domain/Client.java
new file mode 100644
index 0000000..2dab10f
--- /dev/null
+++ b/personal/arsenicum/invoicer/src/main/java/pl/hackerspace/domain/Client.java
@@ -0,0 +1,69 @@
+package pl.hackerspace.domain;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Set;
+
+@Entity
+@Table(name = "client")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class Client {
+
+    @Id
+    private String nip;
+
+    @Column(nullable = false)
+    private String name;
+
+    @Column(nullable = false)
+    private String email;
+
+    private String addressLine1;
+    private String addressLine2;
+
+    @Column(nullable = false)
+    private String serviceName;
+
+    @Column(nullable = false)
+    private BigDecimal price;
+
+    @Builder.Default
+    @Column(nullable = false)
+    private BigDecimal amount = BigDecimal.valueOf(1);
+
+    @Builder.Default
+    @Column(nullable = false)
+    private BigDecimal vat = BigDecimal.valueOf(23);
+
+    @Builder.Default
+    @Column(nullable = false)
+    private int paymentOffsetDays = 14;
+
+    @Builder.Default
+    private boolean subscriber = true;
+
+    private boolean prepaid;
+
+    @OneToMany(mappedBy="client")
+    Set<Invoice> invoices;
+
+    public byte[] getInvoiceForSubscriptionMonth(String monthOfInvoice) {
+        return invoices.stream()
+                .filter(i -> monthOfInvoice.equals(i.getMonthOfSubscription()))
+                .map(Invoice::getPdfContent)
+                .findFirst()
+                .orElse(null);
+    }
+}
diff --git a/personal/arsenicum/invoicer/src/main/java/pl/hackerspace/domain/Invoice.java b/personal/arsenicum/invoicer/src/main/java/pl/hackerspace/domain/Invoice.java
new file mode 100644
index 0000000..e32f5fe
--- /dev/null
+++ b/personal/arsenicum/invoicer/src/main/java/pl/hackerspace/domain/Invoice.java
@@ -0,0 +1,41 @@
+package pl.hackerspace.domain;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Table;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Entity
+@Table(name = "invoice")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class Invoice {
+
+    @Id
+    private long id;
+
+    @Column(nullable = false)
+    private String invoiceTitle;
+
+    private String monthOfSubscription;
+
+    @Column(nullable = false)
+    private LocalDateTime creationDate;
+
+    @Column(columnDefinition = "VARBINARY(50000)", nullable = false)
+    private byte[] pdfContent;
+
+    @ManyToOne
+    @JoinColumn(nullable = false)
+    private Client client;
+}
