Payment Lifecycle

The Payment Lifecycle describes the progression of a Payment Intent from creation through to a final outcome.

A Payment Intent may transition through multiple non-terminal states as payment details are collected, confirmations are obtained, authentication is performed, and authorisation attempts are made. The lifecycle is designed to support retries, deferred actions, and regulatory requirements without requiring the intent to be recreated.


Non-terminal State

A Non-terminal State is a Payment Intent status that represents an intermediate stage in the payment lifecycle.

While in a non-terminal state, the Payment Intent may accept further actions (such as attaching a payment method, confirming intent, completing authentication, or retrying processing) and may transition to another state.

Examples of non-terminal states include:

  • open
  • requires_payment_method
  • requires_customer_confirmation
  • requires_customer_authentication
  • requires_authorisation

Terminal State

A Terminal State is a Payment Intent status that represents a final outcome from which no further processing can occur.

Once a Payment Intent reaches a terminal state, it cannot transition to another state and no further authorisation or capture attempts are permitted.

Terminal states are those where no further processing can occur.

Examples of terminal states include:

  • succeeded
  • cancelled
  • failed

The exact set of terminal states is defined by the Payment Intent status model and applicable business rules. The current Elements browser API only surfaces a subset of lifecycle states directly; post-authorisation outcomes are typically observed through your backend.


Open

The open state is the initial state of a Payment Intent.

It indicates that the intent to take payment exists, but no payment method has been successfully attached or selected. The intent is idle and awaiting customer or merchant interaction.


Requires Payment Method

The requires_payment_method state indicates that a valid payment method is required before processing can proceed.

In this state, Elements may collect or re-collect card details, or allow selection of an existing stored payment method.


Requires Customer Confirmation

The requires_customer_confirmation state indicates that a valid payment method has been provided, but explicit customer confirmation is required before processing can continue.

This state is commonly used as a safeguard to ensure the customer explicitly agrees to proceed with the payment.


Requires Customer Authentication

The requires_customer_authentication state indicates that additional customer authentication is required, such as Strong Customer Authentication (3DS).

In this state, Elements may present a challenge flow or complete frictionless authentication before progressing.


Requires Authorisation

The requires_authorisation state indicates that all prerequisite steps have been completed and the Payment Intent is ready to be submitted for authorisation.

At this point:

  • a valid payment method is attached
  • any required confirmation has been obtained
  • authentication requirements have been satisfied

The next step from this state is authorisation processing.


Succeeded

The succeeded state indicates that the Payment Intent has completed successfully.

This state is reached after a successful authorisation and, where applicable, capture of funds. In a typical Elements integration, this is usually confirmed by your backend after the browser flow has completed.


Failed

The failed state indicates that a processing attempt was unsuccessful.

A failed Payment Intent may be retried or returned to an earlier non-terminal state, depending on the failure reason and business rules.


Requires Capture

The requires_capture state indicates that an authorisation has been approved, but funds have not yet been captured.

This state is used in authorisation-and-capture flows where capture is deferred. It is a backend-side outcome rather than a status returned directly from the current attach() or confirm() browser methods.


Cancelled

The cancelled state indicates that the Payment Intent has been explicitly cancelled and will not be processed further.

This is a terminal state.