+
+
+
+
+
+ {invoice.numero}
+
+
+
{invoice.clientName}
+
+
+
+
+ {formatEuros(invoice.amountTtcCents)}
+
+
+
+
+ échue le {formatDate(invoice.dueDate)}
+
+
+ {dueLabel}
+
+
+
+ {invoice.planName && (
+
+ Plan : {invoice.planName}
+
+ )}
+
+ );
+}
diff --git a/apps/web/src/lib/checkin.ts b/apps/web/src/lib/checkin.ts
new file mode 100644
index 0000000..606df2c
--- /dev/null
+++ b/apps/web/src/lib/checkin.ts
@@ -0,0 +1,62 @@
+import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
+import { api } from "@/lib/api";
+import { queryKeys } from "@/lib/queryKeys";
+import type { InvoiceStatus } from "@rubis/shared";
+
+/**
+ * Forme minimale renvoyée par GET /api/v1/checkin/inapp/pending — basée sur
+ * InvoiceTransformer côté API. On ne garde que ce dont la modale a besoin.
+ */
+export type PendingCheckinInvoice = {
+ id: string;
+ numero: string;
+ amountTtcCents: number;
+ issueDate: string;
+ dueDate: string;
+ status: InvoiceStatus;
+ clientName: string;
+ planName: string | null;
+};
+
+/** Liste des factures en attente de check-in pour l'org courante. */
+export function usePendingCheckins() {
+ return useQuery({
+ queryKey: queryKeys.checkin.pending(),
+ queryFn: () =>
+ api.get