Understanding Session vs. Transaction Status
A common point of confusion is the difference between thestatus of a Session and the status of a Payment Transaction. They represent two different things:
Session Status represents the entire checkout experience you create for your customer. Think of it as the “shopping cart” or “order” that is waiting to be paid. A session’s lifecycle is simple: it starts as pending, and can only end as completed (paid) or expired (abandoned).
Transaction Status represents a single attempt to pay for that session. A customer might have multiple transactions within one session if their first attempt fails. A transaction’s status can be Pending, Success, Declined, or Expired.
The table below summarizes the key distinction:
For order fulfillment, you should almost always rely on the Session Status. Only listen for
session.status: "completed" (via webhook or polling) to confirm an order is ready to be shipped.Session Status
Thestatus field on the Session object represents the overall state of the Hosted Checkout session. The table below describes all possible session status values:

