{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/stripe/main/json-schema/stripe-apimethod-refund-list-schema.json",
  "title": "APIMethodRefundList",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/stripe-refunds-api-openapi.yml#/components/schemas/APIMethodRefundList",
  "type": "object",
  "required": [
    "data",
    "has_more",
    "object",
    "url"
  ],
  "properties": {
    "data": {
      "items": {
        "$ref": "#/$defs/refund"
      },
      "type": "array"
    },
    "has_more": {
      "description": "True if this list has another page of items after this one that can be fetched.",
      "type": "boolean"
    },
    "object": {
      "description": "String representing the object's type. Objects of the same type share the same value. Always has the value `list`.",
      "enum": [
        "list"
      ],
      "type": "string"
    },
    "url": {
      "description": "The URL where this list can be accessed.",
      "maxLength": 5000,
      "pattern": "^/v1/refunds",
      "type": "string"
    }
  },
  "$defs": {
    "balance_transaction": {
      "type": "object",
      "description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
      "x-ae-placeholder": true
    },
    "charge": {
      "type": "object",
      "description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
      "x-ae-placeholder": true
    },
    "payment_intent": {
      "type": "object",
      "description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
      "x-ae-placeholder": true
    },
    "refund": {
      "description": "Refund objects allow you to refund a previously created charge that isn't\nrefunded yet. Funds are refunded to the credit or debit card that's\ninitially charged.\n\nRelated guide: [Refunds](https://stripe.com/docs/refunds)",
      "properties": {
        "amount": {
          "description": "Amount, in cents (or local equivalent).",
          "type": "integer"
        },
        "balance_transaction": {
          "anyOf": [
            {
              "maxLength": 5000,
              "type": "string"
            },
            {
              "$ref": "#/$defs/balance_transaction"
            }
          ],
          "description": "Balance transaction that describes the impact on your account balance.",
          "x-expansionResources": {
            "oneOf": [
              {
                "$ref": "#/$defs/balance_transaction"
              }
            ]
          }
        },
        "charge": {
          "anyOf": [
            {
              "maxLength": 5000,
              "type": "string"
            },
            {
              "$ref": "#/$defs/charge"
            }
          ],
          "description": "ID of the charge that's refunded.",
          "x-expansionResources": {
            "oneOf": [
              {
                "$ref": "#/$defs/charge"
              }
            ]
          }
        },
        "created": {
          "description": "Time at which the object was created. Measured in seconds since the Unix epoch.",
          "format": "unix-time",
          "type": "integer"
        },
        "currency": {
          "description": "Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).",
          "type": "string"
        },
        "description": {
          "description": "An arbitrary string attached to the object. You can use this for displaying to users (available on non-card refunds only).",
          "maxLength": 5000,
          "type": "string"
        },
        "destination_details": {
          "$ref": "#/$defs/refund_destination_details"
        },
        "failure_balance_transaction": {
          "anyOf": [
            {
              "maxLength": 5000,
              "type": "string"
            },
            {
              "$ref": "#/$defs/balance_transaction"
            }
          ],
          "description": "After the refund fails, this balance transaction describes the adjustment made on your account balance that reverses the initial balance transaction.",
          "x-expansionResources": {
            "oneOf": [
              {
                "$ref": "#/$defs/balance_transaction"
              }
            ]
          }
        },
        "failure_reason": {
          "description": "Provides the reason for the refund failure. Possible values are: `lost_or_stolen_card`, `expired_or_canceled_card`, `charge_for_pending_refund_disputed`, `insufficient_funds`, `declined`, `merchant_request`, or `unknown`.",
          "maxLength": 5000,
          "type": "string"
        },
        "id": {
          "description": "Unique identifier for the object.",
          "maxLength": 5000,
          "type": "string"
        },
        "instructions_email": {
          "description": "For payment methods without native refund support (for example, Konbini, PromptPay), provide an email address for the customer to receive refund instructions.",
          "maxLength": 5000,
          "type": "string"
        },
        "metadata": {
          "additionalProperties": {
            "maxLength": 500,
            "type": "string"
          },
          "description": "Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.",
          "type": [
            "object",
            "null"
          ]
        },
        "next_action": {
          "$ref": "#/$defs/refund_next_action"
        },
        "object": {
          "description": "String representing the object's type. Objects of the same type share the same value.",
          "enum": [
            "refund"
          ],
          "type": "string"
        },
        "payment_intent": {
          "anyOf": [
            {
              "maxLength": 5000,
              "type": "string"
            },
            {
              "$ref": "#/$defs/payment_intent"
            }
          ],
          "description": "ID of the PaymentIntent that's refunded.",
          "x-expansionResources": {
            "oneOf": [
              {
                "$ref": "#/$defs/payment_intent"
              }
            ]
          }
        },
        "reason": {
          "description": "Reason for the refund, which is either user-provided (`duplicate`, `fraudulent`, or `requested_by_customer`) or generated by Stripe internally (`expired_uncaptured_charge`).",
          "enum": [
            "duplicate",
            "expired_uncaptured_charge",
            "fraudulent",
            "requested_by_customer"
          ],
          "type": [
            "string",
            "null"
          ],
          "x-stripeBypassValidation": true
        },
        "receipt_number": {
          "description": "This is the transaction number that appears on email receipts sent for this refund.",
          "maxLength": 5000,
          "type": [
            "string",
            "null"
          ]
        },
        "source_transfer_reversal": {
          "anyOf": [
            {
              "maxLength": 5000,
              "type": "string"
            },
            {
              "$ref": "#/$defs/transfer_reversal"
            }
          ],
          "description": "The transfer reversal that's associated with the refund. Only present if the charge came from another Stripe account.",
          "x-expansionResources": {
            "oneOf": [
              {
                "$ref": "#/$defs/transfer_reversal"
              }
            ]
          }
        },
        "status": {
          "description": "Status of the refund. This can be `pending`, `requires_action`, `succeeded`, `failed`, or `canceled`. Learn more about [failed refunds](https://stripe.com/docs/refunds#failed-refunds).",
          "maxLength": 5000,
          "type": [
            "string",
            "null"
          ]
        },
        "transfer_reversal": {
          "anyOf": [
            {
              "maxLength": 5000,
              "type": "string"
            },
            {
              "$ref": "#/$defs/transfer_reversal"
            }
          ],
          "description": "This refers to the transfer reversal object if the accompanying transfer reverses. This is only applicable if the charge was created using the destination parameter.",
          "x-expansionResources": {
            "oneOf": [
              {
                "$ref": "#/$defs/transfer_reversal"
              }
            ]
          }
        }
      },
      "required": [
        "amount",
        "created",
        "currency",
        "id",
        "object"
      ],
      "title": "Refund",
      "type": "object",
      "x-expandableFields": [
        "balance_transaction",
        "charge",
        "destination_details",
        "failure_balance_transaction",
        "next_action",
        "payment_intent",
        "source_transfer_reversal",
        "transfer_reversal"
      ],
      "x-resourceId": "refund"
    },
    "refund_destination_details": {
      "type": "object",
      "description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
      "x-ae-placeholder": true
    },
    "refund_next_action": {
      "type": "object",
      "description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
      "x-ae-placeholder": true
    },
    "transfer_reversal": {
      "type": "object",
      "description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
      "x-ae-placeholder": true
    }
  }
}