title: Payment Session description: >- Payment Sessions are created when a Customer initilizes the checkout flow, and can be used to hold the state of a payment flow. Each Payment Session is controlled by a Payment Provider, who is responsible for the communication with external payment services. Authorized Payment Sessions will eventually get promoted to Payments to indicate that they are authorized for capture/refunds/etc. type: object required: - amount - cart_id - created_at - data - id - is_initiated - is_selected - idempotency_key - payment_authorized_at - provider_id - status - updated_at properties: id: description: The payment session's ID type: string example: ps_01G901XNSRM2YS3ASN9H5KG3FZ cart_id: description: The id of the Cart that the Payment Session is created for. nullable: true type: string example: cart_01G8ZH853Y6TFXWPG5EYE81X63 cart: description: A cart object. Available if the relation `cart` is expanded. nullable: true $ref: ./Cart.yaml provider_id: description: The id of the Payment Provider that is responsible for the Payment Session type: string example: manual is_selected: description: >- A flag to indicate if the Payment Session has been selected as the method that will be used to complete the purchase. nullable: true type: boolean example: true is_initiated: description: >- A flag to indicate if a communication with the third party provider has been initiated. type: boolean default: false example: true status: description: >- Indicates the status of the Payment Session. Will default to `pending`, and will eventually become `authorized`. Payment Sessions may have the status of `requires_more` to indicate that further actions are to be completed by the Customer. type: string enum: - authorized - pending - requires_more - error - canceled example: pending data: description: >- The data required for the Payment Provider to identify, modify and process the Payment Session. Typically this will be an object that holds an id to the external payment session, but can be an empty object if the Payment Provider doesn't hold any state. type: object example: {} idempotency_key: description: >- Randomly generated key used to continue the completion of a cart in case of failure. nullable: true type: string externalDocs: url: https://docs.medusajs.com/development/idempotency-key/overview.md description: Learn more how to use the idempotency key. amount: description: The amount that the Payment Session has been authorized for. nullable: true type: integer example: 100 payment_authorized_at: description: The date with timezone at which the Payment Session was authorized. nullable: true type: string format: date-time created_at: description: The date with timezone at which the resource was created. type: string format: date-time updated_at: description: The date with timezone at which the resource was updated. type: string format: date-time