Payment Lifecycle — What Your Users Should See
Every payment moves through a defined lifecycle, and each stage should map to a clear user-facing status in your product:
Design your product to show clear status transitions as webhook events arrive. Users should feel confident that their money is moving and that the system is working, ambiguity about payment status is one of the fastest ways to erode trust.
Handling Reversals and Failures
Payments can fail or be reversed, and your product should be able to handle these scenarios gracefully: Failed Payments Failed payments can occur at various stages due to insufficient funds in the funding account, invalid or closed account details, or creditor rejection. When a payment fails, Method emits a webhook event with the failure details. Your product should notify the user clearly, explain what happened in plain language, and provide a path to retry if applicable. Reversed Payments Reversals occur when a payment that was already sent is returned. For example, this can happen if the funding account has insufficient funds after the payment is initiated, or if the creditor returns the payment. Reversals are tracked as separate objects with their own lifecycle and webhook events. Your product should notify the user when a reversal occurs, explain what happened, and update any progress displays associated with the original payment. In some cases, a creditor may accept a payment and later return only part of it. Method automatically refunds the returned amount and the payment transitions throughpartial_reversal_processing to partially_reversed.
To determine how much was returned, retrieve the reversal using the payment’s reversal_id. Fees are not refunded for partial reversals.