# ConfirmPaymentDialog

> Amount, destination, timing. Hold-to-confirm.

Source: https://lopifi.com/components/confirm-payment-dialog
Part of: Lopifi — US GAAP books on autopilot, reviewed by a CPA (https://lopifi.com)

---

- **Family:** Payments — 
- **Status:** Implemented
- **Spec:** https://lopifi.com/docs/catalog/03-payments

## Install

```bash
npx shadcn@latest add @lopifi/theme
npx shadcn@latest add @lopifi/confirm-payment-dialog
```

## Specification

> Amount, destination, timing. In that order. Every time.

```
Send $12,400.00 to Northwind Ltd?
To account ••••4291 · Arrives 8 Sep
This can't be undone once submitted.
[Cancel]  [Hold to send →]
```

`AlertDialog`. Focus lands on **Cancel**, never on the destructive action. `Escape` cancels.

For irreversible movements — wires, ACH past cutoff — the confirm is **hold-to-confirm** (1500ms `linear` fill, 200ms release). Slow where the user is deciding. Full spec including the keyboard and typed-confirmation fallbacks in [motion catalog](../motion/03-catalog.md#hold-to-confirm) — this can never be the only path, because gating money behind a motor-skill requirement is an accessibility failure.

## Rules this component obeys

Money is minor units, never floats. `null` is not `0` and neither is redacted. Negatives render in accounting parentheses with the parenthesis column reserved on both sides. Debit and credit are two columns. Per-currency decimal places. Polarity is explicit — up is not always good. Every figure states its period, entity, currency, basis and as-of.
