Skip to content

Partial-payment client mail body "No action is needed right now" reads as completion #76

@n8bar

Description

@n8bar

What

App\Mail\InvoicePaymentAcknowledgmentClientMail fires when a new on-chain payment is detected against an invoice — including partial payments. Body opens with:

A Bitcoin payment of X BTC was detected.
No action is needed right now.
The invoice issuer has been notified to review it promptly.

In a partial-payment scenario, the line No action is needed right now reads as reassurance that the recipient is done. A client who knew they sent partial reads it correctly; a client who accidentally underpaid (or didn't realize) reads it as confirmation they've paid in full. The system's intent is "no action while confirmations settle, downstream underpay alert will fire if applicable" — but that's not what the phrasing communicates.

Where

  • resources/views/mail/invoice-payment-acknowledgment-client.blade.php (line ~8)

Fix direction

Tighten the copy so it signals "confirmations are still settling — we'll follow up if anything's off" rather than "all done." Candidate phrasings:

  • Confirmations are still settling — no action is needed from you while that completes.
  • We'll follow up if anything needs attention from you.

Final wording up to maintainer/Nate. Bar: a skimming client should not walk away thinking the invoice is fully paid based on this mail alone, when in fact a downstream underpay alert may follow.

Why the gap exists

By design, the detection-time ack is intentionally low-info because the system doesn't 100% trust state until confirmations settle, and a separate underpay alert handles the "you owe more" call after thresholds confirm. The separation is defensible; the phrasing just needs to match it.

Test plan

  • Re-fire mail against the §5.4 partial-payment fixture (50% paid, status partial); eyeball QA confirms the new copy doesn't read as completion
  • No spec change required (docs/specs/NOTIFICATIONS.md describes the mail as "low-info ack" — matches new direction)
  • Existing tests in tests/Feature/InvoiceDeliveryTest.php and WatchPaymentsCommandTest.php still pass

Tracked in

docs/strategies/19.1_NOTIFICATION_COVERAGE_AUDIT.md §5.4 (post-restructure: findings + fix + re-verify nested under §5.4).

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:notificationsOutbound mail, alerts, delivery surfacebugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions