Skip to main content
This guide covers the expected Secure Payment Page flow and the webhooks associated with each step.
Use payment.confirmed to mark a payment as paid. Wallet approval and KYT approval indicate progress, not payment completion.

Events at a glance

The checkout and screening events describe the Secure Payment flow. payment.confirmed and payment.failed are shared across Request API payment flows and are not exclusive to the Secure Payment Page.

Incoming payment: expected flow

Neither allowlist rejection nor KYT rejection automatically produces payment.failed. They stop that wallet’s attempt before payment submission. For an incoming payment, the customer may connect another permitted wallet and continue.

Outgoing payment: expected flow

For outgoing payments, KYT screens the payee (recipient) at link creation time, if enabled. If the payee is rejected, the link is still created, but cannot be used to pay. Its status is compliance_failed, and opening it returns the error SECURE_PAYMENT_COMPLIANCE_FAILED. The payer allowlist check applies to incoming payments only; it is not part of the current outgoing payment flow. A rejected payee screening does not automatically produce payment.failed.

When does payment.failed happen?

For the Secure Payment Page, payment.failed represents an exceptional failure in background payment processing, such as an explicit bridge failure, a failed Safe execution, or a pending Safe transaction passing its execution deadline. It is not an expected step in a successful payment. It does not automatically fire when a customer rejects a wallet prompt, closes the page, or fails an allowlist or KYT check.

Example webhook payloads

These examples use synthetic values and show selected fields for readability. Actual payloads may include additional information.

Next steps

Webhook reference

Configure your endpoint and check event recipients, payloads, signatures, and retries.

Secure Payment integration guide

Create payment links and reconcile payments with your application.
Last modified on September 18, 2026