# The OffSessionPayment object

### The OffSessionPayment object

```json
{
  "amount_requested": {
    "value": 2000,
    "currency": "usd"
  },
  "cadence": "recurring",
  "compartment_id": "wksp_test_6OdsB30MSQB61rhH1uYqVKa",
  "created": "2025-01-01T00:00:00.000Z",
  "customer": "cus_SJjFsJvGPQKfH1",
  "failure_reason": null,
  "id": "osp_test_6pO5OrRN03IzV8rd3BaY",
  "last_authorization_attempt_error": null,
  "latest_payment_attempt_record": "par_test_65ScpVhNz9xBDZWOi8n41LUaWUrHDArR0K",
  "livemode": false,
  "metadata": {},
  "object": "v2.payments.off_session_payment",
  "on_behalf_of": null,
  "payment_method": "pm_1RP6TAG7mvlzf7RNfspLoGQ9",
  "payment_record": "pr_test_65ScpUdmQCOf291sX8n41LUaWUrHDArBhg",
  "retry_details": {
    "attempts": 1,
    "retry_strategy": "smart"
  },
  "statement_descriptor": null,
  "statement_descriptor_suffix": null,
  "status": "succeeded",
  "test_clock": null,
  "transfer_data": null
}
```

## Attributes

- `id` (string)
  Unique identifier for the object.

- `object` (string, value is "v2.payments.off_session_payment")
  String representing the object’s type. Objects of the same type share the same value of the object field.

- [`amount_requested`](https://docs.stripe.com/api/v2/off-session-payments/object.md?query=amount_requested) (object)
  The “presentment amount” to be collected from the customer.

- `cadence` (enum)
  The frequency of the underlying payment.
Possible enum values:
  - `recurring`
    Indicates a transaction occurring on a regular interval.

  - `unscheduled`
    Indicates a transaction occurring at irregular periods.

- `compartment_id` (string)
  ID of the owning compartment.

- `created` (timestamp)
  Creation time of the OffSessionPayment. Represented as a RFC 3339 date & time UTC value in millisecond precision, for example: 2022-09-18T13:22:18.123Z.

- `customer` (string)
  ID of the Customer to which this OffSessionPayment belongs.

- `failure_reason` (enum, nullable)
  The reason why the OffSessionPayment failed.
Possible enum values:
  - `authorization_expired`
    The payment failed because the authorization expired.

  - `rejected_by_partner`
    The payment failed because the payment partner returned a terminal failure.

  - `retries_exhausted`
    The payment failed because we ran out of retry attempts.

- `last_authorization_attempt_error` (string, nullable)
  The payment error encountered in the previous attempt to authorize the payment.

- `latest_payment_attempt_record` (string, nullable)
  Payment attempt record for the latest attempt, if one exists.

- `livemode` (boolean)
  Has the value true if the object exists in live mode or the value false if the object exists in test mode.

- `metadata` (map)
  Set of [key-value pairs](https://docs.stripe.com/api/metadata.md) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Learn more about [storing information in metadata](https://docs.stripe.com/payments/payment-intents.md#storing-information-in-metadata).

- `on_behalf_of` (string, nullable)
  The account (if any) for which the funds of the OffSessionPayment are intended.

- `payment_method` (string)
  ID of the payment method used in this OffSessionPayment.

- `payment_record` (string, nullable)
  Payment record associated with the OffSessionPayment.

- [`payments_orchestration`](https://docs.stripe.com/api/v2/off-session-payments/object.md?query=payments_orchestration) (object)
  Details about the payments orchestration configuration.

- [`retry_details`](https://docs.stripe.com/api/v2/off-session-payments/object.md?query=retry_details) (object)
  Details about the OffSessionPayment retries.

- `statement_descriptor` (string, nullable)
  Text that appears on the customer’s statement as the statement descriptor for a non-card charge. This value overrides the account’s default statement descriptor. For information about requirements, including the 22-character limit, see the [Statement Descriptor docs](https://docs.stripe.com/get-started/account/statement-descriptors.md).

- `statement_descriptor_suffix` (string, nullable)
  Provides information about a card charge. Concatenated to the account’s [statement descriptor prefix](https://docs.stripe.com/get-started/account/statement-descriptors.md#static) to form the complete statement descriptor that appears on the customer’s statement.

- `status` (enum)
  Status of this OffSessionPayment, one of `pending`, `pending_retry`, `processing`, `failed`, `canceled`, `requires_capture`, or `succeeded`.
Possible enum values:
  - `canceled`
    The payment was manually canceled.

  - `failed`
    The payment is terminally failed.

  - `pending`
    Payment has not yet been attempted.

  - `pending_retry`
    The payment failed a previous attempt and will be retried automatically.

  - `processing`
    The payment is currently processing an authorization attempt. Any manual operations on it will be blocked.

  - `requires_capture`
    The payment is awaiting capture.

  - `succeeded`
    The payment has successfully moved money.

- `test_clock` (string, nullable)
  Test clock that can be used to advance the retry attempts in a sandbox.

- [`transfer_data`](https://docs.stripe.com/api/v2/off-session-payments/object.md?query=transfer_data) (object, nullable)
  The data that automatically creates a Transfer after the payment finalizes. Learn more about the use case for [connected accounts](https://docs.stripe.com/payments/connected-accounts.md).
