Total Amount
{formatCurrency(total)}
{totalPaid > 0 && balanceDue > 0 && (Balance due: {formatCurrency(balanceDue)}
)}Invoice Overdue
{Math.ceil( (new Date().getTime() - new Date(invoice.dueDate).getTime()) / (1000 * 60 * 60 * 24), )}{" "} days past due date
{item.description}
{formatCurrency(item.amount)}
Loading…
) : (payments ?? []).length === 0 ? (No payments recorded yet.
) : ({invoice.notes}
Last sent {daysSince(invoice.lastReminderSentAt)} day {daysSince(invoice.lastReminderSentAt) === 1 ? "" : "s"} ago
)}Client share link
{publicUrl ? ( <>{publicUrl}
Generate a shareable link your client can use to view this invoice without logging in.
> )}{new Date(savedReminderAt) <= new Date() ? "Reminder is due — time to send this invoice." : `Scheduled for ${formatDate(savedReminderAt)}`}
) : null}