Invoice Lifecycle
Know when an invoice is payable, fulfillable, or terminal.
| Status | Meaning | Customer should pay? | Fulfill? | Terminal? |
|---|---|---|---|---|
PENDING | Waiting for one eligible transfer | Yes, before expiry | No | No |
PAID | Exact eligible transfer confirmed | No | Yes, once | Yes |
EXPIRED | Payment window ended without an eligible transfer | No | No | Yes |
CANCELLED | Merchant cancelled a pending invoice | No | No | Yes |
UNDERPAID | Historical attribution state | No | Manual review only | Yes |
OVERPAID | Historical attribution state | No | Manual review only | Yes |
The current attribution-v3 flow transitions PENDING to PAID, EXPIRED, or CANCELLED. Wrong-amount transfers remain unmatched; new invoices are not expected to enter UNDERPAID or OVERPAID.
A transfer timestamped on-chain at or before expiresAt can still settle if BramaPay processes it later. A transfer made after expiry is not eligible. Cancellation is allowed only while PENDING and cannot reverse an on-chain transfer.