How PayProof checkout works

Lifecycle from create to verified — and what happens when amounts do not match.

AGENTS.md

Lifecycle

  1. Your server creates a checkout (pending).
  2. Customer opens /pay/{public_id} and transfers with the reference code.
  3. Customer uploads the receipt (or you verify via API).
  4. PayProof matches amount + reference against your receiving accounts.
  5. Status becomes verified, partially_paid, failed, or manual_review.
  6. Webhooks fire; hosted page can redirect to success_url.

Status decisions

ConditionResult
Exact amount + matching referenceverified
Underpaid (partial allowed)partially_paid
OverpaidDepends on overpayment_strategy
Outside verification windowfailed / time_window_exceeded
Expired checkoutexpired

See app settings for window, expiry, and overpayment controls.